隐藏Nginx版本号的安全性与方法
代码来源:cnblogs
原文链接:https://www.cnblogs.com/Sunzz/archive/2018/11/15/9962891.html
本文版权归原作者所有,如有侵权请立即与我联系,我将及时处理。
安全性漏洞:WEB服务器HTTP头文件信息披露
送检设备在安全新测试项中贝检测策出以上漏洞,以下是修复过程。
Nginx默认是显示版本号的,如:
[root@localhost ~]# curl -I www.nginx.org
HTTP/1.1 301 Moved Permanently
Server: nginx/1.19.10
Date: Wed, 15 Sep 2021 06:17:16 GMT
Content-Type: text/html
Content-Length: 170
Connection: keep-alive
Keep-Alive: timeout=15
Location: http://nginx.org/
[root@localhost ~]#
这样暴露出来的版本号就容易变成攻击者可利用的信息。所以,从安全的角度来说,隐藏版本号会相对安全些!
nginx不仅可以隐藏版本信息,还支持自定义web服务器信息
先看看最终的隐藏结果吧
步骤
1 官网下载最新稳定版
wget http://nginx.org/download/nginx-1.14.1.tar.gz
2 解压
tar -xf nginx-1.14.1.tar.gz
cd nginx-1.14.1
3 修改C文件
vim src/http/ngx_http_header_filter_module.c
static u_char ngx_http_server_string[] = "Server: Please guess it!" CRLF;
vim src/http/ngx_http_special_response.c #修改36行
"<hr><center>Please guess it!</center>" CRLF #再写一遍刚才的字符串
4 编译配置
./configure --prefix=/usr/local/nginx
5 编译安装
make && make install
6 修改nginx配置文件,http节点下添加 server_tokens off
vim /usr/local/nginx/conf/nginx.conf
....
http {
server_tokens off;
.....
如果使用了php-fpm,编辑php-fpm配置文件,如fastcgi.conf或fcgi.conf(这个配置文件名也可以自定义的,根据具体文件名修改):
找到:
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
改为:
fastcgi_param SERVER_SOFTWARE nginx;
7 启动nginx
/usr/local/nginx/sbin/nginx
8 测试
[root-1.14.1]# curl -I http://127.0.0.1 nginx
HTTP/1.1 200 OK
Server: Please guess it!
Date: Wed, 07 Nov 2018 19:15:43 GMT
......
浏览器访问测试
说明:(1)要是只想隐藏版本号,而不想自定义服务器信息,不需要执行第3步.
(2)要是对nginx升级同时还要做字符串自定义,也是没有问题的,可以先修改C文件-->./configure --> make 即可
具体nginx升级请参考 https://www.cnblogs.com/Sunzz/p/9953443.html