Обновить до Про

Защита почтового сервера от подбора паролей с помощью Fail2Ban

Wall
2024-01-26 06:01:37

Настроим Fail2Ban, данная служба позволяет защитить сервер от флуда, подбора паролей к службам. Ежедневно к серверам обращаются тысячи сторонних сервисов и часть из них является вредоносными. С помощью Fail2Ban мы будем блокировать ip адреса при нескольких неуспешных попыток авторизации.

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


1. Установим службу Fail2Ban 

# apt install fail2ban

Отредактируем настройки

# nano /etc/fail2ban/jail.d/defaults-debian.conf

[sshd]
enabled = true

[postfix]
enabled = true
filter = postfix
port = smtp,465,submission,imap,imaps,pop3,pop3s
action = iptables[name=Postfix, port=smtp, protocol=tcp]
logpath = /var/log/mail.log
bantime = 120m
maxretry = 3
findtime = 60m

В данной конфигурации мы включили защиту служб ssh и postfix, которые будет обрабатывать log файл и блокировать ip адреса при нескольких неудачных попытках авторизации.

Для проверки работы наличия совпадений используйте команду

# fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/postfix.conf

Мы использовали готовый фильтр по умолчанию и в нашем случае он сразу оказался рабочим.

2. Запуск службы

# systemctl enable --now fail2ban

Мы запустили службу и добавили в автозапуск.

Теперь можно проверить лог:

# more /var/log/fail2ban.log

3. Управление службой

Для просмотра состояния, а также последней активности воспользуйтесь командой

fail2ban-client status - Она покажет все джейлы и их состояние.

fail2ban-client status postfix - покажет активность по джейлу, включая заблокированные в данный момент ip адреса.

Для разблокировки ip адреса используйте команду

# fail2ban-client set postfix unbanip xxx.xxx.xxx.xxx

Где: postfix - имя джейла, а xxx.xxx.xxx.xxx - ip адрес из списка #fail2ban-client status postfix

4. Добавим джейл для Rouncube авторизации

Добавим в файл

# nano /etc/fail2ban/jail.d/defaults-debian.conf

[roundcube-auth]
enabled    = true
filter    = roundcube-auth
port    = http,https
action    = iptables[name=Roundcube-auth, port=http, protocol=tcp]
logpath    = /usr/share/nginx/html/webmail/logs/errors.log
bantime    = 120m
maxretry = 3
findtime = 60m

При трех неудачных попытках авторизации в веб почте блокируем доступ на 2 часа.

Перезапустим службу:

# service fail2ban restart

Настройка фильтра завершена.