歡迎您光臨本站 註冊首頁

Linux發行版:知道SELinux 如何工作

←手機掃碼閱讀     火星人 @ 2014-03-23 , reply:0

  SELinux 如何工作呢?SELinux 的方法實際上非常普通。每一個重要的內核對象,比如每個文件系統對象和每個進程,都有一個關聯到它們的「安全上下文(security context)」。安全上下文可以基於軍事安全層級(如不保密的、保密的和高度保密的)、基於用戶角色、基於應用程序(這樣,一個 Web 伺服器可以擁有它自己的安全上下文),或者基於很多其他內容。當它執行另一個程序時,進程的安全上下文可以改變。甚至,取決於調用它的程序,一個給定的程序可以在不同的安全上下文中運行,即使是同一個用戶啟動了所有程序。

  然後系統管理員就可以創建一個指定哪些特權授與哪個安全上下文的「安全策略(security policy)」。當發生系統調用時,SELinux 去檢查是否所有需要的特權都已經授與了——如果沒有,它就拒絕那個請求。

  例如,要創建一個文件,當前進程的安全上下文必須對父目錄的安全上下文的「搜索(search)」和「add_name」特權,而且它需要有對於(要創建的)文件的安全上下文的「創建(create)」特權。同樣,那個文件的安全上下文必須有特權與文件系統「關聯(associated)」(所以,舉例來說,「高度保密」的文件不能寫到一個「不保密」的磁碟)。還有用於套接字、網路介面、主機和埠的網路訪問控制。如果安全策略為那些全部授與了許可權,那麼請求就會被 SELinux 所允許。否則,就會被禁止。如果按部就班地去做所有這些檢查將會較慢,不過有很多優化方案(基於多年的研究)使其變得很迅速。

  這一檢查完全獨立於類 UNIX 系統中的通常的許可權位;在 SELinux 系統中,您必須 既 有標準的類 UNIX 許可權, 又 有 SELinux 許可權才能去做一些事情。不過,SELinux 檢查可以做很多對傳統的類 UNIX 許可權來說難以完成的事情。使用 SELinux,您可以方便地創建一個只能運行特定程序並且只能在特定的上下文中寫文件的 Web 伺服器。更有趣的是,如果一個攻擊者攻入了 Web 伺服器並成為 root,攻擊者不會獲得整個系統的控制權——如果有一個好的安全策略的話。

  那就有了困難:為了使 SELinux 有效,您需要有一個好的安全策略來由 SELinux 執行。大部分用戶將需要一個他們容易修改的實用的初始策略。幾年前我開始體驗 SELinux;那時,初始策略還不成熟,有很多問題。例如,在那些以前的日子中我發現早期的樣例策略不允許系統更新硬體時鐘(最後我提交了一個補丁以解決這一問題)。設計好的初始安全策略類似對產品分類, NSA 希望由商業界來做,而且看起來是要這樣做。Red Hat、一些 Debian 開發者、Gentoo 以及其他人正在使用基本的 SELinux 框架,並且正在創建初始安全策略,這樣用戶可以馬上開始使用它。的確,Red Hat 計劃為所有用戶在他們的 Fedora 內核中都啟用 SELinux,並提供簡單的工具來使得非專業用戶可以通過選擇一些常見選項來修改他們的安全策略。Gentoo 有一個可引導的 SELinux LiveCD。這些團體將使得最小化程序特權變得更簡單,而不需要大量代碼。

  在這裡我們又回到了原處。SELinux 只有當程序執行時才允許發生安全傳輸,它控制進程的許可權(不是一個進程的一部分)。所以,為了充分發揮 SELinux 的潛力,您需要將您的應用程序分解為獨立的進程和程序,只有一些小的有特權的組件—— 這恰恰如同如何在沒有 SELinux 的情況開發安全的程序。像 SELinux 這樣的工具讓您可以更好地控制授與的許可權,並這樣創建一個更強有力的防禦,但是,您仍需要將您的程序拆分為更小的組件,以使得那些控制能發揮最大的效用。

[火星人 ] Linux發行版:知道SELinux 如何工作已經有273次圍觀

http://coctec.com/docs/linux/show-post-131421.html