Redis进阶-Redis安全相关操作
文章目錄
- Pre
- port
- command
- lua script
- SSL proxy
- 小結
Pre
這里我們主要談一下使用 Redis 需要注意的安全風險以及防范措施,避免數據泄露和丟失,避免所在主機權限被黑客竊取,以及避免人為操作失誤。
port
默認會監聽 *:6379,如果當前的服務器主機有外網地址,Redis 的服務將會直接暴露在公網上。 一旦可以被外網直接訪問,這何談數據安全?
咋保護呢?
bind ip
Redis進階-bind參數詳解
運維人員務必在 Redis 的配置文件中指定監聽的 IP 地址
增加 Redis 的密碼訪問限制 requirepass & masterauth
客戶端必須使用 auth 指令傳入正確的密碼才可以訪問 Redis,這樣即使地址暴露出去了,普通黑客也無法對 Redis 進行任何指令操作.
requirepass passwd密碼控制也會影響到從庫復制 ,如果配置了主從或者是集群模式,從庫必須在配置文件里使用 masterauth 指令配置相應的密碼才可以進行復制操作。
masterauth passwd這倆密碼必須一致。
command
Redis中有些指令會對 Redis 的穩定以及數據安全造成非常嚴重的影響。
比如
-
keys 指令會導致 Redis 卡頓 (單線程,需要關注n的量),
-
lushdb 和 flushall 會讓 Redis 的所有數據全部清空。
-
config 可以動態修改參數
Redis 在配置文件中提供了 rename-command 指令用于將某些危險的指令修改成特別的名稱,用來避免人為誤操作。
比如在配置文件的 security 塊增加下面的內容:
rename-command keys artisanlovecode如果還想執行 keys 方法,那就不能直接敲 keys 命令了,而需要鍵入 artisanlovecode。
如果想完全封殺某條指令,可以將指令 rename 成空串,就無法通過任何字符串指令來執行這條指令了。
rename-command flushall ""常用的
rename-command FLUSHALL "" rename-command FLUSHDB "" rename-command CONFIG "" rename-command KEYS ""lua script
-
必須禁止 Lua 腳本由用戶輸入的內容 (UGC) 生成,這可能會被黑客利用以植入惡意的攻擊代碼來得到 Redis 的主機權限。
-
應該讓 Redis 以普通用戶的身份啟動,這樣即使存在惡意代碼黑客也無法拿到 root 權限。
SSL proxy
Redis 并不支持 SSL 鏈接,意味著客戶端和服務器之間交互的數據不應該直接暴露在公網上傳輸,否則會有被竊聽的風險。
如果必須要用在公網上,可以考慮使用 SSL 代理。
SSL 代理比較常見的有 ssh,不過 Redis 官方推薦使用 spiped 工具
地址: http://www.tarsnap.com/spiped.html
同樣 SSL 代理也可以用在主從復制上,如果 Redis 主從實例需要跨機房復制,spiped也可以派上用場.
小結
我們這里總結了最基本的 Redis 安全防護思路,安全防護措施務必做到位。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Redis进阶-Redis安全相关操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis进阶-无所不知的info命令诊
- 下一篇: Redis进阶-Redis的惰性删除