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 :
failregex = roundcube: (.*) Error: Login failed for (.*) from <HOST>\.
ignoreregex =
Для dovecot создаем файл /etc/fail2ban/filter.d/dovecot.iredmail.conf :
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 :
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 указываем расположение логов:
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, [email protected]]
logpath = /var/log/maillog
bantime = 3600
maxretry = 5
ignoreip = 127.0.0.1
Вот и все, можем запускать:
Илья says:
Привет! Спасиб за ман
Уже задолбался с этим fail2ban
что защищать не пойму
у тебя разобрано почтовые сервисы
а как же остальные?
pam-generic
ssh-ddos
apache etc
Илья says:
и помоему fail2ban это не сканер только почтовых логов, а средство защиты от брута разных сервисов, в первую очередь ssh
смотрит логи и на их основании блочит по ip
admin says:
Все дело в том, что я использую его только для почты, да и то, только потому, что его включи в последнюю зборку IRedMail. Как будет время попробую покрутить его с Nginx-oм, но это как будет время.
Для ssh, мне больше нравиться denyhosts, потому, что он работает из «коробки».
Илья says:
ну если ты поставил fail2ban то он тоже из коробки блочит ssh бруты
а вот если еще добавишь сервисов то нужно фикс делать
у меня он пашет, тока я там защиту всех сервисов включил кроме ftp он у меня удален вообще
памяти кушает поболе из-за этого
и говорят может iptables заполнится вскими правилами и потом тормозить но это долго надо ждать 🙂
вот у меня и вопрос что защищать а что нет
admin says:
Однозначно сказать сложно, надо смотреть, и анализировать загрузку. Но, защищать надо все, где могут возникнуть проблемы.
Илья says:
больная тема 🙂
я проблему свел уже только к открытым портам по которым могут долбиться
буду дальше курить fail2ban авось выведу для себя конфиг
насчет iptables не подскажешь? если fail2ban будет заносить туда ban ip unban ip то правила не будут затираться а добавляться? и iptables пухнуть?
admin says:
По идее, он должен будет создать себе цепочку и туда вносить все изменения, но я если честно не пробовал, потому утверждать не буду. А по поводу переполнения, не беспокойся, выставь bantime небольшой и он сам будет их подчищать.
Илья says:
вооо, спасибо! это я и хотел узнать!
то есть если банится ip на 10 минут то заносится запись в iptables, а как тока он отбанивается запись удаляется?
admin says:
Так и есть
Илья says:
слушай, меня мучает вопрос)
если начнут спамить на ящик сервера
это будет создавать нагрузку на севрер?
можно как-то ограничить прием писем в час?
Fagot says:
Для проверки фильтров можно использовать 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