前言:
之前一直認(rèn)為放在公網(wǎng)的機(jī)器一定要開iptables,放在內(nèi)網(wǎng)的是比較安全的,這次事件教會(huì)我:內(nèi)網(wǎng)機(jī)器、該開iptables也得開!你無法保證內(nèi)網(wǎng)其他機(jī)器不會(huì)被攻擊進(jìn)而成為攻擊者!
起因:
從2017年12月19日開始,我們發(fā)現(xiàn)服務(wù)器上的程序運(yùn)行緩慢,開始我們以為是hadoop本身的問題,于是針對(duì)Hadoop進(jìn)行優(yōu)化,在20日開始,服務(wù)器開始出現(xiàn)反復(fù)的重啟。針對(duì)重啟原因我們排除了CPU溫度原因、電源管理程序兼容性的原因,并且機(jī)房的工作人員也到機(jī)房確認(rèn)了硬件無故障。在后續(xù)工作中我們發(fā)現(xiàn)top命令和ambari監(jiān)控提供的CPU占用情況有極大的出入。
問題描述:
CPU占用高,top命令顯示CPU使用正常,可用vmstat查看到,后續(xù)有ambari metrics和monitorix證明top顯示有問題。
下圖為其中一臺(tái)機(jī)器的monitorix監(jiān)控信息

其中24日至26日空白部分為該機(jī)器宕機(jī)未記錄
可以看出CPU實(shí)際使用率是非常高的。(下圖為一臺(tái)正常的沒什么操作的機(jī)器的監(jiān)控情況)

問題分析:
top命令顯示的不正常可能是由于遭到了rootkit攻擊,ps和top等系統(tǒng)文件被替換,CPU占用率異可能是被植入了挖礦程序,結(jié)合阿里給出的解決方案進(jìn)行檢查(鏈接地址: https://helpcdn.aliyun.com/knowledge_detail/41206.html )


檢查結(jié)果如下:

刪除掉被隱藏的惡意模塊后重啟機(jī)器、檢查CPU運(yùn)行情況,發(fā)現(xiàn)下降至正常水平。

后續(xù)處理:
分析造成本次感染的原因可能是由于其中一臺(tái)服務(wù)器的redis-server的漏洞導(dǎo)致??紤]到是內(nèi)網(wǎng)環(huán)境,僅開放了公網(wǎng)的22端口訪問,從公網(wǎng)感染的可能性極低,可能是從內(nèi)網(wǎng)進(jìn)行的入侵。我們將針對(duì)iptables策略進(jìn)行更細(xì)化的制定,增強(qiáng)對(duì)服務(wù)器的安全維護(hù),避免因程序漏洞導(dǎo)致的被入侵。
后記:
以上處理僅僅是去除了病毒的挖礦模塊,接下來就是分析病毒的入侵方法,經(jīng)過檢查,我在一臺(tái)裝有redis的機(jī)器上的/root/.ssh/目錄下找到了dump.rdb文件,這是典型的redis入侵的特征,打開后內(nèi)容如下:
亂碼+秘鑰

對(duì)這個(gè)ID進(jìn)行baidu

惡貫滿盈的對(duì)手!
接下來還發(fā)現(xiàn)Iptables修改后重啟被自動(dòng)被加入一些output chain,均為一些莫名其妙的IP

考慮是被加入了開機(jī)啟動(dòng)項(xiàng)和定時(shí)任務(wù),定時(shí)任務(wù)之前被我清理過、開機(jī)啟動(dòng)項(xiàng)中我找到了一個(gè)wipefs的目錄,隨手百度一下就發(fā)現(xiàn)問題也是命大

按照如下網(wǎng)頁操作
https://www.cnblogs.com/liuchuyu/p/7490338.html
rm -rf /bin/wipefs
rm -rf /etc/init.d/wipefs
rm -rf /bin/ddus-uidgen
rm -rf /etc/init.d/acpidtd
rm -rf /etc/rc0.d/S01wipefs
rm -rf /etc/rc1.d/S01wipefs
rm -rf /etc/rc2.d/S01wipefs
rm -rf /etc/rc3.d/S01wipefs
rm -rf /etc/rc4.d/S01wipefs
rm -rf /etc/rc5.d/S01wipefs
rm -rf /etc/rc6.d/S01wipefs
rm -rf /etc/rc.d/rc0.d/S01wipefs
rm -rf /etc/rc.d/rc1.d/S01wipefs
rm -rf /etc/rc.d/rc2.d/S01wipefs
rm -rf /etc/rc.d/rc3.d/S01wipefs
rm -rf /etc/rc.d/rc4.d/S01wipefs
rm -rf /etc/rc.d/rc5.d/S01wipefs
rm -rf /etc/rc.d/rc6.d/S01wipefs
rm -rf /etc/rc0.d/acpidtd
rm -rf /etc/rc1.d/acpidtd
rm -rf /etc/rc2.d/acpidtd
rm -rf /etc/rc3.d/acpidtd
rm -rf /etc/rc4.d/acpidtd
rm -rf /etc/rc5.d/acpidtd
rm -rf /etc/rc6.d/acpidtd
rm -rf /etc/rc.d/rc0.d/acpidtd
rm -rf /etc/rc.d/rc1.d/acpidtd
rm -rf /etc/rc.d/rc2.d/acpidtd
rm -rf /etc/rc.d/rc3.d/acpidtd
rm -rf /etc/rc.d/rc4.d/acpidtd
rm -rf /etc/rc.d/rc5.d/acpidtd
rm -rf /etc/rc.d/rc6.d/acpidtd
再重啟、發(fā)現(xiàn)沒問題了。但是到這里還需要考慮系統(tǒng)的 ps top等命令是否被替換了,我們還需要進(jìn)行恢復(fù),這是后話了。