Если вы используете веб-интерфейс 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://ваш-домен/webmailsudo fail2ban-client status roundcubeЕсли IP появился в списке banned — поздравляю, защита работает!
Теперь ваш Roundcube защищён от брутфорса. После 3 неудачных попыток входа IP-адрес будет автоматически заблокирован на 24 часа. Это сильно снижает риск подбора пароля и перегрузки сервера.
Fail2Ban — мощный инструмент, и его можно настроить под любое приложение: SSH, Nginx, WordPress, OwnCloud и т.д. Roundcube — отличный пример, как защитить веб-интерфейс с минимальными усилиями.
Совет: сохраните эту статью — в следующий раз будет проще!
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!