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

Для защиты от такого подбора пароля (такую атаку часто называют брутфорсом - см. Полный перебор) есть удачное и изящное решение - fail2ban.

Установка

Этот пакет есть в репозитории, и базовая установка очень проста:

sudo apt-get install fail2ban

По умолчанию защита от брутфорса для SSH включена.

Основная идея Fail2ban - при превышении заданного числа неудачных вводов пароля подряд (по умолчанию - 6) бан IP, с которого были попытки подбора на заданное время (по умолчанию - 600 секунд).

Настройка

Параметры можно посмотреть и поменять в файле /etc/fail2ban/jail.conf. Существующие фильтры (т.е. правила, по которым определяется неудачная попытка ввода пароля) лежат в директории /etc/fail2ban/filter.d (можно их править или на их основе делать свои фильтры), а существующие правила реагирования - в директории /etc/fail2ban/action.d. Все файлы довольно хорошо откомментированы.

Ниже преведено несколько примеров конфигурации /etc/fail2ban/jail.conf.

Удалённый доступ

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/secure
maxretry = 3

Почта

[dovecot-iptables]

enabled  = true
filter   = dovecot
action   = iptables-multiport[name=DCOT, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath  = /var/log/maillog
findtime = 300
maxretry = 5
bantime  = 1800

[postfix-iptables]

enabled  = true
filter   = postfix
action   = iptables-multiport[name=PFIX, port="smtp,smtps", protocol=tcp]
logpath  = /var/log/maillog
maxretry = 5
bantime  = 7200

[sasl-iptables]

enabled  = true
filter   = sasl
action   = iptables-multiport[name=SASL, port="smtp,smtps", protocol=tcp]
logpath  = /var/log/maillog
findtime = 300
maxretry = 5
bantime  = 1800

Ссылки