RHEL 5上的SELinux配置
本文的主題是RHEL 5上的SELinux配置。RHEL同時提供了圖形用戶界面(GUI)和命令行兩種方式配置SELinux。為了表現SELinux的簡單易用,本文使用RHEL的GUI來啟用SELinux。
要從RHEL的GUI啟用SELinux,依次點擊系統(system)>管理(Administration)>安全級別和防火墻(Security Level and Firewall)。進入SELinux選項卡,將SELinux設置為“允許模式(permissive mode)”,然后重啟服務器。

以允許模式啟動SELinux是(學習配置使用SELinux的)不錯的實踐。在這種模式下,你可以近距離感受和接觸SELinux,但不影響服務器和應用程序/數據庫中的任何東西。測試期間,你必須仔細查看日志信息,檢查所有的警告以及所有由程序和數據庫在操作期間產生的拒絕錯誤。
設置SELinux為允許模式并重啟我的RHEL后,我沒有發現任何不同。我以根賬戶登入系統,然后使用sestatus命令查看SELinux環境的運行狀況。

既然SELinux已經啟動并在允許模式下運行,那么是時候對SELinux進行管理了。RHEL提供了一個GUI來進行SELinux的策略管理,根用戶可以使用system-config-SELinux命令對這個GUI進行初始化。該命令將打開GUI的主界面,在RHEL或Fedora Linux中你都可以看到如下的窗口:

上圖中,你可以在左邊框中找到SELinux管理的主要選項。第二個選項“Boolean”包含了SELinux管理中大部分默認服務和進程的布爾條件。同樣的條件也可以使用getsebool命令列出。舉個例子,如果你只想知道已有的關于ftpd守護進程的布爾條件,那么你可以使用如下的命令:

要改變布爾條件,如allow_ftpd_use_cifs=off——該條件意味著FTP進程不能使用cifs協議進行公共文件傳輸——我們可以在system-config-SELinux界面中單擊“Boolean”選項卡下對應的條件(條目),如下圖所示。此項操作將允許FTP服務使用cifs協議進行公共文件傳輸。你可以針對ftpd進程執行getsebool和grep命令,確認剛才的操作是否生效。

使用SELinux的安全上下文保護Web服務器
假設我們想要在Linux服務器上運行Apache Web服務器程序,由于這臺服務器會運行一些關鍵應用,并暴露在互聯網上,所以我們想確保這臺Web服務器受到盡可能多的保護。
如果你啟動Web服務并嘗試配置你的Web服務器允許執行某些CGI腳本,如hello.pl,那么如果不改變SELinux的配置,Linux系統日志和SELinux審計日志都會記錄到錯誤。要在SELinux審計日志中查看這些錯誤,執行sealert –b。這會打開SELinux審計日志,如下所示:

現在的問題是,為什么會出現這種情況?答案很簡單,因為hello.pl是一個CGI可執行程序,它應該被歸為httpd_sys_script_exec_tdomain上下文,而不是httpd_sys_content_t。
我們可以使用chcon命令解決這個問題:
root@test3 cgi-bin]# ls -lZ *.pl -rwxr-xr-x apache apache root:object_r:httpd_sys_content_t hello.pl [root@test3 cgi-bin]# chcon -v --type=httpd_sys_script_exec_t hello.pl context of hello.pl changed to root:object_r:httpd_sys_script_exec_t[root@test3 cgi-root@test3 cgi-bin] # ls -lZ *.pl -rwxr-xr-x apache apache root:object_r:httpd_sys_script_exec_t hello.pl
現在我們應該能夠看到,我們的Web服務器執行了hello.pl,而且在SELinux日志中也沒有產生任何警告或者錯誤。

以這種方式配置SELinux,入侵者很難通過使用未授權的CGI或perl腳本來獲得系統的控制。同樣地,任何想要更改文件根目錄到系統其他用戶的子目錄的行為都會失敗,除非該子目錄及子目錄下的索引文件已被添加到httpd域。
那么,讓我們來假設,我們的Linux服務器上的用戶John創建了名為html的子目錄。完成該目錄和index.html文件的創建后,你會發現,該目錄和文件被默認歸入user_home_t上下文,如下所示:

直到且除非該上下文被修改為正確的httpd上下文域,否則任何試圖通過Web服務器訪問這個index.html的操作都會被SELinux拒絕,并在審計日志當中留下錯誤記錄。你可以使用chcon命令(如下圖)或者semanage命令來改變上下文。

原文鏈接:http://www.searchsv.com.cn/showcontent_45356.htm
【編輯推薦】