Эта запись больше для себя, чтоб не потерялась, но обоснованная критика приветствуется.
Правила делают следующее:
1) 10 минутная пауза для любых новых ip адресов, причем больше 5 попыток в эти 10 минут блокируют ip наглухо.
2) Больше 5 подключений после 10 минут перманентный блок
3) Больше 2 подключений в 5 минут - отброс (можно и исключить)
iptables -N BAN_SSH
iptables -N SSH_2
iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --rcheck --name ssh_baned -j DROP
iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --update --name ssh_2 --seconds 600 --hitcount 5 -j BAN_SSH
iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --update --name ssh_2 --seconds 300 --hitcount 2 -j DROP
iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --update --name ssh_2 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --update --name ssh_grey --seconds 600 --hitcount 5 -j BAN_SSH
iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --update --name ssh_grey --seconds 600 -j DROP
iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --rcheck --name ssh_grey -j SSH_2
iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --set --name ssh_grey -j REJECT
iptables -A BAN_SSH -m recent --set --name ssh_baned -j DROP
iptables -A SSH_2 -m recent --set --name ssh_2 -j ACCEPT
И еще, по умолчанию модуль recent ограничен 100 записями, изменить это дело на 5000000 записей можно например так:
sudo chmod 777 /sys/module/xt_recent/parameters/ip_list_tot
sudo echo 5000000 > /sys/module/xt_recent/parameters/ip_list_tot
sudo chmod 400 /sys/module/xt_recent/parameters/ip_list_tot