要知道一个网站运行在哪些Web组件上有很多方法,例如简单查看Nginx、Apache、PHP版本,HTTP header字段信息里就有(用curl -I请求),或者用Wappalyzer这类浏览器扩展(更全面一些)。如果不想这么简单就暴露Web服务器软件版本,可以修改配置文件关闭版本识别信息。
如上图,默认没有配置的情况下,用Wappalyzer很容易就知道Web服务器软件版本信息。
隐藏 Nginx 版本
用nginx -V命令查看配置文件路径,--conf-path=/etc/nginx/nginx.conf这个参数就是。
sudo vi /etc/nginx/nginx.conf编辑Nginx配置文件。在HTTP块内加入下面红色字符选项。
http {
...
sendfile on;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
...
}
sudo vi /etc/nginx/fastcgi.conf修改FastCGI配置文件,将版本号参数删除(蓝色字符部分)。
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
如果php fastcgi里用的fastcgi_param,而不是配置文件,则修改/etc/nginx/fastcgi_params文件。
sudo nginx -s reload刷新配置使修改生效。
隐藏 Apache 版本
sudo vi /etc/apache2/conf-enabled/security.conf修改此文件,将下面两个参数值如此设置。
ServerTokens Prod
ServerSignature Off
sudo systemctl restart apache2重启服务生效。
隐藏 PHP 版本
sudo vi /etc/php.ini修改配置文件,找到expose_php参数,值改为Off。
sudo systemctl restart php-fpm刷新配置生效。
隐藏 WordPress 版本
编辑functions.php主题文件,在after_setup_theme挂钩内容里加上以下这句即可。
remove_action( 'wp_head', 'wp_generator' );
设置完成,刷新网页用Wappalyzer再次查看就没有版本号了。如果还有,关闭浏览器重开查看。
也可以用curl -I 域名网址命令查看HTTP header信息。
返回内容如下:
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 23 Feb 2019 03:38:16 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Link: ; rel="https://api.w.org/"