見出し画像

HTTPレスポンスヘッダのセキュリティを高める

ブラウザの開発者ツールでレスポンスヘッダーを確認しました。

レスポンスヘッダーのキャプチャ

思いっきりOSとPHPのバージョンが表示されていました。
消し込む手順をお伝えします。

まず mod_headers モジュールが有効か確認をします。

httpd -M | grep headers

結果
headers_module (shared)  ← 表示されたらOK

httpd.conf を開きます。

sudo vi /etc/httpd/conf/httpd.conf

ファイルの末尾に以下の行を追記します。

ServerSignature Off
ServerTokens Prod
Header unset X-Powered-By
Header set X-Content-Type-Options nosniff
Header always set X-Frame-Options "SAMEORIGIN"
  • ServerSignature Off は、エラーページなどに表示されるApacheのバージョン情報を無効にします。

  • ServerTokens Prod は、Server ヘッダーを「Apache」に簡略化し、詳細なバージョン情報を表示しないようにします。

  • Header unset X-Powered-By は、PHPのバージョン情報が含まれる X-Powered-By ヘッダーを削除します。

  • Header set X-Content-Type-Options nosniff は、XSS攻撃の対策のため情報の消し込みとは関係ないですが設定をしておきます。

  • SAMEORIGIN も情報の消し込みとは関係ないですが設定をしておきます。サイト内でページをフレームに表示する必要がある場合に、同じオリジンからのフレーミングを許可しつつ、他のオリジンからの攻撃を防ぐことができます。

次に php.ini を編集します。

sudo vi /etc/php.ini

以下の変更をします。

expose_php = On
↓
expose_php = Off

httpd を再起動します。
Rocky Linux は php-fpm を利用していると思うので、php-fpm も再起動します。

sudo systemctl restart httpd
sudo systemctl restart php-fpm

改めてレスポンスヘッダーを確認するとバージョン情報は消えました。nosniff と SAMEORIGIN も確認できました。

レスポンスヘッダーのキャプチャ

Server: Apache の情報を丸ごと削除したい場合は httpd.conf に以下の行を追記すれば良いようです。私はそこまでしませんでした。(ほとんどのサイトが Apache でしょうから、まぁよいかなと)

Header unset Server

この記事が気に入ったらサポートをしてみませんか?