fail2ban: Как добавить собственное правило

Как добавить новое правило (filter + jailfail2ban для своего сервиса.

1. Определить регулярное выражение

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

Passcode incorrect; userId [100500]; 80.80.100.100

Вы можете увидеть сообщение о некорректном вводе пароля с указанием внешнего IP адреса пользователя. Мы должны заменить IP адрес на специальный тег <HOST> внутри выражения, чтобы fail2ban смог по нему выцепить из строки нужный IP адрес. У меня получилась такое выражение:

Passcode incorrect; mailId \[.*\]; <HOST>

2. Создать фильтр

Создаем новый файл в директории filter.d , к примеру : /etc/fail2ban/filter.d/myservice.conf с нашим выражением:

[Definition]
failregex = Passcode incorrect; mailId \[.*\]; <HOST>

Если вы хотите добавить какие-либо исключения из правил (фильтра), добавьте ignoreregex. По одному выражению на строку. Например:

ignoreregex = 192.168.0.1

Затем необходимо протестировать наш фильтр командой fail2ban-regex:

fail2ban-regex /var/log/myservice.log /etc/fail2ban/filter.d/myservice.conf /etc/fail2ban/filter.d/myservice.conf

формат: fail2ban-regex <лог файл> <фильтр> <ignore-фильтр>

Так что если вы используете исключающие выражения (ignoreregex), вы должны обязательно указать третий параметр (тот же конфигурационный файл)! В противном случаи он не будет протестирован.

В результате теста получаем что-то типа:

Lines: 15390 lines, 1 ignored, 5 matched, 15384 missed

3. Создать правило

Создаем новый файл в директории jail.d , к примеру myservice.conf с описанием правила бана по фильтру:

# имя сервиса
[myservice]
# вкл / откл
enabled  = true
# порты для бана пользователю (число или текст)
port     = http,https
# имя фильтра из предыдущего шага
filter   = myservice
# лог файл сервиса для разбора
logpath  = /var/log/myservice.log
# правило бана:
# за 5 раз в течении 1 минуты (60 секунд)
maxretry = 5
findtime = 60
# баним на 10 минут (600 секунд)
bantime = 600

Тестируем:

service fail2ban restart
fail2ban-client status
fail2ban-client status myservice

Ссылки по теме:

Tagged with:

Добавить комментарий

Ваш e-mail не будет опубликован.