iptables -A INPUT -p tcp -i eth0 -m state --state NEW --dport 22 -m recent --update --seconds 20 -j DROP
iptables -A INPUT -p tcp -i eth0 -m state --state NEW --dport 22 -m recent --set -j ACCEPT
Эти страшные кракозябры означают следующее: ежели какая-нить сволочь попытается установить соединение с 22м портом (на котором сидит ssh) чаще чем раз в 20 секунд, то без разговоров просто дропать пакет. А ежели не за 20 секунд, то пусть проходит. В итоге нормальные пользователи могут подсоединяться и ошибаться сколько угодно, а боты успешно загоняют себя в дикий DROP.
Счастье наступило. А всёго-то надо было документцию почитать. Все уже придумано до нас.
Update: это всего-лишь один из способов. Не лучший и не панацея