web-dev-qa-db-ja.com

X分ごとにfindtimeを確認するためにFail2Banを取得する

次の設定でfail2banを設定しました:

bantime  = 86400
findtime  = 600
maxretry = 2

これは、10分以内に3回ブルートフォースするIPをすべて停止するので、すばらしいです。ただし、30分ごとに試行するIPがあります。これらのIPをキャッチするために、設定を次のように変更しました。

bantime  = 86400
findtime  = 3600
maxretry = 2

現在は1時間ごとにチェックを行い、20〜30分ごとに試行していたIPの一部をキャッチしています。ただし、現在、私のVPSは、1時間にわたってブルートフォースを高レベルで強制される可能性のあるIPをキャッチしていません。

したがって、findtime = 3600を設定し、fail2banを10分ごとにチェックする方法はありますか?

5
DomainsFeatured

マイケルハンプトンがいくつかのコメントで述べたように、 reaction time は、fail2banがログをチェックする頻度であり、findtimeパラメーターとは関係ありません。 fail2banは、毎秒程度新しいログデータを読み取ることが期待されています(コンピューターの負荷によって異なりますが、ほとんどの場合、新しいログデータはまだカーネルバッファーのメモリにあるため、非常に高速です)。

findtime=...は、ログをチェックする期間を定義します。フィルターは、now - findtimenowの間の日付を持つ入力に対してチェックされます。フィルタがその期間内に一致したログのmaxretry行以上を検出した場合(ignoreregexにも一致するものはカウントしない)(now - findtimeからnow )、次にbanアクションを発行します。

  ancient past  |     past       |       ban         |   future
----------------+--*--*-*--*---*-+-------------------+------------->
                |                |                   |
                |                |                   +--> now + bantime
                |                +--> now
                +--> now - findtime

タイムラインを示すグラフがあります。 ancient pastのログ部分は無視されます。 now - findtimenowの間のログ、pastという名前のセクションが一致するかどうかがチェックされます。一致数(アスタリスクで表される)が>= maxretryの場合、禁止はnowで開始されます。禁止はnow + bantimeまで続きます。 IPが禁止された後、同じIPでヒットしても、禁止されたポートでは発生しないことに注意してください。ただし、他のポートでも発生する可能性があります。

したがって、findtime=...を増やすことで反応時間に影響を与えることはありませんが、対応するフィルターによってIPが禁止される可能性が高くなります。

14
Alexis Wilke

jail.confに刑務所を追加すると、誰が30分ごとに総当たり攻撃を行っているかを確認できます。動作する構成の例は次のとおりです。

[ssh] # first jail: check every 10 minutes 

enabled  = true
port     = ssh
filter   = sshd
action   = %(action_)s
logpath  = /var/log/auth.log
maxretry = 3
bantime  = 600

[fail2ban-ssh] # second jail: check every hour

enabled = true
filter = fail2ban-ssh
logpath = /var/log/fail2ban.log
action = iptables-multiport
maxretry = 3
findtime = 3600    
bantime = 86400     # ban for a day

ファイルfail2ban-ssh.confを作成し、それをfilter.dに入れて、希望するものに一致させます。次に例を示します。

[Definition]

failregex = fail2ban.actions: WARNING \[ssh\] Unban <Host>
0
andreatsh