排查Linux機器是否受到入侵,首先得看Linux伺服器當前是什麼狀態,有什麼故障,針對性的排查,俗話不是說:對症下藥,所以一定要先確定問題,再根據問題判斷。
如果不是很清楚的話,可以從以下幾點排查:
首先要檢視當前都有誰登入在伺服器上。發現攻擊者登入到伺服器上進行操作並不複雜。
其對應的命令是w,執行w會輸出如下結果:
Linux 伺服器會記錄下哪些使用者,從哪個 IP,在什麼時候登入的以及登入了多長時間這些資訊。使用last命令可以檢視這些資訊。
輸出類似這樣:
這個層次的攻擊者通常不會注意掩蓋命令的歷史記錄,因此執行history命令會顯示出他們曾經做過的所有事情。 一定留意有沒有用wget或curl命令來下載類似垃圾郵件機器人或者挖礦程式之類的非常規軟體。
命令歷史儲存在~/
.bash_history
常遇到的這類攻擊者通常不怎麼會去掩蓋他們做的事情。他們會執行一些特別消耗 CPU 的程序。這就很容易發現這些程序了。只需要執行top然後看最前的那幾個程序就行了。
這也能顯示出那些未登入進來的攻擊者。比如,可能有人在用未受保護的郵件指令碼來發送垃圾郵件。
如果對最上面的程序不瞭解,那麼你可以百度 一下程序名稱,或者透過losf和strace來看看它做的事情是什麼。
使用這些工具,第一步從top中複製出程序的 PID,然後執行:
這會顯示出該程序呼叫的所有系統呼叫。它產生的內容會很多,但這些資訊能告訴你這個程序在做什麼。
這個程式會列出該程序開啟的檔案。透過檢視它訪問的檔案可以很好的理解它在做的事情。
消耗 CPU 不嚴重的未授權程序可能不會在top中顯露出來,不過它依然可以透過ps列出來。命令ps auxf就能顯示足夠清晰的資訊了。
你需要檢查一下每個不認識的程序。經常執行ps這是個好習慣)能幫助你發現奇怪的程序。
iftop的功能類似top,它會排列顯示收發網路資料的程序以及它們的源地址和目的地址。類似 DoS 攻擊或垃圾機器人這樣的程序很容易顯示在列表的最頂端。
通常攻擊者會安裝一個後門程式專門監聽網路埠接受指令。該程序等待期間是不會消耗 CPU 和頻寬的,因此也就不容易透過top之類的命令發現。
lsof和netstat命令都會列出所有的聯網程序。我通常會讓它們帶上下面這些引數:
需要留意那些處於LISTEN和ESTABLTSHED狀態的程序,這些程序要麼正在等待連線(LISTEN),要麼已經連線(ESTABLISHED)。如果遇到不認識的程序,使用strace和lsof來看看它們在做什麼東西。
排查Linux機器是否受到入侵,首先得看Linux伺服器當前是什麼狀態,有什麼故障,針對性的排查,俗話不是說:對症下藥,所以一定要先確定問題,再根據問題判斷。
如果不是很清楚的話,可以從以下幾點排查:
檢查當前都有誰在登入?首先要檢視當前都有誰登入在伺服器上。發現攻擊者登入到伺服器上進行操作並不複雜。
其對應的命令是w,執行w會輸出如下結果:
08:32:55 up 98 days, 5:43, 2 users, load average: 0.05, 0.03, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 113.174.161.1 08:26 0.00s 0.03s 0.02s ssh root@coopeaa12root pts/1 78.31.109.1 08:26 0.00s 0.01s 0.00s w檢查誰曾經登入過?Linux 伺服器會記錄下哪些使用者,從哪個 IP,在什麼時候登入的以及登入了多長時間這些資訊。使用last命令可以檢視這些資訊。
輸出類似這樣:
root pts/1 78.31.109.1 Thu Nov 30 08:26 still logged inroot pts/0 113.174.161.1 Thu Nov 30 08:26 still logged inroot pts/1 78.31.109.1 Thu Nov 30 08:24 - 08:26 (00:01)root pts/0 113.174.161.1 Wed Nov 29 12:34 - 12:52 (00:18)root pts/0 14.176.196.1 Mon Nov 27 13:32 - 13:53 (00:21)檢查回顧命令歷史這個層次的攻擊者通常不會注意掩蓋命令的歷史記錄,因此執行history命令會顯示出他們曾經做過的所有事情。 一定留意有沒有用wget或curl命令來下載類似垃圾郵件機器人或者挖礦程式之類的非常規軟體。
命令歷史儲存在~/
.bash_history
檢查哪些程序在消耗 CPU常遇到的這類攻擊者通常不怎麼會去掩蓋他們做的事情。他們會執行一些特別消耗 CPU 的程序。這就很容易發現這些程序了。只需要執行top然後看最前的那幾個程序就行了。
這也能顯示出那些未登入進來的攻擊者。比如,可能有人在用未受保護的郵件指令碼來發送垃圾郵件。
如果對最上面的程序不瞭解,那麼你可以百度 一下程序名稱,或者透過losf和strace來看看它做的事情是什麼。
使用這些工具,第一步從top中複製出程序的 PID,然後執行:
strace -p PID這會顯示出該程序呼叫的所有系統呼叫。它產生的內容會很多,但這些資訊能告訴你這個程序在做什麼。
lsof -p PID這個程式會列出該程序開啟的檔案。透過檢視它訪問的檔案可以很好的理解它在做的事情。
檢查所有的系統程序消耗 CPU 不嚴重的未授權程序可能不會在top中顯露出來,不過它依然可以透過ps列出來。命令ps auxf就能顯示足夠清晰的資訊了。
你需要檢查一下每個不認識的程序。經常執行ps這是個好習慣)能幫助你發現奇怪的程序。
檢查程序的網路使用情況iftop的功能類似top,它會排列顯示收發網路資料的程序以及它們的源地址和目的地址。類似 DoS 攻擊或垃圾機器人這樣的程序很容易顯示在列表的最頂端。
檢查哪些程序在監聽網路連線通常攻擊者會安裝一個後門程式專門監聽網路埠接受指令。該程序等待期間是不會消耗 CPU 和頻寬的,因此也就不容易透過top之類的命令發現。
lsof和netstat命令都會列出所有的聯網程序。我通常會讓它們帶上下面這些引數:
lsof -inetstat -plunt需要留意那些處於LISTEN和ESTABLTSHED狀態的程序,這些程序要麼正在等待連線(LISTEN),要麼已經連線(ESTABLISHED)。如果遇到不認識的程序,使用strace和lsof來看看它們在做什麼東西。