天天看點

RHCE 學習筆記(21) - SELinux

這一節和老師學習了selinux的基本知識。

selinux的全稱是security enhanced linux, 直譯就是安全加強的linux。在selinux之前,root賬号能夠任意的通路所有文檔和服務;如果某個檔案設為777,那麼任何使用者都可以通路甚至删除;這種方式稱為dac(主動通路機制),很不安全;selinux則是基于mac(強制通路機制),簡單的說,就是程式和通路對象上都有一個标簽進行區分,隻有對應的标簽才能允許通路。否則即使權限是777,也是不能通路的。

這個标簽在程式或者程序上叫做domain(域),在通路對象或者檔案上叫做context (上下文)。

檢視上下文可以通過ls -z,檢視域可以使用 ps z, 我高亮的部分就是他的上下文了

RHCE 學習筆記(21) - SELinux

以httpd為例,這個httpd的程序隻能允許通路/var/www/html下的文檔對象。

RHCE 學習筆記(21) - SELinux
RHCE 學習筆記(21) - SELinux

下面做個小實驗,建立一個index.html文檔,打開沒有問題

RHCE 學習筆記(21) - SELinux
RHCE 學習筆記(21) - SELinux

在root的家目錄下建立一個index2.html文檔,并剪切到/var/www/html目錄下,可以發現其預設的上下文是繼承 /home的,标簽不比對,是以無法通路

RHCE 學習筆記(21) - SELinux
RHCE 學習筆記(21) - SELinux

我甚至收到了selinux的警告資訊,打開看看

RHCE 學習筆記(21) - SELinux

在 /var/log/audit/audit.log 也可以檢視這個報錯

RHCE 學習筆記(21) - SELinux
RHCE 學習筆記(21) - SELinux

如何修複?有兩種方式,一種是通過restorerecon( restore context) 修複繼承目前目錄預設的上下文;一種是通過chcon (change context) 修改目前的上下文

自動恢複

RHCE 學習筆記(21) - SELinux
RHCE 學習筆記(21) - SELinux

或者強行指定另外一個檔案的上下文來設定

RHCE 學習筆記(21) - SELinux

那麼這個預設的上下文是哪裡來的呢,我們可以通過semanage來配置

RHCE 學習筆記(21) - SELinux

首先檢視一下預設的上下文

RHCE 學習筆記(21) - SELinux

然後可以通過-a -t來強行修改,修改之後再restorecon一下,就變成了預設的context

RHCE 學習筆記(21) - SELinux

selinux 裡面有3種模式,分别是enforcing, permissive, 和 disable。 enforing不比對的直接就報錯擋住了; permissive會報錯但是不會擋住, disable就直接關掉selinux 

可以通過getenforce 檢視 setenfore 來設定。 注意他沒法直接設定 disable

RHCE 學習筆記(21) - SELinux

disable 需要修改配置檔案來生效

RHCE 學習筆記(21) - SELinux

修改之後重新開機就可以了

RHCE 學習筆記(21) - SELinux

改回來,重新開機,開機會出現一個警告,selinux重新打标簽會花時間~~

RHCE 學習筆記(21) - SELinux

進入系統,再看看最後一個概念,selinux的布爾值。這個布爾值類似一個開關,打開的話,他對應的一些服務就允許執行,否則的話就拒絕執行。

看看有哪些布爾值

RHCE 學習筆記(21) - SELinux

知道了布爾值的名字,可以通過sesearch 來确認他關聯了哪些服務的域,比如httpd_enable_homedir允許下列規則,如果設定為off的話,那麼他們都是無法通路的

RHCE 學習筆記(21) - SELinux

除了指令行,我們還可以通路圖形界面

RHCE 學習筆記(21) - SELinux
RHCE 學習筆記(21) - SELinux

總結一下,如果搭配了某個伺服器,然後用戶端無法正常通路,應該按照下面的順序進行排錯:

該服務的配置檔案中是否開啟了相關的權限 ,比如是否允許匿名使用者寫入等等;

檔案系統的權限,比如是否需要使用chmod修改權限

selinux的上下文和布爾值

例子(建立ftp通路,略)

繼續閱讀