如何修改Nginx版本名称伪装任意web server

  

以下是详细讲解如何修改Nginx版本名称伪装任意web server的完整攻略:

什么是Nginx版本名称伪装?

在HTTP响应头部中,Nginx默认会将其版本信息显示出来,例如:

Server: nginx/1.19.4

为了增加服务器的安全性,我们可以通过修改Nginx版本名称,来达到伪装任意web server的目的,使攻击者无法确定服务器环境,从而增加服务器的安全性。

如何修改Nginx版本名称?

修改Nginx版本名称可以通过两种方式,一是使用模块,二是在编译Nginx时进行。

使用模块

  1. 下载ngx_http_headers_module模块
wget https://nginx.org/download/ngx_http_headers_module-0.33.tar.gz
tar zxvf ngx_http_headers_module-0.33.tar.gz
  1. 在编译Nginx的时候启用ngx_http_headers_module模块
./configure --add-module=/path/to/ngx_http_headers_module-0.33
make 
make install
  1. 修改nginx.conf文件,在HTTP块中添加如下配置
http {
    server_tokens off;
    more_set_headers 'Server: MyWebServer/1.0';
    ...
}

server_tokens off;用于关闭Nginx默认的版本信息显示,more_set_headers 'Server: MyWebServer/1.0';用于添加伪装的版本信息。

在编译Nginx时进行

  1. 下载Nginx源代码
wget https://nginx.org/download/nginx-1.19.4.tar.gz
tar zxvf nginx-1.19.4.tar.gz
  1. 修改源代码

src/http/ngx_http_header_filter_module.c文件中,修改以下代码:

static char ngx_http_server_string[] = "Server: nginx" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

将以上代码中的“nginx”或“nginx/版本号”修改为你想要的字符串,保存修改。

  1. 编译Nginx
./configure
make
make install

示例说明

示例一:伪装为Apache

使用上面提到的方法,可以将Nginx伪装成Apache的服务器。修改nginx.conf文件,在HTTP块中添加如下配置

http {
    server_tokens off;
    more_set_headers 'Server: Apache/2.2.10 (Linux/SUSE)';
    ...
}

示例二:伪装为IIS

同样使用上面提到的方法,可以将Nginx伪装成IIS服务器。修改源代码src/http/ngx_http_header_filter_module.c文件中的

static char ngx_http_server_string[] = "Server: nginx" CRLF;

修改为:

static char ngx_http_server_string[] = "Server: Microsoft-IIS/7.5" CRLF;

编译安装后,在nginx.conf文件中添加如下配置

http {
    server_tokens off;
    ...
}

最后,重新加载Nginx配置即可。

希望这篇文章能够详细地讲解如何修改Nginx版本名称伪装为任意web server,并且示例丰富,有助于大家更好地理解。

相关文章