うまく機能するfail2banインスタンスがあります。
しかし、私は時々ログを手動で調べて、私の標準のf2b定義を回避しているシステムプローブを識別しようとするのも好きです。
私が探しているのは、次のようなコマンドで手動で使用できる、長期間持続する刑務所を定義する方法です。
fail2ban-client set $JAIL banip $IP
ログファイルから実際にトリガーされないカスタムjailを指定する構文を誰かに教えてもらえますか(または、実際にトリガーしない可能性のある条件を持つ標準的なjailである可能性があります)。マニュアルステートメント?私がやりたいのは、ログを調べているときに個人的に特定した手動禁止の禁止時間がはるかに長いことです。
これが私のやり方です。
これをjail.localに追加しました:
[manban]
enabled = true
filter = manban
action = iptables[name=HTTP, port="80,443,110,995,25,465,143,585,993,587,21,22", protocol=tcp]
logpath = /var/log/manban.log
maxretry = 1
# 1 month
bantime = 2592000
findtime = 3600
次に、ファイル/etc/fail2ban/filter.d/manban.confを追加しました。
[Definition]
failregex = ^\[\w{1,3}.\w{1,3}.\d{1,2}.\d{1,2}:\d{1,2}:\d{1,2} \d{1,4}. \[error] \[client.<Host>].File does not exist:.{1,40}roundcube.{1,200}
ignoreregex =
別のフィルターのフィルタープロトコルをコピーしましたが、それを存在しないファイルにポイントしてから、ダミーファイルを作成しました。
touch /var/log/manban.log
次にコマンドを実行します:
fail2ban-client reload
1か月間手動でIPアドレスを禁止するには、次のように入力します。
fail2ban-client set manban banip <IP>
これでうまくいきました。
Fail2ban禁止時間を「学習」し、禁止されないようにシステムプローブを自動的に調整するクライアントがいます。しかし、ログを見ると、これらがシステムプローブであることは明らかです。非常に長い禁止期間を設けることで、システムをめちゃくちゃにすることができます。特定の基準に一致するIPを特別な禁止ログにダンプし、fail2banで長期間禁止するスクリプトを作成することもできます。
上記の設定でエラーが発生しました:
iptables v1.6.0:無効なポート/サービス
80,443,110,995,25,465,143
が指定されています。
複数のポートにiptablesを適用する場合、アクションは iptables-multiport である必要があります。
[manban]
enabled = true
filter = manban
action = iptables-multiport[name=HTTP, port="80,443,110,995,25,465,220,585,587,8000,9600", protocol=tcp]
logpath = /var/log/manban.log
maxretry = 1
# 1 month
bantime = 2592000
findtime = 3600
この設定は機能し、iptablesルールセットを適切に更新します。