fail2banを使用したn回の再試行後のIPの永久ブロック


38

私は次のように構成されたfail2banを持っています:

  • 3回失敗した後にIPをブロックする
  • 300秒のタイムアウト後にIPを解放する

これは完全に機能し、有効なユーザーがタイムアウト後にログインを再試行できるように、この方法を維持したいです。ここで、同じIPが攻撃として検出され、ブロックされ、ブロックが5回解除され、IPが永続的にブロックされ、再びブロックされないというルールを実装します。fail2banのみでこれを実現できますか、それを行うために独自のスクリプトを作成する必要がありますか?

私はこれをcentosで行っています。


2
それはかなり馬鹿げたアイデアです-iptablesに追加するルールが多いほど遅くなります。
symcbean

14
コメントを感謝しますが、私が必要とするのは答えであり、提案ではありません。とにかくありがとう。
BTRナイドゥ

5
「Xをどうするか」に対する正しい答えは、「Xをしない」です。
ceejayoz

回答:


32

0.11以前は、これを実現するためのデフォルト機能やfail2ban内の設定はありませんでした。しかし、今後の0.11リリースから、禁止時間は自動的に計算され、新しい攻撃ごとに指数関数的に増加します。これは、長期的には多かれ少なかれ永続的なブロックを意味します。

それまでは、おそらく自分のログファイルを監視するためにfail2banを設定するのが最善の方法です。これは2段階のプロセスです...

ステップ1

ログファイル(fail2banのログファイル)でBANをチェックするためのフィルター作成する必要があります。

ステップ2

次のようなjail定義する必要があります...

[fail2ban]
有効= true
フィルター= fail2ban
action = iptables-allports [name = fail2ban]
logpath = /path/to/fail2ban.log
#findtime:1日
findtime = 86400
#禁止期間:1年
禁止時間= 31536000

技術的には、永続的なブロックではなく、 1年間のブロックのみです(これも増やすことができます)。

とにかく、あなたの質問(これはfail2banだけで達成できますか、それを行うために独自のスクリプトを書く必要がありますか?)...独自のスクリプトを書くことはうまくいくかもしれません。頻繁に禁止されているIP を抽出するスクリプトを設定し、それらを配置する/etc/hosts.denyことをお勧めします。


1
この優れた答えに追加しています...ロギングとMaxAuthTriesの設定方法によってsshd_configは、sshd「セッション」の失敗したログインを3回のみブロックできます。たとえば、デフォルトでは、攻撃者はsshdが切断する前に単一のセッションで['pass1'、 'pass2'、 'pass3']を試みる可能性があります。sshdがログを記録するように設定されている方法に応じて、これは1、2、または3回のfail2banの試行として表示される可能性があります。
ジョナサン・ヴァナスコ

5
そのためのfail2ban recidiveフィルターがあります。
ギジェルモプランディ

今後の0.11リリースはどういう意味ですか?最新は10.3.1のようです:github.com/fail2ban/fail2ban/releases
user5950

0.10.3.1を意味することを願っていますgithub.com/fail2ban/fail2ban/tree/0.11で「0.11」の進行状況を追跡できます。基本的に、まだリリースされていません!
ポティカリムトゥ

29

あなたbantime = -1がその設定セクションに入れれば、それは永続的なブロックだと思います。


2
実際、bantime負の値に設定することは永続的な禁止です(Fail2Ban ver。0.6.1(2006/03/16)現在)
-voretaq7

3
設定に-1を追加すると、fail2banが応答しなくなりました
Erdem

13

フィルハーゲンは、このテーマに関する優れた記事を執筆しました。「fail2banで繰り返し違反者を永久に禁止する」。

彼の提案はポチと同じですが、ステップバイステップのガイドを提供します。

これに含まれるもの:

  • jail(ip.blocklist.ssh、ip.blocklist.xxx)別の禁止リスト
  • サービスが再起動すると自動読み込みリストが禁止されます(この方法の主な利点は私見です)
  • リピーターが関与している場合はメール通知。

6

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

4

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

jail.localに追加する方法は?

[recidive]
enabled  = true
bantime  = 31536000  ; 1 year
findtime = 18144000  ; 1 month
maxretry = 2

ログレベルをチェックするためにできること:fail2ban-client get loglevel

  • set loglevel MYLEVEL:ロギングレベルをMYLEVELに設定します。レベル:重大、エラー、警告、通知、情報、デバッグ
  • wikiのその他のコマンド

古いバージョンのfail2banでは、このバグを取得できます。


0

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***
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.