WebサーバーにNginxを使っていて、セキュリティ上、Nginxを使っていることが、ユーザーに分からないようにしたい場合、ngx_http_header_filter_module.c 内のServer名を変更する。
1. rpmビルドに必要なパッケージのインストール
# yum -y install rpmdevtools redhat-lsb-core zlib-devel pcre-devel gcc
2. rpmビルド用ユーザーの作成
# useradd rpmbuilder
3. ユーザーを作成したら、そのユーザーに切り替えて「rpmdev-setuptree」コマンドを実行し、ディレクトリ作成など、ビルドを実行するための初期設定を行います。
# su – rpmbuilder
$ rpmdev-setuptree
4. ソースをダウンロード。
2019/8/1時点で最もベターなバージョン(nginx-1.15.12)をダウンロードする。
nginxのビルドにはOpenSSLのソースコードが必要なので、2019/8/1時点で最もベターなバージョン(openssl-1.1.1c)をダウンロードする。
Nginx
$ curl -L -O https://nginx.org/packages/mainline/centos/7/SRPMS/nginx-1.15.12-1.el7.ngx.src.rpm
$ rpm -ivh nginx-1.15.12-1.el7.ngx.src.rpm
OpenSSL
$ curl -L -O https://www.openssl.org/source/openssl-1.1.1c.tar.gz
$ tar xvfz openssl-1.1.1c.tar.gz
5. ソースコード修正。
5-1. ソースコードを解凍。
$ cd /home/rpmbuilder/rpmbuild/SOURCES/
$ tar -zxvf nginx-1.15.12.tar.gz
5-2. 修正。
$ vi nginx-1.15.12/src/http/ngx_http_header_filter_module.c
修正前
static u_char ngx_http_server_string[] = “Server: nginx” CRLF;
static u_char ngx_http_server_full_string[] = “Server: ” NGINX_VER CRLF;
static u_char ngx_http_server_build_string[] = “Server: ” NGINX_VER_BUILD CRLF;
修正後
static u_char ngx_http_server_string[] = “Server: w” CRLF;
static u_char ngx_http_server_full_string[] = “Server: w” CRLF;
static u_char ngx_http_server_build_string[] = “Server: w” CRLF;
5-3. 修正したソースを圧縮し直す。
$ rm nginx-1.15.12.tar.gz
$ tar -zcvf nginx-1.15.12.tar.gz nginx-1.15.12
5-4. 不要なworkディレクトリを削除。
$ rm -R nginx-1.15.12
6. specファイルの修正
$ vi /home/rpmbuilder/rpmbuild/SPECS/nginx.spec
6-1. 修正箇所1
%if 0%{?rhel} == 7
%define _group System Environment/Daemons
%define epoch 1
Epoch: %{epoch}
Requires(pre): shadow-utils
#Requires: openssl >= 1.0.2 <-コメントアウト
#BuildRequires: openssl-devel >= 1.0.2 <-コメントアウト
%define dist .el7
%endif
6-2. 修正箇所2
修正前
%define BASE_CONFIGURE_ARGS ・・・・ –with-stream_ssl_preread_module”)
修正後
%define BASE_CONFIGURE_ARGS ・・・・ –with-stream_ssl_preread_module –with-openssl=/home/rpmbuilder/openssl-1.1.1c”)
7. rpmパッケージをビルド。 ※5分くらいかかる。
$ rpmbuild -bb /home/rpmbuilder/rpmbuild/SPECS/nginx.spec
生成されたrpmパッケージ -> /home/rpmbuilder/rpmbuild/RPMS/x86_64/nginx-1.15.12-1.el7.ngx.x86_64.rpm
8. ビルドしたrpmパッケージをインストール
$ su –
# yum install /home/rpmbuilder/rpmbuild/RPMS/x86_64/nginx-1.15.12-1.el7.ngx.x86_64.rpm
9. 組み込みモジュールの確認
# nginx -V
10. 起動設定
Nginx のインストールが完了したら、コンピュータ起動時に自動的に Nginx が起動するように設定。
# systemctl enable nginx
11. 起動
# systemctl start nginx
12 サービスの状態確認
# sudo systemctl status nginx
# sudo systemctl is-enabled nginx
13. 内部接続確認
# curl http://localhost
14. ブラウザから外部接続確認
http://192.168.11.31/
コメント