修复HTTP头信息泄露Nginx版本信息问题
一、问题描述
最近项目系统处于安全防护阶段;相关维护人员会通过工具扫描指定项目系统所使用的软件,判断其是否存在某些不安全的漏洞。借此机会修复漏洞以至于使系统变的更加的安全,防止对系统用户以及系统方造成相关的损失。
一般来说,软件的漏洞都与版本信息有关,隐藏版本号或者修改web服务器所用的软件名称是为了防止恶意用户利用软件漏洞进行攻击。
二、修复步骤
1.修复方法分为两种:
(1)直接隐藏掉nginx的版本信息
(2)修改web服务器所使用的nginx的名称和版本信息
2.直接隐藏掉nginx的版本信息
[root@VM_0_12_centos conf]# vim nginx.conf
#添加内容
server_tokens off;
浏览器控制台抓包可以看到:
**Response Headers**
Accept-Ranges: bytes
Content-Length: 739
Content-Type: text/html
Date: Tue, 30 Jun 2020 07:53:36 GMT
ETag: "5e9bc167-2e3"
Last-Modified: Sun, 19 Apr 2020 03:11:35 GMT
Server: nginx
3.修改web服务器所使用的nginx的名称和版本信息
(1)一共需要修改三个文件。包括:
·src/core目录下的nginx.h文件
·src/http目录下的ngx_http_header_filter_module.c文件
·src/http目录下的ngx_http_special_response.c文件
(2)修改内容如下:
[root@VM_0_12_centos core]# vim nginx.h
#define NGINX_VERSION "0.0.1"
#define NGINX_VER "ORCY" NGINX_VERSION
[root@VM_0_12_centos http]# vim ngx_http_header_filter_module.c
static u_char ngx_http_server_string[] = "Server: ORCY" CRLF;
[root@VM_0_12_centos http]# vim ngx_http_special_response.c
static u_char ngx_http_error_tail[] =
"<hr><center>ORCY</center>" CRLF
"</body>" CRLF
"</html>" CRLF
(3) 重新编译nginx并启动
[root@VM_0_12_centos nginx]# ./configure --prefix=/usr/local/nginx
[root@VM_0_12_centos nginx]# make && make install
[root@VM_0_12_centos sbin]# kill -9 PID
[root@VM_0_12_centos sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf #重新加载配置文件并启动
-----
这里可以不覆盖安装,编译后替换nginx文件即可:
参考:https://www.orcy.net.cn/1393.html
-----
(4)浏览器控制台抓包可以看到:
**Response Headers**
Accept-Ranges: bytes
Content-Length: 739
Content-Type: text/html
Date: Tue, 30 Jun 2020 07:53:36 GMT
ETag: "5e9bc167-2e3"
Last-Modified: Sun, 19 Apr 2020 03:11:35 GMT
Server: ORCY:0.0.1
三、总结
1.建议大家选择第二种方式,虽然修改的文件以及操作可能多了点,但是第二种相对于第一种更安全一些。
2.本人选择第二种:因为二者存在的差异在于按照第一种方式修改完成之后,在一些静态文件(html/css/js/png/…)的请求头中还会存在nginx相应的版本信息。
本文链接:https://www.orcy.net.cn/3955.html,转载请附上原文出处链接
发表评论