背景
操作系統:Ubuntu12.04_x64
運行業務:公司業務系統,爬蟲程序,數據隊列。
服務器託管在外地機房。
突然,頻繁收到一組服務器ping監控不可達郵件,趕緊登陸zabbix監控系統查看流量狀況。
可見流量已經達到了800M左右,肯定不正常,馬上嘗試SSH登陸系統,不幸的事,這種情況是很難登錄系統操作的。該怎麼辦?
1、排查問題
第一反應是想馬上切斷外部網絡,通過內網連接查看。可是這樣一來流量就會消失,但也很難查找***源了。
於是聯繫機房協助解決,授權機房技術登錄到系統,先通過w命令查看是否有異常用戶在登錄,再看看登錄日誌/var/log/auth.log,預料之中,日誌已經清空;最後使用工具找出那個連接佔用流量大,我使用了iftop工具。
機房技術給我拍了照,看到本地一直通過http方式向104.31.225.6這個ip發送數據包,而且持續不斷。
那好,先把這個ip給屏蔽了試試:
iptables –AOUTPUT –d 104.31.225.6 –j DROP
哇塞!奇蹟出現了,流量下去了,能正常連接了,面部逐漸露出笑容。
過一會兒,不幸的事情發生了,流量又上來了,擦!什麼情況!心情頓時緊張起來。
又趕緊聯繫機房技術,執行上次的操作。
傻眼了,目的ip變了,這可咋搞,不可能一個個封吧!
靜下心來,仔細想了下,本地向外發包,那本地肯定會有程序來發!這可咋找啊?
2、查找***源
先通過netstat工具過濾端口,查看運行的進程ID:
netstat–atup |grep 15773
什麼都沒有啊,再換個端口試試,同樣的效果!
讓機房技術觀察了下連接狀態,原來是短連接,會很快的釋放端口,所以纔看不到端口的連接狀態。
正常長連接來說,可以使用lsof –i:15773這樣方式找到PID,再lsof –p PID找到打開的相關文件。
我想靜靜~。
好吧!決定先切斷外部網絡,內網SSH進入系統,先找到這個發包的程序,走起!
先通過netstat –antup 查看有無開放可疑的端口或者連接。
再通過ps –ef查看有無可疑的進程。
仔細看了看,都沒有發現可疑的。
難道是植入了rootkit***程序,說不好,試試看吧!
想要判斷系統有沒有植入了rootkit可以使用md5sum校驗執行文件判斷,先找個同版本操作系統,獲取到這個工具執行文件的md5值,再獲取可疑的工具執行文件md5值,比較兩個值是否相同,如果相同說明這個工具是可信任的,如果不相同很有可能是被替換的。另外,一般工具可執行文件大小都在幾十K到幾百K。
其實我沒有用md5方式來判斷工具是否可信任,因爲完全相同版本操作系統不好找,稍微有點差別,工具就有可能已被更新,md5值不同。我直接使用du –sh /bin/lsof查看,發現大小1.2M,明顯有問題。
所以直接下載正常系統裏的netstat、ps等工具上傳到被黑的系統裏使用,再將不可用的替換掉。
3、清理***程序
果然,奇蹟出現了,執行ps –ef後,發下最下面有幾行可疑程序。在這裏,本想截圖的,可惜SSH客戶端給關了,沒留下截圖。
記憶中,大概是這樣的:
pid/sbin/java.log
pid/usr/bin/dpkgd/ps –ef
pid/usr/bin/bsd-port/getty
pid/usr/bin/.sshd
看到這幾個,感覺很奇怪,怎麼會有個java.log的執行文件在運行呢,經過找同事覈實有沒有運行這樣的,他們說沒有,那好先殺掉並刪除再說。
緊接着怎麼會有我執行的命令呢,ps –ef,命令的路徑不是/bin/ps,引起了我的懷疑,馬上進入此目錄下查看。
擦,還有幾個,初步判斷是工具被替換了。
還有一個怎麼叫getty呢,再正常系統裏面對比進程,發現沒有這個。估計又是***留下的,勞資怒了,寧可錯殺一百,也不放過一個!
殺掉進程,刪除目錄。
.sshd進程?明顯很可疑,難道是ssh後門,先殺掉刪除再說!
再執行ps –ef命令看下,奇怪,java.log進程又起來了,難道有自啓動設置?於是到了/etc/init.d下查看,有個異常腳本,在正常系統的也沒有,打開看了下,果然是啓動***程序的腳本。把腳本刪除,再刪除一次java.log,不再出現了。
刪除了/sbin/java.log文件過一會又出現了,怎麼回事?估計是getty趁搞的鬼,同樣清除,不再自動生成了。
好了,可以開啓外網了,觀察了一會網絡流量不再飆升了,心情有如看到美女一樣的愉快!
博客地址:http://lizhenliang.blog.51cto.com
4、事件總結
ls/usr/bin/dpkgd/ #替換的工具,系統自帶的工具正常不會在這個目錄下,並且也不可用
netstatlsof ps ss
/sbin/java.log #判斷是發包程序,刪除後會自動生成
/usr/bin/bsd-port#判斷是自動生成java.log或着後門程序
/usr/sbin/.sshd #判斷是後門程序
***代碼程序下載地址:http://pan.baidu.com/s/1b3yOVW
小心,直接執行java.log可能會導致linux瞬間基本上無法連接~!
如果還有其他***程序怎麼辦?如果是XSS***,應用層漏洞***怎麼辦?
針對這些問題,從我們公司角度來說,儘量不重裝系統,業務太複雜。找出***點,跑的程序多,***面多,很棘手。先這樣吧!兵來將擋,水來土掩。~
讓***趁機***的原因:
1、運維對網絡安全實施落實力度低
2、沒有相關安全測試人員,不能及時發現應用層漏洞
等等...
針對這次***,總結了下防護思路:
1、linux系統安裝後,啓用防火牆,只允許信任源訪問指定服務,刪除不必要的用戶,關閉不必要的服務等。
2、收集日誌,包括系統日誌,登錄日誌,程序日誌等,及時發現潛在風險。
3、針對用戶登錄實時收集,包括登錄時間,密碼重試次數以及用戶執行命令記錄等。
4、對敏感文件或目錄變化進行事件監控,如/etc/passwd、/etc/shadow、/web、/tmp(一般上傳文件提權用)等。
5、進程狀態監控,對新增或可疑進程做好記錄並通知。
6、對上線的服務器系統、Web程序進程安全漏洞掃描。