mongodb용 Fail2ban 필터

mongodb용 Fail2ban 필터

Fail2Ban 버전: 0.10.2

MongoDB 원격 인증 실패를 위해 많은 필터 구성 파일을 시도했지만 그 중 어느 것도 작동하지 않았습니다. 문제는 실패 정규 표현식에 있으며 적절한 정규 표현식을 찾을 수 없다는 것을 알았습니다.

{"$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"}}

이것은 실패한 시도에서 얻은 몽고 로그입니다. 정규식에서 <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. https://github.com/fail2ban/fail2ban/issues/3046

곧:

[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+"

관련 정보