Чтобы разрешить входящий трафик только на один порт, вы должны установить политику по умолчанию для iptables chain INPUT в REJECT или DROP. До этого, вы должны, по крайней мере, разрешить tcp-трафик на ssh-порту (вероятно, 22), чтобы не блокировать себя.
iptables -A INPUT -p tcp --dport 22 -J ACCEPT
iptables -P INPUT DROP
Если вы хотите ограничить новые соединения к этому порту, вы можете использовать состояние и недавний модуль. Эта строка устанавливает что-то вроде записи журнала при открытии нового соединения с портом 22.
iptables -I INPUT 1 -p tcp --dport 22 -m state --state NEW -m recent --set
Эта строка проверяет, сколько "записей журнала" было сделано за последние 60 секунд, и если их больше 2 (так что третье новое соединение), то пакеты отбрасываются. Она также обновляет "записи в лог", так что отправитель не сможет открыть новое соединение в течение следующих 60 секунд, и если он попытается сделать это снова, то обновит этот таймер снова.
iptables -I INPUT 2 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 -j DROP
Вы должны позаботиться о том, чтобы эти две линии находились в верхней части линии, которая принимает трафик на порт 22, потому что iptables использует только первую линию с ACCEPT, DROP или REJECT, чтобы решить, должен ли пакет пройти или нет.