【AIによる回答】
Fail2banのbantime.increment機能において、bantime = 48h(初期BAN時間)かつmaxtime = 1w(最大上限)に設定した場合、以下のような挙動になります。1. BAN時間の推移同じIPアドレスが繰り返しBANされるたびに、初期値の48時間からBAN期間が延長されていきます。計算にはデフォルトの計算式(指数関数的増加)またはmultipliers(倍率指定)が使用されます。
- 1回目: 48時間 (2日間)
- 2回目以降: 設定された倍率(デフォルトは2の累乗)に従い、96時間、192時間……と増加を試みます。
- 上限の適用: 計算結果が 1週間 (1w = 168時間) を超える場合、それ以上は増えず、常に 1週間 で固定されます。
2. 各パラメータの役割
- bantime (48h): 最初に検知した際の「ベース」となる禁止期間です。
- maxtime (1w): どんなに繰り返し違反しても、この時間を超えて禁止されることはありません。データベースが重くなるのを防ぎつつ、長期的なブロックを実現するのに有効な推奨値の一つです。
3. 注意点
- データベース: この挙動には
fail2ban.sqlite3データベースによる履歴管理が必須です。- リセット期間: 禁止が解除された後、一定期間(通常は最新のBAN時間と同じか、dbpurgeageの設定値)再犯がない場合は、カウントがリセットされ再び48時間からスタートします。
特定の増加倍率(例:2倍ずつ増やす、など)を指定したい場合は、bantime.multipliersを併用することをおすすめします。
