教你用SELinux來保護你的Apache
你的Web服務器確實有可能遭受攻擊,但是SELinux可以用來確保你的網站不用承受真正的傷害。
你可以運用SELinux類型來創(chuàng)建一個確切定義:一個服務可以做什么和它在哪里完成要做的事情。默認情況下,httpd_sys_content類型被設為/var/www,它規(guī)定httpd進程可以在該目錄中工作。如果攻擊者破壞了Apache Web服務器并嘗試在別處寫入,就像紅帽和Fedora以及CentOS等相似Linux版本的默認/tmp,你需要知道你正在處理什么。如果你配置Apache來為/data目錄中的內容服務,SELinux也會默認地防止這種情況。
由于這些默認設置可能造成復雜的情況,很多Linux管理員關閉SELinux。雖然關閉SELinux的確讓你的服務器提供服務時更容易,但是它還是增加了安全風險。
為Apache管理SELinux設置
為Apache等服務管理SELinux設置并不難。問題是并沒有簡單的圖形工具可以讓你快速安裝。但只要用三條命令,你就可以配置它。
為了在你想讓服務訪問到的目錄上設置文件類型,你首先必須決定要使用的文件系統(tǒng)類型。要這么做,只需在服務使用的默認目錄上輸入ls –ldZ。
對于Apache,你會使用ls –ldZ /var/www。你會注意到在這種情況下,–Z選項給出了額外的文件屬性,而–t選項才是最關鍵的一個。這個進程規(guī)定現(xiàn)有的文件系統(tǒng)類型,這個系統(tǒng)類型是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命令來概觀整個現(xiàn)有的布爾值。該命令通常會將你能應用的設置列成一個長長的列表。
要為你想配置的服務找到所有布爾值,通過grep傳輸所有getsebool –a的輸出。舉例來說,運用getsebool –a | grep http來找到所有與行http匹配的布爾值。即使你并不是對所有布爾值都有明確認識,你通常還是可以通過觀察它們的名字和它們可能做的事情查明白。
使用getsebool -a來找出哪個SELinux可以用來修改服務行為:
[root@bia Desktop]# getsebool -a | grep http allow_httpd_anon_write --> off allow_httpd_mod_auth_ntlm_winbind --> off allow_httpd_mod_auth_pam --> off allow_httpd_sys_script_anon_write --> off httpd_builtin_scripting --> on httpd_can_check_spam --> off httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off httpd_can_network_relay --> off httpd_can_sendmail --> off httpd_dbus_avahi --> on httpd_enable_cgi --> on httpd_enable_ftp_server --> off httpd_enable_homedirs --> off httpd_execmem --> off httpd_read_user_content --> off httpd_setrlimit --> off httpd_ssi_exec --> off httpd_tmp_exec --> off httpd_tty_comm --> on httpd_unified --> on httpd_use_cifs --> off httpd_use_gpg --> off httpd_use_nfs --> off
學會了你想用哪個布爾值后,運用setsebool -P來應用它們。如果你想允許Apache運用nfs,在上面運用setsebool -P http_use_nfs。想要得到所有可用布爾值的完整列表,咨詢一下httpd_selinux頁面,這個頁面解釋了Apache特有的文件標簽和布爾值。
關鍵詞:SELinux,Apache
閱讀本文后您有什么感想? 已有 人給出評價!
- 0
- 0
- 0
- 0
- 0
- 0