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