fail2ban: защита SSH от подбора паролей
Ставим fail2ban, настраиваем jail для SSH с чтением systemd-журнала, смотрим забаненных и разбаниваем себя.

fail2ban следит за журналом входов и, если с одного IP идут частые неудачные попытки, временно блокирует этот адрес в брандмауэре. Если вы уже входите по ключу, перебор вам не страшен, но fail2ban всё равно полезен: журналы становятся читаемыми, а боты перестают долбить сервер тысячами попыток в час.
1. Установка
Ubuntu и Debian:
sudo apt update
sudo apt install -y fail2ban python3-systemd
python3-systemd нужен, чтобы fail2ban читал журнал systemd — на Debian 12 и Ubuntu 24.04 файла /var/log/auth.log по умолчанию нет.
AlmaLinux, Rocky, CentOS:
sudo dnf install -y epel-release
sudo dnf install -y fail2ban
2. Настройка
Основной конфиг jail.conf перезаписывается при обновлениях, поэтому свои настройки кладут в jail.local:
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true
port = ssh
backend = systemd
Читается так: пять неудачных попыток за десять минут — бан на час. Если у вас постоянный IP, добавьте его в ignoreip через пробел, чтобы никогда не заблокировать себя. Если меняли порт SSH, вместо ssh укажите номер: port = 2222.
На Ubuntu 24.04 пакет уже включает jail для sshd через /etc/fail2ban/jail.d/defaults-debian.conf; ваш jail.local его дополняет, конфликта нет.
3. Запуск
sudo systemctl enable --now fail2ban
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

В выводе: Total failed — сколько неудачных попыток fail2ban увидел, Banned IP list — кто заблокирован сейчас. На свежем сервере с открытым портом 22 список начнёт заполняться через несколько минут.
Полезные команды
sudo fail2ban-client status # список jail
sudo fail2ban-client status sshd # статистика по SSH
sudo fail2ban-client set sshd unbanip 203.0.113.10 # разбанить адрес
sudo fail2ban-client set sshd banip 203.0.113.10 # забанить вручную
sudo journalctl -u fail2ban -n 50 # журнал самого fail2ban
Если заблокировали себя
Три варианта: подождать час, зайти с другого адреса (мобильный интернет) и разбанить, или открыть консоль в кабинете tanaka.host и выполнить unbanip оттуда. После этого добавьте свой IP в ignoreip.
Другие сервисы
fail2ban умеет защищать не только SSH. В /etc/fail2ban/filter.d/ лежат готовые фильтры для nginx (nginx-http-auth, nginx-botsearch), postfix, dovecot и десятков других программ. Включаются так же: секция с именем фильтра и enabled = true в jail.local. У некоторых панелей (например, 3X-UI) есть собственная встроенная версия fail2ban — не включайте две сразу на один и тот же журнал.