Рейтинг:1

Фильтр Fail2ban для mongodb

флаг sv

Версия Fail2Ban: 0.10.2

Я пробовал множество файлов конфигурации фильтров для удаленной аутентификации MongoDB, но ни один из них не работал, я решил, что проблема связана с отказоустойчивым регулярным выражением, и я не могу придумать правильное регулярное выражение.

{"$date":"2021-08-10T17:27:13.498+05:30"},"s":"I", "c":"ДОСТУП", "id":20249, "ctx":" conn187","msg":"Аутентификация не удалась","attr":{"механизм":"SCRAM-SHA-256","спекулятивный":true,"principalName":"Администратор","authenticationDatabase":"admin" ,"remote":"123.456.789.123:60054","extraInfo":{},"error":"AuthenticationFailed: Ошибка аутентификации SCRAM, несоответствие сохраненного ключа"}}

Это журнал монго, который я получаю при неудачной попытке. Я пытался использовать <HOST>, <ADDR> в регулярном выражении, но <HOST> дает 0.0.0.0, а <ADDR> дает 3:6005 (последняя цифра IP и 4 цифры порта).

Каким было бы правильное регулярное выражение для фильтрации этого журнала?

Регулярное выражение, которое я пробовал

^(.*Аутентификация не удалась.*)|(.*<АДРЕС>.*)|$
^(.*Ошибка аутентификации.*)|(.*<HOST>.*)|$
флаг sv
@MichaelHampton Я добавил регулярное выражение, которое использовал. С упомянутым регулярным выражением fail2ban смог обнаружить после максимальных повторных попыток, но не получил IP-адрес должным образом.
mforsetti avatar
флаг tz
а fail2ban для mongodb? Вы должны выставить свою базу данных в общедоступный Интернет?
флаг sv
@mforsetti база данных, которую я выкладываю в общедоступный Интернет, используется только для тестирования во время разработки, поэтому это не должно быть проблемой. Кроме того, причина установки fail2ban состоит в том, чтобы действовать как дополнительная защита, чтобы компенсировать это.
Рейтинг:0
флаг il
  1. https://github.com/fail2ban/fail2ban/issues/2932
  2. https://github.com/fail2ban/fail2ban/issues/3046

коротко:

[Определение]

datepattern = ^\{"t":\{"\$date":"%%Y-%%m-%%dT%%H:%%M:%%S\.%%f%%z"} \SS*
_groupre = (?:"(?!(?:msg|attr|client|remote)\b)\w+":(?:"[^"]+"|\w+)\s*[,\}]\ с*)
failregex = ^%(_groupre)s*"msg":"Ошибка аутентификации"\s*,\s*%(_groupre)s*"attr"\s*:\s*\{%(_groupre)s*"( ?:клиент|удаленный)":"<АДРЕС>:\d+"
флаг sv
Это работает, спасибо за решение. Что касается размещения базы данных в общедоступном Интернете, насколько это будет безопасно с надежной парольной фразой и реализованным fail2ban?
sebres avatar
флаг il
Сложно сказать. Fail2ban просто уменьшит риск успеха брутфорса (например, резко уменьшит количество попыток), но, например, не защитит от некоторых уязвимостей (если таковые существуют или будут введены в будущем). Поэтому, если это возможно, лучше защитить его с помощью брандмауэра (например, сетевой фильтр, вносящий в белый список некоторые хосты/адреса, которым разрешено взаимодействовать с mongodb, или http- или стучать по портам и т. д.).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.