- 相關推薦
服務器遭受攻擊后的處理流程
安全總是相對的,再安全的服務器也有可能遭受到攻擊。作為一個安全運維人員,要把握的原則是:盡量做好系統安全防護,修復所有已知的危險行為,同時,在系統遭受攻擊后能夠迅速有效地處理攻擊行為,最大限度地降低攻擊對系統產生的影響。下面是小編整理的服務器遭受攻擊后的處理流程:
一、處理服務器遭受攻擊的一般思路
系統遭受攻擊并不可怕,可怕的是面對攻擊束手無策,下面就詳細介紹下在服務器遭受攻擊后的一般處理思路。
1. 切斷網絡
所有的攻擊都來自于網絡,因此,在得知系統正遭受黑客的攻擊后,首先要做的就是斷開服務器的網絡連接,這樣除了能切斷攻擊源之外,也能保護服務器所在網絡的其他主機。
2. 查找攻擊源
可以通過分析系統日志或登錄日志文件,查看可疑信息,同時也要查看系統都打開了哪些端口,運行哪些進程,并通過這些進程分析哪些是可疑的程序。這個過程要根據經驗和綜合判斷能力進行追查和分析。下面的章節會詳細介紹這個過程的處理思路。
3. 分析入侵原因和途徑
既然系統遭到入侵,那么原因是多方面的,可能是系統漏洞,也可能是程序漏洞,一定要查清楚是哪個原因導致的,并且還要查清楚遭到攻擊的途徑,找到攻擊源,因為只有知道了遭受攻擊的原因和途徑,才能刪除攻擊源同時進行漏洞的修復。
4. 備份用戶數據
在服務器遭受攻擊后,需要立刻備份服務器上的用戶數據,同時也要查看這些數據中是否隱藏著攻擊源。如果攻擊源在用戶數據中,一定要徹底刪除,然后將用戶數據備份到一個安全的地方。
5. 重新安裝系統
永遠不要認為自己能徹底清除攻擊源,因為沒有人能比黑客更了解攻擊程序,在服務器遭到攻擊后,最安全也最簡單的方法就是重新安裝系統,因為大部分攻擊程序都會依附在系統文件或者內核中,所以重新安裝系統才能徹底清除攻擊源。
6. 修復程序或系統漏洞
在發現系統漏洞或者應用程序漏洞后,首先要做的就是修復系統漏洞或者更改程序bug,因為只有將程序的漏洞修復完畢才能正式在服務器上運行。
7. 恢復數據和連接網絡
將備份的數據重新復制到新安裝的服務器上,然后開啟服務,最后將服務器開啟網絡連接,對外提供服務。
二、檢查并鎖定可疑用戶
當發現服務器遭受攻擊后,首先要切斷網絡連接,但是在有些情況下,比如無法馬上切斷網絡連接時,就必須登錄系統查看是否有可疑用戶,如果有可疑用戶登錄了系統,那么需要馬上將這個用戶鎖定,然后中斷此用戶的遠程連接。
1. 登錄系統查看可疑用戶
通過root用戶登錄,然后執行“w”命令即可列出所有登錄過系統的用戶,如圖1-11所示。
通過這個輸出可以檢查是否有可疑或者不熟悉的用戶登錄,同時還可以根據用戶名以及用戶登錄的源地址和它們正在運行的進程來判斷他們是否為非法用戶。
2. 鎖定可疑用戶
一旦發現可疑用戶,就要馬上將其鎖定,例如上面執行“w”命令后發現nobody用戶應該是個可疑用戶(因為nobody默認情況下是沒有登錄權限的),于是首先鎖定此用戶,執行如下操作:
[root@server ~]# passwd -l nobody
鎖定之后,有可能此用戶還處于登錄狀態,于是還要將此用戶踢下線,根據上面“w”命令的輸出,即可獲得此用戶登錄進行的pid值,操作如下:
[root@server ~]# ps -ef|grep @pts/3
531 6051 6049 0 19:23 ? 00:00:00 sshd: nobody@pts/3
[root@server ~]# kill -9 6051
這樣就將可疑用戶nobody從線上踢下去了。如果此用戶再次試圖登錄它已經無法登錄了。
3. 通過last命令查看用戶登錄事件
last命令記錄著所有用戶登錄系統的日志,可以用來查找非授權用戶的登錄事件,而last命令的輸出結果來源于/var/log/wtmp文件,稍有經驗的入侵者都會刪掉/var/log/wtmp以清除自己行蹤,但是還是會露出蛛絲馬跡在此文件中的。
三、查看系統日志
查看系統日志是查找攻擊源最好的方法,可查的系統日志有/var/log/messages、/var/log/secure等,這兩個日志文件可以記錄軟件的運行狀態以及遠程用戶的登錄狀態,還可以查看每個用戶目錄下的.bash_history文件,特別是/root目錄下的.bash_history文件,這個文件中記錄著用戶執行的所有歷史命令。
四、檢查并關閉系統可疑進程
檢查可疑進程的命令很多,例如ps、top等,但是有時候只知道進程的名稱無法得知路徑,此時可以通過如下命令查看:
首先通過pidof命令可以查找正在運行的進程PID,例如要查找sshd進程的PID,執行如下命令:
[root@server ~]# pidof sshd
13276 12942 4284
然后進入內存目錄,查看對應PID目錄下exe文件的信息:
[root@server ~]# ls -al /proc/13276/exe
lrwxrwxrwx 1 root root 0 Oct 4 22:09 /proc/13276/exe -> /usr/sbin/sshd
這樣就找到了進程對應的完整執行路徑。如果還有查看文件的句柄,可以查看如下目錄:
[root@server ~]# ls -al /proc/13276/fd
通過這種方式基本可以找到任何進程的完整執行信息,此外還有很多類似的命令可以幫助系統運維人員查找可疑進程。例如,可以通過指定端口或者tcp、udp協議找到進程PID,進而找到相關進程:
[root@server ~]# fuser -n tcp 111
111/tcp: 1579
[root@server ~]# fuser -n tcp 25
25/tcp: 2037
[root@server ~]# ps -ef|grep 2037
root 2037 1 0 Sep23 ? 00:00:05 /usr/libexec/postfix/master
postfix 2046 2037 0 Sep23 ? 00:00:01 qmgr -l -t fifo -u
postfix 9612 2037 0 20:34 ? 00:00:00 pickup -l -t fifo -u
root 14927 12944 0 21:11 pts/1 00:00:00 grep 2037
在有些時候,攻擊者的程序隱藏很深,例如rootkits后門程序,在這種情況下ps、top、netstat等命令也可能已經被替換,如果再通過系統自身的命令去檢查可疑進程就變得毫不可信,此時,就需要借助于第三方工具來檢查系統可疑程序,例如前面介紹過的chkrootkit、RKHunter等工具,通過這些工具可以很方便的發現系統被替換或篡改的程序。
五、檢查文件系統的完好性
檢查文件屬性是否發生變化是驗證文件系統完好性最簡單、最直接的方法,例如可以檢查被入侵服務器上/bin/ls文件的大小是否與正常系統上此文件的大小相同,以驗證文件是否被替換,但是這種方法比較低級。此時可以借助于Linux下rpm這個工具來完成驗證,操作如下:
[root@server ~]# rpm -Va
....L... c /etc/pam.d/system-auth
S.5..... c /etc/security/limits.conf
S.5....T c /etc/sysctl.conf
S.5....T /etc/sgml/docbook-simple.cat
S.5....T c /etc/login.defs
S.5..... c /etc/openldap/ldap.conf
S.5....T c /etc/sudoers
..5....T c /usr/lib64/security/classpath.security
....L... c /etc/pam.d/system-auth
S.5..... c /etc/security/limits.conf
S.5..... c /etc/ldap.conf
S.5....T c /etc/ssh/sshd_config
對于輸出中每個標記的含義介紹如下:
? S 表示文件長度發生了變化
? M 表示文件的訪問權限或文件類型發生了變化
? 5 表示MD5校驗和發生了變化
? D 表示設備節點的屬性發生了變化
? L 表示文件的符號鏈接發生了變化
? U 表示文件/子目錄/設備節點的owner發生了變化
? G 表示文件/子目錄/設備節點的group發生了變化
? T 表示文件最后一次的修改時間發生了變化
如果在輸出結果中有“M”標記出現,那么對應的文件可能已經遭到篡改或替換,此時可以通過卸載這個rpm包重新安裝來清除受攻擊的文件。
不過這個命令有個局限性,那就是只能檢查通過rpm包方式安裝的所有文件,對于通過非rpm包方式安裝的文件就無能為力了。同時,如果rpm工具也遭到替換,就不能通過這個方法了,此時可以從正常的系統上復制一個rpm工具進行檢測。
【服務器遭受攻擊后的處理流程】相關文章:
醫療廢物處理流程05-18
裝修墻面處理流程06-05
拳擊比賽受傷處理流程11-04
PS圖像處理的規范流程和技巧12-22
日常賬務處理和報表的簡化流程05-18
拳擊比賽7大創傷處理流程08-17
用友U8壞賬賬務處理流程04-11
Linux主機被入侵后的處理案例解讀05-11
電腦中病毒后簡單的處理方式05-26