首頁(yè) > 服務(wù)器 > Linux服務(wù)器 > 正文

對Linux系統進(jìn)程進(jìn)行監控和保護

2019-10-13 18:41:26
字體:
來(lái)源:轉載
供稿:網(wǎng)友

通過(guò)綜合采用用戶(hù)級別的top、ps等系統工具以及Linux內核防護技術(shù),我們可以從用戶(hù)/內核兩個(gè)層次全方位地保護Linux系統中重要系統進(jìn)程以及用戶(hù)進(jìn)程的安全性。

經(jīng)典的信息保密性安全模型Bell-LaPadula模型指出,進(jìn)程是整個(gè)計算機系統的一個(gè)主體,它需要通過(guò)一定的安全等級來(lái)對客體發(fā)生作用。進(jìn)程在一定條件下可以對諸如文件、數據庫等客體進(jìn)行操作。如果進(jìn)程用作其他不法用途,將給系統帶來(lái)重大危害。在現實(shí)生活當中,許多網(wǎng)絡(luò )黑客都是通過(guò)種植“木馬”的辦法來(lái)達到破壞計算機系統和入侵的目的,而這些“木馬”程序無(wú)一例外的是需要通過(guò)進(jìn)程這一方式在機器上運行才能發(fā)揮作用的。另外,許多破壞程序和攻擊手段都需要通過(guò)破壞目標計算機系統的合法進(jìn)程尤其是重要系統進(jìn)程,使得系統不能完成正常的工作甚至無(wú)法工作,從而達到摧毀目標計算機系統的目的。作為服務(wù)器中占絕大多數市場(chǎng)份額的Linux系統,要切實(shí)保證計算機系統的安全,我們必須對其進(jìn)程進(jìn)行監控和保護。

用戶(hù)級進(jìn)程監控工具

Linux系統提供了who、w、ps和top等察看進(jìn)程信息的系統調用,通過(guò)結合使用這些系統調用,我們可以清晰地了解進(jìn)程的運行狀態(tài)以及存活情況,從而采取相應的措施,來(lái)確保Linux系統的安全。它們是目前在Linux下最常見(jiàn)的進(jìn)程狀況查看工具,它們是隨Linux套件發(fā)行的,安裝好系統之后,用戶(hù)就可以使用。

1、who命令:該命令主要用于查看當前在線(xiàn)上的用戶(hù)情況。系統管理員可以使用who命令監視每個(gè)登錄的用戶(hù)此時(shí)此刻的所作所為。

2、w命令:該命令也用于顯示登錄到系統的用戶(hù)情況,但是與who不同的是,w命令功能更加強大,它不但可以顯示有誰(shuí)登錄到系統,還可以顯示出這些用戶(hù)當前正在進(jìn)行的工作,w命令是who命令的一個(gè)增強版。

3、ps命令:該命令是最基本同時(shí)也是非常強大的進(jìn)程查看命令。利用它可以確定有哪些進(jìn)程正在運行及運行的狀態(tài)、進(jìn)程是否結束、進(jìn)程有沒(méi)有僵死、哪些進(jìn)程占用了過(guò)多的資源等。ps命令可以監控后臺進(jìn)程的工作情況,因為后臺進(jìn)程是不和屏幕鍵盤(pán)這些標準輸入/輸出設備進(jìn)行通信的,如果需要檢測其情況,可以使用ps命令。

4、top命令:top命令和ps命令的基本作用是相同的,顯示系統當前的進(jìn)程及其狀態(tài),但是top是一個(gè)動(dòng)態(tài)顯示過(guò)程,可以通過(guò)用戶(hù)按鍵來(lái)不斷刷新當前狀態(tài)。如果在前臺執行該命令,它將獨占前臺,直到用戶(hù)終止該程序為止。比較準確地說(shuō),top命令提供了實(shí)時(shí)的對系統處理器的狀態(tài)監視。它可以顯示系統中CPU最“敏感”的任務(wù)列表。該命令可以按CPU使用、內存使用和執行時(shí)間對任務(wù)進(jìn)行排序,而且它的很多特性都可以通過(guò)交互式命令或者在個(gè)人定制文件中進(jìn)行設定。

需重點(diǎn)監控的一些進(jìn)程

由上面的介紹可知,Linux提供的這些命令都能提供關(guān)于進(jìn)程的一些信息,可以通過(guò)它們查看系統當前的進(jìn)程狀況,也可以找出那些占用了過(guò)多系統資源的進(jìn)程并結束該進(jìn)程。它們的優(yōu)點(diǎn)在于速度快,透明性好,直觀(guān)明了。下表給出了Linux系統中較為常見(jiàn)的重要的進(jìn)程(沒(méi)有完全列出,用戶(hù)可以參考相應的資料),用戶(hù)可以采用上述工具來(lái)實(shí)時(shí)的監測這些重要進(jìn)程的情況,并采取相應的防護措施。

系統調用存在缺點(diǎn)

我們上述所介紹的進(jìn)程監控方法和工具都是基于調用操作系統給我們提供的相應的API接口函數或者系統調用來(lái)實(shí)現的。我們所得到的只是接口函數處理后的結果,不能夠主動(dòng)地從操作系統內核的進(jìn)程數據結構當中獲取我們需要的信息。因而,它們具有如下缺點(diǎn):

1、傳統的進(jìn)程監控方法運行效率比較低,同時(shí)反應時(shí)間也比較長(cháng),實(shí)時(shí)性能差。

2、不能夠實(shí)時(shí)、高效地向用戶(hù)報告當前系統運行的安全狀況,就算系統中有不法進(jìn)程在運行,系統也不能識別出來(lái)。

3、不能給用戶(hù)捕捉不法進(jìn)程的行為提供證據和進(jìn)程的活動(dòng)軌跡。當一個(gè)不法進(jìn)程運行并對系統產(chǎn)生破壞時(shí),用戶(hù)即使通過(guò)察看進(jìn)程列表找到了不合法的進(jìn)程,也不清楚到底從進(jìn)程開(kāi)始運行直到捕捉到這樣一個(gè)不法進(jìn)程這樣一段時(shí)間內,進(jìn)程都對系統造成了哪些破壞,比如說(shuō),訪(fǎng)問(wèn)、修改了哪些重要的系統文件,占用了哪些系統資源等等。這些都給以后的恢復和處理工作帶來(lái)了很大的問(wèn)題。

4、執行程序工作在用戶(hù)態(tài),本身就不安全,入侵系統的黑客可以輕松地找到這些進(jìn)程監控程序的磁盤(pán)映像,進(jìn)行刪除甚至替換,從而會(huì )給系統帶來(lái)不可估量的損失。這一點(diǎn)尤其需要強調,比如說(shuō),黑客入侵系統成功,就可以植入他們所改寫(xiě)的ps程序以替換原來(lái)系統的ps程序,這樣就使得用戶(hù)不能通過(guò)該工具得知系統中當前運行的不法進(jìn)程,這樣無(wú)論黑客如何植入木馬或者其他程序,用戶(hù)都無(wú)法知道,從而無(wú)法采取措施終止這些行為。不言而喻,這樣的后果是很?chē)乐氐?。而在我們下面所要介紹的一種運行于內核的進(jìn)程監控程序當中,黑客根本無(wú)法或者很難深入內核來(lái)破壞該進(jìn)程監控程序,從而使其能夠很好地保證自身的安全。

基于上述種種不足,我們提出了在Linux內核中實(shí)現進(jìn)程實(shí)時(shí)監控的原理和技術(shù)。該技術(shù)主要分為以下幾個(gè)步驟:

首先,在“干凈”的系統環(huán)境下,全面地運行系統中的安全進(jìn)程,分析和搜集Linux環(huán)境下這些進(jìn)程的相關(guān)信息(包括進(jìn)程ID號、進(jìn)程名稱(chēng)、進(jìn)程可執行映像、進(jìn)程的開(kāi)始時(shí)間、進(jìn)程的父進(jìn)程等主要信息),形成一張“系統安全進(jìn)程列表”,作為進(jìn)程監控的依據。

接著(zhù),監控代碼在進(jìn)程調度過(guò)程中實(shí)時(shí)地搜集系統中運行進(jìn)程的信息。如果發(fā)現進(jìn)程不在 “系統安全進(jìn)程列表”當中,則馬上通過(guò)終端輸出該進(jìn)程的PID號、名稱(chēng)、進(jìn)程的可執行映像等信息,或者通過(guò)聲音向用戶(hù)報警,等待用戶(hù)處理,在這個(gè)等待的過(guò)程中,終止調度該進(jìn)程,直到用戶(hù)做出響應(放行該進(jìn)程或者殺死該進(jìn)程)。

在第二步當中,如果超級用戶(hù)(系統管理員)放行了該進(jìn)程,則可以將該進(jìn)程加入“系統安全進(jìn)程列表”,以完善該列表;如果是一般用戶(hù)在使用過(guò)程當中放行了某個(gè)進(jìn)程,那么,需要將該用戶(hù)的用戶(hù)名和身份記錄下來(lái),并且將放行的進(jìn)程記錄下來(lái)存為日志,那么,當超級用戶(hù)(系統管理員)無(wú)論是在審核用戶(hù)行為還是在修改“系統安全進(jìn)程列表”時(shí),都是一個(gè)有力的依據。

另外,在系統運行過(guò)程當中,如果發(fā)現“系統安全進(jìn)程列表”當中的某些重要的進(jìn)程 (包括kswapd、bdflush等)不在運行,則馬上將該進(jìn)程“遺失”的信息存入文件,以備在系統的恢復過(guò)程當中,對它們進(jìn)行針對性的恢復,根據不同的情況,有的需要馬上停機,恢復進(jìn)程,有的則可以現場(chǎng)恢復。

發(fā)表評論 共有條評論
用戶(hù)名: 密碼:
驗證碼: 匿名發(fā)表