天天看點

通過兩個案例初步了解Linux下selinux的安全機制工作機制

<b>通過兩個案例初步了解Linux下selinux的安全機制工作機制</b>

SELinux 是 2.6 版本的 Linux 核心中提供的強制通路控制 (MAC)系統。對于目前可用的 Linux 安全子產品來說,SELinux 是功能最全面,而且測試最充分的,它是在 20 年的 MAC 研究基礎上建立的。SELinux 在類型強制伺服器中合并了多級安全性或一種可選的多類政策,并采用了基于角色的通路控制概念。

selinux預設配置在/etc/sysconfig/selinux裡

預設有三種級别

<b>enforcing</b><b>級别</b>:Linux下selinux所設定的安全政策都會被啟用.所有與selinux安全政策有關的服務或者程式都會被政策阻止.

<b>permissive</b><b>級别</b>:Linux下selinux所設定的安全政策都會被啟動,但是所有與selinux安全政策有關的服務或者程式不會被政策組織,但是會收到警告.

<b>disabled</b><b>級别</b>:關閉selinux,相當于系統沒有安裝selinux一樣.

<a href="http://www.rsyslog.org/"></a>

一般可以通過getenforce檢視selinux的運作級别.也可以通過setenforce 0 或者1 設定selinux的運作級别,級别0表示Permissive模式,級别1表示Enforcing模式. 至于disabled模式和其他模式的切換隻能修改配置檔案,指令不起作用.其次,修改完成之後,必須重新開機系統才能夠生效.

如果想通過一些指令管理selinux,必須安裝setroubleshoot包.CD光牒裡有,直接安裝即可.由于存在很多依賴關系,建議建立yum源指向CD光牒,然後通過yum安裝.

接下來我們通過兩個案例初步連結selinux的安全機制

<b>案例一:vsftpd在selinux的Enforcing模式下 普通使用者通路不了的處理辦法.</b>

安裝vsftpd包,為用戶端提供ftp服務,預設rhel6桌面安裝會自動安裝vsftpd服務,如果沒有安裝通過rpm指令或者建構yum源安裝,安裝完成之後,啟用vsftpd服務.

預設情況下,linux裡面普通使用者的ftp通路目錄為使用者的宿主目錄,為了方面測試,建立幾個檔案,并且起初設定selinux模式為permissive模式。

現在我們設定selinux模式為Enforcing模式

再次通過普通使用者通路,發現通路失敗.這是為什麼呢,這是受到了selinux的布爾值的影響.

可以看得出是selinux在作怪,我們可以通過man ftpd_selinux 檢視ftpd的selinux通路政策.

通過man注釋可以看到指令 “setsebool –P ftp_home_dir 1”可以開放這個政策

我們也可以通過getsebool –a指令檢視所有selinux管理的所有服務通路政策情況(布爾值),ftp_home_dir預設為off關閉狀态,也就是不允許通過的意思.

通過setsebool –P ftp_home_dir 1開啟ftp_home_dir布爾值.

再次通路就可以實作了

<b>案例二:在Linux selinux開啟enforcing的模式下,開啟web服務,将其他地方的網站主配置資訊index.html copy到網站的根目錄通路不了的處理辦法.</b>

安裝httpd軟體包,預設rhel6.3桌面版本已經安裝了apache的軟體包httpd

預設情況下,在/var/www/html/目錄下沒有網站的資料,通路會顯示以下資訊.

我們在這個目錄下寫一個首頁index.html

開啟selinux到enforcing模式,可以通過web浏覽器通路.

我們從其它目錄比如/root目錄下寫一個index.html檔案copy到httpd的根目錄下

設定selinux級别為permissive模式,可以通路.

設定selinux模式為Enforcing模式,卻不能通路了,這是為什麼呢?這是受到了了selinux的context值的影響.

我們可以通過ls –Z 可以檢視檔案的context值如下.預設情況下在任何一個目錄建立文檔會繼承上級目錄的context值, 可以看出來index.html的context值繼承的是/root目錄的context值,而在/var/www/html/目錄下建立檔案預設的context值為httpd_sys_content

我們可以通過 chcon –t指令修改index.html的context值

修改完成之後,即可實作通路.

總計:通過以上兩個簡單案例可以看到selinux的enforcing模式是通過布爾值或者context值來決定selinux的安全政策機制的.而我們可以通過setsebool –P 指令設定布爾值,通過chcon –t 設定context值(必須安裝setroubleshoot包才能用以上兩個指令)

本文轉自淩激冰51CTO部落格,原文連結:http://blog.51cto.com/dreamfire/1091653,如需轉載請自行聯系原作者

繼續閱讀