概要
Nginx のデフォルトでは、HTTPレスポンスで Nginx のバージョン情報などが返却されるようになっています。 しかし、サーバー側ソフトウェアの詳しい情報を返却していると、脆弱性を攻撃されるきっかけになりかねません。 本稿では、HTTPレスポンスで Nginx のバージョンなどを返却させなくする設定について解説します。
HTTPレスポンスヘッダ「Server」
どのようにしてHTTPレスポンスでサーバーで利用しているソフトウェアの情報が返却されているのかと言えば、HTTPレスポンスヘッダにあるServerヘッダが利用されています。 Serverヘッダは、HTTPリクエストを処理したサーバーソフトウェア名を返却するためのヘッダです。 詳しくは別稿「HTTPレスポンスヘッダ Server とは?」を参考にして頂きたいですが、Nginx のデフォルトだと、次のように Nginx のバージョンとOSまでを含む値を返却するようになっています。
HTTP/1.1 200 OK
Server: nginx/0.8.53
セキュリティの懸念
このようにサーバーソフトウェアの詳細な情報を返却していると、セキュリティ上の懸念が出てきます。 サーバーソフトウェアのバージョン番号をHTTPレスポンスで返却してしまうと、クラッカーの攻撃のきっかけになってしまうからです。 サーバーソフトウェアで脆弱性のあるバージョンを利用していることがわかれば、クラッカーはその脆弱性を突こうと考えます。 したがって、できる限りサーバーソフトウェアの情報はミニマムに返却するのが望ましいでしょう。
server_tokens
Nginx において、この Server ヘッダの返却項目を設定するのが、設定項目「server_tokens」です。 この server_tokens の値を off に設定することで、Nginx のバージョン番号を付けないようになります。
http {
server_tokens off;
...
}
上記の設定により、Server ヘッダが返却するレスポンスが次のようになります。
HTTP/1.1 200 OK
Server: nginx
おわりに
本稿ではHTTPレスポンスで Nginx のバージョン番号などを返却しなくする方法について解説しました。 もしサーバーサイドのプログラムにPHPを利用している場合は、次の記事の対策も合わせて実施しておくことをオススメします。