ユーザー名/パスワードの組み合わせを推測して、ユーザー名/パスワードで保護された蚊サービスに参加しようとする無差別代入IPアドレスをブロックするためにFail2banフィルタを作成しようとしています。間違った詳細でサブスクリプションを試みると、mosquittoは以下のように2行のログを作成します。
1544984465: New connection from 123.123.123.123 on port 1883.
1544984465: Socket error on client <unknown>, disconnecting.
私はこの2行のパターンと一致する正規表現を作成するために以下を使用しました。https://regex101.com/「アナコンダ味」に設定してください。正規表現は次のとおりです。
\s(?P<date>\d+)\: New connection from (?P<host>[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) .+\n(?P=date): Socket error on client \<unknown\>, disconnecting.
残念ながら、fall2banは次の正規表現を使用してログに一致するものを見つけることができません:
# fail2ban-regex '/var/log/testlog.log' '\s(?P<date>\d+)\: New connection from (?P<host>[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) .+\n(?P=date): Socket error on client \<unknown\>, disconnecting.'
Running tests
=============
Use failregex line : \s(?P<date>\d+)\: New connection from (?P<host>[0-...
Use log file : /var/log/testlog.log
Use encoding : UTF-8
Results
=======
Failregex: 0 total
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [13] Epoch
`-
Lines: 13 lines, 0 ignored, 0 matched, 13 missed
[processed in 0.00 sec]
|- Missed line(s):
| 1544984465: New connection from 123.123.123.123 on port 1883.
| 1544984465: Socket error on client <unknown>, disconnecting.
| 1544984466: New connection from 123.123.123.123 on port 1883.
| 1544984466: Socket error on client <unknown>, disconnecting.
| 1544984468: New connection from 123.123.123.123 on port 1883.
| 1544984468: Socket error on client <unknown>, disconnecting.
| 1544984469: New connection from 123.123.123.123 on port 1883.
| 1544984469: Socket error on client <unknown>, disconnecting.
| 1544984470: New connection from 123.123.123.123 on port 1883.
| 1544984470: Socket error on client <unknown>, disconnecting.
| 1544984471: New connection from 123.123.123.123 on port 1883.
| 1544984471: Socket error on client <unknown>, disconnecting.
| 1544984473: New connection from 123.123.123.123 on port 1883.
`-
Fail2banのバージョンは0.9.6-1.el6.1です。 Centos 6サーバーで実行されます。
ベストアンサー1
まあ、私はやった。質問は次のとおりです。
正規表現(failregex、ignoreregex)は、日付/時刻がログ行から削除されたと仮定します(fail2banがATMで内部的に機能する方法です)。源泉:https://fail2ban.readthedocs.io/en/latest/filters.html
フィルタリングするには、maxlines = 2を追加する必要があります。
最終/作業フィルタは次のとおりです。
[Init]
maxlines = 2
[Definition]
failregex = .+ New connection from <HOST> on port \d+\.\n.+Socket error on client <unknown>
ignoreregex =