linux異常處理:selinux配置錯誤致使沒法重啓

點擊返回自學Linux集錦html

linux異常處理:selinux配置錯誤致使沒法重啓

一次linux沒法重啓異常記錄:linux

當時第一反應就是梳理最近的配置變動,特別是能預知相關的就是selinux配置變動。安全

原來是誤將SELINUXTYPE當作SELINUX後,將其值改成disabled。致使操做系統服務啓動,沒法進入單用戶模式。變動回來以後,一切正常。網絡

解決方法一:模塊化

系統啓動的時候,按下‘e’鍵進入grub編輯界面,編輯grub菜單,使用上下鍵選擇「kernel 」 一行,按‘e’鍵進入編輯,在末尾增長「enforcing=0」,按「enter」保存設置並退到上一層,按‘b’鍵繼續引導後正常開機。收到post

恢復「/etc/selinux/config」中的配置信息。再按需求修改「SELINUX=disabled」。spa

解決方法二:操作系統

直接更改。3d

下面就是談談selinux。調試

安全加強型 Linux(Security-Enhanced Linux)

SELinux,它是一個 Linux 內核模塊,也是 Linux 的一個安全子系統。

SELinux 主要由美國國家安全局開發。2.6 及以上版本的 Linux 內核都已經集成了 SELinux 模塊。

一、SELinux 的做用及權限管理機制

1.1 SELinux 的做用

SELinux 主要做用就是最大限度地減少系統中服務進程可訪問的資源(最小權限原則)。

目前系統文件權限的管理有兩種:DAC(傳統的) 和 MAC(SELinux)

1.2 DAC

傳統的文件權限與賬號關係:自主式存取控制, DAC(Discretionary Access Control, DAC)

在沒有使用 SELinux 的操做系統中,決定一個資源是否能被訪問的因素是:某個資源是否擁有對應用戶的權限(讀、寫、執行)。

只要訪問這個資源的進程符合以上的條件就能夠被訪問。

而最致命問題是,root 用戶不受任何管制,系統上任何資源均可以無限制地訪問。

這種權限管理機制的主體是用戶,也稱爲自主訪問控制(DAC)。

1.3 MAC

以政策規則訂定特定程序讀取特定文件:委任式存取控制,MAC

在使用了 SELinux 的操做系統中,決定一個資源是否能被訪問的因素除了上述因素以外,還須要判斷每一類進程是否擁有對某一類資源的訪問權限。

這樣一來,即便進程是以 root 身份運行的,也須要判斷這個進程的類型以及容許訪問的資源類型才能決定是否容許訪問某個資源。進程的活動空間也能夠被壓縮到最小。

即便是以 root 身份運行的服務進程,通常也只能訪問到它所須要的資源。即便程序出了漏洞,影響範圍也只有在其容許訪問的資源範圍內。安全性大大增長。

這種權限管理機制的主體是進程,也稱爲強制訪問控制(MAC)。

而 MAC 又細分爲了兩種方式,一種叫類別安全(MCS)模式,另外一種叫多級安全(MLS)模式。

  • 在 DAC 模式下,只要相應目錄有相應用戶的權限,就能夠被訪問
  • 在 MAC 模式下,還要受進程容許訪問目錄範圍的限制。

【總結理解】

  • DAC是以用戶爲出發點來管理權限的
  • MAC是以程序爲出發點來管理權限的

  • 之前:root--->啓動httpd---->httpd能夠訪問系統任何文件
  • 如今:root--->啓動httpd---->httpd只能訪問/var/www/目錄(這是MAC)規則的約束
    若是httpd想要訪問其餘目錄,那麼必須知足兩個條件:DAC的rwx + MAC的規則

二、SELinux 基本概念

2.1 主體(Subject)

能夠徹底等同於進程。

2.2 目標(Object)

被主體訪問的資源。能夠是文件、目錄、端口、設備等。

注:爲了方便理解,如無特別說明,如下均把文件或者目錄視爲對象。

2.3 政策和規則(Policy & Rule)

系統中一般有大量的文件和進程,爲了節省時間和開銷,一般咱們只是選擇性地對某些進程進行管制。

而哪些進程須要管制、要怎麼管制是由政策決定的。

一套政策裏面有多個規則。部分規則能夠按照需求啓用或禁用(如下把該類型的規則稱爲布爾型規則)。

規則是模塊化、可擴展的。在安裝新的應用程序時,應用程序可經過添加新的模塊來添加規則。用戶也能夠手動地增減規則。

在 CentOS 7 系統中,有三套政策,分別是:

  • targeted:對大部分網絡服務進程進行管制。這是系統默認使用的政策(下文均使用此政策)。
  • minimum:以 targeted 爲基礎,僅對選定的網絡服務進程進行管制。通常不用。
  • mls:多級安全保護。對全部的進程進行管制。這是最嚴格的政策,配置難度很是大。通常不用,除非對安全性有極高的要求。

政策能夠在 /etc/selinux/config 中設定。

【總結以上重要原理】SELinux 是透過 MAC 的方式來控管程序

  • 主體 (Subject):SELinux 主要想要管理的就是程序,主體= process;
  • 目標 (Object):主體程序將訪問的文件,目標=文件;
  • 政策 (Policy):因爲程序與文件數量龐大,所以 SELinux 依據服務來制訂基本的存取安全性政策。這些政策內包含有詳細的規則 (rule) 來指定不一樣的服務開放某些資源的存取與否。 

2.4 安全上下文(Security Context)

主體能不能存取目標除了政策指定以外,主體與目標的安全性文本必須一致纔可以順利存取。

這個安全性文本 (security context) 有點相似文件系統的 rwx !安全性文本的內容與設定是很是重要的!

若是設定錯誤,你的某些服務(主體程序)就沒法存取文件系統(目標資源),固然就會一直出現『權限不符』的錯誤訊息了!

安全上下文有四個字段,分別用冒號隔開。形如:system_u:object_r:admin_home_t:s0。

2.5 SELinux 的工做模式

SELinux 有三種工做模式,分別是:

  • enforcing:強制模式。違反 SELinux 規則的行爲將被阻止並記錄到日誌中。
  • permissive:寬容模式。違反 SELinux 規則的行爲只會記錄到日誌中。通常爲調試用。
  • disabled:關閉 SELinux。

SELinux 工做模式能夠在 /etc/selinux/config 中設定。

若是想從 disabled 切換到 enforcing 或者 permissive 的話,須要重啓系統。反過來也同樣。

enforcing 和 permissive 模式能夠經過 setenforce 1|0 命令快速切換。

須要注意,若是系統已經在關閉 SELinux 的狀態下運行了一段時間,在打開 SELinux 以後的第一次重啓速度可能會比較慢。由於系統必須爲磁盤中的文件建立安全上下文。

SELinux 日誌的記錄須要藉助 auditd.service 這個服務,請不要禁用它。

 ........

相關文章
相關標籤/搜索