首頁 > linux教程 > SELinux管理 閱讀:0更新時間:2020-03-28 01:08:05

SELinux 的工作模式(Disabled、Permissive和Enforcing)

通過對 SElinux 的介紹,初學者可以這樣認為,在傳統 Linux 系統使用訪問控制方式的基礎上,附加使用 SELinux 可增強系統安全。 那么,SELinux 是如何運行的呢?

在解釋 SELinux 的工作模式之前,先解釋幾個概念。
  1. 主體(Subject):就是想要訪問文件或目錄資源的進程。想要得到資源,基本流程是這樣的:由用戶調用命令,由命令產生進程,由進程去訪問文件或目錄資源。在自主訪問控制系統中(Linux 默認權限中),靠權限控制的主體是用戶;而在強制訪問控制系統中(SELinux 中),靠策略規則控制的主體則是進程。
  2. 目標(Object):這個概念比較明確,就是需要訪問的文件或目錄資源。
  3. 策略(Policy):Linux 系統中進程與文件的數量龐大,那么限制進程是否可以訪問文件的 SELinux 規則數量就更加煩瑣,如果每個規則都需要管理員手工設定,那么 SELinux 的可用性就會極低。還好我們不用手工定義規則,SELinux 默認定義了兩個策略,規則都已經在這兩個策略中寫好了,默認只要調用策略就可以正常使用了。這兩個默認策略如下:
    • -targeted:這是 SELinux 的默認策略,這個策略主要是限制網絡服務的,對本機系統的限制極少。我們使用這個策略已經足夠了。
    • -mls:多級安全保護策略,這個策略限制得更為嚴格。
  4. 安全上下文(Security Context):每個進程、文件和目錄都有自己的安全上下文,進程具體是否能夠訪問文件或目錄,就要看這個安全上下文是否匹配。如果進程的安全上下文和文件或目錄的安全上下文能夠匹配,則該進程可以訪問這個文件或目錄。當然,判斷進程的安全上下文和文件或目錄的安全上下文是否匹配,則需要依靠策略中的規則。舉個例子,我們需要找對象,男人可以看作主體,女人就是目標了。而男人是否可以追到女人(主體是否可以訪問目標),主要看兩個人的性格是否合適(主體和目標的安全上下文是否匹配)。不過,兩個人的性格是否合適,是需要靠生活習慣、為人處世、家庭環境等具體的條件來進行判斷的(安全上下文是否匹配是需要通過策略中的規則來確定的)。

我們畫一張示意圖,來表示一下這幾個概念之間的關系,如圖 1 所示。


圖 1 SELinux 運行模式的相關概念
解釋一下這張示意圖:當主體想要訪問目標時,如果系統中啟動了 SELinux,則主體的訪問請求首先需要和 SELinux 中定義好的策略進行匹配。如果進程符合策略中定義好的規則,則允許訪問,這時進程的安全上下文就可以和目標的安全上下文進行匹配;如果比較失敗,則拒絕訪問,并通過 AVC(Access Vector Cache,訪問向量緩存,主要用于記錄所有和 SELinux 相關的訪問統計信息)生成拒絕訪問信息。如果安全上下文匹配,則可以正常訪問目標文件。當然,最終是否可以真正地訪問到目標文件,還要匹配產生進程(主體)的用戶是否對目標文件擁有合理的讀、寫、執行權限。

我們在進行 SELinux 管理的時候,一般只會修改文件或目錄的安全上下文,使其和訪問進程的安全上下文匹配或不匹配,用來控制進程是否可以訪問文件或目錄資源;而很少會去修改策略中的具體規則,因為規則實在太多了,修改起來過于復雜。不過,我們是可以人為定義規則是否生效,用以控制規則的啟用與關閉的。

SELinux 的工作模式

SELinux 提供了 3 種工作模式:Disabled、Permissive 和 Enforcing,而每種模式都為 Linux 系統安全提供了不同的好處。

Disable工作模式(關閉模式)

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

例如,若從你的角度看正在運行的應用程序工作正常,但是卻產生了大量的 SELinux AVC 拒絕消息,最終可能會填滿日志文件,從而導致系統無法使用。在這種情況下,最直接的解決方法就是禁用 SELinux,當然,你也可以在應用程序所訪問的文件上設置正確的安全上下文。

需要注意的是,在禁用 SELinux 之前,需要考慮一下是否可能會在系統上再次使用 SELinux,如果決定以后將其設置為 Enforcing 或 Permissive,那么當下次重啟系統時,系統將會通過一個自動 SELinux 文件重新進程標記。

關閉 SELinux 的方式也很簡單,只需編輯配置文件 /etc/selinux/config,并將文本中 SELINUX= 更改為 SELINUX=disabled 即可,重啟系統后,SELinux 就被禁用了。

Permissive工作模式(寬容模式)

在 Permissive 模式中,SELinux 被啟用,但安全策略規則并沒有被強制執行。當安全策略規則應該拒絕訪問時,訪問仍然被允許。然而,此時會向日志文件發送一條消息,表示該訪問應該被拒絕。

SELinux Permissive 模式主要用于以下幾種情況:
審核當前的 SELinux 策略規則;
測試新應用程序,看看將 SELinux 策略規則應用到這些程序時會有什么效果;
解決某一特定服務或應用程序在 SELinux 下不再正常工作的故障。

某些情況下,可使用 audit2allow 命令來讀取 SELinux 審核日志并生成新的 SELinux 規則,從而有選擇性地允許被拒絕的行為,而這也是一種在不禁用 SELinux 的情況下,讓應用程序在 Linux 系統上工作的快速方法。

Enforcing工作模式(強制模式)

從此模式的名稱就可以看出,在 Enforcing 模式中, SELinux 被啟動,并強制執行所有的安全策略規則。

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

優秀教程

国产亚洲欧美日韩