錯誤信息:
1:M 23 Dec 2021 19:53:02.058 * Background saving started by pid 1848 1848:C 23 Dec 2021 19:53:02.058 # Failed opening the RDB file backup.db (in server root dir /etc) for saving: Permission denied 1:M 23 Dec 2021 19:53:02.158 # Background saving error 1:M 23 Dec 2021 19:53:03.010 # Failed opening the RDB file root (in server root dir /etc) for saving: Permission denied 1:M 23 Dec 2021 19:53:03.073 # Failed opening the RDB file root (in server root dir /etc) for saving: Permission denied 1:M 23 Dec 2021 19:53:03.103 # Failed opening the RDB file root (in server root dir /etc) for saving: Permission denied 1:M 23 Dec 2021 19:53:04.227 # Failed opening the RDB file zzh (in server root dir /etc/cron.d) for saving: Permission denied 1:M 23 Dec 2021 19:53:04.323 # Failed opening the RDB file crontab (in server root dir /etc) for saving: Permission denied
問題原因
Background saving這個是Redis用來保存以RDB模式運行的當前快照的線程所寫入的日志.
redis的不安全訪問,導致配置被修改.
攻擊者想利用redis直接修改crontab配置,實現一些定時任務寫入,從而去執行一些"特殊"命令(比如,挖礦等),甚至掌控服務器.
解決方法
永久方法
1.修改配置文件
requirepass 123456 # 123456 換成你的密碼
下面部分不影響,但是是更安全的做法.redis3.2后可用.
bind 0.0.0.0 # 綁定到具體地址 protected-mode yes # 開啟保護模式,該模式將需配置bind ip或者設置訪問密碼
臨時方法
通過redis-cli進入redis客戶端,然后通過config設置密碼(直到重啟前有效).
config get requirepass # 查看當前密碼
1) "requirepass" 2) ""
如果結果如上,則表明當前沒有密碼.
(error) NOAUTH Authentication required.
如上則表示有密碼,而你是未授權訪問的.
設置新密碼:
config set requirepass <you password> # <you password> 替換成你的密碼
通過 config get檢查是否設置成功.設置成功后,通過下面命令認證:
auth <you password> # <you password> 替換成你的密碼 get a
如果能看到正常的返回值,就說明成功了.
這樣就能避免別人輕易訪問redis-server.
注意此處的密碼長度最好比較長,比如10位以上,因為redis的速度太快了,通過暴力破解的可能性高於通常的http方式.