本番用のWebサーバでは利用しているソフトウェアのバージョン情報を表示しません。 例えば何らかの事情で最新版を利用していないことがわかると簡単に脆弱性を突かれてしまいます。また直接的に攻撃をされなくともクラックのきっかけになりますので不要な情報を第三者に公開すべてきではないというのがセオリーです。
そこで今回はApacheとPHPのバージョン情報を出力しない設定を施したいと思います。
Apache
ServerTokens
HTTPヘッダに出力される情報を抑制します。
ServerTokens Prod
デフォルトだとApacheのバージョンやサーバのOS、PHPを入れている場合はその情報も出力されます。

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

| 指定 | 出力内容 |
|---|---|
| Prod | Apache |
| Major | Apache/2 |
| Minor | Apache/2.0 |
| Min | Apache/2.0.41 |
| OS | Apache/2.0.41 (Unix) |
| Full | Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2 |
デフォルトはFullです。
ServerSignature
NotFoundなどApacheが出力するページのフッター部分に情報が出力されるのを防ぎます。 2.4ではデフォルトでOffですので通常は設定する必要はありません。
ServerSignature Off
ServerSignatureをOnにすると以下のようにApacheのバージョンはPHPを入れている場合はその情報も出力されます。

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.iniのexpose_phpの値をOffに書き換えます。
expose_php = Off
Apache側の設定(Header unset)をコメントアウトしてもHTTPヘッダにPHPのバージョンが一切表示されなくなるのが確認できます。php.iniの編集後はApacheの再起動をお忘れなく。

![サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus) サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)](https://m.media-amazon.com/images/I/51qAG+e+baL._SL500_.jpg)
![ゼロからわかる Linux Webサーバー超入門[Apache HTTP Server対応版] かんたんIT基礎講座 ゼロからわかる Linux Webサーバー超入門[Apache HTTP Server対応版] かんたんIT基礎講座](https://m.media-amazon.com/images/I/51YV9RIoHjL._SL500_.jpg)