Советую не ломать нормальное распределение портов на машине, а просто воспользоваться стандартной целью iptables - REDIRECT, которая перенаправляет внешнее подключение на X-порт самому серверу на Y-порт.
>REDIRECT
>This target is only valid in the nat table, in the PREROUTING and OUTPUT chains, and user-defined chains which are only called from those chains. It redirects the packet to the machine itself by changing the destination IP to the primary address of the incoming interface (locally-generated packets are mapped to the 127.0.0.1 address). It takes one option:
>--to-ports port[-port]
> This specifies a destination port or range of ports to use: without this, the destination port is never altered. This is only valid if the rule also specifies -p tcp or -p udp.
Т.е. клиент ломится, например, на 57214 порт, а REDIRECT перенаправляет весь этот трафик приложению на сервере, которое слушает свой обычный порт, например 22.
При этом никто не мешает дропать всё, что ломится из вне, напрямую на 22 порт.
-iptables -t raw -A PREROUTING -d адрес машины -p tcp --dport 22 -j DROP
-iptables -t nat -A PREROUTING -d адрес машины -p tcp --dport 57214 -j REDIRECT --to-ports 22
в результате ssh работает только на 57214 порте, если хотите, подставьте 443 и если у вас уже чётко определены политики пропуска пакетов, в raw лучше не писать.
П.с.
Кто-нибудь знает почему такая фэншуйная цель, как REJECT не работает в цепочках PREROUTING?