MongoDB の Fail2ban フィルター

MongoDB の Fail2ban フィルター

Fail2Ban バージョン: 0.10.2

MongoDB リモート認証の失敗について、多くのフィルター構成ファイルを試しましたが、どれも機能しませんでした。問題は failregex にあり、適切な正規表現を思い付くことができないことがわかりました。

{"$date":"2021-08-10T17:27:13.498+05:30"},"s":"I",  "c":"ACCESS",   "id":20249,   "ctx":"conn187","msg":"Authentication failed","attr":{"mechanism":"SCRAM-SHA-256","speculative":true,"principalName":"Admin","authenticationDatabase":"admin","remote":"123.456.789.123:60054","extraInfo":{},"error":"AuthenticationFailed: SCRAM authentication failed, storedKey mismatch"}}

これは失敗した試行で取得した mongo ログです。正規表現で <HOST>、<ADDR> を使用しようとしましたが、<HOST> は 0.0.0.0 を返し、<ADDR> は 3:6005 (IP の最後の桁とポートの 4 桁) を返します。

このログをフィルタリングするための適切な正規表現は何でしょうか?

試した正規表現

^(.*Authentication failed.*)|(.*<ADDR>.*)|$
^(.*Authentication failed.*)|(.*<HOST>.*)|$

答え1

  1. https://github.com/fail2ban/fail2ban/issues/2932
  2. 参考:

まもなく:

[Definition]

datepattern = ^\{"t":\{"\$date":"%%Y-%%m-%%dT%%H:%%M:%%S\.%%f%%z"}\s*,\s*
_groupre = (?:"(?!(?:msg|attr|client|remote)\b)\w+":(?:"[^"]+"|\w+)\s*[,\}]\s*)
failregex = ^%(_groupre)s*"msg":"Authentication failed"\s*,\s*%(_groupre)s*"attr"\s*:\s*\{%(_groupre)s*"(?:client|remote)":"<ADDR>:\d+"

関連情報