當前位置:才華齋>IT認證>Linux認證>

伺服器遭受攻擊後的處理流程

Linux認證 閱讀(1.27W)

安全總是相對的,再安全的伺服器也有可能遭受到攻擊。作為一個安全運維人員,要把握的原則是:儘量做好系統安全防護,修復所有已知的危險行為,同時,在系統遭受攻擊後能夠迅速有效地處理攻擊行為,最大限度地降低攻擊對系統產生的影響。下面是小編整理的伺服器遭受攻擊後的處理流程:

伺服器遭受攻擊後的處理流程

  一、處理伺服器遭受攻擊的一般思路

系統遭受攻擊並不可怕,可怕的是面對攻擊束手無策,下面就詳細介紹下在伺服器遭受攻擊後的一般處理思路。

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等,這兩個日誌檔案可以記錄軟體的執行狀態以及遠端使用者的登入狀態,還可以檢視每個使用者目錄下的_history檔案,特別是/root目錄下的_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/

S.5....T c /etc/

S.5....T /etc/sgml/

S.5....T c /etc/

S.5..... c /etc/openldap/

S.5....T c /etc/sudoers

..5....T c /usr/lib64/security/rity

....L... c /etc/pam.d/system-auth

S.5..... c /etc/security/

S.5..... c /etc/

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工具進行檢測