Защита от потбора паролей

Рано или поздно, но настанет такое время, когда ваш сервер подвергнется брутфорсу, иначе говоря кто-то пытается подобрать пароль, как правило из вне.

Допустим у Вас есть почтовый сервер, на котором настроена smtp-авторизация. Вы проверились и знаете, что ваш сервер не является open relay. Сотрудники фирмы пользуются почтой за пределами офиса. Всё как бы хорошо. Но однажды в логах вы заметили следы подбора

Apr 2 20:35:38 mx pop3d: LOGIN FAILED, user=root, ip=[177.11.48.10]
Apr 2 20:35:44 mx pop3d: LOGIN FAILED, user=lp, ip=[177.11.48.10]
Apr 2 20:35:51 mx pop3d: LOGIN FAILED, user=games, ip=[177.11.48.10]
Apr 2 20:35:57 mx pop3d: LOGIN FAILED, user=man, ip=[177.11.48.10]
Apr 2 20:36:03 mx pop3d: LOGIN FAILED, user=at, ip=[177.11.48.10]

После такого хочется этот хост как-то блокировать

fail2ban — надёжная защита от брутфорса

Программа висит демоном и следит за логами. При наступлении maxretry неудачных попыток на протяжении времени findtime, хост атакующего блокируется на время bantime следствами ipfw/iptables/tcpwraper. Бан не будет сниматься автоматически если указан параметр bantime = -1. Администратор на почту получает отчёт о событии. Программа работает со следующими популярными ПО:

apache, asterisk, courier-imap, cyrus-imap, cyrus-sasl, dovecot, dropbear, exim, gssftpd, lighttpd, postfix, proftpd, pure-ftpd, qmail, sendmail, sshd, vsftpd, wuftpd, xinetd

Основной файл конфигурации jail.conf. В нём-то и настраивается слежение за логами нужных серсисов.  Конфиг прост и интуитивно понятен. В нашем конкретном случае он выглядит так

[DEFAULT]
 
ignoreip = 127.0.0.1/8
bantime = 600
findtime = 600
maxretry = 3
backend = auto
usedns = warn
 
[courierimap]
 
enabled = true
port = imap
filter = courierlogin
action = ipfw[name=%(__name__)s, port=%(port)s]
logpath = /var/log/maillog/maillog.log
maxretry = 3
 
[sasl-ipfw]
 
enabled = true
filter = sasl
backend = polling
action = ipfw[name=sasl, port=smtp, protocol=tcp]
sendmail-whois[name=sasl, dest=admin@my.firma]
logpath = /var/log/maillog/maillog.log
maxretry = 3

В ipfw.conf ставим localhost = me

Александр Черных
системный администратор

Статьи по теме

0