更改 Apache httpd ‘Server:’ HTTP 標頭
Apache
httpd
與響應數據一起發回的 HTTP 標頭之一是“伺服器”。例如,我的 Web 伺服器機器是相對最新的 Arch Linux。它發回與以下內容非常相似的標頭:HTTP/1.1 404 Not Found Date: Thu, 10 Apr 2014 17:19:27 GMT Server: Apache/2.4.9 (Unix) Content-Length: 1149 Connection: close Content-Type: text/html
我有
ServerSignature off
,/etc/httpd/conf/httpd.conf
但“伺服器:”標題仍然出現。我已經嘗試過mod_headers。我啟用了它,並且嘗試了一些方法:<IfModule headers_module> Header set ProcessingTime "%D" Header set Server BigJohn </IfModule>
停止並開始
httpd
上述配置後,HTTP 標頭包含類似 的內容ProcessingTime: 1523
,但“Server:”標頭行保持不變。所以我知道“mod_headers”已安裝並啟用,並且可以正常工作,但不是我想要的。我看到名為“mod_security”的東西聲稱可以做到這一點,但我不希望 mod_security 攜帶的所有其他包袱。
更新:
安裝後,您
mod_security
只需要幾個指令:<IfModule security2_module> SecRuleEngine on ServerTokens Full SecServerSignature "Microsoft-IIS/6.0" </IfModule>
那是
mod_security
2.7.7
mod_security 很棒,但您並不需要它來實現您的目標。
在包含所有模組之後,
httpd.conf
您可以簡單地取消設置您選擇的標題。如評論中所述,mod_headers
需要啟用。Header unset Server # if the above doesn't work, set a default value # use the keyword 'always' to set the header even with error'ed responses # (e.g. if your app is down) Header always set Server "No peeking!" ServerSignature Off ServerTokens Prod
http://httpd.apache.org/docs/2.4/mod/core.html#serversignature
只是為仍在尋找的人更新此內容。我無法更改 HTTP 標頭中的 Server 行。這個建議應該適用於帶有 systemd 和 Apache 2.4.7 的 Debian 分支發行版。具體來說,我使用的是 Ubuntu Server LTS 14.04.03。我發現的一些建議是
grep -Ri servertokens /etc/apache2
這導致我進入 /etc/apache2/conf-available/security.conf ,其中指定了 ServerTokens 和 ServerSignature。因此,我對 /etc/apache2/apache2.conf 所做的任何更改都會被 security.conf 中已經指定的指令覆蓋。
我只是更改了 security.conf 中的指令,Apache 開始按我的意願工作。
ServerTokens Prod ServerSignature Off
關於 Header unset Server 的主題,我發現了一個錯誤報告,Apache 開發人員說這是一個無法修復的問題。顯然,對他們來說,這是一個哲學問題,儘管部分由 Tim Berners-Lee 編寫的 HTTP/1.1、RFC 2616 規範說伺服器標籤是可選的。
我真的很想將伺服器標籤設置為“未知”,以使我們的 Qualys 掃描愉快。所以,我按照這個 DigitalOcean 教程安裝了 mod_security,現在稱為 libapache2-modsecurity 。祝你好運,我希望我對你們所有未來的讀者有所幫助。