Брутфорс по SSH никуда не делся. На CentOS 7 Fail2ban уже разбирали; на Rocky/Alma 9 стек тот же по смыслу, но пакеты и связка с firewalld чуть другие. Ниже — рабочий минимум.

Fail2ban для SSH на Rocky / AlmaLinux 9

1. Установка

sudo dnf install -y epel-release
sudo dnf install -y fail2ban fail2ban-firewalld
sudo systemctl enable --now fail2ban

2. Локальный jail для SSH

Не правьте /etc/fail2ban/jail.conf — создайте override:

cat > /etc/fail2ban/jail.d/sshd.local << 'EOF'
[sshd]
enabled = true
backend = systemd
banaction = firewallcmd-rich-rules
maxretry = 4
findtime = 10m
bantime = 1h
ignoreip = 127.0.0.1/8 ::1 192.168.100.0/24
EOF

Подставьте свою LAN в ignoreip, чтобы не забанить себя из дома.

systemctl restart fail2ban
fail2ban-client status sshd

3. Проверка

fail2ban-client status
journalctl -u fail2ban -n 50 --no-pager

В статусе sshd должны расти Currently banned при подозрительных попытках (можно проверить с тестового IP, не с whitelist).

4. Полезные команды

# разбанить IP
fail2ban-client set sshd unbanip 1.2.3.4

# список банов
fail2ban-client status sshd

5. Дополнительно к Fail2ban

  • Ключи вместо пароля: PasswordAuthentication no в sshd_config (после проверки входа по ключу).
  • Нестандартный порт снижает шум, но не заменяет бан.
  • Для Winbox/MikroTik логика другая — отдельные правила на роутере.

Итог: SSH на Alma/Rocky 9 закрывается от тупых брутфорсов штатным Fail2ban и firewalld.