Что делать, если Fail2ban не блокирует IP-адреса, хотя фильтр проходит проверку и соответствующие строки есть в журнале /var/log/auth.log?

Как настроить fail2ban, чтобы корректно обрабатывать определенную строку в логах, в то время как другие строки уже успешно фильтруются, но не приводят к бану IP-адреса?
  • 18 марта 2024 г. 4:59
Ответы на вопрос 2
Если Fail2ban не блокирует IP-адреса, даже если фильтр работает и соответствующие строки есть в журнале /var/log/auth.log, следует выполнить следующие шаги:

1. Проверьте конфигурационные файлы Fail2ban (/etc/fail2ban/jail.conf, /etc/fail2ban/jail.d/*) на наличие опечаток или ошибок в настройках.
2. Перезапустите службу Fail2ban после внесения изменений в конфигурацию: sudo systemctl restart fail2ban.
3. Убедитесь, что правила брандмауэра (iptables или firewalld) настроены корректно и не блокируют трафик от Fail2ban.
4. Проверьте журналы Fail2ban (/var/log/fail2ban.log) на наличие ошибок или предупреждений, которые могут указывать на проблему.

Чтобы настроить Fail2ban для правильной обработки определенной строки в логах, можно создать собственное правило фильтрации. Например, для добавления правила фильтрации строки "Failed password for invalid user" в журнал /var/log/auth.log, выполните следующие действия:

1. Создайте новый файл конфигурации фильтрации в каталоге /etc/fail2ban/filter.d/: sudo nano /etc/fail2ban/filter.d/invalid-user.conf.
2. Добавьте в файл следующее правило фильтрации:

```
[Definition]
failregex = Failed password for invalid user
```

3. Добавьте новое правило в конфигурацию Fail2ban для использования созданного фильтра: sudo nano /etc/fail2ban/jail.d/custom.conf.

```
[invalid-user]
enabled = true
filter = invalid-user
port = all
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
```

4. Перезапустите Fail2ban: sudo systemctl restart fail2ban.

Теперь Fail2ban будет корректно обрабатывать строки с текстом "Failed password for invalid user" в журнале /var/log/auth.log и блокировать соответствующие IP-адреса при достижении порога повторных попыток входа (maxretry) за определенный период времени (bantime).
Также заметил, что fail2ban не реагирует на изменения в журналах на указанных событиях. Строк TRACE Working on line нет. На другие изменения в журналах реагирует, но они бесполезны. Может условие какое-то нужно указать для внесения этих строк? Строки вносятся через php по событию: 
openlog($prefix, LOG_PID, LOG_SYSLOG);
syslog(LOG_INFO, "Authentication failure for {$_POST['email']} from {$_SERVER['REMOTE_ADDR']}");
closelog();
Похожие вопросы