Automatic IP ban (Autoban)

設定可能なルールに基づいてwatchdogログエントリを分析し、IPアドレスの自動BAN処理をIP banプロバイダーと連携して実行します。

autoban
10,232 sites
69
drupal.org

インストール

Drupal 11, 10, 9 v8.x-1.12
composer require 'drupal/autoban:8.x-1.12'
Drupal 8 v8.x-1.9
composer require 'drupal/autoban:8.x-1.9'

概要

Autobanモジュールは、Drupalのデータベースログ(watchdog)テーブルで検出されたパターンに基づいて、自動的にIPアドレスをBANする機能を提供します。サイト管理者は、ログエントリのタイプやメッセージパターンをマッチングして不審なアクティビティを識別するルールを作成し、指定した違反回数のしきい値を超えたIPアドレスを自動的にBANできます。

このモジュールは、cron実行時またはオンデマンドでwatchdogテーブルをクエリし、「page not found」エラーの繰り返しやアクセス拒否イベントなど、定義されたパターンにマッチするIPアドレスを識別します。IPアドレスが指定された時間枠内で設定されたしきい値を超えると、設定されたbanプロバイダーを使用して自動的にBANリストに追加されます。

Autobanはサブモジュールアーキテクチャを通じて複数のbanプロバイダーをサポートしており、Drupal CoreのBanモジュールやAdvanced Banなどのサードパーティソリューションとの統合が可能です。このモジュールには、ログエントリの分析、一括ルール作成、IPホワイトリスト(CIDR表記やドメインベースの除外を含む)、手動および自動のルール管理機能が含まれています。

Features

  • watchdogログエントリのタイプとメッセージパターンに基づくIP BANルールの作成と管理
  • 設定可能なしきい値と時間枠によるcron実行時の自動IP BAN
  • 不審なパターンを識別し一括ルール作成を可能にするログ分析ツール
  • 柔軟なパターンマッチングのためのLIKEおよびREGEXPクエリモードのサポート
  • CIDR表記、単一IPアドレス、ドメインベースの除外をサポートするIPホワイトリスト
  • プラグイン可能なアーキテクチャによる複数のbanプロバイダーサポート(Core Ban、Advanced Ban)
  • 匿名ユーザー、認証済みユーザー、または両方をターゲットにするユーザータイプフィルタリング(strictモードオプション付き)
  • 追加のフィルタリング精度のためのURLリファラーパターンマッチング
  • ルールの時間枠設定(1時間、1日、1週間など)
  • 404/403エラー時の即時IP BANを行うForceモード
  • ルールクエリのトラブルシューティング用デバッグモード
  • コマンドラインからのIP BAN操作のためのDrushコマンドサポート
  • IPアドレスごとの直接BANリンクを含む強化されたdblog概要ページ
  • すべてのルールにわたるIP BANのバッチ処理
  • 既存ルールを複製するクローン機能

Use Cases

ブルートフォースログイン試行のブロック

タイプ'user'とログイン失敗メッセージにマッチするメッセージパターンでルールを作成します。低いしきい値(例:5)と短い時間枠(例:'1 hour ago')を設定して、ユーザーアカウントへのブルートフォース攻撃を試みるIPを迅速に識別してBANします。

脆弱性スキャナーのブロック

タイプ'page not found'でルールを作成し、脆弱性スキャナーがよくターゲットにする存在しないパス(例:wp-admin、phpmyadmin)を繰り返しリクエストするIPを識別します。1時間以内に10-20のしきい値で自動スキャナーを効果的にブロックできます。

スパムボットからの保護

分析ページを使用してスパム関連のログエントリパターン(例:繰り返しのフォーム送信、特定のリファラーパターン)を識別します。これらのパターンをターゲットにしたルールを作成して、スパムボットのIPを自動的にBANします。

緊急IPブロッキング

404または403エラーをトリガーするIPを即座にブロックするために設定でForceモードを有効にします。アクティブな攻撃中に有用ですが、404エラーを経験する正当なユーザーに影響を与える可能性があるため、注意して使用する必要があります。

検索エンジンボットのホワイトリスト登録

信頼できるボットドメイン(例:'googlebot.com'、'bingbot.com')またはCIDR表記のIPレンジをホワイトリストに追加して、404をトリガーする可能性のある正当なクローラーを誤ってBANすることを防ぎます。

ログ分析からの自動ルール作成

分析ページを使用してログパターンを確認し、不審なエントリを選択して、ルールを一括作成します。モジュールは自動的に一意のルールIDを生成し、デフォルト設定を適用します。

持続的攻撃者に対するIPレンジブロッキング

レンジサポート付きのAdvanced Banプロバイダーを使用する場合、同じサブネットから複数のIPを使用する攻撃者に対してIPレンジ全体をBANします。モジュールは単一IPを/24レンジに自動的に変換します。

Tips

  • 正当なトラフィックをブロックしないように、自動cronBANに依存する前に必ずテスト操作を使用してルールをテストしてください
  • 新しい攻撃パターンを識別し適切なルールを作成するために、分析ページを定期的に使用してください
  • 正当なボットドメインと信頼できるIPレンジでホワイトリストを最新の状態に保ってください
  • BANが一定期間後に自動的に解除されるように、Advanced Banの有効期限機能と短い時間枠の使用を検討してください
  • 複雑なパターンマッチングにはREGEXPクエリモードを使用しますが、データベースがそれをサポートしていることを確認してください
  • 時間を節約するために、類似のルールを作成する際は既存のルールをクローンしてください
  • 'Automatic'ルールタイプフィルターを使用したすべて削除ページを使用して、自動ルールを定期的にレビューしてクリーンアップしてください

Technical Details

Admin Pages 10
Autobanルール一覧 /admin/config/people/autoban

設定されたすべてのautobanルールをテーブル形式で表示するメイン管理ページ。各ルールには、ID、タイプ、メッセージパターン、リファラーパターン、しきい値、時間枠、ユーザータイプ、banプロバイダーが表示されます。各ルールで利用可能な操作には、編集、削除、テスト(マッチするIPのプレビュー)、BAN(このルールのBAN実行)、クローン(ルールのコピー作成)があります。

Autobanルールの追加 /admin/config/people/autoban/add/{rule}

新しいautobanルールを作成するためのフォーム。すべてのフィールドは、watchdogログエントリに基づいてBANするIPアドレスを識別するための基準を定義します。

Autobanルールの編集 /admin/config/people/autoban/manage/{autoban}

既存のautobanルールを変更するためのフォーム。追加フォームと同じフィールドですが、現在のルール値が事前入力されています。

Autobanルールの削除 /admin/config/people/autoban/manage/{autoban}/delete

autobanルールを削除するための確認フォーム。ルールを完全に削除する前に確認を求める警告メッセージを表示します。

AutobanルールのIPアドレス取得 /admin/config/people/autoban/manage/{rule}/test

特定のルールによってBANされるIPアドレスを、実際にBANせずに表示するテストページ。IPアドレスごとのマッチするログエントリ数と現在のBAN状態をテーブルで表示します。ルールを有効にする前の検証に便利です。

IPアドレスBAN /admin/config/people/autoban/ban/{rule}

IPアドレスをBANするための確認および実行ページ。ルールパラメータなしでアクセスした場合、バッチ処理を使用してすべてのルールのIPをBANします。特定のルールでアクセスした場合、そのルールにマッチするIPのみをBANします。

ログ分析 /admin/config/people/autoban/analyze

悪意のあるアクティビティを示す可能性のある繰り返しログエントリのパターンを見つけるためにwatchdogテーブルをクエリする分析ページ。タイプとメッセージでグループ化されたエントリとその発生回数を表示します。分析しきい値を超えるエントリは、ルールを作成またはテストするオプションとともに表示されます。

すべて削除 /admin/config/people/autoban/delete_all

フィルター条件に基づいて複数のautobanルールを削除するための一括削除フォーム。ルールタイプ、ログタイプ、メッセージパターン、リファラーパターン、しきい値、時間枠、ユーザータイプ、プロバイダーでフィルタリングできます。

Autoban設定 /admin/config/people/autoban/settings

Autobanモジュールのグローバル設定ページ。しきい値オプション、時間枠、クエリ動作、ホワイトリスト、除外ログタイプ、動作モードを制御します。

最近のログメッセージ(拡張版) /admin/reports/dblog

Autoban Dblogサブモジュールが有効な場合、このページはログ内の各IPアドレスに直接BANリンクを表示するように拡張されます。操作列には、利用可能な各banプロバイダーを使用してIPをBANするリンクが含まれます。

権限 1
Autobanの管理

autobanルールの作成、編集、削除、テスト。モジュールのすべての管理操作に必要です。

Hooks 2
hook_cron

cron実行中にすべてのautobanルールを処理します。すべてのルールを反復処理し、マッチするIPアドレスを取得し、設定されたプロバイダーを使用してBANします。

hook_help

ヘルプページでモジュールとそのサブモジュールのヘルプテキストを提供します。

Drush Commands 1
drush autoban:ban

autobanルールに対してIP BANを実行します。単一のルールまたはすべてのルールを処理できます。

Troubleshooting 5
ルールが期待されるログエントリにマッチしない

設定でデバッグモードを有効にして生成されたSQLクエリを確認します。ログタイプが正確にマッチしていること(大文字小文字を区別)、およびメッセージパターンがクエリモード(LIKE対REGEXP)を考慮していることを確認します。英語以外のログメッセージは、データベースに保存されている元の言語でパターンを指定する必要があることを覚えておいてください。

cron中にIPアドレスがBANされない

設定で'Enable cron'がチェックされていることを確認します。少なくとも1つのbanプロバイダーサブモジュールが有効になっていることを確認します。ルールに現在のログエントリにマッチする適切なしきい値と時間枠があることを確認します。

正当なユーザーがBANされる

正当なIPアドレスまたはドメインをホワイトリストに追加します。しきい値を上げるか、時間枠を狭めることを検討します。認証済みユーザーをBANしないようにstrictユーザータイプオプションを使用します。

banプロバイダーリストが空

少なくとも1つのAutobanプロバイダーサブモジュール(Autoban Core Ban ProviderまたはAutoban Advanced Ban Provider)を有効にします。対応するbanモジュール(BanまたはAdvanced Ban)がインストールされ有効になっていることを確認します。

Forceモードが過度にBANしている

Forceモードはすべての404/403エラーで即座にIPをBANします。これは緊急時のみを意図しています。通常の運用ではこれを無効にし、適切なしきい値を持つルールベースのBANに依存してください。

Security Notes 5
  • 検証なしにIPアドレスをホワイトリストに登録しないでください - 攻撃者はリファラー情報を偽装できます
  • Forceモードは、404エラーを経験する正当なユーザーに影響を与える可能性があるため、アクティブな攻撃中のみ使用してください
  • 誤検知を識別するためにBANされたIPリストを定期的にレビューしてください
  • ルール処理のクエリパフォーマンスに影響するため、dblogテーブルが大きくなりすぎないようにしてください
  • GDPRなどの規制に準拠してIPアドレスのログ記録と保存のプライバシーへの影響を考慮してください