【脆弱性対策】ApacheでHTTPセキュリティヘッダを設定する方法 OWASP ZAP検出への対応例
目次
こんにちは。飯塚です。
システム開発の脆弱性検証として、OWASP ZAP を使うことがあります。検知された脆弱性に対応する機会があったため、対応の一例としてまとめました。
対応方法はシステムの要件によっても変わりますし、絶対に脆弱性を防げることを保証するものではない点はご了承ください。
OS、Apache、OWASP ZAPのバージョン
| 項目 | バージョン |
|---|---|
| OS | Debian GNU/Linux 12 (bookworm) |
| Apache | 2.4.XX |
| OWASP ZAP | 2.15.0 |
Apacheの設定ファイルとフォルダ構成
Apacheの設定ファイルとフォルダ構成は以下のとおりです。
/etc/apache2
|-- apache2.conf
|-- /conf-available
|-- security.conf
Apache設定変更時の注意点
Apache の設定変更後は再起動が必要です。
また、ブラウザで反映を確認する際は、次の2点をおすすめします。
- シークレットブラウザを使用する
- 反映後、キャッシュのクリアとハード再読み込み
これをしないと反映されないことがありました。
事前準備 Apacheのheadersモジュールを有効化する
ヘッダーモジュールが無効な場合は、有効化します。
sudo a2enmod headers
反映のために再起動します。
sudo systemctl restart apache2
OWASP ZAPで検出された Content Security Policy Header Not Set の対応(Apache)
/conf-available/security.conf に Content-Security-Policyヘッダー を適切に設定します。以下、設定例です。
Header always set Content-Security-Policy "frame-ancestors 'self'; script-src 'self' 'sha256-***'; style-src 'self' 'sha256-***' https://cdn.jsdelivr.net https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com https://cdn.jsdelivr.net; form-action 'self' ;img-src 'self'; connect-src 'self'; frame-src 'self'; media-src 'self'; object-src 'self'; manifest-src 'self';"
OWASP ZAPで検出された Missing Anti-clickjacking Header の対応(Apache)
/conf-available/security.conf に X-Frame-Optionsヘッダー を適切に設定します。以下、設定例です。
Header always set X-Frame-Options "SAMEORIGIN"
ちなみに、X-Frame-Options の代わりに、frame-ancestors ディレクティブを Content-Security-Policy ヘッダーで使用するように MDN に記載があります。利用するブラウザ要件に合わせて設定してください。
OWASP ZAPで検出された ディレクトリブラウジング の対応(Apache)
apache2.conf の Options を適切に設定します。以下、設定例です。
Options -Indexes
OWASP ZAPで検出された Server Header のバージョン情報漏洩の対応(Apache)
/conf-available/security.conf の ServerTokens を適切に設定します。以下、設定例です。
ServerTokens Prod
OWASP ZAPで検出された Strict-Transport-Security Header Not Set の対応(Apache)
/conf-available/security.conf に Strict-Transport-Securityヘッダー を適切に設定します。以下、設定例です。
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains;"
OWASP ZAPで検出された X-Content-Type-Options Header Missing の対応(Apache)
/conf-available/security.conf の X-Content-Type-Optionsヘッダー を適切に設定します。以下、設定例です。
Header set X-Content-Type-Options: "nosniff"
まとめ
いかがでしょうか。
私は対応時にブラウザ側に設定前の値が残ってしまい、確認に時間がかかりました。皆様もご注意ください。今回は対応のまとめ記事ですが、1つ1つの脆弱性の詳細についても書こうと考えています。
《関連記事》
アシスタントリーダー Iizuka 技術の入門・まとめ系を中心に書いてます。あとで読み返したいと感じていただける記事を目指しています。


