Login Security

ブルートフォース攻撃を検出し、ユーザーとIPアドレスに対する設定可能なブロック保護を実装することで、Drupalのログインフォームのセキュリティを強化します。

login_security
17,408 sites
86
drupal.org

インストール

Drupal 11, 10, 9, 8 v2.0.2
composer require 'drupal/login_security:^2.0'

概要

Login Securityは、Drupalサイトのログイン操作におけるセキュリティオプションを改善します。デフォルトでは、Drupalはサイト全体のコンテンツへのIPアクセスを拒否する基本的なアクセス制御のみを備えています。このモジュールにより、管理者はログインフォーム(/userのデフォルトログインフォームおよびログインフォームBlock)に複数のアクセス制御機能を追加できます。

このモジュールは、ログイン失敗の試行を追跡し、設定可能なしきい値に基づいてさまざまな保護アクションを実行できます:フォーム送信の一時的なブロック(ソフトブロック)、Banモジュールを使用したIPアドレスの永続的なブロック(ハードブロック)、ユーザーアカウントのブロック、およびメール通知による進行中のパスワード推測攻撃の検出。

すべての保護は設定可能な時間枠(追跡時間)内で動作し、管理者はパーソナライズされた通知のための動的プレースホルダーを使用してすべてのユーザー向けメッセージをカスタマイズできます。

Features

  • 疑わしいログインアクティビティが検出されたときに管理者へのメール通知と設定可能なしきい値による進行中の攻撃検出
  • サイトの閲覧は許可しながらログインフォームの送信を一時的に防止するソフトIPブロック。追跡時間枠後に自動的に期限切れ
  • Drupal CoreのBanモジュールを使用してサイト全体からIPアドレスを永続的に禁止するハードIPブロック。手動での解除が必要
  • 設定可能なログイン失敗回数後のユーザーアカウントブロック。ソースIPアドレスに関係なくログインを防止
  • すべてのブロックシナリオと通知のための動的プレースホルダー(ユーザー名、IP、サイト名、試行回数など)を使用したカスタマイズ可能なメッセージ
  • ログイン成功時に認証済みユーザーに最終ログインおよび最終アクセスのタイムスタンプを表示
  • アカウントブロック前の残りログイン試行回数をユーザーに通知
  • 攻撃者への情報漏洩を防ぐためにCoreのログインエラーメッセージを無効にするオプション
  • Cronによる自動クリーンアップ付きですべてのログイン試行を保存するイベント追跡データベース
  • 追跡されたすべてのログイン試行を手動でリセットするためのイベント追跡クリアボタン
  • ユーザーブロックイベントと進行中の攻撃検出の両方に対するカスタマイズ可能な件名と本文を持つメール通知
  • 設定と追跡データを含むDrupal 7からのマイグレーションサポート

Use Cases

ブルートフォース攻撃からの保護

モジュールを次のように設定します:追跡時間 = 60分、ユーザーブロック = 5回、ソフトホストブロック = 10回、ハードホストブロック = 15回、攻撃検出 = 50回。この設定により、任意のIPからの5回の失敗後に個々のユーザーアカウントをブロックし、10回の失敗後にIPを一時的にブロックし、15回の失敗後にIPを永続的に禁止し、1時間以内に50回以上の失敗が検出されたときに管理者に警告します。

メールアラート付きの高セキュリティ環境

機密性の高いサイトでは、低いしきい値を設定します:ユーザーブロック = 3回、ソフトホストブロック = 5回、ハードホストブロック = 8回、攻撃検出 = 20回。ユーザーブロックと攻撃検出の両方に通知メールを設定します。ユーザー名列挙攻撃を防ぐために「Coreのログインエラーメッセージを無効にする」を有効にします。この設定は、積極的な保護と疑わしいアクティビティの即時認識を提供します。

寛容な設定の公開コミュニティサイト

正当なユーザーのブロックが懸念されるサイトの場合:攻撃者が実際のユーザーをロックアウトするのを防ぐため、ユーザーブロック = 0(無効)に設定します。ソフトホストブロック = 20回、ハードホストブロック = 50回を使用します。正当なユーザーが制限に近づいていることを認識できるように「残りの試行回数をユーザーに通知」を有効にします。これは、高トラフィックの公開サイトでセキュリティとユーザビリティのバランスを取ります。

Drupal 7からのマイグレーション

Drupal 7からアップグレードする場合、モジュールは設定と追跡データの両方のマイグレーションパスを提供します。drush migrate:import d7_login_security_settingsを使用してD7設定をインポートし、drush migrate:import d7_login_security_trackを使用して既存の追跡データをインポートします。マイグレーションは、ユーザー名ベースのメール通知をメールアドレスベースの設定に自動的に変換します。

セキュリティ監査への準拠

ユーザーがアカウントへの不正アクセスを識別できるように、「最終ログインタイムスタンプを表示」と「最終アクセスタイムスタンプを表示」を有効にします。監査証跡を維持するために、メール通知付きの攻撃検出を設定します。モジュールによって作成されるwatchdogログ(「login_security」タイプ)は、セキュリティ監査のための詳細な記録を提供します。

Tips

  • セキュリティニーズに応じてtrack_timeを適切に設定してください - 短い時間(60分)はより寛容で、長い時間(1440分/24時間)はより厳格です
  • セキュリティの脅威を即座に認識するために、攻撃検出の通知メールを常に設定してください
  • watchdogログ(レポート > 最近のログメッセージ、「login_security」でフィルタ)を使用して、ブロックイベントと攻撃パターンを監視してください
  • 特に高セキュリティサイトでは、ユーザー名列挙攻撃を防ぐために「Coreのログインエラーメッセージを無効にする」を有効にすることを検討してください
  • ユーザーuid 1はユーザーブロック機能によってブロックされません - 追加のセキュリティのためにホストブロック保護を使用してください
  • メール通知が正しく機能することを確認するために、意図的にブロックをトリガーして設定をテストしてください
  • 「イベント追跡情報をクリア」ボタンは、設定を変更した後やブロックされた状況を解決した後に便利です
  • @username、@ip、@siteなどのメッセージTokenにより、パーソナライズされたメッセージが可能です - 設定フォームで利用可能なTokenを確認してください

Technical Details

Admin Pages 1
Login Security /admin/config/people/login_security

ブロックしきい値、通知オプション、およびさまざまなブロックシナリオ用のカスタマイズ可能なメッセージを含むログインセキュリティ設定を行います。このページでは、管理者がブルートフォースログイン攻撃に対する多層保護を設定できます。

Hooks 1
hook_login_security_display_block_attempts_alter

モジュールが残りのログイン試行メッセージの表示と表示するかどうかを変更できるようにします。

Troubleshooting 6
正当なユーザーが頻繁にブロックされる

user_wrong_countしきい値を増やすか、ユーザーブロックを無効にするために0に設定してください。ユーザーアカウントではなくIPアドレスをターゲットにするソフトおよびハードホストブロックのみを使用することを検討してください。

ソフトブロックが予想通りに期限切れにならない

ソフトブロックはtrack_time設定に基づいて期限切れになります。track_time値(分単位)が適切に設定されていることを確認してください。Cronを実行して期限切れのイベントがクリーンアップされるようにしてください。設定ページの「イベント追跡情報をクリア」ボタンを使用して、すべての追跡データを手動でクリアすることもできます。

ハードブロックされたIPがサイトにアクセスできない

ハードブロックは永続的で、ban_ipテーブルに保存されます。管理 > 環境設定 > ユーザー > IPアドレスバン(/admin/config/people/ban)でIPのブロックを解除してください。

メール通知を受信できない

通知設定のメールアドレスが正しいことを確認してください。サイトのメールシステムが機能していることを確認してください(他のメールでテスト)。しきい値が設定されており(ゼロ以外)、設定されたしきい値に達していることを確認してください。

ユーザーuid 1が決してブロックされない

これは仕様です。スーパー管理者アカウント(uid 1)は、一般的にターゲットにされやすく簡単に発見されるため、意図的にユーザーブロック保護から除外されています。uid 1をターゲットにした攻撃から保護するために、他の保護(ソフト/ハードホストブロック)の組み合わせを使用してください。

攻撃通知が繰り返し続く

モジュールは繰り返し通知を防ぐために状態を維持します。追跡されたイベントがしきい値の1/3を下回ると、攻撃アラートはリセットされます。これを手動でリセットしたい場合は、状態変数をクリアするか、「イベント追跡情報をクリア」ボタンを使用してください。

Security Notes 8
  • ユーザーuid 1(スーパー管理者)は、ユーザーブロック機能によって意図的にブロックされません。これは、uid 1が簡単に発見され(多くの場合「admin」という名前)、簡単にロックアウトされる可能性があるためです。追加の保護にはホストブロックに依存してください。
  • ソフトブロックはログインフォームの送信のみを防止します - ユーザーは匿名でサイトを閲覧できます。アクセスを完全に拒否するにはハードブロックを使用してください。
  • ハードブロックはBanモジュールを使用し、管理者が手動で削除するまで永続的です。
  • Coreのログインエラーメッセージを無効にすると、ユーザー名列挙を防止してセキュリティが向上しますが、正当なユーザーを混乱させる可能性があります。
  • 残りの試行回数に関する通知メッセージは、攻撃者にセキュリティポリシーを意図せず開示する可能性があります - このメッセージは慎重に設定してください。
  • メール通知は、メールアドレスが設定されており、サイトのメールシステムが機能している場合にのみ機能します。
  • イベント追跡データはデータベースに保存されます - GDPR準拠のためにプライバシーへの影響と保持ポリシーを考慮してください。
  • 自動化されたブルートフォースツールは通常、各試行で新しいセッションを要求するため、セキュリティ操作ではセッションIDは考慮されません。