Почему fail2ban не работает?

Добрый день!

У нас настроена система на базе Debian 12 с использованием iptables, fail2ban, postfix и dovecot. 

Нам нужно обеспечить защиту 143 порта от подбора паролей (для фильтрации блокировок мы используем конфигурацию от fail2ban). 

Вот настройки, которые у нас есть:

1. Конфигурация для fail2ban в файле /etc/fail2ban/jail.d/dovecot.conf:
```
[dovecot]
enabled = true
```

2. Фильтр fail2ban для dovecot, размещённый в файле /etc/fail2ban/filter.d/dovecot.conf:
```
# Fail2Ban filter Dovecot authentication and pop3/imap server
#

[INCLUDES]
before = common.conf

[Definition]
_daemon = (?:dovecot(?:-auth)?|auth)
_auth_worker = (?:dovecot: )?auth(?:-worker)?
_auth_worker_info = (?:conn \w+:auth(?:-worker)? \([^\)]+\): auth(?:-worker)?<\d+>: )?
_bypass_reject_reason = (?:: (?:\w+\([^\):]*\) \w+|[^\(]+))*

prefregex = ^%(__prefix_line)s(?:%(_auth_worker)s(?:\([^\)]+\))?: )?(?:%(__pam_auth)s(?:\(dovecot:auth\))?: |(?:pop3|imap|managesieve|submission)-login: )?(?:Info: )?%(_auth_worker_info)s<F-CONTENT>.+</F-CONTENT>$

failregex = ^authentication failure; logname=<F-ALT_USER1>\S*</F-ALT_USER1> uid=\S* euid=\S* tty=dovecot ruser=<F-USER>\S*</F-USER> rhost=<HOST>(?:\s+user=<F-ALT_USER>\S*</F-ALT_USER>)?\s*$
            ^(?:Aborted login|Disconnected|Remote closed connection|Client has quit the connection)%(_bypass_reject_reason)s \((?:auth failed, \d+ attempts(?: in \d+ secs)?|tried to use (?:disabled|disallowed) \S+ auth|proxy dest auth failed)\):(?: user=<<F-USER>[^>]*</F-USER>>,)?: (?: method=\S+,)? rip=<HOST>(?:[^>]*(?:, session=<\S+>)?)\s*$
            ^pam(\S+,<HOST>(?:,\S*)?): pam_authenticate() failed: (?:User not known to the underlying authentication module: \d+ Time(s)?|Auth...
```

Как можно настроить защиту 143 порта, чтобы эффективно предотвратить попытки подбора паролей с использованием данной конфигурации fail2ban?
  • 7 ноября 2024 г. 13:43
Ответы на вопрос 2
Для того чтобы Fail2ban эффективно блокировал попытки подбора паролей на 143 порту (IMAPS/POP3), необходимо убедиться, что настройка фильтрации и конфигурация jails для вашей системы корректны. Вот несколько шагов и рекомендаций, которые помогут вам исправить ситуацию:

### 1. Убедитесь, что Fail2ban запущен
Проверьте статус Fail2ban с помощью команды:
```bash
sudo systemctl status fail2ban
```
Если он не запущен, запустите его:
```bash
sudo systemctl start fail2ban
```

### 2. Проверьте логи Dovecot
Fail2ban зависит от логов Dovecot, чтобы обнаруживать атаки. Убедитесь, что Dovecot действительно пишет лог-сообщения о неудачных попытках аутентификации.

Откройте файл логов, который используется вашим Dovecot, например:
```bash
tail -f /var/log/mail.log
```
Или, если Dovecot настроен на запись логов в другое место, проверьте соответствующий файл.

### 3. Проверьте правильность конфигурации Dovecot
Убедитесь, что Dovecot настроен на использование правильного формата журналов. Ваша конфигурация Dovecot (например, в `/etc/dovecot/conf.d/10-log.conf`) должна смотреть как-то так:
```conf
mail_log, auth_log = yes
```

### 4. Проверьте regex в фильтре
Убедитесь, что регулярные выражения в фильтре `/etc/fail2ban/filter.d/dovecot.conf` соответствуют логам Dovecot. Вы можете протестировать регулярные выражения на примерах строк из логов с помощью утилиты `fail2ban-regex`:
```bash
sudo fail2ban-regex /path/to/logfile.log /etc/fail2ban/filter.d/dovecot.conf
```
Это покажет, какие строки не удаётся сопоставить с правилами. Если есть ошибки в фильтре, их нужно исправить.

### 5. Протестируйте jails
Проверьте активные jails с помощью команды:
```bash
sudo fail2ban-client status
```
Вы должны увидеть ваш jail для Dovecot в списке. Если его нет, проверьте конфигурацию jails.

### 6. Настройки jail
Добавьте дополнительные настройки для улучшения защиты в вашем файле `/etc/fail2ban/jail.d/dovecot.conf`:
```conf
[dovecot]
enabled = true
filter = dovecot
action = iptables[name=dovecot, port=143, protocol=tcp]
logpath = /var/log/mail.log  ; укажите правильный путь к логам
maxretry = 5                  ; Максимальное количество попыток
findtime = 600                ; Время (в секундах) для поиска попыток
bantime = 86400               ; Время (в секундах) блокировки
```

### 7. Перезапустите Fail2ban
После внесения изменений необходимо перезапустить Fail2ban:
```bash
sudo systemctl restart fail2ban
```

### 8. Проверка блокировок
После усиления настроек можете проверить, как происходят блокировки, используя:
```bash
sudo fail2ban-client status dovecot
```
Это покажет количество заблокированных IP-адресов и другую информацию о статусе.

Если после выполнения всех шагов проблема не решена, сообщите, пожалуйста, какие именно логи вы наблюдаете во время тестирования, и это поможет выяснить, что может быть не так с вашей конфигурацией или логами.
Проблема решена 

Создаем mcedit /etc/fail2ban/jail.local

[dovecot]
enabled = true
filter = dovecot
port = imap,imaps,pop3,pop3s
action = iptables-multiport[name=dovecot, port="imap,imaps,pop3,pop3s", protocol=tcp]
bantime = 60m
maxretry = 3
findtime = 60m
Похожие вопросы