一、禁止使用root用戶啟動 | 訪問控制
使用root權限去運行網絡服務是比較有風險的(nginx和apache都是有獨立的work用戶,而redis沒有)。redis crackit 漏洞就是利用root用戶的權限來替換或者增加authorized_keys,來獲取root登錄權限的
使用root切換到redis用戶啟動服務: ``` useradd -s /sbin/nolog -M redis sudo -u redis /<redis-server-path>/redis-server /<configpath>/redis.conf ```
二、限制redis 配置文件訪問權限 | 文件權限
因為redis密碼明文存儲在配置文件中,禁止不相關的用戶訪問改配置文件是必要的,設置redis配置文件權限為600,
執行以下命令修改配置文件權限: ``` chmod 600 /<filepath>/redis.conf ```
三、修改默認6379端口 | 服務配置
避免使用熟知的端口,降低被初級掃描的風險
編輯文件redis的配置文件redis.conf,找到包含port的行,將默認的6379修改為自定義的端口號,然后重啟redis
四、開啟redis密碼認證,並設置高復雜度密碼 | 身份鑒別
redis在redis.conf配置文件中,設置配置項requirepass, 開戶密碼認證。 redis因查詢效率高,auth這種命令每秒能處理9w次以上,簡單的redis的密碼極容易為攻擊者暴破。
打開redis.conf,找到requirepass所在的地方,修改為指定的密碼,密碼應符合復雜性要求: ``` 1、長度8位以上 2、包含以下四類字符中的三類字符: 英文大寫字母(A 到 Z) 英文小寫字母(a 到 z) 10 個基本數字(0 到 9) 非字母字符(例如 !、$、%、@、^、&等,#除外) 3、避免使用已公開的弱密碼,如:abcd.1234 、admin@123等 ``` 再去掉前面的#號注釋符,然后重啟redis
五、禁用或者重命名危險命令 | 入侵防范
Redis中線上使用keys *命令,也是非常危險的。因此線上的Redis必須考慮禁用一些危險的命令,或者盡量避免誰都可以使用這些命令,
Redis沒有完整的管理系統,但是也提供了一些方案。
修改 redis.conf 文件,添加 ``` rename-command FLUSHALL "" rename-command FLUSHDB "" rename-command CONFIG "" rename-command KEYS "" rename-command SHUTDOWN "" rename-command DEL "" rename-command EVAL "" ``` 然后重啟redis。 重命名為"" 代表禁用命令,如想保留命令,可以重命名為不可猜測的字符串,如: `rename-command FLUSHALL joYAPNXRPmcarcR4ZDgC`
六、禁止監聽在公網 | 訪問控制
Redis監聽在0.0.0.0,可能導致服務對外或內網橫向移動滲透風險,極易被黑客利用入侵。
在redis的配置文件redis.conf中配置如下: bind 127.0.0.1或者內網IP,然后重啟redis
七、打開保護模式 | 訪問控制
redis默認開啟保護模式。要是配置里沒有指定bind和密碼,開啟該參數后,redis只能本地訪問,拒絕外部訪問。
redis.conf安全設置: # 打開保護模式 protected-mode yes