Спасибо за идею.
Изначально почерпнул ее из твоего блога, потом сходил на сайт разработчика и дополнительно почерпнул кое-что оттуда. :)Мне кажется, что лучше и проще делать так:
-A INPUT -p tcp --dport 3333 -m recent --rcheck --seconds 30 --name SSH -j ACCEPT
-A INPUT -p tcp --dport 64444 -m recent --set --name SSH -j REJECT --reject-with tcp-reset
здесь SSH-демон слушает на порту 3333/tcp, а порт 64444/tcp используется для "открывания двери".
дверь открывается только на 30 сек. если в течение этого времени подключение не произойдет, она закроется. поэтому можно не беспокоиться о том, что нужно закрыть ее после себя.
при таком сильном разнесении портов и таком таймауте вероятность попадания "врага" в "порт открывания двери", а затем в порт ssh-демона почти нулевая.
-j REJECT --reject-with tcp-reset нужно для того, чтобы удобнее было "стукаться" в "порт открывания двери, например, telnet-клиентом (не будет висеть, сразу выйдет).
P.S. минус всего этого дела в том, что не изо всяких мест могут быть доступны порты 3333/tcp и 64444/tcp.