最近在使用阿里雲的雲服務器時,經常會收到下面這種信息。
雲盾態勢感知系統檢測到您的服務器:x.x.x.x出現了緊急安全事件:Redis蠕蟲對外發起網絡掃描 ,建議您立即登錄雲盾-態勢感知控制檯查看詳情和處理。
您的雲服務器(x.x.x.x)由於被檢測到對外攻擊,已阻斷該服務器對其它服務器端口(TCP:6379)的訪問,阻斷預計將在2018-08-06 16:01:23時間內結束,請及時進行安全自查。
於是登錄查看了監控,明明沒起什麼服務,但是cpu使用率卻飆到%90多,網絡消耗也一直有。查看了cpu的使用情況:
可以看到有兩個進程佔用了幾乎全部的cpu,我們把它kill掉,然後把tmp下的兩個文件也rm掉,cpu使用率馬上就下降了,但是不一會cpu使用率又上了,Xsheel又卡了。。。看了一下這兩個進程居然還在這。
我們先看一下服務器上運行了哪些定時任務:
/etc/crontab 是定時任務的配置文件
/etc/cron.d/ 這個目錄用來存放任何要執行的crontab文件或腳本,進入後發現除了有redis aof的數據恢復命令以外,還有兩行代碼,問題的根源就在這兩行上,它會從一個美國的地址下載文件。我們需要把它刪了。
/var/spool/cron/ 這個目錄下存放的是每個用戶包括root的crontab任務,每個任務以創建者的名字命名,比如tom建的crontab任務對應的文件就是/var/spool/cron/tom。一般一個用戶最多隻有一個crontab文件。進入root用戶的任務發現有以下任務,果然就是它。
關於定時任務可以查看這篇博文:https://www.cnblogs.com/MrSong97/p/12626284.html
現在已經知道問題了,因爲redis沒有設置密碼或密碼太過簡單緣故,導致被寫入密鑰,在cron的文件裏被寫入了命令。
解決方法:
1,redis設置複雜一點的密碼,更改默認的端口。
2,服務器設置防火牆,禁用ip
3,清除掉被寫入的腳本,或直接停掉cron服務