漏洞扫描,不能显示nginx及版本号,如下:

解决方法1:隐藏版本号

修改nginx.conf 

http{
	...
	server_tokens off;
}

后面的版本号没了

解决方法2:彻底彻底去掉 server

安装一个插件

/usr/local/nginx/sbin/nginx -V

官方的安装教程

写到这里,先上错误的截图

去Issues看看

https://github.com/openresty/headers-more-nginx-module/issues/138

since nginx 1.23.0, all headers are now returned as a linked list, as opposed to an array.
v0.34 seems to deal with the changes nicely!

 从nginx1.23.0开始,所有的头都以链表的形式返回,而不是数组。v0.34 解决了这个问题。

因为我的nginx是1.23.1,所以我用v0.33不行,要用v0.34这个版本。

再看看正确的处理方法

mkdir -p /opt/tools
cd /opt/tools
wget https://github.com/openresty/headers-more-nginx-module/archive/v0.34.tar.gz
tar -xzvf v0.34.tar.gz

cd /opt/nginx-1.23.1/
./configure --prefix=/usr/local/nginx --add-module=/opt/tools/headers-more-nginx-module-0.34
make
make install

修改nginx.conf

http{
	...
	more_clear_headers 'Server';
}

重启nginx: systemctl restart nginx
在浏览器里面就看不到 server: nginx/1.23.1

/usr/local/nginx/sbin/nginx -V

二、检测到隐藏目录 

经过测试,浏览器显示403

403 Forbidden 响应暴露了存在此目录,即使不允许对其进行访问。

解决办法:在nginx的html目录新建404.html

<html>
<head><title>404</title></head>
<meta charset="utf-8">
<body bgcolor="white">
<center><h1>404 - Not Found</h1></center>
</body>
</html>

 修改nginx.conf

server {
     ...
 
    error_page 403 =404 /404.html;
}

再测试

三、Nginx 禁用方法

GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS
在 server { 下一行添加一下代码即可关闭除 GET|POST|HEAD 外的请求方式。
 

if ($request_method !~* GET|POST|HEAD) {
    return 403;
}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐