Remove HTTP headers
設定されたHTTPレスポンスヘッダーをDrupalから削除し、サーバー情報を隠すことでセキュリティを強化します。
remove_http_headers
インストール
composer require 'drupal/remove_http_headers:^2.1'
composer require 'drupal/remove_http_headers:^2.0'
概要
Remove HTTP headersモジュールは、すべてのDrupalレスポンスから指定したHTTPヘッダーを削除するシンプルかつ効果的な方法を提供します。これはセキュリティのベストプラクティスであり、基盤となる技術スタックに関する情報を隠蔽することで、攻撃者が潜在的な脆弱性を特定しにくくします。
このモジュールは、DrupalのページキャッシュMiddlewareの後に実行されるHTTP Middlewareを使用し、キャッシュされたレスポンスとキャッシュされていないレスポンスの両方からヘッダーを確実に削除します。X-Generatorヘッダーの削除が設定されている場合、モジュールはHTML出力から対応する<meta name="Generator">タグも自動的に削除します。
デフォルトでは、モジュールはDrupalを識別する3つの一般的なヘッダー(X-Generator、X-Drupal-Dynamic-Cache、X-Drupal-Cache)を削除するように設定されています。管理者は設定ページまたは設定ファイルを直接編集することで、削除するヘッダーをカスタマイズできます。
Features
- 設定されたHTTPヘッダーをすべてのDrupal HTTPレスポンスから削除
- X-Generatorヘッダーの削除が設定されている場合、HTMLからGeneratorメタタグを自動的に削除
- 高い優先度(1000)を持つHTTP Middlewareを使用し、他のすべてのMiddlewareの後にヘッダーを確実に削除
- 削除するヘッダーを設定するための管理UIを提供
- デプロイワークフロー用にYAMLファイルによる設定をサポート
- パフォーマンス最適化のためにヘッダー設定のキャッシュを実装
- ヘッダー名に空白が含まれないようにヘッダー形式を検証
- 設定変更時にキャッシュを自動的に無効化
Use Cases
本番サイトのセキュリティ強化
すべてのDrupal識別ヘッダー(X-Generator、X-Drupal-Cache、X-Drupal-Dynamic-Cache、X-Drupal-Cache-Tags、X-Drupal-Cache-Contexts)を削除して、攻撃者がサイトがDrupalで動作していることやそのバージョンを特定できないようにします。これにより、自動化された脆弱性スキャンの効果を低下させます。
セキュリティポリシーへの準拠
多くの組織は、サーバー識別ヘッダーの削除を要求するセキュリティポリシーを持っています。X-Powered-By、Serverなど、技術スタック情報を明らかにするヘッダーを削除するようにモジュールを設定します。
キャッシュ戦略の隠蔽
X-Drupal-CacheとX-Drupal-Dynamic-Cacheヘッダーを削除して、キャッシュ関連の脆弱性を悪用しようとする潜在的な攻撃者からサイトのキャッシュ戦略に関する情報を隠蔽します。
プライバシーの強化
フィンガープリンティングやトラッキングに使用される可能性のあるヘッダーを削除して、ユーザーのプライバシーを強化し、プライバシー規制に準拠します。
Tips
- モジュールは高い優先度(1000)を持つHTTP Middlewareとして動作し、DrupalのページキャッシュMiddlewareがヘッダーを追加した後にレスポンスを処理することを保証します
- 最大限のセキュリティのために、削除を検討すべきヘッダー: X-Generator、X-Drupal-Cache、X-Drupal-Dynamic-Cache、X-Drupal-Cache-Tags、X-Drupal-Cache-Contexts
- 設定はDrupalのConfig管理システムを使用してエクスポートし、環境間でデプロイできます
- モジュールはヘッダー名に空白が含まれていないことを検証し、設定エラーを防ぎます
- ヘッダーはパフォーマンス最適化のため、サブリクエストではなくメインリクエストでのみ削除されます
Technical Details
Admin Pages 1
/admin/config/system/remove-http-headers
すべてのDrupalレスポンスから削除するHTTPレスポンスヘッダーを設定します。これにより、攻撃者が脆弱性を特定するために使用できるサーバー情報を隠蔽してセキュリティを強化します。
権限 1
Hooks 1
hook_page_attachments_alter
X-Generatorヘッダーが削除対象として設定されている場合、HTMLヘッドからGeneratorメタタグを削除するために使用されます
Troubleshooting 4
設定を変更した後、すべてのDrupalキャッシュをクリアしてください。モジュールはパフォーマンスのためにヘッダーリストをキャッシュします。また、/admin/config/system/remove-http-headersで設定が正しく保存されていることを確認してください。
「Remove HTTP headers設定の管理」権限を持っていることを確認してください。これは制限された権限であり、明示的に付与する必要があります。
「X-Generator」が削除するヘッダーのリストに含まれていることを確認してください。メタタグの削除は、X-Generatorヘッダーが削除リストに含まれている場合にのみトリガーされます。
このモジュールはDrupalによって追加されたヘッダーのみを削除します。Webサーバー(Apache、Nginx)やリバースプロキシによって追加されたヘッダーは、それらのレベルで設定する必要があります。
Security Notes 4
- このモジュールはDrupalのSecurity Advisoryポリシーの対象です
- 識別ヘッダーの削除はセキュリティのベストプラクティスですが、包括的なセキュリティ戦略の一部である必要があります
- 「remove_http_headers settings access」権限は制限付きとしてマークされており、信頼できる管理者にのみ付与する必要があります
- ヘッダーの削除はサーバー情報の隠蔽に役立ちますが、決意のある攻撃者は他の手段でDrupalを特定できる可能性があります