發新話題
打印

什麼是 SELinux

什麼是 SELinux

什麼是 SELinux

Security-Enhanced Linux (安全性增強 Linux ,簡稱 SELinux)。

一開始是這樣的。美國國家安全局(National Security Agency,簡稱 NSA)的主要工作之一就是防止美國在戰爭的時候不會因為網路的攻擊而導致指揮系統的癱瘓。所以一直想辦法加強現有作業系統的安全性。她們發現不管是 Windows 、 Unix、Linux 等等作業系統,基本上所使用的安全機制是類似 DAC 機制。 DAC 機制簡單來講就是只程式的執行者或是檔案的擁有者可以任意的給予權限。這種機制在遇到一個有漏洞或是刻意編寫的程式就會導致很大的問題,尤其是 setuid or setgid 這種權限的設計,許多程式設計師在需要權限的時候喜歡用 setuid root,因為可以不管接下來他們的程式到底需要什麼權限,大大簡化程式的設計。但是這種方式也非常危險,因為以 Unix-Like 的設計,root 擁有絕對的權限,假如這個程式有漏洞,那麼就可以在系統中為所欲為。 當然不是只有這個安全性問題而已。總之,為了加強安全性,有了各種加強安全性的方法出現,這些安全加強的方法通稱安全模組,SELinux 就是這些安全模組中的一個。當然各種安全強化模組的方法都大不相同、互相牴觸,對核心的修改也大大不同。

那麼,SELinux 的運作方式到底是怎樣的?

剛剛說過大部分的作業系統基本上使用 DAC 機制。而 SELinux 則對作業系統加入了 MAC 機制。 MAC 機制不再讓擁有者授予權限,而是透過強制的方式為每個進程統一授予權限。

還是聽不懂?那就別管了,反正記得 MAC 機制比較安全就對了。

SELinux 基本上就是 MAC 的實作。在 SELinux 中,每個物件(程式、檔案、進程之類的)都有所謂的 Security Context(安全系絡)。它就像一個標籤一樣,貼在每個物件上。上面記載著這個物件所能夠執行的權限。然後系統管理員可以建立 Security Policy(安全原則),安全原則中會定義哪種操作需要哪些安全系絡的權限,權限可以不只一種。當程式要執行這個動作的時候,系統會依照安全原則所制定內容來檢查相對應的權限,如果全部權限都符合的話,系統就會允許這個操作的執行。

舉個例子來說好了。現在我們要這個目錄中新建一個檔案,那麼我們使用中進程的安全系絡必須要有父目錄安全系絡的 search 和 add_name 權限,還有要建立檔案的安全系絡的 create 權限。同樣的,要建立檔案的安全系絡必需要有對檔案系統安全系絡的 associated 權限。這樣,才能順利的新建一個檔案。

這種檢查方式是獨立於 Unix-Like 中傳統的使用者權限,在 SELinux 中,你必須要同時符合傳統的使用者權限和 SELinux 權限才能順利執行操作。透過 SELinux 權限,我們可以很容易的建立一個只能在特定程序及特定的安全系絡中才能執行的 Web 伺服器。如果有人成功侵入了 Web 伺服器,那麼他也只能在這個特定的安全系絡中破壞。但是前提是要有好的安全原則。

問題就來了,我們需要一個好的安全原則才可以讓 SeLinux 發揮效果。大部分的使用者需要一個適當的安全原則來工作,制定的太寬鬆會使 SELinux 毫無用武之地,而太嚴格又會讓使用者連日常工作都變的麻煩至極。NSA 讓制定安全原則的工作由套件發行者來做。而 Fedora、Debian、Gentoo 等等也都制定了一套基本的安全原則。(發展的最快的是 Fedora。作為一個新技術的實驗場,在 Fedora Core 2 中就實作了 SELinux 但是預設為不開啟,而預計到了 Fedora Core 4 將會預設全面開啟 SELinux 功能)

如果你還想知道更深入的資訊,我找了一些參考資料供你繼續深入閱讀。(都是我看不懂的= =)

參考資料:揭開 SE Linux 的秘密 http://www-900.ibm.com/developer ... selinux/index.shtml

相關連結: SELinux 官方網頁 http://www.nsa.gov/selinux/ LSM 官方網站 http://lsm.immunix.org/

取文處

TOP

發新話題