Advanced ban
Drupal CoreのBanモジュールを置き換える高度なIPアドレス禁止モジュール。IP範囲、有効期限、禁止理由、保護IPをサポートします。
advban
インストール
composer require 'drupal/advban:8.x-1.9'
composer require 'drupal/advban:8.x-1.5'
概要
Advanced Banは、Drupal CoreのBanモジュールを包括的に置き換えるもので、サイト管理者向けに強化されたIPアドレス管理機能を提供します。このモジュールでは、個別のIPアドレスだけでなくIPv4のIP範囲も禁止でき、指定した期間が経過すると自動的に禁止を解除する有効期限を設定できます。
CoreのBanモジュールとは異なり、Advanced BanはIPがブロックされた理由を記録する禁止理由、禁止を上書きする保護IPリスト(Googlebotなどの信頼できるサービスをホワイトリストに登録するのに便利)、およびブロックされた訪問者に表示するカスタマイズ可能な禁止メッセージをサポートしています。このモジュールには、ページキャッシュの前にリクエストをインターセプトするHTTPミドルウェアが含まれており、禁止されたユーザーがキャッシュされたコンテンツを受け取ることはありません。
インストール時に、このモジュールはCoreのBanモジュールから既存の禁止IPを自動的に移行します。期限切れの禁止はCronで自動的にクリーンアップされ、管理者は単純IP/範囲IPおよび期限切れ/アクティブな禁止のフィルタを使用した一括削除を完全に制御できます。
Features
- 予約済みアドレスの禁止を防ぐバリデーション付きで個別のIPアドレスを禁止
- 開始IPと終了IPを指定してIPv4アドレス範囲を禁止
- PHPのstrtotime形式(例:+1 hour、+1 day、+1 week)を使用した設定可能な禁止有効期限
- Cronによる期限切れIP禁止の自動解除
- IPが禁止された理由を記録する禁止理由フィールド
- 個別IP、CIDR表記、ドメイン名をサポートする保護IPホワイトリスト
- 優先度250でページキャッシュ前に禁止IPをブロックするHTTPミドルウェア
- IPと有効期限の変数プレースホルダを含むカスタマイズ可能な禁止メッセージテキスト
- IPアドレスまたは禁止理由で禁止IPを検索する検索機能
- 単純IP/範囲IPおよび期限切れ/未期限切れステータスのフィルタ付き一括削除機能
- 禁止IPリストのページネーションサポート
- インストール時にCoreのBanモジュールから禁止IPを自動移行
- ドキュメント用のコメント(#で始まる行)をサポートする保護IP
Use Cases
スパムボットのIP範囲をブロック
IP範囲禁止機能を使用して、既知のスパムソースのサブネット全体をブロックします。範囲の開始IPと終了IPを入力し、「スパムネットワーク」などの説明的な理由を追加し、適切な有効期限を設定します。モジュールは範囲内のすべてのIPをサイトへのアクセスからブロックします。
不正ユーザーの一時禁止
永久禁止に値しない不正ユーザーに対処する場合、有効期限機能を使用します。「+1 week」や「+1 month」などの期間でIPを禁止します。禁止はCronで期間が終了すると自動的に解除され、手動での介入は不要です。
正当なボットとサービスの保護
信頼できるサービスを保護IPリストに追加して、誤って禁止されることがないようにします。IP範囲にはCIDR表記(例:Googlebotの場合「66.249.64.0/19」)、ドメイン名(例:「googlebot.com」)、または個別IPを使用します。各エントリを文書化するために#でコメントを追加します。
CoreのBanモジュールからの移行
CoreのBanモジュールの後にAdvanced Banを有効にするだけで、インストール時に既存の禁止IPがすべて「Migrated from Ban」という理由で自動的に移行されます。その後、編集機能を使用してこれらのエントリに有効期限やより詳細な理由を追加できます。
禁止IPの監査と検索
検索ページを使用して、特定の禁止IPを見つけたり、理由テキストで検索したりします。これは禁止の監査、関連するエントリの検索(例:「brute force attack」で禁止されたすべてのIP)、または特定のIPが禁止されているかどうかの確認に役立ちます。
期限切れ禁止の一括クリーンアップ
Cronが自動的に期限切れの禁止を削除しますが、「すべて削除」ページを使用してすぐにクリーンアップできます。「期限切れIPのみを削除」を選択してすべての期限切れエントリを削除するか、フィルタを組み合わせて期限切れの範囲IPのみを削除するなどできます。
Tips
- 効率的なサブネットホワイトリストのために、保護IPでCIDR表記を使用(例:ローカルネットワーク全体に「192.168.1.0/24」)
- 将来の参照のために各IP/範囲が保護されている理由を文書化するため、保護IPで#を使用してコメントを追加
- 同じ期間でIPを頻繁に禁止する場合、ワークフローを高速化するために「最後のIP禁止有効期限を保存」を有効化
- 多くの禁止IPがある場合、管理ページのパフォーマンスを向上させるために設定で適切なページネーション制限(例:50)を設定
- 後で効果的に検索できるように、理由フィールドを一貫して使用(例:「spam:forum」、「brute-force:login」)
- モジュールはページキャッシュ前に実行される(優先度250)ため、禁止されたユーザーはキャッシュされたページを受け取らない
Technical Details
Admin Pages 6
/admin/config/people/advban
禁止IPアドレスを管理するためのメイン管理ページ。すべての禁止IPの有効期限、理由、ステータスを含むページ分割されたテーブルを表示します。新しいIP禁止を追加するフォームも提供します。
/admin/config/people/advban/edit/{ban_id}
既存のIP禁止エントリを編集して、有効期限または理由を変更します。現在の禁止情報のプレビューを表示します。
/admin/config/people/advban/delete/{ban_id}
禁止リストから特定のIPアドレスまたは範囲を削除するための確認フォーム。
/admin/config/people/advban/delete_all
IPタイプ(単純または範囲)と有効期限ステータスに基づくフィルタリングオプション付きのIP禁止一括削除。
/admin/config/people/advban/search
IPアドレスまたは禁止理由で禁止IPアドレスを検索します。結果には編集および削除操作付きの一致する禁止が表示されます。
/admin/config/people/advban/settings
有効期限、保護IP、禁止メッセージ、表示オプションを含むモジュール全体の設定を構成します。
権限 1
Hooks 3
hook_cron
Cron実行中に期限切れのIP禁止を自動的に削除し、禁止解除されたIPの数をログに記録
hook_help
モジュールのヘルプページと管理ページのヘルプテキストを提供
hook_theme
編集フォームでIP禁止詳細を表示するためのip_ban_viewテーマフックを定義
Troubleshooting 5
これは管理者が誤って自分自身をロックアウトすることを防ぐための安全機能です。モジュールは開始IPも範囲内のいずれのIPも現在のIPアドレスと一致しないことを検証します。
IPが保護IPリストに含まれていないか確認してください。保護IPは常に禁止を上書きします。また、IPリストのステータス列を確認して禁止が期限切れになっていないことも確認してください。
IP範囲禁止はIPv4アドレスのみをサポートしています。個別のIPv6アドレスは禁止できますが、範囲は禁止できません。モジュールはIPv6範囲を作成しようとするとエラーメッセージを検証して表示します。
期限切れの禁止はCronによって削除されます。サイトでCronが定期的に実行されていることを確認してください。また、手動でCronを実行するか、「すべて削除」ページを使用して期限切れのエントリをすぐに削除することもできます。
禁止テキスト設定を確認してください。正しい変数を使用していることを確認してください:@ipはIPアドレス用、@expiry_dateは有効期限日用(「有効期限付き禁止テキスト」設定でのみ使用可能)。
Security Notes 5
- モジュールは管理者が自分のIPアドレスを禁止することを防ぎ、ロックアウトを回避
- 保護IPは常に禁止よりも優先されるため、保護リストには本当に信頼できるアドレスのみが含まれていることを確認
- HTTPミドルウェアは高い優先度(250)で実行され、キャッシュされたコンテンツが提供される前に禁止IPをブロック
- 予約済みIPアドレス(255.255.255.255など)は設定の問題を防ぐために禁止できない
- IP禁止はHTTPレイヤーで動作 - 高度な攻撃者はプロキシやVPNを使用して禁止をバイパスする可能性がある