[Apache] バージョン情報を出力しない

  • このエントリーをはてなブックマークに追加
  • LINEで送る

本番用のWebサーバでは利用しているソフトウェアのバージョン情報を表示しません。
例えば何らかの事情で最新版を利用していないことがわかると簡単に脆弱性を突かれてしまいます。また直接的に攻撃をされなくともクラックのきっかけになりますので不要な情報を第三者に公開すべてきではないというのがセオリーです。

そこで今回はApacheとPHPのバージョン情報を出力しない設定を施したいと思います。

- Sponsored Link -

Apache

ServerTokens

HTTPヘッダに出力される情報を抑制します。

ServerTokens Prod

デフォルトだとApacheのバージョンやサーバのOS、PHPを入れている場合はその情報も出力されます。

ServerTokensをProdにするとApacheであることはわかる物の、それ以外の情報が出力されなくなります。

指定出力内容
ProdApache
MajorApache/2
MinorApache/2.0
MinApache/2.0.41
OSApache/2.0.41 (Unix)
FullApache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2

デフォルトはFullです。

ServerSignature

NotFoundなどApacheが出力するページのフッター部分に情報が出力されるのを防ぎます。
2.4ではデフォルトでOffですので通常は設定する必要はありません。

ServerSignature Off

ServerSignatureをOnにすると以下のようにApacheのバージョンはPHPを入れている場合はその情報も出力されます。

Offにすると表示されなくなります。

PHP

Header unset

PHPのバージョン情報も消しておきます。

Header unset X-Powered-By

デフォルトでは以下のようにX-Powered-ByヘッダにPHPのバージョンが出力されています。

Header unsetすることによりレスポンスヘッダから削除することができます。

実行にはmod_headersモジュールをロードする必要があります。

$ grep 'mod_headers' httpd.conf
LoadModule headers_module libexec/apache2/mod_headers.so

php.ini

Apache側だけだと何かの拍子に(設定ミスなどで)出力されてしまう懸念もあります。そこでPHP側の設定でもOFFにしておきます。php.iniexpose_phpの値をOffに書き換えます。

expose_php = Off

Apache側の設定(Header unset)をコメントアウトしてもHTTPヘッダにPHPのバージョンが一切表示されなくなるのが確認できます。php.iniの編集後はApacheの再起動をお忘れなく。

参考ページ

- Sponsored Link -

ご質問やリクエストなどお気軽に。メールアドレスの入力は任意です。書き込みが反映されるまで時間がかかります。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください