Безопасность · 4 min read · Dec 29, 2025
Настройка fail2ban с SquirrelMail на Debian Lenny 5.0/ISPConfig 3
Настройка fail2ban с SquirrelMail на Debian Lenny 5.0/ISPConfig 3
В этой статье я покажу, как предотвратить атаки грубой силы с помощью Fail2ban против вашего веб-входа SquirrelMail, используя плагин Squirrel Logger.
1. Требования
Убедитесь, что fail2ban и SquirrelMail установлены на машине Debian Lenny/ISPConfig 3.
Чтобы установить ISPConfig 3 + SquirrelMail, пожалуйста, следуйте этому руководству.
Чтобы установить fail2ban, пожалуйста, следуйте этому руководству.
2. Squirrel Logger
Скачайте и установите Squirrel Logger:
cd /usr/share/squirrelmail/plugins
wget http://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fsquirrel_logger-2.3-1.2.7.tar.gz
tar zxvf squirrel_logger-2.3-1.2.7.tar.gz
cd squirrel_logger
cp config_example.php config.phpНастройте Squirrel Logger:
vi config.phpЕсли ваш сервер не использует местное время GMT, пожалуйста, измените $sl_use_GMT = 1 на $sl_use_GMT = 0:
...
// Логировать даты в GMT? Если вы этого не сделаете, даты будут
// записываться в том часовом поясе, в котором находится каждый пользователь (или
// установлен в их личных предпочтениях)
//
// 1 = да
// 0 = нет
//
$sl_use_GMT = 0;
...Измените местоположение вашего файла журнала с $sl_logfile = $data_dir . ‘squirrelmail_access_log’; на $sl_logfile = ‘/var/log/squirrelmail.log’;:
...
// Местоположение вашего файла журнала при записи в файл.
// Убедитесь, что пользователь, от имени которого работает ваш веб-сервер, может записывать
// в этот файл. Используйте переменную $data_dir, если вы
// хотите разместить файл журнала в каталоге данных SquirrelMail.
//
// Применимо только, если $sl_logs включает "file".
//
// $sl_logfile = $data_dir . 'squirrelmail_access_log';
$sl_logfile = '/var/log/squirrelmail.log';
...Измените формат даты, чтобы он соответствовал регулярному выражению fail2ban с $sl_dateformat = ‘m/d/Y H:i:s’; на $sl_dateformat = ‘M j H:i:s’;:
...
// Укажите, какой формат даты вы хотите
//
// См. руководство PHP по функции даты для помощи
// на http://www.php.net/manual/function.date.php
//
// примеры:
//
// 'm/d/y H:i:s' == 03/10/2001 05:16:08
// 'F j, Y, g:i a' == March 10, 2001, 5:16 am
// 'D M j Y H:i:s T' == Sat Mar 10 2001 15:16:08 CDT
//
// $sl_dateformat = 'm/d/Y H:i:s';
$sl_dateformat = 'M j H:i:s';
... Создайте новый файл squirrelmail.log в /var/log/:
touch /var/log/squirrelmail.log
chown www-data:www-data /var/log/squirrelmail.log
chmod 640 /var/log/squirrelmail.logОчистите установку:
cd ..
rm squirrel_logger-2.3-1.2.7.tar.gzНастройте SquirrelMail для использования плагина Squirrel Logger:
squirrelmail-configure...
7. Сообщение дня (MOTD)
8. Плагины
9. База данных
...Выберите “Плагины”, в моем случае, номер 8.
...
18. spamcop
19. squirrel_logger
20. squirrelspell
21. test
...Выберите squirrel_logger, в моем случае, номер 19.
...
Установленные плагины
1. delete_move_next
2. squirrelspell
3. newmail
4. squirrel_logger
...Теперь squirrel_logger является частью установленных плагинов.
Сохраните данные “S” и выйдите “Q”.
3. Конфигурация Fail2ban
Настройте fail2ban для использования журнала SquirrelMail:
cd /etc/fail2banОткройте и добавьте следующие строки в файл jail.local. Если у вас нет этого файла, используйте файл jail.conf по умолчанию.
vi jail.local[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/log/squirrelmail.log
bantime = 300
maxretry = 4 Пожалуйста, убедитесь, что bantime (в секундах) и maxretry установлены в соответствии с вашими требованиями.
В каталоге filter.d создайте файл squirrelmail.conf со следующим содержимым:
cd filter.d
vi squirrelmail.conf# Конфигурационный файл Fail2Ban
#
# Автор: Bill Landry ((email_protected))
#
# $Revision: 510 $
[Definition]
# Опция: failregex
# Примечания.: регулярное выражение для сопоставления сообщений об ошибках пароля в файле журнала. Хост
# должен быть сопоставлен группой с именем "host". Тег "" может
# использоваться для стандартного сопоставления IP/имени хоста и является только псевдонимом для
# (?:::f{4,6}:)?(?P+)
# Значения: ТЕКСТ
failregex = \[LOGIN_ERROR\].*from : Unknown user or password incorrect
# Опция: игнорировать регулярное выражение
# Примечания.: регулярное выражение для игнорирования. Если это регулярное выражение совпадает, строка игнорируется.
# Значения: ТЕКСТ
ignoreregex = ВАЖНО: если вы используете другой язык, кроме английского, пожалуйста, измените строку “failregex” на текст, который показывает squirrelmail.log в пункте 5.
Пример: с испанским языком я получаю это в файле журнала.
Aug 20 15:26:06 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Usuario o contraseña incorrecto. Итак, я вношу это изменение:
failregex = \[LOGIN_ERROR\].*from : Usuario o contraseña incorrecto …и перезапускаю fail2ban.
/etc/init.d/fail2ban restart5. Тестирование установки
cd /var/log
tail -f squirrelmail.logВойдите “3” раза в веб-интерфейс SquirrelMail, используя “неправильные пароли”.
Эта процедура покажет вам неудачные попытки входа в терминальных окнах:
Aug 19 13:57:20 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Unknown user or password incorrect.
Aug 19 13:57:34 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Unknown user or password incorrect.
Aug 19 13:57:46 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Unknown user or password incorrect.Закройте файл squirrelmail.log:
Ctrl-cУбедитесь, что fail2ban-regex может поймать эти ошибки:
fail2ban-regex /var/log/squirrelmail.log /etc/fail2ban/filter.d/squirrelmail.confЗапуск тестов
=============
Используйте файл регулярного выражения : /etc/fail2ban/filter.d/squirrelmail.conf
Используйте файл журнала : /var/log/squirrelmail.log
Результаты
=======
Failregex
|- Регулярные выражения:
| [1] \[LOGIN_ERROR\].*from : Unknown user or password incorrect
|
`- Количество совпадений:
[1] 3 совпадения(ий)
Ignoreregex
|- Регулярные выражения:
|
`- Количество совпадений:
Резюме
=======
Найденные адреса:
[1]
200.113.105.235 (Wed Aug 19 13:57:20 2009)
200.113.105.235 (Wed Aug 19 13:57:34 2009)
200.113.105.235 (Wed Aug 19 13:57:46 2009)
Попадания шаблона даты:
3 попадания(ий): Месяц День Час:Минуты:Секунды
0 попадания(ий): День недели Месяц День Час:Минуты:Секунды Год
0 попадания(ий): День недели Месяц День Час:Минуты:Секунды
0 попадания(ий): Год/Месяц/День Час:Минуты:Секунды
0 попадания(ий): День/Месяц/Год Час:Минуты:Секунды
0 попадания(ий): День/Месяц/Год:Час:Минуты:Секунды
0 попадания(ий): Год-Месяц-День Час:Минуты:Секунды
0 попадания(ий): День-Месяц-Год Час:Минуты:Секунды[.Миллисекунда]
0 попадания(ий): TAI64N
0 попадания(ий): Эпоха
0 попадания(ий): ISO 8601
Успех, общее количество совпадений равно 3
Тем не менее, посмотрите на раздел "Запуск тестов", который может содержать важную
информацию. Если вы видите эту строку, все в порядке: Успех, общее количество совпадений равно 3
6. Давайте протестируем наш Fail2ban
Войдите “4” раза (или больше, в зависимости от вашей настройки maxretry) в веб-интерфейс SquirrelMail, используя “неправильные пароли”.
Когда вы будете заблокированы, это означает, что вы не можете увидеть страницу входа, пожалуйста, выполните:
iptables -LТеперь вы можете увидеть ваш заблокированный IP xxx-xxx-xxx-xxx в выводе iptables.
Chain fail2ban-squirrelmail (1 references)
target prot opt source destination
DROP all -- xxx-xxx-xxx-xxx.your.isp.info anywhere
RETURN all -- anywhere anywhere Удачи ;)
Get new posts in your inbox
No spam. Unsubscribe anytime.