隐藏 Web 服务的版本信息
隐藏 Web 服务的版本信息
lololowe1. TL;DR
1 | # Nginx |
2. Nginx
默认情况下,Nginx 在处理 http 请求的时候会返回 server 字段,并且在404等错误页面中,会直接显示该字段的值。
server 字段通常包含了服务器软件的信息,如服务器软件的名称和版本号:
暴露 Nginx 版本信息会使得攻击者能利用已知的漏洞和安全问题来针对特定的软件版本进行攻击。(有关 Nginx 的漏洞披露,戳这里:https://nginx.org/en/security_advisories.html)
因此最好通过配置来隐藏版本信息,方法很简单,只需编辑 /etc/nginx/nginx.conf
文件,在 http 块中加上 server_tokens off;
字段,保存后执行 sudo nginx -s reload
重启 Nginx 即可。效果如下:
关于 server_tokens off;
的官方解释,戳这里:https://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens
3. Apache
阿帕奇服务器也是一样的道理,配置方式如下:
1 | echo "ServerTokens Prod" | sudo tee -a /etc/apache2/apache2.conf |
配置前:
配置后:
关于 ServerTokens Prod
字段的官方解释,戳这里:https://httpd.apache.org/docs/2.4/mod/core.html#servertokens
注意:
如果配置不生效,尝试将配置文件改为/etc/httpd/conf/httpd.conf
。
如果重启apache2服务失败,并且报AH00558警告,执行echo ServerName localhost >> /etc/apache2/apache2.conf
再次重启即可。
4. PHP
php 的 expose_php
配置项默认会使得 php 在 X-Powered-By 头中显示 php 的版本号。
关闭方式为:执行 php --ini | grep Loaded | awk '{print $4}'
命令查看 php.ini 文件所在路径,然后编辑它,搜索 expose_php = On
,将其改为 off 并保存。
接着执行 systemctl restart phpx.x-fpm.service
重启 php-fpm 即可(将x.x替换为你的实际版本)。
expose_php 配置项的官方解释,戳这里:https://www.php.net/manual/zh/ini.core.php#ini.expose-php
参考: