1. 程式人生 > 其它 >模擬體育競技

模擬體育競技

SELinux(Security-Enhanced Linux)是美國國家安全域性在Linux開源社群的幫助下開發的一個強制訪問控制(MAC,Mandatory Access Control)的安全子系統。

Linux系統使用SELinux技術的目的是為了讓各個服務程序都受到約束,使其僅獲取到本應獲取的資源。

如果一般許可權和防火牆是“門窗”的話,那麼SELinux便是在門窗外面安裝的“防護欄”,可以讓系統內部更加安全。

SELinux域和SELinux安全上下文稱為Linux系統中的雙保險,系統內的服務程式只能規規矩矩地拿到自己所應該獲取的資源,這樣即便黑客入侵了系統,也無法利用系統內的服務程式進行越權操作。

但是,SELinux服務比較複雜,配置難度也很大,從而導致很多伺服器在部署好Linux系統後直接將SELinux禁用了。這絕對不是明智的選擇。


SELinux服務有3種配置模式,具體如下。

enforcing:強制啟用安全策略模式,將攔截服務的不合法請求。

permissive:遇到服務越權訪問時,只發出警告而不強制攔截。

disabled:對於越權的行為不警告也不攔截。

/etc/selinux/config是selinux的主要配置檔案

[root@linuxprobe ~]# cat /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
# SELINUXTYPE= can take one of these three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted

SELinux服務的主配置檔案中,定義的是SELinux的預設執行狀態,可以將其理解為系統重啟後的狀態,因此它不會在更改後立即生效。

可以使用getenforce命令獲得當前SELinux服務的執行模式:

[root@linuxprobe ~]# getenforce

可以用setenforce [0|1]命令修改SELinux當前的執行模式(0為禁用,1為啟用)。

注意,這種修改只是臨時的,在系統重啟後就會失效,永久生效的話就需要修改/etc/selinux/config配置檔案。

[root@linuxprobe ~]# setenforce 0
[root@linuxprobe ~]# getenforce
Permissive

在ls命令中,-Z引數用於檢視檔案的安全上下文值,-d引數代表物件是個資料夾。

[root@linuxprobe ~]# ls -Zd /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html

在檔案上設定的SELinux安全上下文是由使用者段、角色段以及型別段等多個資訊項共同組成的。其中,使用者段system_u代表系統程序的身份,角色段object_r代表檔案目錄的角色,型別段httpd_sys_content_t代表網站服務的系統檔案。

semanage命令用於管理SELinux的策略,英文全稱為“SELinux manage”,語法格式為“semanage [引數] [檔案]”。

SELinux服務極大地提升了Linux系統的安全性,將使用者許可權牢牢地鎖在籠子裡。

semanage命令不僅能夠像傳統的chcon命令那樣設定檔案、目錄的策略,還能夠管理網路埠、訊息介面(這些新特性將在本章後文中涵蓋)。使用semanage命令時,經常用到的幾個引數及其作用如下所示:

引數 作用
-l 查詢
-a 新增
-m 修改
-d 刪除

例如,向新的網站資料目錄中新新增一條SELinux安全上下文,讓這個目錄以及裡面的所有檔案能夠被httpd服務程式訪問到:

[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*

在執行上述設定之後,還無法立即訪問網站,還需要使用restorecon命令將設定好的SELinux安全上下文立即生效。在使用restorecon命令時,可以加上-Rv引數對指定的目錄進行遞迴操作,以及顯示SELinux安全上下文的修改過程。

[root@linuxprobe ~]# restorecon -Rv /home/wwwroot/