Port Knocking на Mikrotik

Система «отстучи пароль и заходи» на Firewall Mikrotik.

Принцип достаточно прост. Стучимся с «внешки» определенной последовательностью и получаем доступ. Пример для «простукивания» по портам:

/ip firewall filter
## Первый этап
add action=add-src-to-address-list address-list=Stage1 address-list-timeout=10s \
    chain=input comment=KnockPort1 dst-port=3337 in-interface-list=WAN log=yes log-prefix=\
    KnockPort1 protocol=udp src-address-list=!Stage1
## Второй этап
add action=add-src-to-address-list address-list=Stage2 address-list-timeout=10s \
    chain=input comment=KnockPort2 dst-port=3373 in-interface-list=WAN log=yes log-prefix=\
    KnockPort2 protocol=tcp src-address-list=Stage1
## Финалка - доступ IP на сутки (включение в список RemoteAllow)
add action=add-src-to-address-list address-list=RemoteAllow address-list-timeout=1d \
    chain=input comment=KnockPort3-Finish dst-port=3733 in-interface-list=WAN log=yes \
    log-prefix=KnockPortPass protocol=tcp src-address-list=Stage2
## Пример правил доступа для RemoteAllow к SSH
/ip firewall filter
add action=accept chain=forward dst-port=22 in-interface-list=WAN protocol=tcp \
    src-address-list=RemoteAllow
/ip firewall nat
add action=dst-nat chain=dstnat comment="SSH/SFTP for ACL RemoteAllow" dst-port=22 \
    in-interface-list=WAN log=yes log-prefix=SSH protocol=tcp src-address-list=\
    RemoteAllow to-addresses=192.168.0.15 to-ports=22

Соответственно отправляем три пакета на UDP:3337, TCP:3373, TCP:3733 нашего внешнего IP и получаем доступ.
Есть полезные проги для Android и IPhone.
Пример «стучалки» для Linux:
nc -zu SomeSiteOrIP.net 3337
nc -z SomeSiteOrIP.net 3373
nc -z SomeSiteOrIP.net 3733

Для Windows все сложнее… либо юзаем стороннюю прогу, как ncat из пакета nmap в примере ниже, либо переписываем правила под кнокинг по ICMP пакетам.
ncat.exe -z SomeSiteOrIP.net 3337
ncat.exe -z -u SomeSiteOrIP.net 3373
ncat.exe -z SomeSiteOrIP.net 3733

Пример правил для ICMP:

/ip firewall filter
## первый пинг packet-size=100 (плюс заголовок 28)
add action=add-src-to-address-list address-list=Stage1 address-list-timeout=10s \
    chain=input comment=KnockICMP1 in-interface-list=WAN log=yes log-prefix=KnockICMP1 \
    packet-size=128 protocol=icmp src-address-list=!Stage1
## второй ping packet-size=105 и переход на вторую стадию
add action=add-src-to-address-list address-list=Stage2 address-list-timeout=10s \
    chain=input comment=KnockICMP2 in-interface-list=WAN log=yes log-prefix=KnockICMP2 \
    packet-size=133 protocol=icmp src-address-list=Stage1
## третий пинг packet-size=111 и получаем доступ попав в список RemoteAloow
add action=add-src-to-address-list address-list=RemoteAllow address-list-timeout=1d \
    chain=input comment=KnockICMP_Final in-interface-list=WAN log=yes log-prefix=\
    KnockICMP3 packet-size=139 protocol=icmp src-address-list=Stage2

Тогда «стучим» с Windows примерно так:
ping -n 1 -l 100 -f SomeSiteOrIP.net
ping -n 1 -l 105 -f SomeSiteOrIP.net
ping -n 1 -l 111 -f SomeSiteOrIP.net

Спасибо людям за подсказки: serveradmin.ru и vedernikoff.ru