Что было. На Debian настроен fail2ban: 5 попыток, бан на 3 часа. Автор вводит неверный пароль по SSH пять и более раз, а система продолжает спрашивать пароль, бана нет.
Что советовали участники (сводка, каждая причина встречается регулярно):
- Фильтр не совпадает со строками лога.
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.confпоказывает, сколько строк распознано. Ноль означает, что формат записей sshd (версия OpenSSH,LogLevel) не совпадает с фильтром; обновить fail2ban или использовать режимmode = aggressiveв jail. - Неверный
logpathили отсутствующий лог. На системах безrsyslogфайлаauth.logнет; нуженbackend = systemd. Об этом есть отдельный разбор про проверку fail2ban. - Правки в
jail.confзатираются обновлением; настройки должны быть вjail.localилиjail.d/*.conf. Проверить, что jail действительно включён:enabled = trueпод[sshd]. - Расхождение времени. fail2ban сравнивает метки времени в логе с системным временем: если часовой пояс лога и системы различаются или часы сбиты, попытки выглядят «старыми», не попадают в
findtime, и счётчик не набирается. Проверка:dateпротив последней строки лога;timedatectl. - Слишком короткий
findtimeдля ручного теста (по умолчанию 10 минут; при медленном вводе пять попыток растягиваются) либо ваш адрес вignoreip. - Несколько попыток в одном соединении считаются по-разному: клиент OpenSSH делает до трёх попыток за подключение, и sshd пишет одну строку
Failed passwordна каждую, ноmaxretryсчитает строки, а не соединения. Пять строк набираются за два подключения.
Как проверить результат, не полагаясь на ощущения.
fail2ban-client status sshd # Currently failed / Currently banned
fail2ban-client get sshd findtime
tail -f /var/log/fail2ban.log # Found <ip> ... Ban <ip>
Строки Found означают, что фильтр видит попытки; отсутствие Ban при достаточном числе Found означает проблему с maxretry/findtime; отсутствие Found означает проблему с логом или фильтром.
Важное замечание из обсуждения. Часть участников резонно заметила: с отключённой парольной аутентификацией перебор теряет смысл, а fail2ban становится лишь средством уменьшения шума в логах. Ключи первичны, fail2ban вторичен.
Настройка описана в документации fail2ban.