哈嘍大家好,我是鹹魚 不知道大家有沒有看過這麼一部電影: 這部電影講述了男主是一個電腦極客,在電腦方面有著不可思議的天賦,男主所在的黑客組織憑藉著超高的黑客技術去入侵各種國家機構的系統,並引起了德國秘密警察組織、歐洲刑警組織的重視 剛開始看的時候以為是一部講述黑客的電影,到後面才發現其實是講“社會 ...
不知道大家有沒有看過這麼一部電影:
這部電影講述了男主是一個電腦極客,在電腦方面有著不可思議的天賦,男主所在的黑客組織憑藉著超高的黑客技術去入侵各種國家機構的系統,並引起了德國秘密警察組織、歐洲刑警組織的重視
剛開始看的時候以為是一部講述黑客的電影,到後面才發現其實是講“社會工程學”
好了開始今天的正題——跟大家聊聊伺服器安全相關的問題
我們需要知道,安全總是相對的,再安全的伺服器也有可能遭受到攻擊,所以我們需要儘量地做好系統安全防護、及時修複一些已知的漏洞;當伺服器收到攻擊的時候能夠迅速有效地處理攻擊行為,最大限度地降低攻擊對系統產生的影響
伺服器遭受攻擊不是最可怕的,最可怕的是面對攻擊時自己束手無策無從下手,今天鹹魚就來介紹一下伺服器遭受攻擊之後我們需要做些什麼,讓大家在遇到這種情況的時候能有個大概參考
常見思路
-
切斷網路
常見的攻擊來自網路
對於一些對外提供服務的伺服器,在得知系統遭受到黑客的攻擊之後,首先要做的就是斷開伺服器的網路連接,這樣除了能切斷攻擊源之外,也能夠保護伺服器所在網路的其他主機不受攻擊
-
查找攻擊源
首先我們可以分析系統日誌或者登錄日誌文件,去查看可疑信息
其次查看系統開啟了哪些埠,運行了哪些進程(服務),在這個過程中去分析一下哪些是可疑的進程(系統平時運行什麼進程心裡多多少少都會有個大概)
-
分析入侵途徑和原因
系統受到入侵,肯定是有多方原因的(可能是系統漏洞、可能是程式漏洞)
所以我們需要查清楚是哪個原因導致的,並且還要查清楚攻擊的途徑,找到攻擊源
-
備份重要數據
在系統遭受攻擊之後,需要立即備份伺服器上的重要數據(例如用戶數據),同時也要查看這些數據中是否隱藏著攻擊源
如果攻擊源在數據中,一定要徹底刪除然後將數據備份到一個安全的地方
-
重裝系統
不要抱有自己能夠徹底清除攻擊源的幻想,因為沒有人能比黑客更瞭解攻擊程式
在伺服器遭受到攻擊後,最安全也最簡單的方法就是重裝系統,因為大部分攻擊程式都會依附在系統文件或者內核中
處理過程
下麵鹹魚將跟大家分享一些關於伺服器遭受攻擊後的常見處理流程
-
檢查可疑用戶
在發現伺服器遭受到攻擊之後,首先要切斷網路連接,但是有些情況下(無法馬上切斷網路連接),就必須上系統查看是否有可疑用戶在登錄
如果發現有可疑用戶登錄了系統,首先要將這個用戶鎖定,然後中斷可疑用戶的遠程連接
首先查看可疑用戶,執行 w
命令列出所有登陸過系統的用戶
通過輸出的內容可以檢查出是否有可疑或者不熟悉的用戶登錄,同時還可以根據用戶名(USER 欄位)以及用戶登錄的源地址(FROM 欄位)又或者它們正在運行的進程、執行的命令(WHAT 欄位)來判斷
-
鎖定可疑用戶
一旦發現可疑用戶,就要馬上將其鎖定
例如通過上面的輸出發現 nobody 用戶應該是可疑用戶(因為 nobody 用戶預設情況下是沒有登錄許可權的,不可能說執行 bash)
-
查看用戶登錄日誌
last 命令記錄了所有用戶登錄系統的命令,可以通過 last 命令來查找非法用戶的登錄事件
last 命令的輸出結果來源於 /var/log/wtmp
文件中,稍微有點經驗的黑客都會刪掉這個文件以便清除自己的行蹤
-
查看系統日誌
查看系統日誌是查找攻擊源最好的辦法
可以查看的系統日誌有 /var/log/messages
和 /var//log/secure
,這兩個日誌文件可以記錄系統的運行狀態以及遠程用戶的登錄狀態
還可以查看每個用戶目錄下的 .bash_history
文件,尤其是 /root
目錄下的,這個文件記錄著用戶執行的所有歷史命令
-
檢查並關閉系統可疑進程
檢查可疑進程可以通過 top
、ps
命令
但是在有些情況下我們只知道進程的名稱不知道執行路徑,可以通過 pidof
命令找到對應的 PID 號,知道了 PID 號我們再去對應路徑去查看進程完整的執行路徑
除此之外,我們還可以通過指定埠來找到進程的 PID,從而找到相關進程
-
檢查文件系統的完整性
檢查文件屬性是否發生變化是驗證文件系統完好性完整性最簡單最直接方法
例如可以比較被攻擊伺服器上 /bin/ls
文件的大小與正常伺服器大小是否相同(或者比較 MD5 值)
,以此來驗證文件是否被動過
但是這種方法比較耗時耗力,我們可以藉助 Linux 上 RPM 工具來完成驗證
-
S 表示文件長度發生了變化
-
M 表示文件的訪問許可權或文件類型發生了變化
-
5 表示文件的 MD5 校驗值發生了變化
-
D 表示設備節點屬性發生了變化
-
L 表示文件的符號鏈接發生了變化
-
U 表示文件子目錄下的設備節點的 owner 發生了變化
-
G 表示文件子目錄下的設備節點 group 發生了變化
-
T 表示文件最後一次的修改時間發生了變化
一般來講,如果輸出結果中有 'M' 標記出現,那麼對應文件可能已經遭受到篡改或替換(註意!不一定是遭受攻擊,只是說要你側重在這些文件上排查)
不過這個命令有局限性,那就是只能檢查通過 RPM 包方式安裝的文件;而且如果 RPM 工具遭受攻擊,那就不能用這種方法了,這時候你可以從正常的系統上去複製一個 RPM 工具來進行檢測