Nginx 修改 header 头信息,伪装服务器

Linux系统 gongyj 2227℃ 已收录 0评论

有时候为了伪装自己的真实服务器环境。不像让对方知道自己的webserver真实环境,就不得不修改我们的webserer软件了!

今天看了一下baidu.com的webserver感觉像是nginx修改的。

nginx.jpg

[root@www ~]# curl -I www.baidu.com
HTTP/1.1 200 OK
Date: Sat, 12 Sep 2015 09:18:07 GMT
Content-Type: text/html; charset=utf-8
Connection: Keep-Alive
Vary: Accept-Encoding
Set-Cookie: BAIDUID=0E85F9FB034D3FE594F4429171BE04DB:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=0E85F9FB034D3FE594F4429171BE04DB; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1442384287; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=14347_17143_1445_14601_13245_17288_14430_12868_16937_17236_17001_17003_17072_15309_12233_13932_17051; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Cache-Control: private
Cxy_all: baidu+f70df4b9673a7c852d6cefc56b61e3ec
Expires: Sat, 16 Sep 2015 06:17:57 GMT
X-Powered-By: HPHP
Server: BWS/1.1    #注意看这里
X-UA-Compatible: IE=Edge,chrome=1
BDPAGETYPE: 1
BDQID: 0xa3b55c0000010cf6
BDUSERID: 0

看到Server是BWS/1.1,没有见过这种webserver,看到后会有什么感觉,你也许会想人家有坚强的开发后盾,可能是自己开发的。其实,这个头信息,我们自己也可以修改,通过修改nginx源代码,就可以很容通过修改就可以实现。

这样做还有一个好处,可以增强服务器的安全性。黑客攻击一个网站,往往需要了解服务器的架构,网站的架构等信息,了解了这些信息,就知道网站薄弱的地方在哪里了!为了不让对方知道自己的webserver真实环境,我们可以伪装隐藏自己的真实服务器环境.虽然安防不能做到100%,但至少也会让对方焦头烂额。

以nginx-1.6.2为例,解压后,进入源代码目录,修改如下:

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          "chopmoon/" NGINX_VERSION   #这里改成我们想要的名字

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


#endif /* _NGINX_H_INCLUDED_ */

改完这个文件后,用curl命令查看一下,其实已经可以看到header头信息发生了变化,但并不彻底,在其它的地方还可看到nginx信息,我们继续修改。

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: chopmoon" CRLF;

3、修改一下fastcgi

vim ./conf/fastcgi_params

找到下边一行:

fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

修改为

fastcgi_param  SERVER_SOFTWARE    chopmoon/$nginx_version;
vim ./conf/fastcgi.conf

找到下边一行:

fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

修改为

fastcgi_param  SERVER_SOFTWARE    chopmoon/$nginx_version;

修改探针中显示的web服务软件信息,在编译前,fastcgi编译后修改都可以。

4、修改错误页面信息

vim ./src/http/ngx_http_special_response.c

找到下边几行:

static u_char ngx_http_error_tail[] =
"<hr><center>nginx</center>" CRLF
"</body>" CRLF
"</html>" CRLF

修改为

static u_char ngx_http_error_tail[] =
"<hr><center>chopmoon</center>" CRLF
"</body>" CRLF
"</html>" CRLF

大功告成,编译一下试试吧,我们会发现,头信息已经隐藏了

[root@publish nginx-1.6.2]# curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: chopmoon/1.0.2
Date: Sat, 12 Sep 2015 09:34:36 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Sat, 12 Sep 2015 09:27:14 GMT
Connection: keep-alive
ETag: "55f919d2-264"
Accept-Ranges: bytes

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

以上修改方法,仅为娱乐,要想真正的优化和安全考虑,还是应该好好读读源代码,踏踏实实做好细节工作!

本站文章如未注明,均为原创丨本网站采用BY-NC-SA协议进行授权,转载请注明转自:http://blog.chopmoon.com/favorites/212.html
喜欢 (0)
发表我的评论
取消评论

表情 代码 贴图 加粗 链接 私信 删除线 签到

Hi,请填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
正在加载中……