Если вы используете веб-интерфейс Roundcube для почты, то наверняка замечали, как боты и скрипты постоянно пытаются подобрать пароли. В этой статье я покажу, как настроить Fail2Ban для защиты Roundcube — чтобы после нескольких неудачных попыток входа IP-адрес автоматически блокировался.
Сначала нужно понять, где установлен Roundcube и где он хранит логи.
sudo ls -la /var/www/html/webmail sudo ls -la /var/log/roundcube/
В моём случае:
/var/www/html/webmail
/var/log/roundcube/errors.log
Смотрим, есть ли в логах строки с неудачными входами:
sudo tail -f /var/log/roundcube/errors.log
Пример строки, которую мы ищем:
[08-Aug-2025 17:44:25 +0300]:IMAP Error: Login failed for вуы against localhost from 77.37.134.141. AUTHENTICATE PLAIN: Authentication failed.
Если таких строк нет — Fail2Ban не сможет ничего забанить. Убедитесь, что в Roundcube включено логирование неудачных входов.
Откройте конфиг Roundcube:
sudo nano /var/www/html/webmail/config/config.inc.php
Добавьте или проверьте строки:
$config['log_failed_logins'] = true; $config['log_logins'] = true; $config['log_driver'] = 'file'; $config['log_file'] = '/var/log/roundcube/errors.log';
Это включит запись всех попыток входа, включая неудачные.
Создаём файл фильтра:
sudo nano /etc/fail2ban/filter.d/roundcube.conf
Вставляем регулярное выражение, которое ловит неудачные входы:
[Definition] failregex = ^$$.*?$$: <.*?> IMAP Error: Login failed for .*? from\\..*$ ignoreregex =
Важно: используется
— это макрос Fail2Ban для IP-адреса.
Проверяем, сколько совпадений находит фильтр:
sudo fail2ban-regex /var/log/roundcube/errors.log /etc/fail2ban/filter.d/roundcube.conf
Если видите:
Failregex: 692 total
— значит, фильтр работает!
Открываем основной конфиг Fail2Ban:
sudo nano /etc/fail2ban/jail.local
Добавляем секцию для Roundcube:
[roundcube] enabled = true port = http,https filter = roundcube logpath = /var/log/roundcube/errors.log maxretry = 3 bantime = 1d findtime = 1h
Чтобы не забанить себя, добавьте свой IP в ignoreip
:
ignoreip = 127.0.0.1/8 77.37.134.141 188.127.243.55
sudo systemctl restart fail2ban
sudo fail2ban-client status roundcube
Если всё настроено правильно, вы увидите:
Currently banned: 1 Banned IP list: 188.255.78.103
С чужого устройства или с другого IP:
http://ваш-домен/webmail
sudo fail2ban-client status roundcube
Если IP появился в списке banned — поздравляю, защита работает!
Теперь ваш Roundcube защищён от брутфорса. После 3 неудачных попыток входа IP-адрес будет автоматически заблокирован на 24 часа. Это сильно снижает риск подбора пароля и перегрузки сервера.
Fail2Ban — мощный инструмент, и его можно настроить под любое приложение: SSH, Nginx, WordPress, OwnCloud и т.д. Roundcube — отличный пример, как защитить веб-интерфейс с минимальными усилиями.
Совет: сохраните эту статью — в следующий раз будет проще!
Внимание: Cтатьи здесь сгенерированы нейросетью, пока не правил ошибки, только запустил его да и не до этого. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я реально делал минимум один раз. Серьёзно.
Сервера стоят, клиенты довольны, дата-центры не горят.
Это не просто копипаста — это опыт, выстраданный в бою, просто пересказанный через ИИ.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах —
вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!