修改Nginx源码,使header头信息伪装成其他页面服务器软件

nginx_header
Nginx 修改源码,header 头信息伪装成其他服务器软件

wget http://nginx.org/download/nginx-1.10.1.tar.gz
tar -zxvf nginx-1.10.1.tar.gz
cd nginx-1.10.1

1、修改编译nginx核心文件

vim ./src/core/nginx.h

/*
* Copyright (C) Igor Sysoev
* Copyright (C) Nginx, Inc.
*/

#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_

#define nginx_version 1006002 #这里最好不要乱改,某些扩展模块编译时,会检测版本,可能会出现错误,如lua_nginx_module
#define NGINX_VERSION "1.6.2" #这里随便改个版本号
#define NGINX_VER "squid/" NGINX_VERSION #这里改成我们想要的名字

#define NGINX_VAR "squid" #这里也一并修改
#define NGX_OLDPID_EXT ".oldbin"

2、修改nginx模块头信息文件

vim ./src/http/ngx_http_header_filter_module.c
找到下边一行:

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

修改为
static char ngx_http_server_string[] = "Server: squid" CRLF;

3、修改一下fastcgi
vim ./conf/fastcgi_params
找到下边一行:

fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
修改为

fastcgi_param SERVER_SOFTWARE squid/$nginx_version;

vim ./conf/fastcgi.conf
找到下边一行:

fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
修改为

fastcgi_param SERVER_SOFTWARE squid/$nginx_version;
修改探针中显示的web服务软件信息,在编译前,fastcgi编译后修改都可以。

4、修改错误页面信息

vim ./src/http/ngx_http_special_response.c
找到下边几行:

static u_char ngx_http_error_tail[] =
"


nginx
" CRLF
"" CRLF
"" CRLF

修改为
static u_char ngx_http_error_tail[] =
"


squid
" CRLF
"" CRLF
"" CRLF

make //不需要安装 make install
/etc/init.d/nginx stop
cd objs/
cp nginx /usr/local/nginx/sbin/ //覆盖原文件
/etc/init.d/nginx start

编译一下会发现,头信息已经隐藏了

curl -I 127.0.0.1:8080
HTTP/1.1 200 OK
Server: squid
Date: Tue, 05 Jul 2016 13:35:02 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding

当我们在配置文件中添加“server_tokens off; ”参数的时候版本号不会再显示,调用的是src/http/ngx_http_header_filter_module.c里的值,
不添加的时候,显示版本号调用的是src/core/nginx.h里的值,所以我们修改的时候尽量两个地方都修改!这样所有的地方,显示的信息都是我们修改后的信息。

评论已关闭。