戴文的Linux內核專題:04 安全
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/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive