業務システムは、定期的な侵入テストの対象となり、外部Webサービスも提供されていることが多く、バージョン情報が漏洩するケースが多く、古いバージョンではセキュリティ上の脆弱性が生じる可能性があるため、基本的なセキュリティ強化が必要です。
Ningxをコンパイルしてインストールするための前提条件は、GCCコンパイル環境をインストールすることです。
1 コンパイル環境をインストールする
koevn@localhost:~$ sudo apt updatekoevn@localhost:~$ sudo apt install gcc g++ make wget # コンパイル環境をインストールするkoevn@localhost:~$ sudo wget https://nginx.org/download/nginx-1.20.2.tar.gzkoevn@localhost:~$ tar -xvf nginx-1.20.2.tar.gzkoevn@localhost:~$ cd nginx-1.20.22 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 Headers の Server フィールドを削除するために使用されます。上記の 2 番目の手順では、Nginx の情報は非表示になるだけで、Server フィールドの値は空のまま表示されます。それでも少し見苦しいので、フィールドを直接削除してください。
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.gzkoevn@localhost:~$ sudo tar -xvf headers-more-nginx-module.tar.gzNginx をコンパイルしてインストールするときに、--add-module=../headers-more-nginx-module パラメータを追加するだけです。
4 Nginx設定ファイルの編集
nginx.conf設定ファイルを編集する
http {
#------ その他の構成は省略 ------#
more_clear_headers Server; # この段落を追加するだけです
#------ その他の構成は省略 ------#
}ホスト設定ファイルconf.d/site.confを編集します。
server {
#------ その他の構成は省略 ------#
proxy_hide_header X-Powered-By; # この段落を追加するだけです
#------ その他の構成は省略 ------#
}5 テスト結果
