如何監(jiān)控和保護(hù)Linux下進(jìn)程安全
通過綜合采用用戶級別的top、ps等系統(tǒng)工具以及Linux|0">Linux內(nèi)核防護(hù)技術(shù),我們可以從用戶/內(nèi)核兩個層次全方位地保護(hù)Linux系統(tǒng)中重要系統(tǒng)進(jìn)程以及用戶進(jìn)程的安全性,從而達(dá)到保護(hù)Linux系統(tǒng)安全的目的。
經(jīng)典的信息保密性安全模型Bell-LaPadula模型指出,進(jìn)程是整個計算機(jī)系統(tǒng)的一個主體,它需要通過一定的安全等級來對客體發(fā)生作用。進(jìn)程在一定條件下可以對諸如文件、數(shù)據(jù)庫等客體進(jìn)行操作。如果進(jìn)程用作其他不法用途,將給系統(tǒng)帶來重大危害。在現(xiàn)實(shí)生活當(dāng)中,許多網(wǎng)絡(luò)黑客都是通過種植“木馬”的辦法來達(dá)到破壞計算機(jī)系統(tǒng)和入侵的目的,而這些“木馬”程序無一例外的是需要通過進(jìn)程這一方式在機(jī)器上運(yùn)行才能發(fā)揮作用的。另外,許多破壞程序和攻擊手段都需要通過破壞目標(biāo)計算機(jī)系統(tǒng)的合法進(jìn)程尤其是重要系統(tǒng)進(jìn)程,使得系統(tǒng)不能完成正常的工作甚至無法工作,從而達(dá)到摧毀目標(biāo)計算機(jī)系統(tǒng)的目的。作為服務(wù)器中占絕大多數(shù)市場份額的Linux系統(tǒng),要切實(shí)保證計算機(jī)系統(tǒng)的安全,我們必須對其進(jìn)程進(jìn)行監(jiān)控和保護(hù)。
用戶級進(jìn)程監(jiān)控工具 |0">監(jiān)控工具
Linux系統(tǒng)提供了who、w、ps和top等察看進(jìn)程信息的系統(tǒng)調(diào)用,通過結(jié)
合使用這些系統(tǒng)調(diào)用,我們可以清晰地了解進(jìn)程的運(yùn)行狀態(tài)以及存活情況,從而采取相應(yīng)的措施,來確保Linux系統(tǒng)的安全。它們是目前在Linux下最常見的進(jìn)程狀況查看工具,它們是隨Linux套件發(fā)行的,安裝好系統(tǒng)之后,用戶就可以使用。
1.who命令:該命令主要用于查看當(dāng)前在線上的用戶情況。系統(tǒng)管理員可以使用who命令監(jiān)視每個登錄的用戶此時此刻的所作所為。
2.w命令:該命令也用于顯示登錄到系統(tǒng)的用戶情況,但是與who不同的是,w命令功能更加強(qiáng)大,它不但可以顯示有誰登錄到系統(tǒng),還可以顯示出這些用戶當(dāng)前正在進(jìn)行的工作,w命令是who命令的一個增強(qiáng)版。
3.ps命令:該命令是最基本同時也是非常強(qiáng)大的進(jìn)程查看命令。利用它可以確定有哪些進(jìn)程正在運(yùn)行及運(yùn)行的狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)程有沒有僵死、哪些進(jìn)程占用了過多的資源等。ps命令可以監(jiān)控后臺進(jìn)程的工作情況,因?yàn)楹笈_進(jìn)程是不和屏幕鍵盤這些標(biāo)準(zhǔn)輸入/輸出設(shè)備進(jìn)行通信的,如果需要檢測其情況,可以使用ps命令。下面是一個ps命令的例子
$ ps x
PID TTY STAT TIME COMMAND
5800 ttyp0 S 0:00 -bash
5813 ttyp1 S 0:00 -bash
5921 ttyp0 S 0:00 man ps
5922 ttyp0 S 0:00 sh -c /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz/
5923 ttyp0 S 0:00 /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz
5924 ttyp0 S 0:00 /usr/bin/less -is
5941 ttyp1 R 0:00 ps x
4.top命令:top命令和ps命令的基本作用是相同的,顯示系統(tǒng)當(dāng)前的進(jìn)程及其狀態(tài),但是top是一個動態(tài)顯示過程,可以通過用戶按鍵來不斷刷新當(dāng)前狀態(tài)。如果在前臺執(zhí)行該命令,它將獨(dú)占前臺,直到用戶終止該程序?yàn)橹?。比較準(zhǔn)確地說,top命令提供了實(shí)時的對系統(tǒng)處理器的狀態(tài)監(jiān)視。它可以顯示系統(tǒng)中CPU最“敏感”的任務(wù)列表。該命令可以按CPU使用、內(nèi)存使用和執(zhí)行時間對任務(wù)進(jìn)行排序,而且它的很多特性都可以通過交互式命令或者在個人定制文件中進(jìn)行設(shè)定。下面是一個top命令的例子:
1:55pm up 7 min, 4 user, load average:0.07,0.09,0.06
29 processes:28 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: 4.5% user, 3.6% system, 0.0% nice, 91.9% idle
Mem: 38916K av, 18564K used, 20352K free, 11660K shrd, 1220K buff
Swap: 33228K av, 0K used, 33228K free, 11820K cached
PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
363 root 14 0 708 708 552 R 0 8.1 1.8 0:00 top
1 root 0 0 404 404 344 S 0 0.0 1.0 0:03 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd
3 root -12 -12 0 0 0 SW< 0 0.0 0.0 0:00 kswapd