共计 1037 个字符,预计需要花费 3 分钟才能阅读完成。
为了彻底的把 WEB 服务器 --nginx 完美的隐藏起来(隐藏版本号已经不能满足我的好奇心了),今天查看了下 nginx 的源码,发现还真有个地方可以修改的,所以,我决定修改下自定义的 WebServer,吓唬吓唬那些 Hacker。
1、配置为隐藏版本的前提下
大部分情况下,Hacker 小子的扫描工具是扫描我们 response 返回的 h eader 中的 server 信息. 我们可以采用编译源码的方法来改变返回的 Server, 笔者果子的版本是 nginx1.4.7, 我们修改 src/http/ngx_http_header_filter_module.c 中的 49 行:
static char ngx_http_server_string[] = "Server: nginx" CRLF;
把其中的 nginx 改为我们自己想要马甲,果子就改为了 GreatFireWall, 重新编译 nginx 后,随便打开一个目录链接,出现蛋疼的 403 页面,下边神气的 ……
还是 nginx, 没有传说中的 GreatFireWall.(到这一步的前提是你在 nginx.conf 的 http 部分配置了 server_tokens off; 选项。)
现在应该怎么办呢?我们在浏览器页面按下 F12,查看源码发现有一行代码:<center>nginx</center>,估计该变量在代码中写死了,于是拿出搜索神器 grep, 进入 nginx 源码目录,在终端敲下以下命令:
grep -rn "center" *
我们找到了文件:src/http/ngx_http_special_response.c,修改 ngx_http_error_tail 变量如下:
static u_char ngx_http_error_tail[] =
"<hr><center>GreatFireWall</center>" CRLF
"</body>" CRLF
"</html>" CRLF
;
重新编译,重启 nginx 后发现 :
2、配置为不隐藏版本号的前提下
如果你的版本号是开着的,你又想调戏下 Harker 小子. 比如 Server:DAWOA/1.9.0 (打我啊)
我们修改 src/core/nginx.h 定位到 13-14 行
#define NGINX_VERSION "1.4.7"
#define NGINX_VER "nginx/" NGINX_VERSION
Server 返回的就是常量 NGINX_VER, 我们把 NGINX_VERSION 大小定义为 1.9.0,nginx 改为 DAWOA 就能达到我们的目的了
正文完
扫码赞助

第一次访问,支持一下哈。