1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

fail2banのbantime.increment機能と関連オプション

Posted at

概要

BAN回数に応じてBAN期間を延長するfail2banの bantime.increment 機能と関連オプションについてのメモ。

当該機能を標準設定のまま有効にした場合、BAN条件毎のBAN期間を各条件におけるBAN回数に応じて$2^{n}$倍する。nBAN回数-1 で最大$2^{20}$倍。

オプション

jail.local または jail.conf[DEFAULT] セクションで設定する。

bantime.increment

機能を有効にするかどうか。

  • true : 有効
  • false : 無効(標準)

bantime.rndtime

最終的なBAN期間に追加されるランダムな秒数の上限。攻撃者が設定を推測してBANを回避することを抑止するための機能。

  • 秒数を指定する
  • 0~100%の間でランダムに追加される
  • 標準: 無効

bantime.maxtime

BAN期間の上限。bantime.formula 等によるBAN期間の計算が行われた後、この値を超えているとこの値に丸められ、続いて bantime.rndtime の処理が行われる。

bantime.factor

bantime.formula ないし bantime.multipliers によるBAN期間の計算に使用される値。

  • 標準: 1
  • bantime.formula を使用する場合は式の中で自由に使用できる
  • bantime.multipliers を使用する場合はこの値による乗算が加わる

bantime.formula

BAN期間の計算式をPythonの記法で指定する。

  • 標準: ban.Time * (1<<(ban.Count if ban.Count<20 else 20)) * banFactor
    • BAN期間をBAN回数に応じて$2^{n}$倍( n = BAN回数-1 で最大20)した値と bantimer.factor の積
    • << は左シフト(2進数として末尾に0を追加する)
  • bantime.multipliers とは排他利用(multipliersが優先される)

式で利用できる値は以下の通り。

  • ban.Time : BAN条件の標準のBAN期間
  • ban.Count : BAN回数(初期値は 0 っぽい?)
  • banFactor : bantime.factor の値

数学関数なども使用できるため自由度は高い。jail.conf のコメントでは math.exp() を使用して標準設定と同じ値を出力する例が紹介されている。

bantime.multipliers

BAN回数毎の倍率を個別に指定する。

  • 任意の個数の倍率(数値)を半角スペースで区切って記述する
  • BAN回数が指定した倍率の個数を超える場合は最後に指定した倍率が使用される
  • bantime.factor で乗算される
  • 標準: 無効
  • bantime.formula とは排他利用(formulaより優先される)
jail.confのサンプル
# BAN回数に応じて1倍, 2倍, 4倍~と増加し、7回目以降は64倍
bantime.multipliers = 1 2 4 8 16 32 64

# BAN期間が60秒の場合、BAN回数に応じて
# 1分, 5分, 30分, 1時間, 5時間, 12時間, 1日, 2日(以降2日固定)となる
bantime.multipliers = 1 5 30 60 300 720 1440 2880

bantime.overalljails

BAN回数のカウント条件を指定する。

  • false: 各BAN条件毎にBAN回数をカウントする(標準)
  • true: 全てのBAN条件のBAN回数を合計してカウントする
    • 異なるBAN期間のBAN設定が混在している場合は意図通りに動作するか注意すること

Tips

期間の指定方法

整数による秒数指定以外に単位での指定と基本的な演算子が使用できる。(恐らく2016年頃以降のバージョンで有効)

例えば以下のような単位指定が使用できる。

  • 日: d dd
  • 週: w ww
  • 月: mo mon
    • m だと分になる
    • 30.4375日
  • 年: y yy
    • 365.25日
  • 秒: s ss
  • 分: m mm
  • 時: h hh

詳細はソースMyTime.str2seconds 付近を参照のこと。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?