Apache一直是世界上使用率排名前三的Web服務器軟件。企業使用其構建Web應用,從很大程度上都需要對其安全性進行綜合考慮,以保證能夠應對拒絕服務攻擊、流量竊聽、數據泄漏等網絡威脅,從而保證企業門戶網站的安全。
除了使用業界流行的防火墻、IDS/IPS(入侵檢測系統/入侵防御系統)、WAF(Web應用防火墻)、UTM(統一威脅管理)等外部安全設備對Apache服務進行安全防護外,作為一種優秀的開源服務器軟件,Apache本身就具有很多優秀的特性可以為服務器管理員提供安全配置,以防范各種網絡攻擊。因此,充分、高效地挖掘Apache服務器的自身安全能力也是企業安全工作者一個必備的技能。基于此,本文將從4個方面詳細剖析Apache服務器的安全防護要點。
策略一:服務器端安全設置
1.限制root用戶運行Apache服務器
一般情況下,在Linux下啟動Apache服務器的進程httpd需要root權限。由于root權限太大,存在許多潛在的安全威脅。一些管理員為了安全起見,認為httpd服務器不可能沒有安全漏洞,因而更愿意使用普通用戶的權限來啟動服務器。http.conf主配置文件里面有如下兩個配置是Apache的安全保證,Apache在啟動后,就將其本身設置為這兩個選項設置的用戶和組權限進行運行,降低了服務器的危險性。
User apache
Group apache
需要特別指出的是:以上兩個配置在主配置文件里面是默認選項,當采用root用戶身份運行httpd進程后,系統將自動將該進程的用戶組和權限改為apache,這樣,httpd進程的權限就被限制在apache用戶和組范圍內,因而保證了安全。
2.向客戶端隱藏Apache服務器的相關信息
Apache服務器的版本號可作為黑客入侵的重要信息被利用,通常他們在獲得版本號后,通過網上搜索針對該版本服務器的漏洞,從而使用相應的技術和工具有針對性的入侵,這也是滲透測試的一個關鍵步驟。因此,為了避免一些不必要的麻煩和安全隱患,可以通過主配置文件httpd.conf下的如下兩個選項進行:
(1)ServerTokens:該選項用于控制服務器是否響應來自客戶端的請求,向客戶端輸出服務器系統類型或者相應的內置模塊等重要信息。Red Hat Enterprise Linux 5操作系統在主配置文件中提供全局默認控制閾值為OS,即ServerTokens OS。它們將向客戶端公開操作系統信息和相關敏感信息,所以保證安全情況下需要在該選項后使用“ProductOnly”,即ServerTokens ProductOnly。
(2)ServerSignature:該選項控制由系統生成的頁面(錯誤信息等)。默認情況下為off,即ServerSignature off,該情況下不輸出任何頁面信息。另一情況為on,即ServerSignature on,該情況下輸出一行關于版本號等相關信息。安全情況下應該將其狀態設為off。
圖1和圖2為安全設定這兩個選項前后正常情況下和錯誤情況下的輸出頁面(通過Rhel5中的Mozilla Firefox瀏覽器訪問Rhel5中的Apache服務器)的詳細對比。可以清楚看到,安全設定選項后,可以充分地向客戶端用戶隱藏Linux操作系統信息和Apache服務器版本信息。
圖1 錯誤情況下未設定安全選項前示意
圖2 操作情況下使用安全設定后的對比
3.設置虛擬目錄和目錄權限
要從主目錄以外的其他目錄中進行發布,就必須創建虛擬目錄。虛擬目錄是一個位于Apache的主目錄外的目錄,它不包含在Apache的主目錄中,但在訪問Web站點的用戶看來,它與主目錄中的子目錄是一樣的。每個虛擬目錄都有一個別名,用戶Web瀏覽器中可以通過此別名來訪問虛擬目錄,如http://服務器IP地址/別名/文件名,就可以訪問虛擬目錄下面的任何文件了。
使用Alias選項可以創建虛擬目錄。在主配置文件中,Apache默認已經創建了兩個虛擬目錄。這兩條語句分別建立了“/icons/”和“/manual”兩個虛擬目錄,它們對應的物理路徑分別是“/var/www/icons/”和“/var/www/manual”。在主配置文件中,用戶可以看到如下配置語句:
Alias /icons/ "/var/www/icons/"
Alias /manual "/var/www/manual"
在實際使用過程中,用戶可以自己創建虛擬目錄。比如,創建名為/user的虛擬目錄,它所對應的路徑為上面幾個例子中常用的/var/www/html/rhel5:
Alias /test "/var/www/html/rhel5"
如果需要對其進行權限設置,可以加入如下語句:
<Directory “/var/www/html/rhel5”>
AllowOverride None
Options Indexes
Order allow,deny
Allow from all
</Directory>
設置該虛擬目錄和目錄權限后,可以使用客戶端瀏覽器進行測試驗證,采用別名對該目錄中的文件進行訪問,瀏覽結果如圖3所示。