伺服器遭受攻擊之後的常見思路

鹹魚Linux運維發表於2023-04-23

哈嘍大家好,我是鹹魚

 

不知道大家有沒有看過這麼一部電影:

 

這部電影講述了男主是一個電腦極客,在計算機方面有著不可思議的天賦,男主所在的駭客組織憑藉著超高的駭客技術去入侵各種國家機構的系統,並引起了德國秘密警察組織、歐洲刑警組織的重視

 

剛開始看的時候以為是一部講述駭客的電影,到後面才發現其實是講“社會工程學”

 

好了開始今天的正題——跟大家聊聊伺服器安全相關的問題

 

我們需要知道,安全總是相對的,再安全的伺服器也有可能遭受到攻擊,所以我們需要儘量地做好系統安全防護、及時修復一些已知的漏洞;當伺服器收到攻擊的時候能夠迅速有效地處理攻擊行為,最大限度地降低攻擊對系統產生的影響

 

伺服器遭受攻擊不是最可怕的,最可怕的是面對攻擊時自己束手無策無從下手,今天鹹魚就來介紹一下伺服器遭受攻擊之後我們需要做些什麼,讓大家在遇到這種情況的時候能有個大概參考

 

常見思路

  • 切斷網路

常見的攻擊來自網路

 

對於一些對外提供服務的伺服器,在得知系統遭受到駭客的攻擊之後,首先要做的就是斷開伺服器的網路連線,這樣除了能切斷攻擊源之外,也能夠保護伺服器所在網路的其他主機不受攻擊

 

  • 查詢攻擊源

首先我們可以分析系統日誌或者登入日誌檔案,去檢視可疑資訊

 

其次檢視系統開啟了哪些埠,執行了哪些程式(服務),在這個過程中去分析一下哪些是可疑的程式(系統平時執行什麼程式心裡多多少少都會有個大概)

 

  • 分析入侵途徑和原因

系統受到入侵,肯定是有多方原因的(可能是系統漏洞、可能是程式漏洞)

 

所以我們需要查清楚是哪個原因導致的,並且還要查清楚攻擊的途徑,找到攻擊源

 

  • 備份重要資料

在系統遭受攻擊之後,需要立即備份伺服器上的重要資料(例如使用者資料),同時也要檢視這些資料中是否隱藏著攻擊源

 

如果攻擊源在資料中,一定要徹底刪除然後將資料備份到一個安全的地方

 

  • 重灌系統

不要抱有自己能夠徹底清除攻擊源的幻想,因為沒有人能比駭客更瞭解攻擊程式

 

在伺服器遭受到攻擊後,最安全也最簡單的方法就是重灌系統,因為大部分攻擊程式都會依附在系統檔案或者核心中

 

處理過程

下面鹹魚將跟大家分享一些關於伺服器遭受攻擊後的常見處理流程

 

  • 檢查可疑使用者

在發現伺服器遭受到攻擊之後,首先要切斷網路連線,但是有些情況下(無法馬上切斷網路連線),就必須上系統檢視是否有可疑使用者在登入

 

如果發現有可疑使用者登入了系統,首先要將這個使用者鎖定,然後中斷可疑使用者的遠端連線

 

首先檢視可疑使用者,執行 w 命令列出所有登陸過系統的使用者

 

透過輸出的內容可以檢查出是否有可疑或者不熟悉的使用者登入,同時還可以根據使用者名稱(USER 欄位)以及使用者登入的源地址(FROM 欄位)又或者它們正在執行的程式、執行的命令(WHAT 欄位)來判斷

 

  • 鎖定可疑使用者

一旦發現可疑使用者,就要馬上將其鎖定

 

例如透過上面的輸出發現 nobody 使用者應該是可疑使用者(因為 nobody 使用者預設情況下是沒有登入許可權的,不可能說執行 bash)

 鎖定之後,這個使用者有可能還處於登入狀態,我們需要把它踢下線,根據上面 w 的輸出,即可獲得該使用者登入進行的 pid 值

 

  • 檢視使用者登入日誌

last 命令記錄了所有使用者登入系統的命令,可以透過 last 命令來查詢非法使用者的登入事件

 

last 命令的輸出結果來源於 /var/log/wtmp 檔案中,稍微有點經驗的駭客都會刪掉這個檔案以便清除自己的行蹤

 

  • 檢視系統日誌

檢視系統日誌是查詢攻擊源最好的辦法

 

可以檢視的系統日誌有 /var/log/messages/var//log/secure ,這兩個日誌檔案可以記錄系統的執行狀態以及遠端使用者的登入狀態

 

還可以檢視每個使用者目錄下的 .bash_history 檔案,尤其是 /root 目錄下的,這個檔案記錄著使用者執行的所有歷史命令

 

  • 檢查並關閉系統可疑程式

檢查可疑程式可以透過 topps 命令

 

但是在有些情況下我們只知道程式的名稱不知道執行路徑,可以透過 pidof 命令找到對應的 PID 號,知道了 PID 號我們再去對應路徑去檢視程式完整的執行路徑

 除此之外,我們還可以透過指定埠來找到程式的 PID,從而找到相關程式

 

  • 檢查檔案系統的完整性

檢查檔案屬性是否發生變化是驗證檔案系統完好性完整性最簡單最直接方法

 

例如可以比較被攻擊伺服器上 /bin/ls 檔案的大小與正常伺服器大小是否相同(或者比較 MD5 值)

,以此來驗證檔案是否被動過

 

但是這種方法比較耗時耗力,我們可以藉助 Linux 上 RPM 工具來完成驗證

 

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

  • M 表示檔案的訪問許可權或檔案型別發生了變化

  • 5 表示檔案的 MD5 校驗值發生了變化

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

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

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

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

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

 

一般來講,如果輸出結果中有 'M' 標記出現,那麼對應檔案可能已經遭受到篡改或替換(注意!不一定是遭受攻擊,只是說要你側重在這些檔案上排查)

 

不過這個命令有侷限性,那就是隻能檢查透過 RPM 包方式安裝的檔案;而且如果 RPM 工具遭受攻擊,那就不能用這種方法了,這時候你可以從正常的系統上去複製一個 RPM 工具來進行檢測

相關文章