Мой любимый вариант выглядит так. Прелесть его в том, что пока кто-то проболжает долбиться в этот порт, он остаётся закрытым.
BURST=10 # количество новых подключений, после которых баним
EXPIRE=60000 # период до разбанивания (с момента последнего подключения), мсек
# Открываем порт SSH с ограничением на частоту новых подключений
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m hashlimit --hashlimit 1/hour --hashlimit-burst $BURST --hashlimit-mode srcip --hashlimit-name limit22 --hashlimit-htable-expire $EXPIRE -j ACCEPT
iptables -A INPUT -p tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -j DROP