共计 1863 个字符,预计需要花费 5 分钟才能阅读完成。
导读 | 本篇介绍如何将我们的 Nginx 的版本号进行隐藏,避免受到外界攻击。 |
我们使用 Nginx 进行代理时,所有的网络请求都是通过 Nginx 进行分发。而只要是软件那么都会有漏洞。
Nginx 也再所难免会有一些漏洞,而 Nginx 也在不断进行版本迭代,那么我们就需要在对外访问的时候,避免外界获取到我们的
Nginx 的版本。减少部分因为版本暴露而出现的攻击风险。(及时升级最新版本,安全性会更高。)
本篇介绍如何将我们的 Nginx 的版本号进行隐藏,避免受到外界攻击。
下面介绍不同环境下的查询方法
我们可以通过浏览器访问网页,按 F12 进入检查模式,通过 Network 面板可以看到当前页面的所有网络请求
随意找一个接口点击,通过弹出的请求详情中的 Headers 面板下的 Response Headers 可以看到下面的数据:其中 Server 后面就会显示你的 nginx 的版本号了:
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type,ADMIN-Authorization,API-Authorization
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Max-Age: 3600
Cache-Control: public,max-age=60,s-maxage=60
Content-Encoding: gzip
Content-Length: 3348
Content-Type: application/javascript
Date: Fri, 23 Sep 2022 01:55:37 GMT
Last-Modified: Tue, 08 Mar 2022 07:14:08 GMT
Server: nginx/1.23.0
Vary: Origin
上面的实例是 nginx 版本号被暴露的实例,如果隐藏版本号后就会显示成:Server: nginx/ 不会懈怠有版本号。
相较于 windows 的查询方法,Linux 查询可以直接通过 curl -I 命令进行查询了。
例如查本站的效果:
[root@iZuf63tu3fn1swasqa62h8Z nginx]# curl -I zinyan.com
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Fri, 23 Sep 2022 02:09:49 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://zinyan.com/
如果没有进行 nginx 版本隐藏就会在 nginx 后面加上版本号了。
隐藏方法比较简单:需要打开 nginx.conf 配置文件。(通常情况下该文件目录在 /etc/nginx/nginx.conf)
切换到 nginx.conf 文件所在目录下,使用 vim nginx.conf 打开文件。(按 I 进入到编辑模式)
然后在 server 级别下添加:server_tokens off; 如果原先有 server_tokens 就将值改为 on,如果没有就添加整个。
实现效果如下:
http{
...
server{
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
server_tokens off; #添加这一项就可以了
location / { }
error_page 404 /404.html;
location = /40x.html { }
error_page 500 502 503 504 /50x.html;
location = /50x.html {}}
}
添加完毕后,按 Esc 键退出编辑模式,然后输入:wq 保存退出即可。(如果不熟悉 vim 指令可以通过 https://zinyan.com/?p=23 了解)
最后执行:
nginx -s reload
重启 nginx 就可以了。就能实现版本的隐藏了。
默认情况下,nginx 是不会隐藏版本号的。需要我们自己主动配置。