nginxサーバタイプを変更して単純な偽装を実現(nginxタイプやバージョンなどを隠す)

2892 ワード

サーバタイプを変更図のある人に利用されないように、いくつかの調整を行います.例えば、現在使用されている低バージョンがちょうど脆弱性を爆発させ、発見されたら危険ではないだろうか.
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を偽装
Nginx(「engine x」)は、Webサーバや他のタイプのプログラムとしての逆プロキシサーバとして、高性能で軽量な利点があります.メモリの占有量が少なく、コンカレント能力が強いのが特徴で、実際にはNginxのコンカレント能力は同じタイプのウェブサーバでよく表現されています.これにより、Nginxは、現在、高配合の独立したサーバに格納されている大規模なポータルでも、ミニ64 MメモリVPSに格納されている小型の個人ブログでも、広く使用されている.
国内では淘宝、新浪、網易、テンセントなどが使われている.このうち淘宝は原作者のBSD-likeプロトコルに基づいて、ソースコードに基づいてTengineを開発したもので、これはしばらく表にない.
今日では、Nginxの内部デフォルト名を変更する方法について説明します.これは安全や装いに非常に実用的です.
HTTP Response Headerのサーバ、エラーページのfooter、FPM-FastCGIなど、一般的なNginxにどのような内部名が表示されているかはよく知られています.
一般的にはnginx.h、ngx_http_header_filter_module.c、もう一つngx_http_special_response.c.
ヒント:次の変更は、インストールNginxをコンパイルする前に行い、変更してからコンパイルする必要があります.
今、Webサーバーは広く使われています.それに対する攻撃も増えています.Nginxというものはデビュー時間も長くありません.国内の多くのポータルサイトで使われていますが、メモリVPSユーザーもそれを爱しています.しかし、いつか驚くべきBUGが爆発したくありません.前回80 secで発表されたNginx関連PHP FPMの脆弱性は警告です.もし私のNginxサーバーを偽装したら、攻撃者は私がどんなWebサーバを使っているのか分からないので、手がつけられません.
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[] =
"
nginx
" CRLF
"