使用root權限去運行網絡服務是比較有風險的(nginx和apache都是有獨立的work用戶,而redis沒有)。redis crackit 漏洞就是利用root用戶的權限來替換或者增長authorized_keys,來獲取root登陸權限的nginx
使用root切換到redis用戶啓動服務: ``` useradd -s /sbin/nolog -M redis sudo -u redis /<redis-server-path>/redis-server /<configpath>/redis.conf ```
由於redis密碼明文存儲在配置文件中,禁止不相關的用戶訪問改配置文件是必要的,設置redis配置文件權限爲600,redis
執行如下命令修改配置文件權限: ``` chmod 600 /<filepath>/redis.conf ```
避免使用熟知的端口,下降被初級掃描的風險apache
編輯文件redis的配置文件redis.conf,找到包含port的行,將默認的6379修改成自定義的端口號,而後重啓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沒有完整的管理系統,可是也提供了一些方案。ui
修改 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,可能致使服務對外或內網橫向移動滲透風險,極易被黑客利用入侵。spa
在redis的配置文件redis.conf中配置以下: bind 127.0.0.1或者內網IP,而後重啓redis
redis默認開啓保護模式。要是配置裏沒有指定bind和密碼,開啓該參數後,redis只能本地訪問,拒絕外部訪問。code
redis.conf安全設置: # 打開保護模式 protected-mode yes