Открыл для себя недавно Fail2ban.
Fail2ban scans log files (e.g. /var/log/apache/error_log) and bans IPs that show the malicious signs — too many password failures, seeking for exploits, etc. Generally Fail2Ban is then used to update firewall rules to reject the IP addresses for a specified amount of time, although any arbitrary other action (e.g. sending an email) could also be configured. google cloud . Out of the box Fail2Ban comes with filters for various services (apache, courier, ssh, etc).
Fail2Ban is able to reduce the rate of incorrect authentications attempts however it cannot eliminate the risk that weak authentication presents. Configure services to use only two factor or public/private authentication mechanisms if you really want to protect services.
ну или по-русски
Fail2ban — простой в использовании локальный сервис, который отслеживает log–файлы запущенных программ, и на основании различных условий блокирует по IP найденных нарушителей.
Программа умеет бороться с различными атаками на все популярные *NIX–сервисы, такие как Apache, Nginx, ProFTPD, vsftpd, Exim, Postfix, named, и т.д.
Но в первую очередь Fail2ban известен благодаря готовности «из коробки» к защите SSH–сервера от атак типа «bruteforce», то есть к защите SSH от перебора паролей.
Порты SSH у меня закрыты изначально и доступны только для определенных айпишников из локалки, но вот для фильтрации трафика на Postfix и Dovecot — он мне очень подошел. Конфиги для Postfix есть в дистрибутиве по умолчанию и про них я писать не буду. Немного повозился с конфигами для Dovecot, и про них решил написать.
У меня Dovecot пишет свои логи в отдельный файл — /var/log/dovecot/dovecot-info.log (по умолчанию же все пишется в системный лог /var/log/maillog).
Первым делом пишем фильтр dovecot-pop3imap.conf в папке /etc/fail2ban/filter.d/
1 2 3 |
cat /etc/fail2ban/filter.d/ touch dovecot-pop3imap.conf vi dovecot-pop3imap.conf |
1 2 3 |
[Definition] failregex = (?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P\S*),.* ignoreregex = |
Теперь добавляем секцию в файл /etc/fail2ban/jail.conf:
1 2 3 4 5 6 7 8 9 |
[dovecot-iptables] enabled = true filter = dovecot-pop3imap action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp] sendmail-whois[name=dcot, dest=my@email.ru] logpath = /var/log/dovecot/dovecot-info.log findtime = 1200 maxretry = 20 bantime = 3600 |
То есть, если появится кто-то, кто в течение 20 минут 20 раз неправильно введет пароль — баним его IP на час. Нам почту приходит сообщение, что мол забанен такой-то и полная whois информация по хосту. Тут каждый волен выбрать для себя параметры за какое время, какое количество попыток проверять и на сколько банить.
Перезапускаем fail2ban, проверяем что в iptables появилось правило:
1 2 3 |
Chain fail2ban-dovecot-pop3imap (1 references) num pkts bytes target prot opt in out source destination 1 184897 8571444 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 |