SELinux安裝及啟動、關閉和檢視狀態方法詳解

2020-07-16 10:04:38
在 CentOS 6.x 中,SELinux 是整合到 Linux 的核心當中的,並且是啟動的,所以不需要單獨安裝。不過,現在不再像在 CentOS 5.x 中,所有的 SELinux 工具都是已經安裝和設定好的,在 CentOS 6.x 中,雖然 SELinux 的主程式預設已經安裝,但是很多的 SELinux 管理工具需要我們手工安裝。

SELinux 安裝命令如下:

[[email protected] ~]# yum -y install setroubleshoot
[[email protected] ~]# yum -y install setools-console

這兩條命令要想正確執行,需要搭建正確的 yum 源。這兩個軟體包在安裝時會依賴安裝一系列的軟體包,這些軟體包中包含了 SELinux 的常用工具。

SELinux的啟動管理

在 CentOS 6.x 中,setup 工具已經不能支援 SELinux 的調整了,只能通過 SELinux 組態檔來進行 SELinux 的啟動與關閉。

我們開啟 SELinux 組態檔來檢視一下,如下:

[[email protected] ~]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
#指定SELinux的執行模式。有enforcing(強制模式)、permissive(寬容模式)、disabled(不生效)三種模式
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
#指定SELinux的預設策略。有targeted(針對性保護策略,是預設策略)和mls(多級安全保護策略)兩種策略

要想關閉和啟動 SELinux,只需修改 SELinux 的執行模式即可。三種模式的區別如下:
  • SELINUX=enforcing:強制模式,代表 SELinux 正常執行,所有的策略已經生效。
  • SELINUX=permissive:寬容模式,代表 SELinux 已經啟動,但是只會顯示警告資訊,而並不會實際限制進程存取檔案或目錄資源。
  • SELINUX=disable:關閉,代表 SELinux 被禁用了。

這裡需要注意,如果從強制模式(enforcing)、寬容模式(permissive)切換到關閉模式(disabled),或者從關閉模式切換到其他兩種模式,則必須重新啟動 Linux 系統才能生效,但是強制模式和寬容模式這兩種模式互相切換不用重新啟動 Linux 系統就可以生效。這是因為 SELinux 是整合到 Linux 核心中的,所以必須重新啟動才能正確關閉和啟動。而且,如果從關閉模式切換到啟動模式,那麼重新啟動 Linux 系統的速度會比較慢,那是因為需要重新寫入安全上下文資訊。

除可以通過組態檔進行 SELinux 的啟動和關閉外,也可以使用命令來進行 SELinux 的執行模式的查詢和修改。命令如下:

[[email protected] ~]# getenforce
#查詢SELinux的執行模式
Enforcing
#當前的SELinux是強制模式


除可以查詢 SELinux 的執行模式之外,也可以修改 SELinux 的執行模式。不過需要注意,setenforce 命令只能讓 SELinux 在 enforcing 和 permissive 兩種模式之間進行切換。如果從啟動切換到關閉,或從關閉切換到啟動,則只能修改組態檔,setenforce 命令就無能為力了。

setenforce 命令格式如下:

[[email protected] ~]# setenforce 選項

選項:
  • 0: 切換成 permissive(寬容模式);
  • 1: 切換成 enforcing(強制模式);

例如:

[[email protected] ~]# setenforce 0
#切換成寬容模式
[[email protected] ~]# getenforce
Permissive
[[email protected] ~]# setenforce 1
#切換成強制模式
[[email protected] ~]# getenforce
Enforcing


知道了 SELinux 的啟動和關閉方法,那麼我們如何查詢當前 SELinux 的策略呢?這就要使用 sestatus 命令來檢視了,命令如下:

[[email protected] ~]# sestatus
SELinux status: enabled
#SELinux啟用
SELinuxfs mount: /selinux
#SELinux資料的掛載位置
Current mode: enforcing
#執行模式是強制模式
Mode from config file: enforcing
#組態檔所指定的模式也是強制模式
Policy version: 24
#策略版本
Policy from config file: targeted
#目前策略是針對性保護策略