天天看點

伺服器被攻擊怎麼辦?常見處理方法

對于企業使用者來,最害怕的莫過于伺服器遭受攻擊了,雖然運維人員在此之前做好了全面的防範工作,但攻擊再所難免,如何在伺服器遭受攻擊後能夠迅速有效的處理攻擊行為?如何才能降低伺服器被攻擊的可能性?如何最大限度的降低攻擊對伺服器造成的影響?

一、伺服器被攻擊怎麼辦?處理步驟

1.切斷網絡

所有的攻擊都來自于網絡,是以,在得知系統正遭受黑客的攻擊後,首先要做的就是斷開伺服器的網絡連接配接,這樣除了能切斷攻擊源之外,也能保護伺服器所在網絡的其他主機。

2.查找攻擊源

可以通過分析系統日志或登入日志檔案,檢視可疑資訊,同時也要檢視系統都打開了哪些端口,運作哪些程序,并通過這些程序分析哪些是可疑的程式。這個過程要根據經驗和綜合判斷能力進行追查和分析。下面的章節會詳細介紹這個過程的處理思路。

3.分析入侵原因和途徑

既然系統遭到入侵,那麼原因是多方面的,可能是系統漏洞,也可能是程式漏洞,一定要查清楚是哪個原因導緻的,并且還要查清楚遭到攻擊的途徑,找到攻擊源,因為隻有知道了遭受攻擊的原因和途徑,才能删除攻擊源同時進行漏洞的修複。

4.備份使用者資料

在伺服器遭受攻擊後,需要立刻備份伺服器上的使用者資料,同時也要檢視這些資料中是否隐藏着攻擊源。如果攻擊源在使用者資料中,一定要徹底删除,然後将使用者資料備份到一個安全的地方。

5.重新安裝系統

永遠不要認為自己能徹底清除攻擊源,因為沒有人能比黑客更了解攻擊程式,在伺服器遭到攻擊後,最安全也最簡單的方法就是重新安裝系統,因為大部分攻擊程式都會依附在系統檔案或者核心中,是以重新安裝系統才能徹底清除攻擊源。

6.修複程式或系統漏洞

在發現系統漏洞或者應用程式漏洞後,首先要做的就是修複系統漏洞或者更改程式bug,因為隻有将程式的漏洞修複完畢才能正式在伺服器上運作。

7.恢複資料和連接配接網絡

将備份的資料重新複制到新安裝的伺服器上,然後開啟服務,最後将伺服器開啟網絡連接配接,對外提供服務。

二、如何檢查并鎖定可疑使用者

當發現伺服器遭受攻擊後,首先要切斷網絡連接配接,但是在有些情況下,比如無法馬上切斷網絡連接配接時,就必須登入系統檢視是否有可疑使用者,如果有可疑使用者登入了系統,那麼需要馬上将這個使用者鎖定,然後中斷此使用者的遠端連接配接。

1.登入系統檢視可疑使用者

通過root使用者登入,然後執行“w”指令即可列出所有登入過系統的使用者,如下圖所示。

伺服器被攻擊怎麼辦?常見處理方法

通過這個輸出可以檢查是否有可疑或者不熟悉的使用者登入,同時還可以根據使用者名以及使用者登入的源位址和它們正在運作的程序來判斷他們是否為非法使用者。

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,執行如下指令:

1 [root@server ~]# pidof sshd

2 13276 12942 4284

然後進入記憶體目錄,檢視對應PID目錄下exe檔案的資訊:

1 [root@server ~]# ls -al /proc/13276/exe

2 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,進而找到相關程序:

1 [root@server ~]# fuser -n tcp 111

2 111/tcp:              1579

3 [root@server ~]# fuser -n tcp 25

4 25/tcp:               2037

5 [root@server ~]# ps -ef|grep 2037

6 root      2037     1  0 Sep23 ?        00:00:05 /usr/libexec/postfix/master

7 postfix   2046  2037  0 Sep23 ?        00:00:01 qmgr -l -t fifo -u

8 postfix   9612  2037  0 20:34 ?        00:00:00 pickup -l -t fifo -u

9 root     14927 12944  0 21:11 pts/1    00:00:00 grep 2037

在有些時候,攻擊者的程式隐藏很深,例如rootkits後門程式,在這種情況下ps、top、netstat等指令也可能已經被替換,如果再通過系統自身的指令去檢查可疑程序就變得毫不可信,此時,就需要借助于第三方工具來檢查系統可疑程式,例如前面介紹過的chkrootkit、RKHunter等工具,通過這些工具可以很友善的發現系統被替換或篡改的程式。

五、檢查檔案系統的完好性

檢查檔案屬性是否發生變化是驗證檔案系統完好性最簡單、最直接的方法,例如可以檢查被入侵伺服器上/bin/ls檔案的大小是否與正常系統上此檔案的大小相同,以驗證檔案是否被替換,但是這種方法比較低級。此時可以借助于Linux下rpm這個工具來完成驗證,操作如下:

1 [root@server ~]# rpm -Va

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

3 S.5.....  c /etc/security/limits.conf

4 S.5....T  c /etc/sysctl.conf

5 S.5....T    /etc/sgml/docbook-simple.cat

6 S.5....T  c /etc/login.defs

7 S.5.....  c /etc/openldap/ldap.conf

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

9 ..5....T  c /usr/lib64/security/classpath.security

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

11 S.5.....  c /etc/security/limits.conf

12 S.5.....  c /etc/ldap.conf

13 S.5....T  c /etc/ssh/sshd_config

對于輸出中每個标記的含義介紹如下:

S 表示檔案長度發生了變化

M 表示檔案的通路權限或檔案類型發生了變化

5 表示MD5校驗和發生了變化

D 表示裝置節點的屬性發生了變化

L 表示檔案的符号連結發生了變化

U 表示檔案/子目錄/裝置節點的owner發生了變化

G 表示檔案/子目錄/裝置節點的group發生了變化

T 表示檔案最後一次的修改時間發生了變化

繼續閱讀