kab*_*hya 6 apache ubuntu http-headers
我想知道如何完全删除 apache 在响应中发送的服务器标头。
最初,它显示完整的服务器信息,如Server: Apache (Ubuntu 14.04)
响应标头中的信息。但我在某处读到在 apache2.conf 中添加这个
ServerTokens ProductOnly
ServerSignature Off
Run Code Online (Sandbox Code Playgroud)
它没有删除标题,只是将其更改为 Server: Apache
我什至尝试从 PHP 中删除带有header_remove('Server');
. 但仍然没有运气。
所以,我想完全删除它。
谢谢,
PS:如果可以更改标题值,例如:to Server: Microsoft-IIS/8.0
(假值);那么也没关系。
2020 年更新:
要以@Maxym关于使用该mod_security
模块的答案为基础 - 请注意,您不能使用此模块完全删除服务器头(这只能通过源代码编辑/重新编译),但是您可以重命名公共服务器签名 - 说“NinjaServer “通过这个
mod_security
模块!
要做到这一点;
我们必须(在 httpd.conf 或同等文件中)keep/set;
ServerTokens Full
Run Code Online (Sandbox Code Playgroud)
然后通过mod_security2.conf;
SecServerSignature "NinjaServer"
Run Code Online (Sandbox Code Playgroud)
另外,最好最后加载 mod_security 模块,以避免在 apache 错误日志中出现通知。
对于 OpenSuse 15.x / Apache 2.4.x 安装,实际步骤是:
zypper -v in apache2-mod_security2 // install mod_security
a2enmod security2 // enable the module
a2enmod unique_id // this was needed too...
a2enmod -l // verify loaded
Run Code Online (Sandbox Code Playgroud)
接下来,编辑httpd.conf.local(在/etc/apache2下)并设置;
ServerTokens Full
Run Code Online (Sandbox Code Playgroud)
接下来,编辑mod_security2.conf(在/etc/apache2下)并设置;
SecRuleEngine DetectionOnly // only remove apache server name
SecServerSignature "NinjaServer" // some name other than Apache
Run Code Online (Sandbox Code Playgroud)
也注释掉(本例只是修改公共服务器签名);
# Include /usr/share/apache2-mod_security2/rules/modsecurity_crs_10_setup.conf
Run Code Online (Sandbox Code Playgroud)
然后通过重新启动apache
systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)
如果您现在检查标头(浏览器的开发工具),您将看到服务器名称显示为 NinjaServer :-)
服务器 ID/令牌标头由“ServerTokens”指令(由 mod_core 提供)控制。除了修改 Apache HTTPD 源代码或使用 mod_security 模块之外,没有其他方法可以完全抑制服务器 ID 标头。
使用 mod_security 方法,您可以禁用 modsecurity.conf 文件中的所有模块指令/功能,并仅利用服务器标头 ID 指令,而无需任何额外的“包袱”。(c) 奇普斯特
这是我发现的最好的方法:
sudo apt-get install libapache2-mod-security2
Run Code Online (Sandbox Code Playgroud)
然后将其添加到/etc/apache2/apache.conf
(您可以使用任何名称,这里我使用了空格):
<IfModule security2_module>
SecRuleEngine on
ServerTokens Min
SecServerSignature " "
</IfModule>
Run Code Online (Sandbox Code Playgroud)
并重新启动阿帕奇:
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
现在当你运行类似的东西时:
curl -v http://localhost:80/ | head
Run Code Online (Sandbox Code Playgroud)
你应该得到:
< HTTP/1.1 200 OK
< Date: Mon, 25 Jan 2021 09:31:11 GMT
* Server is not blacklisted
< Server:
Run Code Online (Sandbox Code Playgroud)
有关完整详细信息,请参阅此处。
归档时间: |
|
查看次数: |
6997 次 |
最近记录: |