業務システムは、定期的な侵入テストの対象となり、外部Webサービスも提供されていることが多く、バージョン情報が漏洩するケースが多く、古いバージョンではセキュリティ上の脆弱性が生じる可能性があるため、基本的なセキュリティ強化が必要です。

Ningxをコンパイルしてインストールするための前提条件は、GCCコンパイル環境をインストールすることです。

1 コンパイル環境をインストールする

Terminal window
koevn@localhost:~$ sudo apt update
koevn@localhost:~$ sudo apt install gcc g++ make wget # コンパイル環境をインストールする
koevn@localhost:~$ sudo wget https://nginx.org/download/nginx-1.20.2.tar.gz
koevn@localhost:~$ tar -xvf nginx-1.20.2.tar.gz
koevn@localhost:~$ cd nginx-1.20.2

2 Nginxソースパッケージを変更する

2.1.0 ngx_http_header_filter_module.c ファイルを変更する

vim src/http/ngx_http_header_filter_module.c

49行目付近のファイルを変更します static u_char ngx_http_server_string[] = "Server: nginx" CRLF; 変更する static u_char ngx_http_server_string[] = "Server: " CRLF;

2.2.0 ngx_http_special_response.c ファイルを変更する

vim src/http/ngx_http_special_response.c

36行目付近のファイルを変更します "<hr><center>nginx</center>" CRLF 変更する "<hr><center></center>" CRLF

2.3.0 nginx.hファイルを変更する

vim src/core/nginx.h

ファイルの13行目と14行目を修正する #define NGINX_VERSION "1.28.0" #define NGINX_VER "nginx/" NGINX_VERSION 変更する #define NGINX_VERSION "" #define NGINX_VER "/" NGINX_VERSION

3 headers-more-nginx モジュールを追加する

これはサードパーティ製のモジュールで、Response HeadersServer フィールドを削除するために使用されます。上記の 2 番目の手順では、Nginx の情報は非表示になるだけで、Server フィールドの値は空のまま表示されます。それでも少し見苦しいので、フィールドを直接削除してください。

Terminal window
koevn@localhost:~$ sudo wget https://github.com/openresty/headers-more-nginx-module/archive/refs/tags/v0.38.tar.gz \
-O headers-more-nginx-module.tar.gz
koevn@localhost:~$ sudo tar -xvf headers-more-nginx-module.tar.gz

Nginx をコンパイルしてインストールするときに、--add-module=../headers-more-nginx-module パラメータを追加するだけです。

4 Nginx設定ファイルの編集

nginx.conf設定ファイルを編集する

Terminal window
http {
#------ その他の構成は省略 ------#
more_clear_headers Server; # この段落を追加するだけです
#------ その他の構成は省略 ------#
}

ホスト設定ファイルconf.d/site.confを編集します。

Terminal window
server {
#------ その他の構成は省略 ------#
proxy_hide_header X-Powered-By; # この段落を追加するだけです
#------ その他の構成は省略 ------#
}

5 テスト結果