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

  • このエントリーをはてなブックマークに追加
  • LINEで送る
この記事は 2019年4月23日 に書かれたものです

本番用の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 always 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

 設定でalwaysが抜けていたので追記しました

php.ini

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

expose_php = Off

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

参考ページ

コメント

コメント欄は休止中です。お問い合わせはこちらからどうぞ。ご質問はTwitterにリプを投げてください。

このブログを応援する

お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。

PayPal(ペイパル)
PayPalで300円支払う
※金額は任意で変更できます。
※100円でも泣いて喜びますw
※住所の入力欄が現れた場合は「no needed」を選択ください
これまでのご協力者さま
- Sponsored Link -