Как настроить fail2ban для защиты MariaDB MySQL

В новых версиях MariaDB поменялся формат времени при записи логов. Из-за этого стандартный префикс в fail2ban в фильтре mysqld-auth.conf больше не распознает строки в error.log файле. Шаблон времени требуется указать вручную datepattern = ^%%Y-%%m-%%d\s+%%H:%%M:%%S

Рабочий фильтр:

# Fail2Ban filter for unsuccesfull MySQL authentication attempts
#
#
# To log wrong MySQL access attempts add to /etc/my.cnf in [mysqld]:
# log-error=/var/log/mysqld.log
# log-warning = 2
#
# If using mysql syslog [mysql_safe] has syslog in /etc/my.cnf

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

_daemon = mysqld

failregex = Access denied for user '\w+'@'<HOST>' (to database '[^']*'|\(using password: (YES|NO)\))*\s*$

ignoreregex = 

[Init]
datepattern = ^%%Y-%%m-%%d\s+%%H:%%M:%%S

Данный файл обзываем mysqld-auth.conf и кидаем в каталог /etc/fail2ban/filter.d/

В /etc/fail2ban/jail.conf вносим такие правки:

[mysqld-auth]
port     = 3306
logpath  = /var/log/mysql/error.log
backend  = %(mysql_backend)s

В /etc/fail2ban/jail.local включаем фильтр

[mysqld-auth]
enabled = true

Перезапускаем сервис:

systemctl restart fail2ban

Наблюдаем в реалтайм за состоянием:

watch fail2ban-client status mysqld-auth

И пробуем авторизоваться:

mysql -P3306 -h IP_СЕРВЕРА

Не забудьте перед всей настройкой установить mysql переменную log-warning = 2, чтобы ошибки авторизации записывались, и проверить расположение самого error.log файла.

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *