對(duì)Linux係統進(jìn)程進行監控(kòng)和保護
通過綜(zōng)合采用(yòng)用戶級別的top、ps等係統工具以及Linux內核(hé)防(fáng)護(hù)技術(shù),我們可以從(cóng)用戶(hù)/內核兩個層次(cì)全方(fāng)位地保護Linux係統(tǒng)中重要(yào)係統進程以(yǐ)及用(yòng)戶進程的安全(quán)性。
經典的信(xìn)息保密(mì)性安全模型Bell-LaPadula模型指出,進程是整(zhěng)個計算(suàn)機係(xì)統的一個(gè)主體(tǐ),它需要通過一定的(de)安全(quán)等級來對客體發生(shēng)作用。進程在一定條件下可以對諸如文件、數據(jù)庫等客體進行操作。如果進程用作其他不法用途,將給係統帶來重大(dà)危害。在現實生活當中,許多網絡黑(hēi)客都是(shì)通(tōng)過種植“木馬(mǎ)”的辦(bàn)法來達到破壞計算機係(xì)統和入侵的目的,而(ér)這(zhè)些“木馬(mǎ)”程序(xù)無(wú)一例(lì)外(wài)的是需要通(tōng)過進程這一方式在機器上運(yùn)行才能發揮作用的(de)。另外,許多破壞程序和攻擊手段都需(xū)要(yào)通(tōng)過(guò)破壞目標計算機(jī)係統的合法進程尤其是重(chóng)要係統(tǒng)進(jìn)程,使得係(xì)統不能完成正(zhèng)常的工作甚至(zhì)無法工(gōng)作(zuò),從而達到(dào)摧(cuī)毀目標計算機係統的目的。作為(wéi)服(fú)務器中占絕大多數市場份額的Linux係統(tǒng),要切實(shí)保證計算(suàn)機係統的安全,我們必須對其進(jìn)程(chéng)進(jìn)行監控和保護。
用戶級進程監控工具
Linux係統提供了who、w、ps和top等察(chá)看進程信息的係統(tǒng)調(diào)用,通過(guò)結(jié)合(hé)使用這些係統調用,我們可以清(qīng)晰地(dì)了解進程的運(yùn)行狀態以(yǐ)及存活(huó)情況,從而(ér)采取相應的措施,來確保Linux係(xì)統的安全。它們是(shì)目前在Linux下最常見的進程狀況查(chá)看工具,它們是隨Linux套件發行的,安裝好(hǎo)係統(tǒng)之後(hòu),用戶就可以使用。
1、who命令(lìng):該命令主要用於查看當前(qián)在線上的用戶(hù)情況。係統管理(lǐ)員可以使用who命令監視每(měi)個登錄的用(yòng)戶此時此刻的所作所為。
2、w命令:該命令也用於顯(xiǎn)示登錄到係統的用戶情況,但是與who不同的是,w命令功能更加強大,它不但(dàn)可以(yǐ)顯(xiǎn)示(shì)有誰登錄(lù)到係(xì)統,還可以顯示出這些(xiē)用(yòng)戶當前正(zhèng)在進行的(de)工作,w命令是(shì)who命令的一(yī)個增(zēng)強(qiáng)版。
3、ps命令(lìng):該命令(lìng)是最基本同時(shí)也是非常強大(dà)的進程(chéng)查看命令。利用它可以確定有哪些進程正在運行及運行的狀(zhuàng)態(tài)、進(jìn)程是否(fǒu)結束、進程有沒(méi)有僵死(sǐ)、哪些進(jìn)程占用了(le)過多的資源(yuán)等。ps命令可以監控後台進程的工(gōng)作情況,因為後台進程(chéng)是不和屏(píng)幕鍵盤這些標準輸入/輸出設備進(jìn)行通信的,如果需要檢測(cè)其情況,可以使用(yòng)ps命令(lìng)。
4、top命令(lìng):top命令和ps命令的基本作用是相同的,顯示(shì)係統(tǒng)當前(qián)的進(jìn)程及(jí)其狀態,但是top是一個動態顯示過程,可以通(tōng)過用戶按鍵(jiàn)來不(bú)斷刷(shuā)新當前狀態。如果在前台執行(háng)該命令,它將獨占(zhàn)前台,直到用戶終止該程序為止。比(bǐ)較準確地說,top命令提供了實(shí)時(shí)的對係統處理器的(de)狀態監視。它可(kě)以顯示係統中CPU最“敏感”的(de)任務列表。該命令可以按CPU使用、內存使用和執行時間對(duì)任務進行排序,而且(qiě)它的很多(duō)特(tè)性都(dōu)可以通過交互式命令或者在(zài)個人定製(zhì)文件中進行設定。
需重點監控(kòng)的一些進程
由(yóu)上麵的(de)介紹(shào)可知,Linux提供(gòng)的這些命令都(dōu)能提供關於進程的一些信息,可以通過它們查看係統當前的進程狀況,也(yě)可以找出(chū)那些占用了過多係統資源的進程並結束該進(jìn)程。它們(men)的(de)優點在於速(sù)度快,透明性好,直觀明了。下表給出了Linux係統(tǒng)中較為(wéi)常見的重(chóng)要的(de)進程(chéng)(沒有完全列出,用戶可以參考相應(yīng)的資料),用戶(hù)可以(yǐ)采用上述工具來實時的監測這些重要進程的情(qíng)況,並采取相應的(de)防護措施(shī)。
係統調用(yòng)存在缺點(diǎn)
我們上(shàng)述(shù)所介紹的(de)進程(chéng)監(jiān)控方法和(hé)工具都是基於調用操(cāo)作係統給我們提(tí)供的(de)相應的(de)API接口函數或者係統調用來實現的。我們(men)所得到的隻是接口函數處理後的結(jié)果,不能夠(gòu)主(zhǔ)動地從操作係統內(nèi)核(hé)的進程數據結構(gòu)當(dāng)中獲取我們需要的信息。因而,它們(men)具有如(rú)下(xià)缺點:
1、傳統的(de)進程監(jiān)控方法運行(háng)效率(lǜ)比較低,同時反(fǎn)應時間也(yě)比較長,實時性能差。
2、不能夠實時(shí)、高效地向用戶報告(gào)當前係統運行的安全狀況,就(jiù)算係統中有不法進程在運行,係(xì)統也不能識別出來。
3、不能給(gěi)用戶(hù)捕(bǔ)捉不法進程的行(háng)為提(tí)供證據和進程的活動軌(guǐ)跡。當一個(gè)不法進程運行(háng)並對係(xì)統產生破壞時,用戶即使通過察看進(jìn)程列表(biǎo)找(zhǎo)到了(le)不合法的(de)進(jìn)程,也(yě)不清楚(chǔ)到底從(cóng)進(jìn)程開始運行直(zhí)到捕捉到這樣一個不(bú)法進(jìn)程這(zhè)樣一段時間內,進程都對係(xì)統造成了哪些(xiē)破壞,比如說(shuō),訪問、修改了哪些重要的係統文(wén)件,占用了哪些係統資源等等(děng)。這些都給(gěi)以後的恢複(fù)和處(chù)理(lǐ)工(gōng)作帶來(lái)了很大(dà)的(de)問題。
4、執行程序工作在(zài)用戶態,本身就不安全,入侵係統的黑(hēi)客可以輕鬆地找到這些(xiē)進程監控程序的磁盤映(yìng)像,進行刪除甚至替換,從而會給係(xì)統帶來不可(kě)估量的損失。這一點尤其需要強調,比如說,黑客入侵係統成功,就可以植入他(tā)們所(suǒ)改寫的(de)ps程序以替換(huàn)原(yuán)來係(xì)統的ps程序,這樣就使得用戶不能通(tōng)過該工具得知係統中當前運(yùn)行的不法(fǎ)進程,這樣無論黑(hēi)客如何植入木馬或者其他程序,用戶都(dōu)無法知(zhī)道(dào),從而無法采取措施終止這些行為。不言而喻,這樣的後果是很(hěn)嚴(yán)重的。而在我們下麵所(suǒ)要介紹的一種運行(háng)於內(nèi)核的進程(chéng)監控(kòng)程序當中,黑客根本無法或者很難深入內核(hé)來破(pò)壞(huài)該進程監控程序,從而使其能夠很(hěn)好地保證自身的安全。
基(jī)於上述(shù)種(zhǒng)種不(bú)足(zú),我(wǒ)們(men)提出(chū)了在Linux內核中實現進程實時監控的原理(lǐ)和(hé)技術。該技術(shù)主(zhǔ)要分為以下幾個步驟:
首先(xiān),在“幹淨”的係統環(huán)境下,全(quán)麵地運(yùn)行係統中(zhōng)的安全(quán)進程(chéng),分析和搜集Linux環境下(xià)這些進(jìn)程的相關信息(包括進程(chéng)ID號、進程名稱、進程可(kě)執行映像、進(jìn)程的開(kāi)始(shǐ)時間、進程的父進程等主要信(xìn)息),形成一張“係(xì)統安全進程列表”,作為進程監控的依據。
接著,監控代(dài)碼在進程調度過程中實(shí)時地(dì)搜集係統(tǒng)中運行進程的信息(xī)。如果發現進程不在 “係(xì)統安全進程列表(biǎo)”當中,則馬上通過終端輸出該進程的PID號、名稱、進程的(de)可執行映(yìng)像等信息,或(huò)者通過(guò)聲音(yīn)向用戶報警,等待用戶(hù)處理,在(zài)這個等待的過程中,終(zhōng)止調度該進程(chéng),直到用戶做出響應(放(fàng)行該(gāi)進程或(huò)者(zhě)殺死該進程(chéng))。
在第二(èr)步當(dāng)中,如果超(chāo)級(jí)用戶(係統(tǒng)管理員(yuán))放行(háng)了該進程,則可以將該(gāi)進程加入“係統安全進程列表”,以(yǐ)完善(shàn)該列表;如果是一般用戶在使用(yòng)過程當中放行了某個進程(chéng),那麽,需要將該(gāi)用戶的用戶名(míng)和身份記錄下來,並且將放行的進程記錄(lù)下來存為日誌,那麽,當超級用(yòng)戶(係統管理員)無論是在審核用戶行為還是在修(xiū)改“係統安(ān)全進(jìn)程列(liè)表”時,都是(shì)一(yī)個有力的依據。
另外,在係統運行過程當中(zhōng),如果發現“係統安(ān)全進程列表”當中的某些重要的進程 (包括kswapd、bdflush等)不在運行,則馬(mǎ)上(shàng)將該進程(chéng)“遺(yí)失”的信(xìn)息存入文件,以備在係統的恢(huī)複過程當(dāng)中,對它們進(jìn)行針對性的恢複,根(gēn)據不同的情況,有的需(xū)要馬上停機,恢複(fù)進(jìn)程(chéng),有的則(zé)可以(yǐ)現場恢複。
關(guān)鍵詞:Linux,係(xì)統進程(chéng)
閱讀本文後您有什麽感想? 已有 人給出評(píng)價!
- 1
- 1
- 1
- 1
- 5
- 1