如何用SELinux保護Apache Web服務器
你的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命令似乎有些復雜,但它實際上非常簡單,因為你只需要改變你想要用的類型和目標目錄。在下面的例子中,你只需要改變兩個參數(shù)。
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__anon_write --> off
httpd_builtin_ing --> 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新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解