Настроим Fail2Ban, данная служба позволяет защитить сервер от флуда, подбора паролей к службам. Ежедневно к серверам обращаются тысячи сторонних сервисов и часть из них является вредоносными. С помощью Fail2Ban мы будем блокировать ip адреса при нескольких неуспешных попыток авторизации.
В данном руководстве предполагается, что сам почтовый сервер у Вас уже настроен и необходимо установить защиту от подбора паролей и другой нежелательной сетевой активности. Подробнее про настройку почтового сервера можно посмотреть тут:
Вы также можете заказать VPS с уже преднастроенной операционной системой и получить готовый корпоративный почтовый сервер по цене VPS сервера.
1. Установим службу Fail2Ban
apt install fail2ban
Отредактируем настройки
vi /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 авторизации
Добавим в файл
vi /etc/fail2ban/jail.d/defaults-debian.conf
[roundcube-auth]
enabled = true
filter = roundcube-authport = http,https
action = iptables[name=Roundcube-auth, port=http, protocol=tcp]logpath = /usr/share/nginx/html/webmail/logs/errors.log
bantime = 120mmaxretry = 3
findtime = 60m
При трех неудачных попытках авторизации в веб почте блокируем доступ на 2 часа.
Перезапустим службу:
service fail2ban restart
Настройка фильтра завершена.