隐藏Nginx版本号的主要作用是增强服务器的安全性。当Nginx的版本号被隐藏时,攻击者就难以利用已知的漏洞来攻击特定版本的软件,因为他们无法确切知道服务器上运行的Nginx版本。这样可以降低攻击者对系统的了解,增加攻击的复杂性,从而保护服务器免受潜在攻击。
步骤
安装nginx
[root@admin ~]# wget -c https://nginx.org/download/nginx-1.24.0.tar.gz
--2024-05-01 14:38:29-- https://nginx.org/download/nginx-1.24.0.tar.gz
正在解析主机 nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:5c0:2601::6, ...
正在连接 nginx.org (nginx.org)|3.125.197.172|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1112471 (1.1M) [application/octet-stream]
正在保存至: “nginx-1.24.0.tar.gz”
nginx-1.24.0.tar.gz 100%[====================================================================>] 1.06M 12.2KB/s 用时 98s
2024-05-01 14:40:09 (11.1 KB/s) - 已保存 “nginx-1.24.0.tar.gz” [1112471/1112471])#
#安装依赖包
[root@admin ~]# yum -y install gcc make gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
AppStream 3.1 MB/s | 3.2 kB 00:00
BaseOS 2.7 MB/s | 2.7 kB 00:00
软件包 pcre-8.44-3.el9.3.x86_64 已安装。
软件包 zlib-1.2.11-39.el9.x86_64 已安装。
软件包 openssl-1:3.0.7-6.el9_2.x86_64 已安装。
依赖关系解决。
省略 。 。 。 。 。
[root@admin ~]# useradd -s /sbin/nologin nginx
[root@admin ~]# tar xf nginx-1.24.0.tar.gz
预编译安装
[root@admin nginx-1.24.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
省略。。。。
[root@admin nginx-1.24.0]# make && make install
省略。。。。
启动nginx
[root@admin nginx-1.24.0]# cd /usr/local/nginx/
[root@admin nginx]# cd sbin/
[root@admin sbin]# ./nginx
[root@admin sbin]# ss -anltp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=89050,fd=6),("nginx",pid=89049,fd=6))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1001,fd=3))
LISTEN 0 128 127.0.0.1:631 0.0.0.0:* users:(("cupsd",pid=999,fd=7))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1001,fd=4))
LISTEN 0 128 [::1]:631 [::]:* users:(("cupsd",pid=999,fd=6))
[root@admin sbin]#
[root@admin sbin]# systemctl stop firewalld.service
[root@admin sbin]# setenforce 0
隐藏版本号
没隐藏前
[root@admin ~]# curl -I 192.168.200.133
HTTP/1.1 200 OK
Server: nginx/1.24.0 //版本
Date: Wed, 01 May 2024 06:51:31 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Wed, 01 May 2024 06:47:00 GMT
Connection: keep-alive
ETag: "6631e564-267"
Accept-Ranges: bytes
[root@admin ~]#
编辑配置文件
[root@admin ~]# vim /usr/local/nginx/conf/nginx.conf
29
30 #keepalive_timeout 0;
31 keepalive_timeout 65;
32 server_tokens off; //添加此行
[root@admin ~]# /usr/local/nginx/sbin/nginx -s reload
[root@admin ~]# curl -I 192.168.200.133
HTTP/1.1 200 OK
Server: nginx //版本号已经隐藏
Date: Wed, 01 May 2024 06:55:12 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Wed, 01 May 2024 06:47:00 GMT
Connection: keep-alive
ETag: "6631e564-267"
Accept-Ranges: bytes
[root@admin ~]#
第二种隐藏版本方法
编译安装时禁用模块
[root@admin ~]# vim /usr/local/nginx/conf/nginx.conf
29
30 #keepalive_timeout 0;
31 keepalive_timeout 65;
32 server_tokens off; //删除此行
[root@admin ~]# /usr/local/nginx/sbin/nginx -s reload
[root@admin ~]# cd nginx-1.24.0/
[root@admin nginx-1.24.0]# make clean
rm -rf Makefile objs
[root@admin nginx-1.24.0]# cd src/core/
[root@admin core]# vim nginx.h
12 #define nginx_version 1024000
13 #define NGINX_VERSION "hhh" //修改此行随意写什么
14 #define NGINX_VER "hhh" NGINX_VERSION //修改此行随意写什么
重新预编译安装
[root@admin nginx-1.24.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-debug --with-http_realip_module --with-http_ssl_module --with-http_gunzip_module --with-http_gzip_static_module --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log
[root@admin nginx-1.24.0]# make && make install
[root@admin nginx-1.24.0]# /usr/local/nginx/sbin/nginx
[root@admin nginx-1.24.0]# curl -I 192.168.200.133
HTTP/1.1 200 OK
Server: hhhhhh //此处以看不到版本号了
Date: Wed, 01 May 2024 07:20:13 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Wed, 01 May 2024 06:47:00 GMT
Connection: keep-alive
ETag: "6631e564-267"
Accept-Ranges: bytes
[root@admin nginx-1.24.0]#