当前位置: 首页 > 编程笔记 >

修改nginx服务器类型实现简单伪装(隐藏nginx类型与版本等)

林冥夜
2023-03-14
本文向大家介绍修改nginx服务器类型实现简单伪装(隐藏nginx类型与版本等),包括了修改nginx服务器类型实现简单伪装(隐藏nginx类型与版本等)的使用技巧和注意事项,需要的朋友参考一下

修改服务器类型为了防止被有所图的人利用,才做的一些调整。比如当前使用的一个低版本正好被爆出漏洞,如果被发现,那岂不是危险。

1、隐藏版本号,修改nginx.conf,在http区块加入


server_tokens off; 

然后重新加载nginx,可以看到server头部也是不带版本号,也可以通过404查看

2、返回自定义服务器类型
通过curl -i http://127.0.0.1 查看当前的类型或者一些站长工具都可以看到,可以修改一为gws或者GFW来威慑一些利用工具扫描的家伙

具体方法:


[root@REDIS_CLUSTER nginx-1.8.1]# vim 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;

...

修改后

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

static char ngx_http_server_full_string[] = "Server: gws" CRLF;

然后重新编译后,查看效果(Server: gws)


[root@REDIS_CLUSTER nginx-1.8.1]# /usr/local/nginx/sbin/nginx -s stop

[root@REDIS_CLUSTER nginx-1.8.1]# /usr/local/nginx/sbin/nginx

[root@REDIS_CLUSTER nginx-1.8.1]# curl -i http://127.0.0.1

HTTP/1.1 404 Not Found

Server: gws

Date: Tue, 02 Feb 2016 04:02:40 GMT

Content-Type: text/html

Content-Length: 168

Connection: keep-alive

下面是补充的内容:

修改NGINX版本名称伪装任意WEB SERVER

无论是作为Web服务器或其他类型程序的反向代理服务器,Nginx("engine x")都有着高性能且轻量级的优势。其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好。这也使得Nginx在如今不管是存放在高配独立服务器上的大型的门户,还是存放在迷你64M内存VPS上的小型的个人博客,Nginx都在被广泛使用着。

国内淘宝、新浪、网易、腾讯等都在使用。其中淘宝正是基于原作者的BSD-like协议,在其源代码基础上开发了Tengine,这暂且不表。

今天我们来说说,如何修改Nginx其内部默认名称。这对安全或者装逼都是非常实用的。

我们都知道一般Nginx有哪些内部名称展示,如有通过HTTP Response
Header中的Server、错误页的footer、FPM-FastCGI等。

一般来说修改3个位置,一个是nginx.h、另一个是ngx_http_header_filter_module.c、还有一个ngx_http_special_response.c。

提示:以下修改需要在编译安装Nginx之前进行,修改之后再编译

现在Web Server使用广泛,针对它的攻击也越来越多,Nginx这玩意出道时间也并不长,虽然国内很多门户网站都用它,小内存VPS用户也爱它,但是我可不想哪天它爆出了个惊天BUG,上次80sec公布的Nginx相关PHP FPM漏洞就是警示哦,倘若伪装了我的Nginx服务器,攻击者就不知道我使用的是何种Web Server,也就无从下手了。


修改src/core/nginx.h(Nginx内部名称的)


#define NGINX_VERSION      "1.8.0"

#define NGINX_VER          "NGINX/" NGINX_VERSION

NGINX_VERSION是版本号,NGINX_VER是名称

修改src/http/ngx_http_header_filter_module.c(HTTP ResponseHeader)


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


修改src/http/ngx_http_special_response.c(修改错误页的底部Footer)

static u_char ngx_http_error_tail[] =

"<hr><center>nginx</center>" CRLF

"</body>" CRLF

"</html>" CRLF

;

为什么不修改安装后的Nginx Config下的fastcgi.conf呢?
因为现在外部已经是无法了解我们的服务器名称,已经达到我们的目的了。
而且我们常用的一些程序,可能会对你的前端(反向代理服务器)做判断,毕竟Nginx不同于Apache,无法动态规则。

特别是Wordpress的缓存插件,大多会通过判断你是否Nginx,如果是的话,提醒你添加一些规则语句。

这时fastcgi.conf就起作用的,其中的
fastcgi_param SERVER_SOFTWARE
nginx/$nginx_version;可以使得PHP与Nginx内部之间的互相了解。

所以我的建议,还是不修改fastcgi.conf,当然你非要改,也可以的。

 类似资料:
  • 本文向大家介绍Nginx隐藏服务器端各类信息的方法,包括了Nginx隐藏服务器端各类信息的方法的使用技巧和注意事项,需要的朋友参考一下 有时我们不希望有人可以通过一些工具来返回我们服务器的信息,下面我来介绍在nginx中隐藏nginx响应头,修改nginx返回头信息,隐藏php版本号,隐藏服务器信息,同学可参考。 首先隐藏nginx版本信息,只需编辑 nginx.conf 文件 添加一行 响应头隐

  • 本文向大家介绍如何修改Nginx版本名称伪装任意web server,包括了如何修改Nginx版本名称伪装任意web server的使用技巧和注意事项,需要的朋友参考一下 如何修改nginx默认的名称,可以稍微的伪装一下,也可以装x 一般来说修改3个位置,一个是nginx.h、另一个是ngx_http_header_filter_module.c、还有一个ngx_http_special_resp

  • 问题内容: 我正在定义一个类: 编译器抱怨被隐藏。我猜第二次出现在定义中是第一次隐藏在范围内,好像可以将变量分配给两种不同的类型一样。如何正确做? 编辑: 这是一个内部阶级。完整的代码可以是: 现在的问题是,如果我重新提名内部人,我不确定那是和实际上是相同的类型。 问题答案: 不要将内部类参数化: 作为声明中定义的内部(非静态嵌套)类,仍将具有in的含义,因为每个类都对其外部实例具有隐式引用。

  • 问题内容: 这个错误是什么意思? 嵌套类型HelloWorld无法隐藏封闭类型 其中HelloWorld是Java文件名。这是您需要的代码: 问题答案: 您已经两次定义了HelloWorld类。删除一个级别,就可以了。

  • 本文向大家介绍jQuery实现根据类型自动显示和隐藏表单,包括了jQuery实现根据类型自动显示和隐藏表单的使用技巧和注意事项,需要的朋友参考一下 jquery实现表单根据单选按钮进行字段的动画切换,昨天写的,感觉比起初学时写的js/jquery有了很大进步。。在最大化扩展性的情况下经可能使代码精简。 html js 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 本文向大家介绍基于Nginx的衍生版服务器Tengine简介,包括了基于Nginx的衍生版服务器Tengine简介的使用技巧和注意事项,需要的朋友参考一下 Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、