Fail2banの使い方と刑務所の構成方法を知っていますが、実際に動作する方法は気に入らません。
問題は、私の好奇心を刺激した特別な刑務所オプションが1つあることですfindtime
。
使用するフィルタを設定するとき所有者Fail2banがどのIPを比較し、必要に応じて禁止するかを知るためのキーワード(IPアドレス一致)。大丈夫。
しかし、時間のようなものはありません。 fall2banにはTIME
キーワードがないため、ログファイルに行がいつ追加されたかを正確に知る方法はありません。そうですか?実際には、すべてのタイムラインでファイルを検索して操作を続けることができます。
これは、FAIL2BANが定期的にファイルをスキャンすることを意味するようです。内部でスキャン時間を設定して、findtime
独自のスキャン日と比較してオプションを処理できます。
まず、私の言葉は正しいですか?では、スキャン周波数はいくらですか?頻繁にスキャンする必要がある大容量ログファイルが多いと、ボトルネックが発生しませんか?
それでは、スキャン頻度がオプションよりも良ければfindtime
どうなりますか?これは、Fail2banがfindtime
最小スキャン頻度を設定するために見つけた最小のオプションに適応することを意味しますか?
答え1
最初。これは(おそらく)答えではありませんが、コメント(そして少し長い)よりも良いかもしれません。
タイムスタンプ
あなたの声明を見つける:
実際には、すべてのタイムラインでファイルを検索して操作を続けることができます。
文書と競合します。どういう意味ですか働く?
失敗した正規表現を直接作成するには、次の点に注意する必要があります。
[...]
ログ行が失敗した正規表現と一致するには、実際には2つの部分が一致する必要があります。行の先頭はタイムスタンプパターンまたは正規表現と一致する必要があります。、残りの行は失敗した正規表現と一致する必要があります。Failregexが前に^に固定されている場合、アンカーはタイムスタンプと中間スペースの後ろの残りの行の先頭を参照します。
タイムスタンプに一致するパターンまたは正規表現は現在記録されておらず、ユーザーが読み取ったり設定したりすることはできません。バラよりDebian のバグ #491253。ログに行が一致しないため、失敗2banが予期しないタイムスタンプ形式を持っている場合、問題が発生します。したがって、サンプルログ行(以下の例を参照)に対して失敗した新しい正規表現をテストして、一致することを確認する必要があります。Fail2banがログタイムスタンプを認識しない場合は、2つのオプションがあります。上記のログの例のように、ロギングでより一般的なタイムスタンプ形式を使用するようにデーモンを再設定するか、タイムスタンプ形式を要求するバグレポートを送信してください。
ログファイルは次のようになります。設定タイムスタンプも含む滞在タイムスタンプ。 (含む情報コメントで述べたように。 )
また、このスレッド、特にメッセージ#14と#19も参照してください。
2つの例:
次のコマンドを使用してテストすることもできます。
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
1タイムスタンプなし:
$ fail2ban-regex ' [1.2.3.4] authentication failed' '\[<HOST>\] authentication failed'
Running tests
=============
Use failregex line : \[<HOST>\] authentication failed
Use single line : [1.2.3.4] authentication failed
Results
=======
Failregex: 0 total
Ignoreregex: 0 total
Date template hits:
Lines: 1 lines, 0 ignored, 0 matched, 1 missed
|- Missed line(s):
| [1.2.3.4] authentication failed
`-
タイムスタンプ付き2つ:
$ fail2ban-regex 'Jul 18 12:13:01 [1.2.3.4] authentication failed' '\[<HOST>\] authentication failed'
Running tests
=============
Use failregex line : \[<HOST>\] authentication failed
Use single line : Jul 18 12:13:01 [1.2.3.4] authentication failed
Results
=======
Failregex: 1 total
|- #) [# of hits] regular expression
| 1) [1] \[<HOST>\] authentication failed
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [1] MONTH Day Hour:Minute:Second
`-
Lines: 1 lines, 0 ignored, 1 matched, 0 missed
スキャン数
反応時間を評価することは非常に困難です。 Fail2ban 待機中1秒スキャンする新しいログを確認する前に。ほとんどの場合は大丈夫です。ただし、maxretryで指定されたものよりも多くのログイン失敗が発生する可能性があります。
これに関しては、このスレッドを参照してください。Re: Bug#481265: failure2ban: ポーリング間隔を設定できません。。
しかし、次にオプションですが推奨されるソフトウェア一度Garminを見つけた。
Gaminはファイル変更モニタです。 Gaminは「inotify」アクティベーションカーネルを使用することで大きな利点を得ます。したがって、ファイルを変更するためのアクティブなポーリングは必要なくなりました。
Gaminがインストールされておりbackend
、jail.conf
車(または賭ける) - Gaminを使用します。
答え2
正規表現がワイルドカードを使用して日付を「認識」するようにする場合にのみ、日付が行の先頭にある必要はないことに注意することが重要です。
例:tomcat7
ログ・ファイルに次の行があるとします。
1.2.3.4 - - [13/Feb/2017:02:47:44 -0300] "GET /manager/html HTTP/1.1" 401 2486
1.2.3.4 - - [13/Feb/2017:02:47:45 -0300] "GET /manager/html HTTP/1.1" 401 2486
1.2.3.4 - - [13/Feb/2017:02:47:45 -0300] "GET /manager/html HTTP/1.1" 401 2486
1.2.3.4 - - [13/Feb/2017:02:47:45 -0300] "GET /manager/html HTTP/1.1" 401 2486
1.2.3.4 - - [13/Feb/2017:02:47:45 -0300] "GET /manager/html HTTP/1.1" 401 2486
1.2.3.4 - - [13/Feb/2017:02:47:46 -0300] "GET /manager/html HTTP/1.1" 401 2486
見て、日付が始まっていないので、それは問題でしょう。
それにもかかわらず、「datespace」を含む正規表現を使用してテストすると、テストは次のようになります。
$ fail2ban-regex '1.2.3.4 - - [13/Feb/2017:02:47:44 -0300] "GET /manager/html HTTP/1.1" 401 2486' '<HOST> - - \[.*\] "GET .* HTTP/1.1" 40\d \d+$'
Running tests
=============
Use regex line : <HOST> - - \[.*\] "GET .* HTTP/1.1" 40\d \d+$
Use single line: 1.2.3.4 - - [13/Feb/2017:02:47:44 -0300] "GET /man...
Matched time template Day/MONTH/Year:Hour:Minute:Second
Got time using template Day/MONTH/Year:Hour:Minute:Second
Results
=======
Failregex: 1 total
|- #) [# of hits] regular expression
| 1) [1] <HOST> - - \[.*\] "GET .* HTTP/1.1" 40\d \d+$
`-
Ignoreregex: 0 total
Summary
=======
Addresses found:
[1]
1.2.3.4 (Mon Feb 13 02:47:44 2017)
Date template hits:
2 hit(s): Day/MONTH/Year:Hour:Minute:Second
Success, the total number of match is 1