Назад | Перейти на главную страницу

Fail2Ban Regex не соответствует

Я не могу заставить мое регулярное выражение отказа fail2ban соответствовать записям журнала.

Ниже приводится образец записи журнала:

Failed login attempt {"xForwardedFor":"192.168.0.38","remoteAddress":"::ffff:127.0.0.1","userAgent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0","timestamp":1573556557}

Это моя конфигурация:

[Definition]
failregex= ^Failed login attempt {\"xForwardedFor\":\"<HOST>\"
ignoreregex =
datepattern = "timestamp":{EPOCH}}$

Fail2ban не возвращает совпадение во время работы или при тестировании с помощью fail2ban-regex следующим образом.

fail2ban-regex 'Failed login attempt {"xForwardedFor":"192.168.0.38","remoteAddress":"::ffff:127.0.0.1","userAgent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0","timestamp":1573556557}' '^Failed login attempt {\"xForwardedFor\":\"<HOST>\"'

Кажется, что ваш файл журнала не начинается с отметок времени. На основе Руководство,

  • Чтобы строка журнала соответствовала вашему failregex, она фактически должна совпадать в двух частях: начало строки должно соответствовать шаблону временной метки или регулярному выражению, а оставшаяся часть строки должна соответствовать вашему failregex. Если failregex привязан к ведущему ^, то привязка относится к началу оставшейся части строки после отметки времени и промежуточного пробела.

  • Шаблон или регулярное выражение для соответствия отметке времени в настоящее время не документированы и недоступны для чтения или установки пользователями. См. Ошибку Debian № 491253. Это проблема, если ваш журнал имеет формат метки времени, которого не ожидает fail2ban, поскольку тогда он не сможет сопоставить ни одной строки. Из-за этого вы должны тестировать любой новый failregex по образцу строки журнала, как в примерах ниже, чтобы быть уверенным, что он будет соответствовать. Если fail2ban не распознает вашу временную метку журнала, у вас есть два варианта: либо перенастроить ваш демон для регистрации с временной меткой в ​​более распространенном формате, например, в приведенной выше строке журнала; или отправьте отчет об ошибке с просьбой включить ваш формат временной метки.

Я попробовал ваш случай на своей машине, поставив метки времени в начале, Fail2Ban распознает шаблон.

~$ sudo fail2ban-regex '1573556557 Failed login attempt {"xForwardedFor":"192.168.0.38","remoteAddress":"::ffff:127.0.0.1","userAgent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0","timestamp":1573556557}' 'Failed login attempt {\"xForwardedFor\":\"<HOST>'
       
Running tests
=============

Use   failregex line : Failed login attempt {\"xForwardedFor\":\"<HOST>
Use      single line : 1573556557 Failed login attempt {"xForwardedFor":"...


Results
=======

Failregex: 1 total
|-  #) [# of hits] regular expression
|   1) [1] Failed login attempt {\"xForwardedFor\":\"<HOST>
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [1] {^LN-BEG}Epoch
`-

Lines: 1 lines, 0 ignored, 1 matched, 0 missed
[processed in 0.01 sec]

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

Случай 1

Случай 2

Надеюсь, это поможет.