Fail2ban на CentOS и совместимых системах: установка, jail.local и защита SSH
Fail2ban анализирует журналы сервисов и временно блокирует адреса, с которых идёт слишком много неудачных попыток входа. Для SSH это полезный дополнительный слой защиты, но он не заменяет ключи, firewall и своевременные обновления.
Установка
Установите Fail2ban из репозитория, доступного для вашей версии CentOS, AlmaLinux, Rocky Linux или другой совместимой системы. После установки включите службу и убедитесь, что она запускается без ошибок.
Не редактируйте jail.conf напрямую
Основной файл поставляется пакетом и может измениться при обновлении. Пользовательские параметры лучше хранить в /etc/fail2ban/jail.local или отдельных файлах внутри jail.d.
Архивный пример. На старом скриншоте ниже показаны параметры блокировки в конфигурации прежней версии Fail2ban. Имена опций сохранились, но расположение файлов и backend журналов в современных системах нужно проверять отдельно.

Пример защиты SSH
[sshd]
enabled = true
bantime = 1h
findtime = 10m
maxretry = 5Перед применением убедитесь, что имя jail и путь к журналу соответствуют вашей системе. На современных системах источником событий может быть systemd journal.

Проверка работы
sudo fail2ban-client status
sudo fail2ban-client status sshdСтатус покажет число обнаруженных попыток и заблокированные адреса. В старых конфигурациях блокировки часто было удобно дополнительно видеть непосредственно в правилах iptables:

Как разблокировать IP
sudo fail2ban-client set sshd unbanip 203.0.113.10Не добавляйте широкие подсети в исключения без необходимости. Для собственного постоянного адреса можно использовать ignoreip, но VPN или ограничение SSH на firewall обычно надёжнее.
Fail2ban не должен маскировать проблему
Если SSH доступен всему интернету и постоянно получает тысячи попыток входа, полезно дополнительно отключить парольный вход после проверки ключей, запретить прямой root-login и ограничить доступ по сети или через VPN.