Apache網站伺服器上關閉伺服器簽名
問題:每當Apache2網站伺服器返回錯誤頁時(如,404 頁面無法找到,403 禁止訪問頁面),它會在頁面底部顯示網站伺服器簽名(如,Apache版本號和作業系統資訊)。同時,當Apache2網站伺服器為PHP頁面服務時,它也會顯示PHP的版本資訊。我如何在Apache2網站伺服器上關閉這些網站伺服器簽名呢?
透露網站伺服器帶有伺服器/PHP版本資訊的簽名會帶來安全隱患,因為你基本上將你係統上的已知漏洞告訴給了攻擊者。因此,作為伺服器加固的一個部分,強烈推薦你禁用所有網站伺服器簽名。
禁用Apache網站伺服器簽名
禁用Apache網站伺服器簽名可以通過編輯Apache配置檔案來實現。
在Debian,Ubunt或者Linux Mint上:
- $sudovi/etc/apache2/apache2.conf
在CentOS,Fedora,RHEL或者Arch Linux上:
- $sudovi/etc/httpd/conf/httpd.conf
將下面兩行新增到Apache配置檔案底部。
ServerSignature Off
ServerTokens Prod
然後重啟網站伺服器以使修改生效:
- $sudoservice apache2 restart(Debian,UbuntuorLinuxMint)
- $sudoservice httpd restart(CentOS/RHEL6)
- $sudosystemctlrestart httpd.service(Fedora,CentOS/RHEL7,ArchLinux)
第一行‘ServerSignature Off’使得Apache2網站伺服器在所有錯誤頁面上隱藏Apache版本資訊。
然而,若沒有第二行的‘ServerTokens Prod’,Apache伺服器將仍然在HTTP迴應頭部包含詳細的伺服器標記,這會洩漏Apache的版本號。
第二行‘ServerTokens Prod’所要做的是在HTTP響應頭中將伺服器標記壓縮到最小。
因此,同時放置兩行時,Apache將不會在頁面中或者HTTP響應頭中洩漏版本資訊。
隱藏PHP版本
另外一個潛在的安全威脅是HTTP響應頭中的PHP版本資訊洩漏。預設情況下,Apache網站伺服器通過HTTP響應頭中的“X-Powered-By”欄位包含有PHP版本資訊。如果你想要在HTTP頭部中隱藏PHP版本,請使用文字編輯器開啟php.ini檔案,找到“expose_php = On”這一行,將它改為“expose_php = Off”即可。
在Debian,Ubunt或者Linux Mint上:
- $sudovi/etc/php5/apache2/php.ini
在CentOS,Fedora,RHEL或者Arch Linux上:
- $sudovi/etc/php.ini
expose_php = Off
最後,重啟Apache2網站伺服器來重新載入已更新的PHP配置檔案。
現在,你不會再看到帶有“X-Powered-By”欄位的HTTP響應頭了。