[RHCE] SELinux

SELINUX

SELinux(Security Enhanced Linux)用以針對Linux系統的安全性進行強化。簡單的說,SELinux是針對程序對於檔案系統的存取,進行以政策(Policy)為基準的控管。當程序通過政策之後,會與檔案系統進行安全性本文比對,比對相符就可以存取檔案系統。

SELinux必須在root權限下才可進行設定。使用 #getenforce 可以查詢目前SELinux的狀態。
enforcing: 強制模式,表示SELinux正常運作中。
permissive: 警告模式,SELinux也是正常運作,但是對於政策只會給予警告,用以debug用。
disabled: 關閉SELinux。

可以於/etc/sysconfig/selinux中變更SELinux狀態。或者使用 #setenforce 0 (or 1) 變更,0為警告模式,1為強制模式。
1335618373-3006392309.jpg-RHCE SELinux

SELinux的政策中訂立了許多規則,規則設定了程序對於檔案系統各種動作的權限。可以使用 #getsebool -a 來查詢所有目前運行的規則。可以在後面加上規則名稱或者grep去查詢特定的規則。之後可以使用 #setsebool -P [規則] on (or off) 開啟或關閉規則。
1335619056-3493001562.jpg-RHCE SELinux

TROUBLESHOOT

SELinux的設定錯誤會導致程序無法正常的進行。例如你可能不小心關閉了httpd,使得你的網站無法正常的被瀏覽。這時候就必須進行除錯。

除錯可以使用setroubleshoot或auditd這兩個服務。安裝後記得使用 #chkconfig 設定為開機啟動才可完整紀錄所有錯誤。

安裝setroubleshoot可以用以紀錄SELinux的錯誤訊息。使用 #grep setroubleshoot /var/log/message 可以查詢目前SELinux的錯誤訊息。每筆錯誤紀錄會有一個編號,使用 #sealert -l [編號] 可以查詢該筆錯誤詳細資料。

或者安裝auditd這個服務,同樣也可以紀錄SELinux的錯誤訊息。使用 #sealert -a /var/bg/audit/audit.log 可以查詢所有錯誤訊息的詳細資料。

留言