Fail2banを以下のように構成しました:
これは完全に機能し、有効なユーザーがタイムアウト後にログインを再試行する機会を得られるように、この方法を維持したいと考えています。ここで、同じIPが攻撃として検出されてブロックされ、5回ブロック解除された場合、IPを永続的にブロックし、二度とブロック解除しないというルールを実装したいと思います。 fail2banだけでこれを達成できますか、それを行うために独自のスクリプトを記述する必要がありますか?
私はセントースでこれをやっています。
0.11より前のバージョンでは、これを実現するための デフォルト機能やfail2ban内の設定はありません がありました。しかし、次の0.11リリース以降、禁止期間は 自動計算 であり、新しい違反ごとに指数関数的に増加します。長期的には、多かれ少なかれ永続的なブロックを意味します。
それまでは、おそらく fail2banで独自のログファイルを監視する を設定するのが最善の方法です。これは2段階のプロセスです...
フィルターを作成する必要があるかもしれません[〜#〜] ban [〜#〜]がログファイルにある(fail2banのログファイル)
次のように、刑務所を定義する必要があります...
[fail2ban] enabled = true filter = fail2ban action = iptables-allports [name = fail2ban] logpath =/path/to /fail2ban.log # findtime:1日 findtime = 86400 #bantime:1年 bantime = 31536000
技術的には、それは永続的なブロックではありませんが、1年間のブロックのみです(これも増やすことができます)。
とにかく、あなたの質問のために(これはfail2banだけで達成できますか、それを行うために自分のスクリプトを書く必要がありますか?)...自分のスクリプトを書くことはうまくいくかもしれません。 頻繁に禁止されたIPを抽出するスクリプトを設定し、それらを/etc/hosts.deny
がおすすめです。
bantime = -1
その構成セクションでは、永続的なブロックです。
Phil Hagenはこの問題について優れた記事を書いています。 「 fail2banでリピーターを永久に禁止する 」。
彼の提案はPothiと同じですが、段階的なガイドを提供します。
これには以下が含まれます:
Chinの答えを拡張すると、これは非常に簡単です。 /etc/fail2ban/jail.local
の2つの設定を編集して、好みに合わせます。
# ban time in seconds. Use -1 for forever. Example is 1 week.
bantime = 604800
# number of failures before banning
maxretry = 5
fail2banはすでに、受刑を禁止する刑務所を持っています。見るなら/etc/fail2ban/jail.conf
、見つかります:
# Jail for more extended banning of persistent abusers
# !!! WARNING !!!
# Make sure that your loglevel specified in fail2ban.conf/.local
# is not at DEBUG level -- which might then cause fail2ban to fall into
# an infinite loop constantly feeding itself with non-informative lines
[recidive]
enabled = false
filter = recidive
logpath = /var/log/fail2ban.log
action = iptables-allports[name=recidive]
sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
bantime = 604800 ; 1 week
findtime = 86400 ; 1 day
maxretry = 5
[recidive]
enabled = true
bantime = 31536000 ; 1 year
findtime = 18144000 ; 1 month
maxretry = 2
あなたができるログレベルをチェックするために:fail2ban-client get loglevel
。
古いバージョンのfail2banでは、 このバグ を取得できます。
Vimに移動し、/ etc/fail2ban/jail.confを開きます
fail2ban service restart
の後に変更するだけです。
# "bantime" is the number of seconds that a Host is banned.
bantime = ***1296000***
# A Host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = ***60000***
# "maxretry" is the number of failures before a Host get banned.
maxretry = ***3***