Security Review
Security Reviewは、安全でないDrupalサイトにつながる多くの設定ミスを自動的にチェックし、既存の脆弱性や攻撃の試みを検出します。
security_review
インストール
composer require 'drupal/security_review:^3.1'
概要
Security Reviewは、安全でないサイトにつながる設定エラーや脆弱性を自動的にチェックするDrupal用の包括的なセキュリティ監査モジュールです。権限、ファイルアクセス、入力形式、データベースエラー、ファイル拡張子など、18種類のセキュリティチェックを実行します。
このモジュールの主な目的は、Drupalサイトのセキュリティ確保の重要性に対する意識を高めることです。サイトを自動的に安全にするものではなく、手動でセキュリティを強化するための詳細なレポートとガイダンスを提供します。結果はサイト固有の要因によって異なる場合があり、管理者はチェックリストの結果とリソースを使用して手動でサイトを保護する必要があります。
Security Reviewは、チェックの実行と結果の表示のためのWebベースのUIと、自動化されたセキュリティ監査やCI/CDパイプラインに統合するためのDrushコマンドの両方を提供します。このモジュールはプラグインベースのアーキテクチャを使用しており、他のモジュールがカスタムセキュリティチェックを定義できます。
Features
- 一般的な脆弱性をカバーする18の組み込みセキュリティチェックを備えた自動化されたセキュリティチェックリスト
- 他のモジュールからカスタムセキュリティチェックを追加できるプラグインベースのアーキテクチャ
- チェックの実行、結果の表示、各チェックの詳細なヘルプへのアクセスのためのWeb UI
- 自動化されたセキュリティ監査とCI/CDパイプライン用のDrushコマンド統合
- どのユーザーロールを潜在的に悪意のあるものとして扱うかを定義する、設定可能な信頼されていないロール
- セキュリティチェックの動作を微調整するためのチェックごとの設定オプション
- 既知の誤検知や意図的な設定を除外するスキップ機能
- 大規模サイトでのリソース集約型チェックのためのバッチ処理
- 各セキュリティ問題と修復手順を説明する詳細なヘルプページ
- セキュリティ監査のためのチェック結果のWatchdogログ記録
- ログ分析によるブルートフォースログイン試行とSQLインジェクション試行の検出
- Webサーバーがコードディレクトリに書き込めないことを確認するファイル権限の検証
- 投稿されたコンテンツ内の危険なHTMLタグ(script、PHP)のコンテンツスキャン
- HTTPセキュリティヘッダーの検証(X-Frame-Optionsとカスタムヘッダー)
Use Cases
定期的なセキュリティ監査
cronジョブやCI/CDパイプラインでDrushコマンドを使用して定期的なセキュリティレビューをスケジュールします。「drush secrev --store」を実行してすべてのチェックを実行し、結果を保存します。ログを有効にして、セキュリティチェック結果の監査証跡を長期間維持します。
デプロイ前のセキュリティ検証
本番環境にデプロイする前に「drush secrev」を実行して、Security Reviewをデプロイメントパイプラインに統合します。チェックが失敗するとコマンドは非ゼロの終了コードを返すため、セキュリティ問題を導入するデプロイメントをブロックできます。
新規サイトのセキュリティベースライン
新しいDrupalサイトをセットアップした後、Security Reviewを実行してセキュリティベースラインを確立します。公開前にすべての失敗に対処します。意図的にスキップされたチェックとその正当性を文書化します。
侵害後の調査
サイトが侵害された疑いがある場合は、Fieldsチェックを実行して、注入されたscriptコードやPHPコードをコンテンツ内でスキャンします。ログ内の攻撃試行の証拠についてQuery ErrorsとFailed Loginsをチェックします。
コンプライアンス文書
Security Reviewレポートをセキュリティコンプライアンス文書の一部として使用します。モジュールのログ機能は、定期的なセキュリティテストを実証するために監査人に提供できる監査証跡を作成します。
カスタムセキュリティチェック
カスタムセキュリティチェックプラグインを作成してSecurity Reviewを拡張します。カスタムモジュールにSecurityCheckInterfaceを実装して、組織固有のセキュリティ要件を自動化されたチェックリストに追加します。
Tips
- Security Review権限は信頼できる管理者ロールにのみ付与してください。レポートはサイトに関する機密セキュリティ情報を明らかにします
- インストール後すぐに信頼されていないロールを設定して、チェックが特定のユーザーベースに対するリスクを正確に評価できるようにしてください
- より正確なファイル権限結果を得るには、DrushでSecurity Reviewを実行してください。ウェブサーバーユーザーのコンテキストはCLIとは異なります
- --storeオプションをDrushで使用して、後で管理UIで確認するために結果を保存してください
- セキュリティチェック結果の監査証跡を維持するために、本番環境ではログを有効にしてください
- デプロイ前にセキュリティ問題を検出するために、CI/CDパイプラインに「drush secrev」を統合してください
- チェックをスキップする場合は、説明責任を維持するためにスキップメタデータを使用して理由を文書化してください
- 各チェックのヘルプドキュメントを確認して、何をテストし、問題をどのように修復するかを理解してください
- モジュールはログ内の攻撃の証拠をチェックします - Query ErrorsとFailed Loginsチェックのためにdblogモジュールが有効になっていることを確認してください
- サイトのロール構造が変更されたら、信頼されていないロールの設定を定期的に確認して更新してください
Technical Details
Admin Pages 4
/admin/reports/security-review
管理者がセキュリティチェックを実行し、結果を表示し、個々のチェックのオン/オフを切り替えることができるメインのセキュリティレビューチェックリストページ。最終実行のタイムスタンプと、各チェックのステータス(成功、失敗、警告、情報)、メッセージ、ヘルプリンク、スキップ/有効化トグルを示すテーブルが表示されます。
/admin/config/security-review
管理者が信頼されていないロールの定義、ログの有効化、特定のチェックのスキップ、チェック固有の設定を構成できるSecurity Reviewモジュールの設定ページ。
/admin/reports/security-review/help
Security Reviewの機能の概要と、各セキュリティチェックの詳細なヘルプへのリンクを提供する一般的なヘルプページ。
/admin/reports/security-review/help/{namespace}/{title}
各セキュリティチェックの個別ヘルプページ。チェックが何をテストするか、なぜ重要か、見つかった問題をどのように修復するかの詳細情報を表示します。チェックがスキップされている場合は、ユーザーとタイムスタンプとともにスキップステータスも表示されます。
権限 2
Hooks 4
hook_security_review_unsafe_tags_alter
XSS攻撃に対して安全でないと見なされるHTMLタグのリストを変更
hook_security_review_unsafe_extensions_alter
アップロードに対して安全でないと見なされるファイル拡張子のリストを変更
hook_security_review_file_ignore_alter
ファイル権限チェック中に無視するファイルパスのリストを変更
hook_security_review_temporary_files_alter
サイトディレクトリでチェックする一時/バックアップファイルパターンのリストを変更
Drush Commands 1
drush security:review
Security Reviewチェックリストを実行して結果を出力します。自動化されたセキュリティ監査のためにCI/CDパイプラインに統合できます。
Troubleshooting 5
ファイル権限チェックはDrupalインストール内のすべてのファイルをスキャンします。大規模サイトでは、Web UIの代わりにDrush CLIでチェックを実行してください。また、既知の安全なディレクトリを除外ファイル設定に追加することもできます。
デフォルト表示が意図的に保護されておらず、アクセスが他のレベルで制御されている場合は、Viewsアクセスチェック設定で「デフォルトビューを無視」オプションを有効にしてください。
Fieldsチェックはコンテンツをバッチで処理します。大量のコンテンツがあるサイトでは、Drushで実行してください。既知の安全なコンテンツは、設定にハッシュを追加することで除外できます。
モジュールが正確なファイル権限チェックのためにウェブサーバーのユーザーIDを判定できるよう、インストール後に少なくとも一度cronを実行してください。
カスタムチェックモジュールが有効になっていることを確認してください。カスタムチェックにはnamespace:title形式を使用します(例: 'drush secrev --check=mymodule:my_check')。
Security Notes 8
- このモジュールはセキュリティ問題の認識を提供しますが、サイトを自動的に保護するものではありません - 手動での修復が必要です
- カスタム設定、リバースプロキシ、ホスティング環境などのサイト固有の要因により、結果が不正確になる場合があります
- レポートには機密セキュリティ情報が含まれるため、Security Review権限は信頼できるユーザーにのみ付与してください
- モジュールはファイル権限チェック中にテストファイルを書き込みます - これらは自動的にクリーンアップされますが、チェックが失敗すると残る場合があります
- チェック結果のログには機密セキュリティ情報が含まれる可能性があるため、慎重に使用する必要があります
- チェックのスキップは、セキュリティ問題を隠す方法ではなく、文書化された正当性を伴う意図的な決定であるべきです
- Fieldsチェックはscriptタグを含むコンテンツを明らかにしますが、これは正当な場合(埋め込みウィジェットなど)もあります - 結果を慎重に確認してください
- 最大限のセキュリティのために、Web UIとDrushの両方でチェックを実行してください。ファイル権限の異なる側面をテストします