騰訊雲剛拿到手的雲服務器,第二天用docker部署了redis(參見docker安裝並運行redis),第三天就被搞了(方法參見redis支持遠程接入的安全防護問題)。這些掃描redis漏洞的工具效率確實高,一天之內就搞得你沒法連上自己的機器。另外也說明了裸奔真的很危險。事情經過的這樣的:
10月31號docker部署完了redis,默認端口6379開放給公網遠程連接,無密碼,root權限運行。11月1號發現雲服務器登陸不上去了。11月2號從騰訊雲的“控制台”掃碼登陸后台,通過自我診斷發現CPU100%。操作雲服務器的實例登陸web版本的遠程終端,用top命令一看:
CPU已經198%了,13832這個進程肯定不對,看了一眼:
果然是11月1號那天出事了。先把它用kill殺了,給cpu先降降溫。
再看為啥ssh登陸不了,一查ssh服務,還是11月1號那天,22端口被篡改了,怪不得用22連接不上去:
我重新編輯了/etc/ssh/sshd_config文件,重新把端口改回了22,重啟sshd,ssh終於可以遠程登上了:
我再看了一眼redis,發現被寫入了一些東西:
很明顯,這里是把redis的RDB文件持久化功能拿來做文章了。看了下定時任務,有個每小時執行一次的腳本:
另外還有全局定時任務,不過這兩個里面沒東西在跑:
接着看了下redis的文件追加持久化aof文件——appendonly.aof(docker啟動時打開了appendonly),發現RDB也曾經被用來做免密登陸過:
執行了DEL刪除操作,搞完了擦屁股。去看了下/root/.ssh目錄下的免密登陸文件,時間上吻合:
看了下定時任務執行的ix.io上的腳本,發現被創建了一個新用戶:
而且寫入了/etc/sudoers,擁有了root權限:
機器上到處是毒啊,怎么辦?把以上的東西都該刪的刪,該重裝的重裝吧。
先把定時任務刪了吧:crontab -r,還有兩個全局的:rm -f /etc/cron.deny/1m /etc/cron.deny/2m
再進入.ssh目錄刪掉免密登陸:rm -f authorized_keys,最好是讓別人不能動這個目錄,降低讀寫權限:chattr -i .ssh
把darmok用戶刪掉:userdel -r darmok,編輯/etc/sudoers刪掉darmok的sudo權限
刪掉多余出來的目錄和文件,比如/var/tmp里面多余的東西
最后搞redis,進入/mydata/redis的data目錄:rm -rf data,重新用docker安裝一下,禁止遠程登錄(參見docker使用redis.conf配置文件方式啟動redis無反應無日志)