Aud*_*ile 11 apache centos apache2 http-headers
我的HTTP响应头中有"Server:Apache",并希望将其删除.我按照说明添加到httpd.conf:
ServerSignature Off
ServerTokens Prod
Header unset Server
Run Code Online (Sandbox Code Playgroud)
但最后一行没有效果.前两行改变了标题的内容(之前它还包含有关OS和PHP的信息),但我需要完全删除它.这该怎么做?
Bar*_*ard 33
Apache不允许您完全取消设置.事实上,一些开发人员强烈反对添加这个,尽管它是一个简单的代码更改,已被建议(甚至写入!)几次.请参阅 此处和此处,了解一些已经提出并被拒绝的讨论.
他们给出了各种理由,包括:
默默无闻的安全性是一种神话,并且给出了一种虚假的安全感,因为根据它对特定请求的响应方式,可以很容易地指示服务器查看它可能是哪个软件.虽然有一个真实的含义,默认情况下将ServerTokens指定为Full 肯定是一个安全问题,泄漏的信息远远超过公共网站上默认显示的信息.
它可能会也可能不会违反HTTP规范而不提供服务器头.这似乎是在一些争议中,仍然没有回答为什么他们不允许你将它改为一些随机字符串而不是Apache.
这可能会使计算野外Apache安装数量变得更加困难.如果它很容易指纹和自负的原因,那么这与上面的论点1相反.
这使得调试问题变得很困难,如果指纹很容易,那么这又与上面的参数1相反,你认为任何需要调试的人都会知道或者能够找到确切的版本.
如果代理服务器知道另一端的服务器类型,它"可能"以不同的方式处理请求.代理服务器哪个错误恕我直言,我怀疑它已经做了很多.
如果人们真的想修改或隐藏这个标题,他们可以编辑源代码.坦率地说,这是一个危险的建议,建议没有代码经验的人做,如果他们从非打包版本运行只是为了添加它,可能会导致其他安全问题.
他们甚至将其添加到官方文档中:
建议不要将ServerTokens设置为小于最小值,因为这会使调试互操作问题变得更加困难.另请注意,禁用Server:标头不会使您的服务器更安全."通过默默无闻的安全"的想法是一个神话,导致虚假的安全感.
整个情况是,恕我直言,很荒谬,他们应该改变立场,让人们按照自己的意愿配置软件.在最坏的情况,因为他们说这不添加任何东西,但我个人认为你给了少不必要的信息,将更好,所以希望能够关闭这个功能停止这整个问题被提出,每隔一段时间.
在那个不太可能的转弯之前,你只剩下:
咆哮.
Sha*_*rpC 19
为了获取 headers,如果在服务器上,这似乎可以充分工作(所有测试都在 Ubuntu 14.04 Trusty Tahr 上完成):
curl -v http://localhost:80/ | head
Run Code Online (Sandbox Code Playgroud)
它会产生类似的东西:
< HTTP/1.1 200 OK
< Date: Mon, 25 Jan 2021 09:17:51 GMT
* Server Apache/2.4.7 (Ubuntu) is not blacklisted
< Server: Apache/2.4.7 (Ubuntu)
Run Code Online (Sandbox Code Playgroud)
要删除版本号,请编辑文件/etc/apache2/conf-enabled/security.conf并修改以下行:
ServerTokens OS到ServerTokens ProdServerSignature On到ServerSignature Off并重新启动阿帕奇:
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
您现在应该得到如下响应:
< HTTP/1.1 200 OK
< Date: Mon, 25 Jan 2021 09:20:03 GMT
* Server Apache is not blacklisted
< Server: Apache
Run Code Online (Sandbox Code Playgroud)
Apache要完全删除该词,请首先安装 ModSecurity:
sudo apt-get install libapache2-mod-security2
Run Code Online (Sandbox Code Playgroud)
以下几行似乎不是必需的(启用模块并重新启动 Apache),但仅供参考:
sudo a2enmod security2
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
检查模块是否已启用:
apachectl -M | grep security
Run Code Online (Sandbox Code Playgroud)
应该显示:
security2_module (shared)
Run Code Online (Sandbox Code Playgroud)
然后,尽管您可以修改 /etc/modsecurity/modsecurity.conf(通过重命名modsecurity.conf-recommended),但修改/etc/apache2/apache.conf看起来更容易 (注意您可以使用您想要的任何名称,在本例中我只是使用了一个空格):
<IfModule security2_module>
SecRuleEngine on
ServerTokens Min
SecServerSignature " "
</IfModule>
Run Code Online (Sandbox Code Playgroud)
(使用Min而不是还Full可以防止模块mod_fastcgi出现在空白服务器名称之后。)
然后重新启动阿帕奇:
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)
| 归档时间: |
|
| 查看次数: |
14969 次 |
| 最近记录: |