HTTPレスポンスでNginxのバージョンを返却させない設定方法

投稿者 : OSCA

[PR] "出川哲朗の充電させてもらえませんか?"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

概要

 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を利用している場合は、次の記事の対策も合わせて実施しておくことをオススメします。

nginxのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca