Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

fail2banで複数のjailで同一のIPに対して異なる解除時間が設定されているとどうなりますか

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

【AIによる回答】

Fail2Banにおいて複数のJailで同一のIPアドレスが抽出された場合、各Jailは互いに独立して動作します。その結果、解除時間は「最も遅い(長い)設定」が実質的な有効期限となります。
挙動の詳細は以下の通りです。
1. Jailごとの独立した管理
各Jail(例: sshd と apache-auth)は個別にログを監視し、個別にIPをBANします。
  • Jail A: 解除まで「1時間」
  • Jail B: 解除まで「24時間」
    同一のIPが両方のJailでBANされた場合、OSのファイアウォール(iptables等)には、それぞれのJailからブロックルールが追加されます。
2. 解除時の挙動(実質的なブロック期間)
Jail Aの「1時間」が経過すると、Jail AはこのIPのブロックを解除しようとします。しかし、Jail Bの「24時間」はまだ継続しているため、ファイアウォールにはJail Bによる拒否ルールが残ります
  • 結果として、対象のIPはすべてのJailのBAN期間が終了するまでサーバーにアクセスできません。
3. 注意点:重複によるエラーログ
すでに別のJailでBANされているIPを、さらに別のJailがBANしようとした場合、ログに Already banned という警告が出ることがありますが、これは正常な動作であり無視して問題ありません。
応用:悪質な攻撃者への対策(recidive)
もし「何度もBANされる攻撃者をより長くブロックしたい」という目的であれば、複数のJailを手動で管理するよりも、recidive jail(再犯者用設定)の有効化が推奨されます。
  • これは、Fail2Ban自体のログを監視し、短期間に何度もBANされたIPを「1週間」などの長期BANへ自動的に移行させる仕組みです。

 

結論から言うと、sshd Jail と recidive Jail はそれぞれ独立した「鍵(ブロックルール)」として動作します。そのため、そのIPアドレスは「最も長い解除時間(通常は recidive の設定)」が終了するまでアクセスできない状態になります。 
具体的な挙動は以下の通りです。
1. 二重にブロックされる仕組み 
  • sshd Jail: ログイン失敗を検知して、そのIPを短期間(例: 10分)ブロックします。
  • recidive Jail: Fail2Ban自身のログを監視し、「短期間に何度もBANされたIP(再犯者)」を検知して、より長期間(例: 1週間)ブロックします。 
同一のIPが両方に該当した場合、サーバーのファイアウォール(iptables等)には sshd 用の拒否ルール と recidive 用の拒否ルール の2つが同時に書き込まれます。 
2. 解除時のプロセス
  1. 先に sshd の解除時間(10分後など)が来ると、sshd 用の拒否ルールが削除されます。
  2. しかし、この時点ではまだ recidive 用の拒否ルール(1週間など)が残っているため、通信は引き続き遮断されます
  3. 最終的に recidive の解除時間が経過して初めて、そのIPからのアクセスが可能になります。 
注意点:ログ上の表示
複数のJailで同一IPをBANしようとすると、Fail2Banのログに [sshd] 1.2.3.4 already banned といったメッセージが出ることがあります。これは「既に別のJail(recidive等)でブロックされているから、新しくルールを追加する必要がない(あるいは既にある)」ことを示しており、正常な動作です。 
設定の確認方法
現在のBAN状況や、どのJailがそのIPを保持しているかは以下のコマンドで確認できます:
  • Jailごとの状況確認: fail2ban-client status sshd または fail2ban-client status recidive
  • 特定のIPを全Jailから即座に解除する場合: fail2ban-client unban <IPアドレス> 
もし、特定のJailだけが優先されてしまい他のJailが動いていないように見える場合は、ログの監視対象(logpath)や判定回数(maxretry)の設定を見直す必要があるかもしれません。特定のIPがなぜか recidive に登録されないといった具体的なトラブルは発生していますか?
タイトルとURLをコピーしました