快捷搜索:   服务器  PHP  安全  linux 安全  IIS

修改APACHE和NGINX的header伪装服务器

为了服务器安全。我们很有必要伪装自己的真实服务器环境.不想让别有用心的人知道自己的webserver真实环境,就不得不修改我们的webserer软件了,对发送的server header进行伪装。


用curl就能查到服务器返回的Response header有这么几条信息
C:/curl-7.18.0>curl.exe -I www.bnxb.com
或者到https://www.bnxb.com/tools/check-header.php输入域名查询

发现返回
HTTP/1.1 200 OK
Server: nginx/1.4.0
X-Powered-By:PHP/5.5.1
Date: Thu, 25 May 2017 06:29:29 GMT
Content-Type: text/html
Last-Modified: Wed, 24 May 2017 16:19:30 GMT
Connection: keep-alive
Vary: Accept-Encoding
ETag: W/"5925b292-125eb"
Content-Encoding: gzip


第二条Server显示了服务器使用的程序版本以及版本号
第三条X-Powered-By显示了脚本语言以及版本号
最后一条显示了通过gzip进行压缩

这里明显就存在安全问题:
那么第二、三条将服务器的版本信息暴露出来了,如果在发行版本上出现什么BUG,无异将自己服务器漏洞暴露出来了。

首先是NGINX的修改方法
一、Windows环境

修改nginx的server信息

1.进入nginx安装目录下,用文本编辑器编辑conf目录下的fastcgi.conf

  fastcgi_param  SERVER_SOFTWAREnginx/$nginx_version;

2.用文本编辑器编辑conf目录下的fastcgi_params

fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

3.#service nginx restart #重启nginx

隐藏nginx的server信息

1.进入nginx安装目录下,用文本编辑器编辑conf目录下的nginx.conf

#http{}里面加:

server_tokens off;


2.#service nginx restart #重启nginx

关闭 php X-Powered-By 信息
修改 php.ini 文件,设置

expose_php = Off
重启php服务

php-fpm restart

二、Linux环境下

1、先在nginx.conf 的 http {}  里头加入 server_tokens 的参数
server_tokens off;
例如:
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;     #关闭版本显示
    client_header_timeout       3m;
    client_body_timeout         3m;
    send_timeout                3m;
    # ...
}

重载nginx
#nginx reload


2、修改编译src/core/nginx.h
我们先看下更改前的header信息:

[root@Bnxb-Server /]# curl -I http://www.bnxb.com
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 02 Nov 2016 15:25:42 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Thu, 01 Nov 2016 18:47:51 GMT
Connection: keep-alive
ETag: "5092c3d7-264"
Accept-Ranges: bytes

修改后的src/core/nginx.h ,代码如下:

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

#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_

#define nginx_version  1003008
#define NGINX_VERSION  "1.3.8"
#define NGINX_VER  "BnxbOS/" NGINX_VERSION

#define NGINX_VAR  "BnxbOS"
#define NGX_OLDPID_EXT ".oldbin"

#endif /* _NGINX_H_INCLUDED_ */

编译Nginx,重新看看结果header信息还是没变,不用急,下面还有:

3、更改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: BnxbOS" CRLF;
static char ngx_http_server_full_string[] = "Server: BnxbOS/1.0" CRLF;

将上面红色修改为你想要显示的信息,重新编译后重启Nginx!


4、关闭 php X-Powered-By 信息
修改 php.ini 文件,设置

expose_php = Off重启php服务

#php-fpm restart

重新查看header信息:
[root@Bnxb-Server /]# curl -I http://www.bnxb.com
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论