Установка Fail2ban в связке с Postfix, Dovecot и Roundcube

Fail2ban это сканер почтовых логов, который выявляет IP адреса у которых большое количество ошибочных вводов паролей и бант их. Для этого он использует firewall. Установка для RH подобных систем:

yum install fail2ban
chkconfig —level 345 fail2ban on

для Debian:

apt-get install fail2ban
update-rc.d fail2ban defaults

Я буду настраивать Fail2Ban для защиты 4 сервисов: ssh, smtp, pop3/imap и webmail. Для ssh фильтры встроены, а вот для всего остального их необходимо написать. Я использую Roundcube как webmail и фильтр для него следующий, создаем файл /etc/fail2ban/filter.d/roundcube.iredmail.conf :

[Definition]
failregex = roundcube: (.*) Error: Login failed for (.*) from <HOST>\.
ignoreregex =

Для dovecot создаем файл /etc/fail2ban/filter.d/dovecot.iredmail.conf :

[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
ignoreregex =

И для Postfix-a создаем файл /etc/fail2ban/filter.d/postfix.iredmail.conf :

[Definition]
failregex = \[<HOST>\]: SASL (PLAIN|LOGIN) authentication failed
reject: RCPT from (.*)\[<HOST>\]: 550 5.1.1
reject: RCPT from (.*)\[<HOST>\]: 450 4.7.1
reject: RCPT from (.*)\[<HOST>\]: 554 5.7.1
ignoreregex =

После этого, в файлк jail.local указываем расположение логов:

[roundcube-iredmail]
enabled = true
filter = roundcube.iredmail
action = iptables-multiport[name=roundcube, port=»ssh,http,https,smtp,smtps,pop3,pop3s,imap,imaps,sieve», protocol=tcp]
logpath = /var/log/maillog
findtime = 3600
maxretry = 5
bantime = 3600

[dovecot-iredmail]
enabled = true
filter = dovecot.iredmail
action = iptables-multiport[name=dovecot, port=»ssh,http,https,smtp,smtps,pop3,pop3s,imap,imaps,sieve», protocol=tcp]
logpath = /var/log/dovecot.log
maxretry = 5
findtime = 300
bantime = 3600
ignoreip == 127.0.0.1

[postfix-iredmail]
enabled = true
filter = postfix.iredmail
action = iptables-multiport[name=postfix, port=»ssh,http,https,smtp,smtps,pop3,pop3s,imap,imaps,sieve», protocol=tcp]
# sendmail[name=Postfix, dest=you@mail.com]
logpath = /var/log/maillog
bantime = 3600
maxretry = 5
ignoreip = 127.0.0.1

Вот и все, можем запускать:

/etc/init.d/fail2ban restart