修复HTTP头信息泄露Nginx版本信息漏洞

末蓝、 2023-02-22 03:57 78阅读 0赞

一、问题描述

  1. 最近项目系统处于安全防护阶段;相关维护人员会通过工具扫描指定项目系统所使用的软件,判断其是否存在某些不安全的漏洞。借此机会修复漏洞以至于使系统变的更加的安全,防止对系统用户以及系统方造成相关的损失。
  2. 一般来说,软件的漏洞都与版本信息有关,隐藏版本号或者修改web服务器所用的软件名称是为了防止恶意用户利用软件漏洞进行攻击。
  3. 今天,我们就来说一下头信息泄漏nginx版本信息以及如何进行修复。

二、修复步骤

  1. 修复方法分为两种:
    (1)直接隐藏掉nginx的版本信息
    (2)修改web服务器所使用的nginx的名称和版本信息
  2. 直接隐藏掉nginx的版本信息

    [root@VM_0_12_centos conf]# vim nginx.conf

    添加内容

    server_tokens off;

    浏览器控制台抓包可以看到:
    Response Headers

    1. Accept-Ranges: bytes
    2. Content-Length: 739
    3. Content-Type: text/html
    4. Date: Tue, 30 Jun 2020 07:53:36 GMT
    5. ETag: "5e9bc167-2e3"
    6. Last-Modified: Sun, 19 Apr 2020 03:11:35 GMT
    7. Server: nginx
  3. 修改web服务器所使用的nginx的名称和版本信息

    1. 1)一共需要修改三个文件。包括:
    2. ·src/core目录下的nginx.h文件
    3. ·src/http目录下的ngx_http_header_filter_module.c文件
    4. ·src/http目录下的ngx_http_special_response.c文件
    5. 2)修改内容如下:
    6. [root@VM_0_12_centos core]# vim nginx.h
    7. #define NGINX_VERSION ""
    8. #define NGINX_VER "CSDN" NGINX_VERSION
    9. [root@VM_0_12_centos http]# vim ngx_http_header_filter_module.c
    10. static u_char ngx_http_server_string[] = "Server: CSDN" CRLF;
    11. [root@VM_0_12_centos http]# vim ngx_http_special_response.c
    12. static u_char ngx_http_error_tail[] =
    13. "<hr><center>CSDN</center>" CRLF
    14. "</body>" CRLF
    15. "</html>" CRLF
    16. (3) 重新编译nginx并启动
    17. [root@VM_0_12_centos nginx]# ./configure --prefix=/usr/local/nginx
    18. [root@VM_0_12_centos nginx]# make && make install
    19. [root@VM_0_12_centos sbin]# kill -9 PID
    20. [root@VM_0_12_centos sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf #重新加载配置文件并启动
    21. 4)浏览器控制台抓包可以看到:
    22. **Response Headers**
    23. Accept-Ranges: bytes
    24. Content-Length: 739
    25. Content-Type: text/html
    26. Date: Tue, 30 Jun 2020 07:53:36 GMT
    27. ETag: "5e9bc167-2e3"
    28. Last-Modified: Sun, 19 Apr 2020 03:11:35 GMT
    29. Server: CSDN

三、总结

  1. 建议大家选择第二种方式,虽然修改的文件以及操作可能多了点,但是第二种相对于第一种更安全一些。
  2. 本人选择第二种:因为二者存在的差异在于按照第一种方式修改完成之后,在一些静态文件(html/css/js/png/…)的请求头中还会存在nginx相应的版本信息;大家可以都尝试一下,然后找找问题。大家有啥问题,都可以给我留言~

发表评论

表情:
评论列表 (有 0 条评论,78人围观)

还没有评论,来说两句吧...

相关阅读