Инструкция по установке и настройке 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