Установка 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

Случайные Статьи

Loading…


Количество просмотров :13288

11 Comments

  1. Илья:

    Привет! Спасиб за ман
    Уже задолбался с этим fail2ban
    что защищать не пойму

    у тебя разобрано почтовые сервисы
    а как же остальные?
    pam-generic
    ssh-ddos
    apache etc

  2. Илья:

    и помоему fail2ban это не сканер только почтовых логов, а средство защиты от брута разных сервисов, в первую очередь ssh
    смотрит логи и на их основании блочит по ip

    • admin:

      Все дело в том, что я использую его только для почты, да и то, только потому, что его включи в последнюю зборку IRedMail. Как будет время попробую покрутить его с Nginx-oм, но это как будет время.

      Для ssh, мне больше нравиться denyhosts, потому, что он работает из «коробки».

  3. Илья:

    ну если ты поставил fail2ban то он тоже из коробки блочит ssh бруты
    а вот если еще добавишь сервисов то нужно фикс делать

    у меня он пашет, тока я там защиту всех сервисов включил кроме ftp он у меня удален вообще
    памяти кушает поболе из-за этого
    и говорят может iptables заполнится вскими правилами и потом тормозить но это долго надо ждать :)
    вот у меня и вопрос что защищать а что нет

    • admin:

      Однозначно сказать сложно, надо смотреть, и анализировать загрузку. Но, защищать надо все, где могут возникнуть проблемы.

  4. Илья:

    больная тема :)
    я проблему свел уже только к открытым портам по которым могут долбиться
    буду дальше курить fail2ban авось выведу для себя конфиг

    насчет iptables не подскажешь? если fail2ban будет заносить туда ban ip unban ip то правила не будут затираться а добавляться? и iptables пухнуть?

  5. admin:

    По идее, он должен будет создать себе цепочку и туда вносить все изменения, но я если честно не пробовал, потому утверждать не буду. А по поводу переполнения, не беспокойся, выставь bantime небольшой и он сам будет их подчищать.

  6. Илья:

    вооо, спасибо! это я и хотел узнать!
    то есть если банится ip на 10 минут то заносится запись в iptables, а как тока он отбанивается запись удаляется?

  7. admin:

    Так и есть

  8. Илья:

    слушай, меня мучает вопрос)

    если начнут спамить на ящик сервера
    это будет создавать нагрузку на севрер?

    можно как-то ограничить прием писем в час?

  9. Fagot:

    Для проверки фильтров можно использовать fail2ban-regex.
    Заодно узнать тот ли лог мы фильтруем )

    fail2ban-regex /var/log/messages /etc/fail2ban/filter.d/pure-ftpd.conf
    fail2ban-regex /var/log/vsftpd.log /etc/fail2ban/filter.d/proftpd.conf
    fail2ban-regex /var/log/proftpd/proftpd.log /etc/fail2ban/filter.d/proftpd.conf
    fail2ban-regex /var/log/sshd.log /etc/fail2ban/filter.d/sshd.conf

Оставьте коментарий