Я установил fail2ban с odoo 13.
Ниже приведены моя конфигурация и пример вывода, но я не могу показаться чтобы выяснить, почему он не фильтруется.
пользователь @ tempdev: / etc / fail2ban # fail2ban-regex -v /var/log/odoo/odoo.log /etc/fail2ban/filter.d/odoo-login.conf
Running tests
=============
Use failregex filter file : odoo-login, basedir: /etc/fail2ban
Use log file : /var/log/odoo/odoo.log
Use encoding : UTF-8
Results
=======
Failregex: 0 total
|- #) [# of hits] regular expression
| 1) [0] ^\d+ INFO \S+ \S+ Login failed for db:\S+ login:\S+ from <HOST>
`-
user@tempdev:/etc / fail2ban # cat /var/log/odoo/odoo.log | grep «Ошибка входа в систему»
2020-12-11 12:54:06,442 1620 INFO TestSRV odoo.addons.base.models.res_users: Login failed for db:TestSRV login:asfd from 1.2.23.3
2020-12-11 13:11:20,945 1620 INFO TestSRV odoo.addons.base.models.res_users: Login failed for db:TestSRV login:asfd from 1.2.23.3
2020-12-11 13:12:07,928 1620 INFO TestSRV odoo.addons.base.models.res_users: Login failed for db:TestSRV login:asdf from 1.2.23.3
Fail2ban, безусловно, вырезает часть строки, совпадающей с шаблоном даты, но пробел все еще остается, поэтому вам нужно добавить \s*
после привязки перед \d+
:
-failregex = ^\d+ INFO \S+ \S+ Login failed for db:\S+ login:\S+ from <HOST>
+failregex = ^\s*\d+ INFO \S+ \S+ Login failed for db:\S+ login:\S+ from <HOST>