你的Web伺服器確實有可能遭受攻擊,但是SELinux可以用來確保你的網站不用承受真正的傷害。
你可以運用SELinux類型來建立一個確切定義:一個服務可以做什麼和它在哪裡完成要做的事情。預設情況下,httpd_sys_content類型被設為/var/www,它規定httpd進程可以在該目錄中工作。如果攻擊者破壞了Apache Web伺服器並嘗試在別處寫入,就像紅帽和Fedora以及CentOS等相似Linux版本的預設/tmp,你需要知道你正在處理什麼。如果你配置Apache來為/data目錄中的內容服務,SELinux也會預設地防止這種情況。
由於這些預設設定可能造成複雜的情況,很多Linux管理員關閉SELinux。雖然關閉SELinux的確讓你的伺服器提供服務時更容易,但是它還是增加了安全風險。
為Apache管理SELinux設定
為Apache等服務管理SELinux設定並不難。問題是並沒有簡單的圖形工具可以讓你快速安裝。但只要用三條命令,你就可以配置它。
為了在你想讓服務訪問到的目錄上設定檔案類型,你首先必須決定要使用的檔案系統類型。要這麼做,只需在服務使用的預設目錄上輸入ls –ldZ。
對於Apache,你會使用ls –ldZ /var/www。你會注意到在這種情況下,–Z選項給出了額外的檔案屬性,而–t選項才是最關鍵的一個。這個進程規定現有的檔案系統類型,這個系統類別型是Apache設定的httpd_sys_content_t)。這也是你需要按照新檔案根設定的檔案類型。
你可以用兩條命令設定你的內容形式:用chcon你可以做一次暫時的變更,它在重啟後消失;用followed by緊跟著的semanage,你可以做永久的變更。
semanage命令似乎有些複雜,但它實際上非常簡單,因為你只需要改變你想要用的類型和目標目錄。在下面的例子中,你只需要改變兩個參數。
semanage fcontext -a -t httpd_sys_content_t /web(/.*)/?
在運用semanage設定預設檔案類型之後,運用restorecon命令來確保它得到應用了。在上面的例子中,針對目錄/web的檔案類型被變更來允許到那個目錄上伺服器檔案的Apache,運行以下命令來應用該變更:
restorecon -R -v /web
在這一點上,Apache將能服務於新的非預設檔案根目錄上的檔案。
為SELinux管理布爾值
你需要管理的SELinux的另一個方面是SELinux布爾值。這些都是開啟或關閉某些功能的二進位值。布爾值可以在多種服務中獲得。運用getsebool –a命令來概觀整個現有的布爾值。該命令通常會將你能應用的設定列成一個長長的列表。
要為你想配置的服務找到所有布爾值,通過grep傳輸所有getsebool –a的輸出。舉例來說,運用getsebool –a | grep http來找到所有與行http匹配的布爾值。即使你並不是對所有布爾值都有明確認識,你通常還是可以通過觀察它們的名字和它們可能做的事情查明白。
使用getsebool -a來找出哪個SELinux可以用來修改服務行為:
[root@bia Desktop]# getsebool -a | grep httpallow_httpd_anon_write --> offallow_httpd_mod_auth_ntlm_winbind --> offallow_httpd_mod_auth_pam --> offallow_httpd_sys_script_anon_write --> offhttpd_builtin_scripting --> onhttpd_can_check_spam --> offhttpd_can_network_connect --> offhttpd_can_network_connect_cobbler --> offhttpd_can_network_connect_db --> offhttpd_can_network_relay --> offhttpd_can_sendmail --> offhttpd_dbus_avahi --> onhttpd_enable_cgi --> onhttpd_enable_ftp_server --> offhttpd_enable_homedirs --> offhttpd_execmem --> offhttpd_read_user_content --> offhttpd_setrlimit --> offhttpd_ssi_exec --> offhttpd_tmp_exec --> offhttpd_tty_comm --> onhttpd_unified --> onhttpd_use_cifs --> offhttpd_use_gpg --> offhttpd_use_nfs --> off
學會了你想用哪個布爾值後,運用setsebool -P來應用它們。如果你想允許Apache運用nfs,在上面運用setsebool -P http_use_nfs。想要得到所有可用布爾值的完整列表,諮詢一下httpd_selinux頁面,這個頁面解釋了Apache特有的檔案標籤和布爾值。
原文:http://www.searchsv.com.cn/showcontent_53067.htm