天天看點

SElinux

SELinux(Security-Enhanced Linux)是由美國國家安全局(NSA)開發的一種強制通路控制機制。它主要整合在 Linux 核心當中,是針對特定的程序與指定的檔案資源進行權限控制的系統。主要是增強傳統 Linux 作業系統的安全性,并解決傳統 Linux 系統中自主通路控制(DAC)系統中的各種權限問題(如 root 權限過高等)。

注意,root 使用者需要遵守 SELinux 的規則才能正确地通路系統資源。另外,root 使用者可以修改 SELinux 的規則。也就是說使用者既要符合系統的讀、寫、執行權限,又要符合 SELinux 的規則,才能正确地通路系統資源。

傳統的 Linux

系統中,預設權限是對檔案或目錄的所有者、所屬組和其他人的讀、寫和執行權限進行控制,這種控制方式稱為自主通路控制(DAC)方式;而在

SELinux

中,采用的是強制通路控制(MAC)系統,也就是控制一個程序對具體檔案系統上面的檔案或目錄是否擁有通路權限,而判斷程序是否可以通路檔案或目錄的依據,取決于

SELinux 中設定的很多政策規則。

接下來分别介紹這兩種控制方式:

DAC 是 Linux 的預設通路控制方式,也就是依據使用者的身份和該身份對檔案及目錄的 rwx 權限來判斷是否可以通路。

但使用該方式通常會遇到以下問題:

root 權限過高,使用 rwx 權限對 root 使用者并不生效,一旦 root 使用者被竊取或者 root 使用者本身的誤操作,就會對 Linux 系統産生嚴重的安全問題。

Linux 預設權限過于簡單,隻有所有者、所屬組和其他人的身份,權限也隻有讀、寫和執行權限,并不利于權限細分與設定。

不合理權限的配置設定會導緻嚴重後果。

MAC 是通過 SELinux 的預設政策規則來控制特定的程序對系統的檔案資源的通路。也就是說,即使你是 root 使用者,但是當你通路檔案資源時,如果使用了錯誤的程序,那麼也是不能通路的。

SELinux 的強制通路控制并不會完全取代自主通路控制。對于 Linux 系統的安全來說,強制通路控制是一個額外的安全層,當使用

SELinux 時,自主通路控制仍然被使用,且會首先被使用,如果允許通路,則再使用 SELinux

政策;反之,如果自主通路控制規則拒絕通路,則就不需要使用 SELinux 政策。

SELinux 的作用如下:

SELinux 使用被認為是最強大的通路控制方式,即MAC控制方式。

SELinux 賦予了使用者或程序最小的通路權限。也就是說,每個使用者或程序僅被賦予了完成相關任務所必須的一組有限的權限。通過賦予最小通路權限,可以防止對其他使用者或程序産生不利的影響。

SELinux 管理過程中,每個程序都有自己的運作區域,各個程序隻運作在自己的區域内,無法通路其他程序和檔案,除非被授予了特殊權限。

SELinux 提供了 3 種工作模式,分别是 Disabled 工作模式、Permissive 工作模式和 Enforcing 工作模式。它們的具體介紹如下:

1) Disabled工作模式(關閉模式)

在 Disable 模式中,SELinux 被關閉,使用 DAC 通路控制方式。該模式對于那些不需要增強安全性的環境來說是非常有用的。

注意,在禁用 SELinux 之前,需要考慮一下是否可能會在系統上再次使用SELinux,如果決定以後将其設定為Enforcing或Permissive,那麼當下次重新開機系統時,系統将會通過一個自動SELinux檔案重新進行标記。

關閉 SELinux 的方式,隻需要編輯配置檔案 /etc/seLinux/config,并将文本中“SELINUX=”更改為“SELINUX=disabled”即可,重新啟動系統之後,SELinux 就被禁用了。

2) Permissive工作模式(寬容模式)

在 Permissive 模式中,SELinux 被啟用,但安全政策規則并沒有被強制執行。當安全政策規則應該拒絕通路時,通路仍然被允許。這時會向日志檔案發送一條該通路應該被拒絕的消息。

SELinux Permissive 模式主要用于稽核目前的 SELinux 政策規則;它還能用于測試新應用程式,将 SELinux 政策規則應用到程式時會有什麼效果;以及用于解決某一特定服務或應用程式在 SELinux 下不再正常工作的故障。

3) Enforcing工作模式(強制模式)。

在 Enforcing 模式中,SELinux 被啟動,并強制執行所有的安全政策規則。