Установка и настройка File2ban для Zimbra (Centos7-8)

Инструкция по установке и настройке File2ban для почтового сервера Zimbra.

Установим репозиторий Epel:

yum install epel-release -y

Установим File2ban

yum install fail2ban -y

Настройки File2ban

Создадим файл «/etc/fail2ban/jail.local»

nano /etc/fail2ban/jail.local

Копируем содержимое:

[DEFAULT] 
# "ignoreip" can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban will not ban a host which matches an address in this list. 
# Several addresses can be defined using space (and/or comma) separator.
#ignoreip = 127.0.0.1/8 ::1 10.137.26.29/32
ignoreip = 127.0.0.1/8 IP-ADDRESS-OF-ZIMBRA-MAIL-SERVER/32 

banaction = route

# A host is banned if it has generated "maxretry" during the last "findtime" seconds.
# 10 minute (in seconds)
#findtime  = 600

# "bantime" is the number of seconds that a host is banned.
# 10 hour (in seconds)
#bantime  = 3600

# "maxretry" is the number of failures before a host get banned.
#maxretry = 5

Вместо IP-ADDRESS-OF-ZIMBRA-MAIL-SERVER/32 впишите IP адрес своего сервера.

Создадим правила zimbra.jail со следующими настройками:

nano /etc/fail2ban/jail.d/zimbra.local

Копируем все полностью:

[zimbra-smtp]
enabled = true
filter = zimbra-smtp
port = 25,465,587
logpath = /var/log/zimbra.log
maxretry = 3
findtime = 600
bantime = 3600

[zimbra-webmail]
enabled = true
filter = zimbra-webmail
port = 80,443
logpath = /opt/zimbra/log/mailbox.log
maxretry = 3
findtime = 600
bantime = 3600

[zimbra-admin]
enabled = true
filter = zimbra-admin
port = 7071,9071
logpath = /opt/zimbra/log/mailbox.log
maxretry = 3
findtime = 600
bantime = 3600

Теперь создадим фильтры для служб Zimbra:

Код ниже нужно просто скопировать и вставить в консоль.

Для Webmail

tee /etc/fail2ban/filter.d/zimbra-webmail.conf > /dev/null <<EOF
[Definition]
#
failregex = \[oip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, account not found$
            INFO .*;oip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, invalid password$

ignoreregex =
EOF

Для Zimbra SMTP/SMTPS/Submission

tee /etc/fail2ban/filter.d/zimbra-smtp.conf > /dev/null <<EOF
[Definition]
#
failregex = postfix\/submission\/smtpd\[\d+\]: warning: .*\[<HOST>\]: SASL \w+ authentication failed: authentication failure$
            postfix\/smtps\/smtpd\[\d+\]: warning: .*\[<HOST>\]: SASL \w+ authentication failed: authentication failure$

ignoreregex =
EOF

Для панели управления Webadmin

tee /etc/fail2ban/filter.d/zimbra-admin.conf > /dev/null <<EOF
[Definition]
#
failregex = INFO .*;ip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, invalid password$
            INFO .*ip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, account not found$

ignoreregex =
EOF

Если вы запускаете прокси nginx на том же узле, что и почтовый сервер, вам нужно будет добавить 127.0.0.1 и реальный IP-адрес этого узла:

su - zimbra 
zmprov mcf +zimbraMailTrustedIP 127.0.0.1 
zmprov mcf +zimbraMailTrustedIP {IP of Server} 
zmcontrol restart 

где {IP of Server} — IP адрес вашего почтового сервера.

Перезапустим службу fail2ban и добавим его в автозагрузку:

systemctl restart fail2ban 
systemctl enable fail2ban 

Проверим, что служба работает:

systemctl status fail2ban
fail2ban-client status

Оцените статью
( 3 оценки, среднее 5 из 5 )