概要
Apache httpd のデフォルトでは、HTTPレスポンスで Apache httpd のバージョンや、利用しているプログラミング言語とバージョン、OpenSSLの情報などが返却されるようになっています。 しかし、サーバー側のソフトウェアの詳しい情報を返却していると、脆弱性を攻撃されるきっかけになりかねません。 本稿では、HTTPレスポンスで Apache httpd のバージョンなどを返却させなくする設定について解説します。
HTTPレスポンスヘッダ「Server」
どのようにしてHTTPレスポンスでサーバーで利用しているソフトウェアの情報が返却されているのかと言えば、HTTPレスポンスヘッダにあるServerヘッダが利用されています。 Serverヘッダは、HTTPリクエストを処理したサーバーソフトウェア名を返却するためのヘッダです。 詳しくは別稿「HTTPレスポンスヘッダ Server とは?」を参考にして頂きたいですが、Apache httpd のデフォルトだと、次のように Apache httpd のバージョンとOSまでを含む値を返却するようになっています。
HTTP/1.1 200 OK
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16
セキュリティの懸念
このようにサーバーソフトウェアの詳細な情報を返却していると、セキュリティ上の懸念が出てきます。 サーバーソフトウェアのバージョン番号をHTTPレスポンスで返却してしまうと、クラッカーの攻撃のきっかけになってしまうからです。 サーバーソフトウェアで脆弱性のあるバージョンを利用していることがわかれば、クラッカーはその脆弱性を突こうと考えます。 したがって、できる限りサーバーソフトウェアの情報はミニマムに返却するのが望ましいでしょう。
ServerTokens
Apache httpd において、この Server ヘッダの返却項目を設定するのが、設定項目「ServerTokens」です。 返却する Server の値をミニマムにするには、次のように Prod を指定します。
ServerTokens Prod
ServerTokens に指定できる設定値とその意味は次の通りです。
設定値 | 意味 | レスポンス返却例 |
---|---|---|
Prod | 製品名だけ | Server: Apache |
Major | メジャーバージョン番号まで | Server: Apache/2 |
Minor | マイナーバージョン番号まで | Server: Apache/2.0 |
Min | ミニマムバージョン番号まで | Server: Apache/2.0.41 |
OS | OS名まで | Server: Apache/2.0.41 (Unix) |
Full (もしくは未指定) | 全て | Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2 |
おわりに
本稿ではHTTPレスポンスで Apache httpd のバージョン番号などを返却しなくする方法について解説しました。 もしサーバーサイドのプログラムにPHPを利用している場合は、次の記事の対策も合わせて実施しておくことをオススメします。