Devyn的Linux內(nèi)核專題:安全
Linux內(nèi)核是所有Linux系統(tǒng)的核心。如果有任何惡意代碼控制或破害了內(nèi)核的任何一部分,那么系統(tǒng)會嚴(yán)重受損,文件可能被刪除或損壞,私人信息可能被盜等等。很明顯,保持內(nèi)核安全涉及到用戶的最大利益。值得慶幸的是,由于Linux內(nèi)核極其安全,Linux是一個非常安全的系統(tǒng)。在用戶比例上,Linux病毒比Windows病毒更少,并且Linux用戶比Windows用戶個人更少感染病毒。(這就是為什么許多公司使用Linux來管理他們的服務(wù)器的一個原因。) 然而,我們?nèi)匀粵]有借口去忽視內(nèi)核的安全。Linux有幾個安全特性和程序,但本文只討論Linux安全模塊(LSM)及其它的內(nèi)核安全特性。
AppArmor(應(yīng)用盔甲)最初是由Immunix寫的安全模塊。自從2009年以來,Canonical維護(hù)著這些代碼(Novell在Immunix之后,Canonical以前管理這些代碼)。這個安全模塊已經(jīng)從2.6.36版本進(jìn)入Linux主分支之中。AppArmor限制了程序的能力。AppArmor使用文件路徑來跟蹤程序限制。許多Linux管理員稱AppArmor是最容易配置的安全模塊。然而,而許多Linux用戶覺得這個模塊與其它的替代品相比很糟糕。
安全增強(qiáng)Linux(SELinux)是AppArmor的替代品,它最初由美國國家安全局開發(fā)(NSA)。SELinux自從2.6版本就進(jìn)入內(nèi)核主分支中。SELinux是限制修改內(nèi)核和用戶空間的工具。SELinux給可執(zhí)行文件(主要是守護(hù)進(jìn)程和服務(wù)端程序)最小特權(quán)去完成它們的任務(wù)。SELinux也可以用來控制用戶權(quán)限。SELinux不像AppArmor那樣使用文件路徑,而SELinux在追蹤權(quán)限時使用文件系統(tǒng)去標(biāo)記可執(zhí)行文件。因為SElinux本身使用文件系統(tǒng)管理可執(zhí)行文件,所以SELinux不能像AppArmor那樣對整個文件系統(tǒng)提供保護(hù)。
注意:守護(hù)進(jìn)程是在后臺運行的程序
注意:雖然在內(nèi)核中有AppArmor、SELinux及其它安全模塊,但只能有一個安全模塊被激活。
Smack是安全模塊的另一種選擇。Smack從2.6.25起進(jìn)入內(nèi)核主分支。Smack應(yīng)能比AppArmor更安全,但比SELinux更容易配置。
TOMOYO,是另外一個安全模塊,在2.6.30進(jìn)入內(nèi)核主分支。TOMOYO可以提供安全防護(hù),但是它的主要用途是分析系統(tǒng)安全缺陷。
AppArmor、SELinux、Smack和TOMYO組成了四個標(biāo)準(zhǔn)Linux安全模塊。這些都通過使用強(qiáng)制訪問控制(MAC : mandatory access control)工作,這種訪問控制是通過限制程序或者用戶執(zhí)行一些任務(wù)來實現(xiàn)的。安全模塊還有某些形式的列表規(guī)定了它們可以做什么不可以做什么。
Yama在Linux內(nèi)核中一個新安全模塊。Yama還沒有作為標(biāo)準(zhǔn)的安全模塊,但是在將來他會成為第5個標(biāo)準(zhǔn)安全模塊。Yama和其他安全模塊一樣使用相同的機(jī)制。
“grsecurity”是一系列Linux內(nèi)核安全補(bǔ)丁的集合。多數(shù)補(bǔ)丁用于處理遠(yuǎn)程網(wǎng)絡(luò)連接和緩沖區(qū)溢出的安全問題(以后討論)。grsecurity中有一個叫PaX的有趣組件。PaX補(bǔ)丁允許內(nèi)存里的代碼使用最少的所需權(quán)限。例如,存儲程序的內(nèi)存段被標(biāo)為不可寫。想想看,為什么一個可執(zhí)行的程序需要在內(nèi)存中是可寫的?通過這個補(bǔ)丁,惡意代碼就不能修改目前正在執(zhí)行的程序。緩沖區(qū)溢出是一種當(dāng)程序由于bug或者惡意代碼在內(nèi)存上寫入數(shù)據(jù),并讓它的內(nèi)存邊界超出到其他程序的內(nèi)存頁上的安全事件。當(dāng)Pax被激活時,它會幫助阻止這些緩沖區(qū)溢出,因為程序沒有寫到其他內(nèi)存頁上的權(quán)限了。
Linux入侵檢測系統(tǒng)(LIDS)是一個內(nèi)核安全補(bǔ)丁,提供了強(qiáng)制訪問控制(MAC)的特性。這個補(bǔ)丁就像扮演LSM模塊的角色。
Systrace是一個減少和控制應(yīng)用程序訪問系統(tǒng)文件和系統(tǒng)調(diào)用的工具。系統(tǒng)調(diào)用是對內(nèi)核的服務(wù)請求。比如,當(dāng)一個文本編輯器寫入一個文件到硬盤上時,程序?qū)l(fā)送一個系統(tǒng)請求讓內(nèi)核寫入文件到硬盤中。
這些是在Linux安全系統(tǒng)中非常重要的組件。這些安全模塊和補(bǔ)丁使內(nèi)核免于受到惡意代碼的攻擊。沒有這些特性,Linux系統(tǒng)將會變成一個不安全的操作系統(tǒng)。
via: http://www.linux.org/threads/the-linux-kernel-security.4223/