Безопасность · 3 min read · Jan 02, 2026

Настройка fail2ban с SquirrelMail на CentOS 5.3/ISPConfig 3

Настройка fail2ban с SquirrelMail на CentOS 5.3/ISPConfig 3

Введение

Этот учебник показывает, как вы можете предотвратить неограниченные попытки входа и, следовательно, атаки грубой силы на ваш веб-вход SquirrelMail, используя fail2ban.

1. Требования

Убедитесь, что как fail2ban, так и SquirrelMail установлены на машине с CentOS v5.3/ISPConfig 3, как описано здесь.

Тем не менее, их установка проста:

yum install fail2ban squirrelmail

Вы должны активно использовать iptables в качестве вашего брандмауэра. Fail2ban работает, создавая временное правило сброса для неавторизованного IP-адреса источника.

2. Конфигурация журналирования SquirrelMail

SquirrelMail (imapd) по умолчанию ведет журнал в /var/log/maillog, но только как IP-адрес 127.0.0.1 (localhost). Поскольку мы пытаемся заблокировать конкретный адрес источника, fail2ban не может использовать этот файл. Поэтому мы устанавливаем и используем 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-2.3-1.2.7  
cp config_example.php config.php

Хотя этот плагин был последней версией Squirrel Logger, если была обновлена версия, скачайте ее напрямую с сайта плагинов SquirrelMail здесь.

Если ваша машина использует местное время, которое не является GMT, используйте vi, чтобы изменить: $sl_use_GMT = 1 на $sl_use_GMT = 0 в config.php:

Оригинальный config.php:

...
// Записывать даты в GMT?  Если вы этого не сделаете, даты будут
// записываться в том часовом поясе, в котором находится каждый пользователь (или
// установлен в их личных предпочтениях)
//
//    1 = да
//    0 = нет
//
$sl_use_GMT = 1;
...

Измененный config.php:

...
// Записывать даты в GMT?  Если вы этого не сделаете, даты будут
// записываться в том часовом поясе, в котором находится каждый пользователь (или
// установлен в их личных предпочтениях)
//
//    1 = да
//    0 = нет
//
$sl_use_GMT = 0;
...

Удалите загруженный файл Squirrel Logger gzip:

cd /usr/share/squirrelmail/plugins  
rm squirrel_logger-2.3-1.2.7.tar.gz

Настройте SquirrelMail для использования плагина Squirrel Logger:

/usr/share/squirrelmail/config/conf.pl
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color on
S   Save data
Q   Quit

Command >>
Выберите: Плагины
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Плагины
  Установленные плагины
    1. delete_move_next
    2. squirrelspell
    3. newmail  

  Доступные плагины:
    4. listcommands
    5. fortune
    6. filters
    7. translate
    8. abook_take
    9. spamcop
    10. squirrel_logger
    11. mail_fetch
    12. calendar
    13. sent_subfolders
    14. message_details
    15. administrator
    16. info
    17. bug_report

R   Вернуться в главное меню
C   Включить цвет
S   Сохранить данные
Q   Выйти

Command >> 
Выберите: squirrel_logger
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Плагины
  Установленные плагины
    1. delete_move_next
    2. squirrelspell
    3. newmail
    4. squirrel_logger  

  Доступные плагины:
    5. listcommands
    6. fortune
    7. filters
    8. translate
    9. abook_take
    10. spamcop
    11. mail_fetch
    12. calendar
    13. sent_subfolders
    14. message_details
    15. administrator
    16. info
    17. bug_report

R   Вернуться в главное меню
C   Включить цвет
S   Сохранить данные
Q   Выйти

Command >> 
Выберите: Сохранить данные, Выйти

3. Конфигурация Fail2ban

Перейдите в директорию конфигурации fail2ban:

cd /etc/fail2ban

При условии, что вы используете http-транспорт для SquirrelMail, используйте vi, чтобы добавить следующие строки в файл jail.conf:

[squirrelmail-iptables]
enabled  = true
filter   = squirrelmail
action   = iptables[name=SquirrelMail, port=http, protocol=tcp]
           sendmail-whois[name=SquirrelMail, dest=you@your_domain.com, sender=fail2ban@your_domain.com]
logpath  = /var/lib/squirrelmail/prefs/squirrelmail_access_log
maxretry = 4

Убедитесь, что maxretry и адреса электронной почты для dest и sender установлены в соответствии с вашими требованиями.

Перейдите в директорию фильтров fail2ban:

cd filter.d

В директории filter.d используйте vi, чтобы создать файл squirrelmail.conf со следующим содержимым:

# Fail2Ban configuration file
#
# Author: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
#         host must be matched by a group named "host". The tag "" can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P
# Values: TEXT

failregex = \[LOGIN_ERROR\].*from : Unknown user or password incorrect

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =

Fail2ban должен распознавать формат даты, используемый в файле squirrelmail_access_log.

cd /usr/share/fail2ban/server

Используйте vi, чтобы отредактировать файл datedetector.py и добавить следующие строки между секциями формата Apache и Exim:

# SquirrelMail 09/13/2007 06:43:20
template = DateStrptime()
template.setName("Month/Day/Year Hour:Minute:Second")
template.setRegex("\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}")
template.setPattern("%m/%d/%Y %H:%M:%S")
self.__templates.append(template)
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.