vlambda博客
学习文章列表

隐藏Nginx版本号的安全性与方法

代码来源:cnblogs

原文链接:https://www.cnblogs.com/Sunzz/archive/2018/11/15/9962891.html

本文版权归原作者所有,如有侵权请立即与我联系,我将及时处理。


安全性漏洞:WEB服务器HTTP头文件信息披露

送检设备在安全新测试项中贝检测策出以上漏洞,以下是修复过程。


Nginx默认是显示版本号的,如:

[root@localhost ~]# curl -I www.nginx.orgHTTP/1.1 301 Moved PermanentlyServer: nginx/1.19.10Date: Wed, 15 Sep 2021 06:17:16 GMTContent-Type: text/htmlContent-Length: 170Connection: keep-aliveKeep-Alive: timeout=15Location: 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.gzcd nginx-1.14.1

3 修改C文件

vim src/http/ngx_http_header_filter_module.c  #修改49行static u_char ngx_http_server_string[] = "Server: Please guess it!" CRLF;  #Server后写上你自定义的服务器信息

隐藏Nginx版本号的安全性与方法

vim src/http/ngx_http_special_response.c  #修改36行"<hr><center>Please guess it!</center>" CRLF #再写一遍刚才的字符串

隐藏Nginx版本号的安全性与方法

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@node1 nginx-1.14.1]# curl -I http://127.0.0.1 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