詳述Linux系統(tǒng)調(diào)用存在的問題及解決辦法
Linux用戶如何應(yīng)對Linux系統(tǒng)調(diào)用中出現(xiàn)的一些問題,如果感到十分棘手,那么相信下面的敘述將會是你擺脫這些困惑,處理好Linux系統(tǒng)調(diào)用中出現(xiàn)的問題。Linux進(jìn)程監(jiān)控方法和工具都是基于調(diào)用操作系統(tǒng)給我們提供的相應(yīng)的API接口函數(shù)或者系統(tǒng)調(diào)用來實現(xiàn)的。我們所得到的只是接口函數(shù)處理后的結(jié)果,不能夠主動地從操作系統(tǒng)內(nèi)核的進(jìn)程數(shù)據(jù)結(jié)構(gòu)當(dāng)中獲取我們需要的信息。
因而,它們具有如下一些問題:
1、傳統(tǒng)的進(jìn)程監(jiān)控方法運(yùn)行效率比較低,同時反應(yīng)時間也比較長,實時性能差。
2、不能夠?qū)崟r、高效地向用戶報告當(dāng)前系統(tǒng)運(yùn)行的安全狀況,就算系統(tǒng)中有不法進(jìn)程在運(yùn)行,系統(tǒng)也不能識別出來。
3、不能給用戶捕捉不法進(jìn)程的行為提供證據(jù)和進(jìn)程的活動軌跡。當(dāng)一個不法進(jìn)程運(yùn)行并對系統(tǒng)產(chǎn)生破壞時,用戶即使通過察看進(jìn)程列表找到了不合法的進(jìn)程,也不清楚到底從進(jìn)程開始運(yùn)行直到捕捉到這樣一個不法進(jìn)程這樣一段時間內(nèi),進(jìn)程都對系統(tǒng)造成了哪些破壞,比如說,訪問、修改了哪些重要的系統(tǒng)文件,占用了哪些系統(tǒng)資源等等。這些都給以后的恢復(fù)和處理工作帶來了很大的問題。
4、執(zhí)行程序工作在用戶態(tài),本身就不安全,入侵系統(tǒng)的黑客可以輕松地找到這些進(jìn)程監(jiān)控程序的磁盤映像,進(jìn)行刪除甚至替換,從而會給系統(tǒng)帶來不可估量的損失。這一點尤其需要強(qiáng)調(diào),比如說,黑客入侵系統(tǒng)成功,就可以植入他們所改寫的ps程序以替換原來系統(tǒng)的ps程序,這樣就使得用戶不能通過該工具得知系統(tǒng)中當(dāng)前運(yùn)行的不法進(jìn)程,這樣無論黑客如何植入木馬或者其他程序,用戶都無法知道,從而無法采取措施終止這些行為。不言而喻,這樣的后果是很嚴(yán)重的。而在我們下面所要介紹的一種運(yùn)行于內(nèi)核的進(jìn)程監(jiān)控程序當(dāng)中,黑客根本無法或者很難深入內(nèi)核來破壞該進(jìn)程監(jiān)控程序,從而使其能夠很好地保證自身的安全。
基于上述種種不足,我們提出了在Linux內(nèi)核中實現(xiàn)進(jìn)程實時監(jiān)控的原理和技術(shù)。該技術(shù)主要分為以下幾個步驟:
首先,在“干凈”的系統(tǒng)環(huán)境下,全面地運(yùn)行系統(tǒng)中的安全進(jìn)程,分析和搜集Linux環(huán)境下這些進(jìn)程的相關(guān)信息(包括進(jìn)程ID號、進(jìn)程名稱、進(jìn)程可執(zhí)行映像、進(jìn)程的開始時間、進(jìn)程的父進(jìn)程等主要信息),形成一張“系統(tǒng)安全進(jìn)程列表”,作為進(jìn)程監(jiān)控的依據(jù)。
接著,監(jiān)控代碼在進(jìn)程調(diào)度過程中實時地搜集系統(tǒng)中運(yùn)行進(jìn)程的信息。如果發(fā)現(xiàn)進(jìn)程不在 “系統(tǒng)安全進(jìn)程列表”當(dāng)中,則馬上通過終端輸出該進(jìn)程的PID號、名稱、進(jìn)程的可執(zhí)行映像等信息,或者通過聲音向用戶報警,等待用戶處理,在這個等待的過程中,終止調(diào)度該進(jìn)程,直到用戶做出響應(yīng)(放行該進(jìn)程或者殺死該進(jìn)程)。
在第二步當(dāng)中,如果超級用戶(系統(tǒng)管理員)放行了該進(jìn)程,則可以將該進(jìn)程加入“系統(tǒng)安全進(jìn)程列表”,以完善該列表;如果是一般用戶在使用過程當(dāng)中放行了某個進(jìn)程,那么,需要將該用戶的用戶名和身份記錄下來,并且將放行的進(jìn)程記錄下來存為日志,那么,當(dāng)超級用戶(系統(tǒng)管理員)無論是在審核用戶行為還是在修改“系統(tǒng)安全進(jìn)程列表”時,都是一個有力的依據(jù)。
另外,在系統(tǒng)運(yùn)行過程當(dāng)中,如果發(fā)現(xiàn)“系統(tǒng)安全進(jìn)程列表”當(dāng)中的某些重要的進(jìn)程 (包括kswapd、bdflush等)不在運(yùn)行,則馬上將該進(jìn)程“遺失”的信息存入文件,以備在系統(tǒng)的恢復(fù)過程當(dāng)中,對它們進(jìn)行針對性的恢復(fù),根據(jù)不同的情況,有的需要馬上停機(jī),恢復(fù)進(jìn)程,有的則可以現(xiàn)場恢復(fù)。
這下理解了Linux系統(tǒng)調(diào)用中問題的解決辦法了吧。
【編輯推薦】






















