本指南中所謂的服務(wù)器被入侵或者說(shuō)被黑了的意思,是指未經(jīng)授權(quán)的人或程序?yàn)榱俗约旱哪康牡卿浀椒⻊?wù)器上去并使用其計(jì)算資源,通常會(huì)產(chǎn)生不好的影響。
免責(zé)聲明:若你的服務(wù)器被類(lèi)似 NSA 這樣的國(guó)家機(jī)關(guān)或者某個(gè)犯罪集團(tuán)入侵,那么你并不會(huì)注意到有任何問(wèn)題,這些技術(shù)也無(wú)法發(fā)覺(jué)他們的存在。
然而,大多數(shù)被攻破的服務(wù)器都是被類(lèi)似自動(dòng)攻擊程序這樣的程序或者類(lèi)似“腳本小子”這樣的廉價(jià)攻擊者,以及蠢蛋罪犯所入侵的。
這類(lèi)攻擊者會(huì)在訪(fǎng)問(wèn)服務(wù)器的同時(shí)濫用服務(wù)器資源,并且不怎么會(huì)采取措施來(lái)隱藏他們正在做的事情。
被入侵服務(wù)器的癥狀
當(dāng)服務(wù)器被沒(méi)有經(jīng)驗(yàn)攻擊者或者自動(dòng)攻擊程序入侵了的話(huà),他們往往會(huì)消耗 100% 的資源。他們可能消耗 CPU 資源來(lái)進(jìn)行數(shù)字貨幣的采礦或者發(fā)送垃圾郵件,也可能消耗帶寬來(lái)發(fā)動(dòng) DoS 攻擊。
因此出現(xiàn)問(wèn)題的第一個(gè)表現(xiàn)就是服務(wù)器 “變慢了”。這可能表現(xiàn)在網(wǎng)站的頁(yè)面打開(kāi)的很慢,或者電子郵件要花很長(zhǎng)時(shí)間才能發(fā)送出去。
那么你應(yīng)該查看那些東西呢?
檢查 1 – 當(dāng)前都有誰(shuí)在登錄?
你首先要查看當(dāng)前都有誰(shuí)登錄在服務(wù)器上。發(fā)現(xiàn)攻擊者登錄到服務(wù)器上進(jìn)行操作并不復(fù)雜。
其對(duì)應(yīng)的命令是 w。運(yùn)行 w 會(huì)輸出如下結(jié)果:
08:32:55 up 98 days, 5:43, 2 users, l
OAd average: 0.05, 0.03, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 113.174.161.1 08:26 0.00s 0.03s 0.02s ssh root@coopeaa12
root pts/1 78.31.109.1 08:26 0.00s 0.01s 0.00s w
第一個(gè) IP 是英國(guó) IP,而第二個(gè) IP 是越南 IP。這個(gè)不是個(gè)好兆頭。
停下來(lái)做個(gè)深呼吸, 不要恐慌之下只是干掉他們的 SSH 連接。除非你能夠防止他們?cè)俅芜M(jìn)入服務(wù)器,否則他們會(huì)很快進(jìn)來(lái)并踢掉你,以防你再次回去。
請(qǐng)參閱本文最后的“被入侵之后怎么辦”這一章節(jié)來(lái)看找到了被入侵的證據(jù)后應(yīng)該怎么辦。
whois 命令可以接一個(gè) IP 地址然后告訴你該 IP 所注冊(cè)的組織的所有信息,當(dāng)然就包括所在國(guó)家的信息。
檢查 2 – 誰(shuí)曾經(jīng)登錄過(guò)?
Linux 服務(wù)器會(huì)記錄下哪些用戶(hù),從哪個(gè) IP,在什么時(shí)候登錄的以及登錄了多長(zhǎng)時(shí)間這些信息。使用 last 命令可以查看這些信息。
輸出類(lèi)似這樣:
root pts/1 78.31.109.1 Thu Nov 30 08:26 still logged in
root pts/0 113.174.161.1 Thu Nov 30 08:26 still logged in
root 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)
這里可以看到英國(guó) IP 和越南 IP 交替出現(xiàn),而且最上面兩個(gè) IP 現(xiàn)在還處于登錄狀態(tài)。如果你看到任何未經(jīng)授權(quán)的 IP,那么請(qǐng)參閱最后章節(jié)。
登錄后的歷史記錄會(huì)記錄到二進(jìn)制的 /var/log/wtmp 文件中(LCTT 譯注:這里作者應(yīng)該寫(xiě)錯(cuò)了,根據(jù)實(shí)際情況修改),因此很容易被刪除。通常攻擊者會(huì)直接把這個(gè)文件刪掉,以掩蓋他們的攻擊行為。 因此, 若你運(yùn)行了 last 命令卻只看得見(jiàn)你的當(dāng)前登錄,那么這就是個(gè)不妙的信號(hào)。
如果沒(méi)有登錄歷史的話(huà),請(qǐng)一定小心,繼續(xù)留意入侵的其他線(xiàn)索。
檢查 3 – 回顧命令歷史
這個(gè)層次的攻擊者通常不會(huì)注意掩蓋命令的歷史記錄,因此運(yùn)行 history 命令會(huì)顯示出他們?cè)?jīng)做過(guò)的所有事情。 一定留意有沒(méi)有用 wget 或 curl 命令來(lái)下載類(lèi)似垃圾郵件機(jī)器人或者挖礦程序之類(lèi)的非常規(guī)軟件。
命令歷史存儲(chǔ)在 ~/.bash_history 文件中,因此有些攻擊者會(huì)刪除該文件以掩蓋他們的所作所為。跟登錄歷史一樣,若你運(yùn)行 history 命令卻沒(méi)有輸出任何東西那就表示歷史文件被刪掉了。這也是個(gè)不妙的信號(hào),你需要很小心地檢查一下服務(wù)器了。(LCTT 譯注,如果沒(méi)有命令歷史,也有可能是你的配置錯(cuò)誤。)
檢查 4 – 哪些進(jìn)程在消耗 CPU?
你常遇到的這類(lèi)攻擊者通常不怎么會(huì)去掩蓋他們做的事情。他們會(huì)運(yùn)行一些特別消耗 CPU 的進(jìn)程。這就很容易發(fā)現(xiàn)這些進(jìn)程了。只需要運(yùn)行 top 然后看最前的那幾個(gè)進(jìn)程就行了。
這也能顯示出那些未登錄進(jìn)來(lái)的攻擊者。比如,可能有人在用未受保護(hù)的郵件腳本來(lái)發(fā)送垃圾郵件。
如果你最上面的進(jìn)程對(duì)不了解,那么你可以 Google 一下進(jìn)程名稱(chēng),或者通過(guò) losf 和 strace 來(lái)看看它做的事情是什么。
使用這些工具,第一步從 top 中拷貝出進(jìn)程的 PID,然后運(yùn)行:
strace -p PID
這會(huì)顯示出該進(jìn)程調(diào)用的所有系統(tǒng)調(diào)用。它產(chǎn)生的內(nèi)容會(huì)很多,但這些信息能告訴你這個(gè)進(jìn)程在做什么。
lsof -p PID
這個(gè)程序會(huì)列出該進(jìn)程打開(kāi)的文件。通過(guò)查看它訪(fǎng)問(wèn)的文件可以很好的理解它在做的事情。
檢查 5 – 檢查所有的系統(tǒng)進(jìn)程
消耗 CPU 不嚴(yán)重的未授權(quán)進(jìn)程可能不會(huì)在 top 中顯露出來(lái),不過(guò)它依然可以通過(guò) ps 列出來(lái)。命令 ps auxf 就能顯示足夠清晰的信息了。
你需要檢查一下每個(gè)不認(rèn)識(shí)的進(jìn)程。經(jīng)常運(yùn)行 ps (這是個(gè)好習(xí)慣)能幫助你發(fā)現(xiàn)奇怪的進(jìn)程。
檢查 6 – 檢查進(jìn)程的網(wǎng)絡(luò)使用情況
iftop 的功能類(lèi)似 top,它會(huì)排列顯示收發(fā)網(wǎng)絡(luò)數(shù)據(jù)的進(jìn)程以及它們的源地址和目的地址。類(lèi)似 DoS 攻擊或垃圾機(jī)器人這樣的進(jìn)程很容易顯示在列表的最頂端。
檢查 7 – 哪些進(jìn)程在監(jiān)聽(tīng)網(wǎng)絡(luò)連接?
通常攻擊者會(huì)安裝一個(gè)后門(mén)程序?qū)iT(mén)監(jiān)聽(tīng)網(wǎng)絡(luò)端口接受指令。該進(jìn)程等待期間是不會(huì)消耗 CPU 和帶寬的,因此也就不容易通過(guò) top 之類(lèi)的命令發(fā)現(xiàn)。
lsof 和 netstat 命令都會(huì)列出所有的聯(lián)網(wǎng)進(jìn)程。我通常會(huì)讓它們帶上下面這些參數(shù):
lsof -i
netstat -plunt
你需要留意那些處于 LISTEN 和 ESTABLISHED 狀態(tài)的進(jìn)程,這些進(jìn)程要么正在等待連接(LISTEN),要么已經(jīng)連接(ESTABLISHED)。如果遇到不認(rèn)識(shí)的進(jìn)程,使用 strace 和 lsof來(lái)看看它們?cè)谧鍪裁礀|西。
被入侵之后該怎么辦呢?
首先,不要緊張,尤其當(dāng)攻擊者正處于登錄狀態(tài)時(shí)更不能緊張。你需要在攻擊者警覺(jué)到你已經(jīng)發(fā)現(xiàn)他之前奪回機(jī)器的控制權(quán)。如果他發(fā)現(xiàn)你已經(jīng)發(fā)覺(jué)到他了,那么他可能會(huì)鎖死你不讓你登陸服務(wù)器,然后開(kāi)始?xì)瑴幺E。
如果你技術(shù)不太好那么就直接關(guān)機(jī)吧。你可以在服務(wù)器上運(yùn)行 shutdown -h now 或者 systemctl poweroff 這兩條命令之一。也可以登錄主機(jī)提供商的控制面板中關(guān)閉服務(wù)器。關(guān)機(jī)后,你就可以開(kāi)始配置防火墻或者咨詢(xún)一下供應(yīng)商的意見(jiàn)。
如果你對(duì)自己頗有自信,而你的主機(jī)提供商也有提供上游防火墻,那么你只需要以此創(chuàng)建并啟用下面兩條規(guī)則就行了:
只允許從你的 IP 地址登錄 SSH。
封禁除此之外的任何東西,不僅僅是 SSH,還包括任何端口上的任何協(xié)議。
這樣會(huì)立即關(guān)閉攻擊者的 SSH 會(huì)話(huà),而只留下你可以訪(fǎng)問(wèn)服務(wù)器。
如果你無(wú)法訪(fǎng)問(wèn)上游防火墻,那么你就需要在服務(wù)器本身創(chuàng)建并啟用這些防火墻策略,然后在防火墻規(guī)則起效后使用 kill 命令關(guān)閉攻擊者的 SSH 會(huì)話(huà)。(LCTT 譯注:本地防火墻規(guī)則 有可能不會(huì)阻止已經(jīng)建立的 SSH 會(huì)話(huà),所以保險(xiǎn)起見(jiàn),你需要手工殺死該會(huì)話(huà)。)
最后還有一種方法,如果支持的話(huà),就是通過(guò)諸如串行控制臺(tái)之類(lèi)的帶外連接登錄服務(wù)器,然后通過(guò) systemctl stop network.service 停止網(wǎng)絡(luò)功能。這會(huì)關(guān)閉所有服務(wù)器上的網(wǎng)絡(luò)連接,這樣你就可以慢慢的配置那些防火墻規(guī)則了。
重奪服務(wù)器的控制權(quán)后,也不要以為就萬(wàn)事大吉了。
不要試著修復(fù)這臺(tái)服務(wù)器,然后接著用。你永遠(yuǎn)不知道攻擊者做過(guò)什么,因此你也永遠(yuǎn)無(wú)法保證這臺(tái)服務(wù)器還是安全的。
最好的方法就是拷貝出所有的數(shù)據(jù),然后重裝系統(tǒng)。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴(lài)品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/
本文標(biāo)題:如何判斷 Linux 服務(wù)器是否被入侵?
本文網(wǎng)址:http://www.oesoe.com/html/consultation/10839624334.html