Брутфорс по SSH никуда не делся. На CentOS 7 Fail2ban уже разбирали; на Rocky/Alma 9 стек тот же по смыслу, но пакеты и связка с firewalld чуть другие. Ниже — рабочий минимум.
sudo dnf install -y epel-release
sudo dnf install -y fail2ban fail2ban-firewalld
sudo systemctl enable --now fail2ban
Не правьте /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
fail2ban-client status
journalctl -u fail2ban -n 50 --no-pager
В статусе sshd должны расти Currently banned при подозрительных попытках (можно проверить с тестового IP, не с whitelist).
# разбанить IP
fail2ban-client set sshd unbanip 1.2.3.4
# список банов
fail2ban-client status sshd
PasswordAuthentication no в sshd_config (после проверки входа по ключу).Итог: SSH на Alma/Rocky 9 закрывается от тупых брутфорсов штатным Fail2ban и firewalld.