Linux操做系統被***的排查過程node
某天忽然發現IDC機房一臺測試服務器的流量異常,幾乎佔滿了機房的總帶寬,致使其餘服務器程序運行業務受阻!
意識到了這臺測試機被人種了***,因而開始了緊張的排查過程:服務器
1)運行ps和top命令
發現了兩個陌生名稱的程序(好比mei34hu)佔用了大部分CPU資源,顯然這是別人植入的程序!
果斷嘗試kill掉這兩個進程,kill後,測試機流量明顯降下去。然而不幸的是,不一下子又恢復了以前的狀態。網絡
2)將IDC這臺測試機的外網關閉。遠程經過跳板機內網登錄這臺機器。ssh
3)查看這些陌生程序所在路徑
查找程序路徑:
ls /proc/進程號/exe,而後再次kill掉進程,又會生成一個新的進程名,發現路徑也是隨機在PATH變量的路徑中變換,有時在/bin目錄,有時在/sbin,有時在/usr/bin目錄中。
看來還有後臺主控程序在做怪,繼續查找。ide
4)嘗試查找跟蹤程序
查看/bin,/sbin,/usr/bin等目錄下是否存在以.開頭的文件名,發現很多,並且部分程序移除後會自動生成。
[root@localhost ~]# ls /usr/bin/. //按Tab鍵補全
./ ../ .ssh.hmac 工具
這說明還沒找到主控程序。測試
5)接着用strace命令跟蹤這些陌生程序:
[root@localhost ~]# strace /bin/mei34huui
結果發如今跟蹤了這個程序後,它竟然自殺了(把本身進程文件幹掉了)!而後想用netstat看下網絡鏈接狀況,結果竟然查不到任何對外的網絡鏈接,因而開始懷疑命令被修改過了。
使用stat 查看系統命令ps、ls 、netstat、pstree等等:
[root@localhost ~]# which ps
/usr/bin/ps
[root@localhost ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@localhost ~]# which netstat
/usr/bin/netstat
[root@localhost ~]# stat /usr/bin/netstat
[root@localhost ~]# stat /usr/bin/ps
[root@localhost ~]# stat /usr/bin/ls
......操作系統
發現修改時間都是在最近的3天內,這讓我猛然想起傳說中的rootkit用戶態級病毒!!
有多是這臺測試機剛安裝好系統後,設置了root密碼爲123456,以後又把它放到過公網上被人***了。代理
接着查一下它在相關路徑中還放了哪些程序:
[root@localhost ~]# find /bin -mtime -3 -type f | xargs rm -f
[root@localhost ~]# find /usr/bin -mtime -3 -type f | xargs rm -f
[root@localhost ~]# find /use/sbin -mtime -3 -type f | xargs rm -f
[root@localhost ~]# find /sbin -mtime -3 -type f | xargs rm -f
將上面查找出的3天前的程序通通都刪掉,並強制斷電,重啓服務器!然而可恨的是這些程序在機器重啓後又好端端的運行以來!
很明顯,這些程序都被設置了開機自啓動
6)查看系統啓動項
[root@localhost ~]# find /etc/rc.d/ -mtime -3 ! -type d
果真這些程序都被設置了開機自啓動。因而,就再來一次刪除,而後暴力重啓服務器。
[root@localhost ~]# find /bin -mtime -3 -type f | xargs rm -f
[root@localhost ~]# find /usr/bin -mtime -3 -type f | xargs rm -f
[root@localhost ~]# find /use/sbin -mtime -3 -type f | xargs rm -f
[root@localhost ~]# find /sbin -mtime -3 -type f | xargs rm -f
[root@localhost ~]# find /etc/rc.d/ -mtime -3 ! -type d | xargs rm -f
重啓完服務器後,用top命令查看,系統CPU使用率也不高了。竟然這樣就被幹掉了。
7)顧慮到系統經常使用命令中(如ls,ps等)可能會隱藏啓動進程,這樣一旦執行又會拉起***程序。因而再查看下系統中是否建立了除root之外的管理員帳號:
[root@localhost ~]# awk -F":" '{if($3 == 0) print $1}' /etc/passwd
root
結果發現只輸入了root這一個用戶,說明系統用戶是正常的。
其實,當系統被感染rootkit後,系統已經變得不可靠了,惟一的辦法就是重裝系統了。
8)對於一些經常使用命令程序的修復思路:找出經常使用命令所在的rpm包,而後強制刪除,最後在經過yum安裝(因爲外網已拿掉,能夠經過squid代理上網的yum下載)
[root@localhost ~]# rpm -qf /bin/ps
[root@localhost ~]# rpm -qf /bin/ls
[root@localhost ~]# rpm -qf /bin/netstat
[root@localhost ~]# rpm -qf /usr/bin/pstree
而後將上面命令查找出來的rpm包強制卸載
[root@localhost ~]# rpm -e --nodeps ......
[root@localhost ~]# rpm -e --nodeps ......
[root@localhost ~]# rpm -e --nodeps ......
[root@localhost ~]# rpm -e --nodeps ......
接着再從新安裝
[root@localhost ~]# yum install -y procps coreutils net-tools psmisc
最後重啓下系統便可。除了上面此次排查以外,還能夠:
1)結合服務器的系統日誌/var/log/messages、/var/log/secure進行仔細檢查。
2)將可疑文件設爲不可執行,用chattr +ai將幾個重要目錄改成不可添加和修改,再將進程殺了,再重啓
3)chkrootkit之類的工具查一下
對於以上這些梳理的***排查的思路要清楚,排查手段要熟練。遇到問題不要慌,靜下心,細查系統日誌,根據上面的排查思路來一步步處理