隐藏http header中的web服务器信息
为了服务器的安全,防止黑客通过http中的响应头获取服务器的类型和版本从而进行针对性攻击。我们需要将这些信息隐藏起来。
例如:
通过这个响应头我们可以轻松获得该服务器的类型为nginx且版本为1.20.2
下面给出当前主流的Web服务器的隐藏方式。
1、Apache
从apache2 开始相关的配置选项移动到了这个配置文件中
我们需要修改其中的 ServerTokens 和 ServerSignature,具体内容如下
完成后重启apache2 再次查看响应头
仅仅是去除了版本,和操作系统,404页面的服务器相关信息也抹去了。但是apache还在,这显然不能让人满意。如果想要继续去除或是修改,我们需要修改apache源码。但是修改源码的方式是不被提倡的。
2、Nginx
nginx可以通过修改配置文件的方式来删除响应头中的server字段。
但是相关的配置模块到现在都没有加入到默认安装里面,顺便说一下现在的最新版本是: nginx-1.21.6。所以只能手动配置一下,把相关模块配置到编译选项中然后进行编译安装即可。
首先下载最新的 nginx(http://nginx.org/en/download.html) 源码和 headers-more-nginx-module (https://github.com/openresty/headers-more-nginx-module/)源码。如图,我已经下载并解压

然后使用命令进入nginx-1.21.6中
添加模块(注意这里填写你的模块存放位置)
如果上面执行成功后则可以执行make命令了(这里我的机器CPU是四核四线程的,所以添加了一个-j参数来加速编译)
编译完成后可以执行安装命令
通过打印的信息,nginx已经装到了/opt/nginx/sbin/nginx。可以通过下面的命令验证模块是否安装成功
确实可以了,然后我们修改nginx的配置文件
在http中添加如下内容
最后启动nginx

可以看到响应头中已经没有server等信息的踪迹了。同样的nginx也可以通过修改源码的方式来达到这个效果,但是还是那句话,不建议通过修改源码的方式来操作。
该模块也可以将server修改为任意的字符串,比如我们可以这样配置:
将
替换为
然后别忘记reload
再次查看浏览器的响应头信息如下:

哈哈这样nginx就变成了apache了。这种隐藏或修改响应头Server的方式确实可以在一点程度上迷惑对方。当然,检查你所使用的软件的漏洞报告并及时修复才是王道!
参考
https://www.nginx.com/resources/wiki/modules/headers_more/