Http

更改 Apache httpd ‘Server:’ HTTP 標頭

  • August 11, 2021

Apachehttpd與響應數據一起發回的 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_security2.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 。祝你好運,我希望我對你們所有未來的讀者有所幫助。

引用自:https://unix.stackexchange.com/questions/124137