Я за впн
VPN хорошо, но не всегда применим. И не всякий VPN. Например, при доступе с мобильных операторов очень часто не проходит ни pptp, ни l2tp. ПРи этом "голый" RDP работает норм. Также бывает, что нужно настроить доступ с мобильных устройств, например, с планшетов. Настраивать vpn клиента на планшете с каким-нибудь несвежим андроидом - то ещё удовольствие.
Также при включении vpn если не накладывать дополнительных ограничений vpn клиент получает доступ во всю сеть, а это "несекьюрно".
Еще - при наличии vpn происходит двойное шифрование - сначала RDP шифруется средствами клиента и сервера, затем он еще раз шифруется VPN-тоннелем. Это суперсекьюрно, но явно излишне, и вносит пусть и небольшие, но задержки в работу приложений через RDP.
Для решения этих проблем я для своих инсталляций применяю технологию ping knocking. Суть - во все правила dst-nat добавляем на вкладке Advanced - Src. Address List с именем, например, allow_ip.
Пишем правила:
/ip firewall filter
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=established,related,untracked protocol=!icmp
add action=jump chain=input in-interface=pppoe-out1 jump-target=KnockKnock protocol=icmp
add action=add-src-to-address-list address-list=list1 address-list-timeout=10s chain=KnockKnock log=yes packet-size=328
add action=add-src-to-address-list address-list=list2 address-list-timeout=10s chain=KnockKnock log=yes packet-size=728 src-address-list=list1
add action=add-src-to-address-list address-list=allow_ip address-list-timeout=3h chain=KnockKnock log=yes packet-size=528 src-address-list=list2
add action=accept chain=input dst-port=8291 in-interface=pppoe-out1 protocol=tcp src-address-list=allow_ip
Последнее правило - как пример открытия управления микротиком по винбокс только для адрес листа allow_ip. Если у вас открыто еще что-то - для защиты кнокингом в соответствующие разрешающие правила также нужно добавить src-address-list=allow_ip.
Первое правило - из дефолтного файерола, к нему надо добавить protocol=!icmp, иначе технология не работает (угадайте, почему :).
Далее идут три правила, создающие отдельную цепочку KnockKnock и анализирующие приходящие пинги на длину пакета. Если приходит пакет длиной 328, затем в течение 10 сек - 728, затем в течение 10 сек - 528 - сорс адрес такого "стучащего" добавляется в адрес лист allow_ip на 3 часа. Время можно указть своё. Длины пакетов - также свои. Подобрать такую последовательность практически нереально, т.к. никакой информации об открытии порта хакер не получает, пока не подберет все три размера, и каждые 10 ссек надо начинать сначала. Ну и - в логе роутера будут видны попытки. Легитимному же пользователю достаточно дать вот такой cmd файл:
ping mikrotik_wan_ip_or_dns_name -n 1 -l 300
ping mikrotik_wan_ip_or_dns_name -n 1 -l 700
ping mikrotik_wan_ip_or_dns_name -n 1 -l 500
Обратите внимание, что размер пакета в cmd файле меньше на 28 байт - размер заголовка ip. Комбинации ставьте свои, не ставьте целые сотни, иначе будет легко подобрать. Для мобильный устройств андроид есть бесплатная программа Knock on Ports, в ней все настраивается интуитивно просто.
Таким образом получаем роутер, закрытый ото всего мира, и пускающий к себе и в проброс портов dst-nat только после "стука". Можно изменять доступ меняя комбинацию портов и рассылая действующим пользователям новый cmd / комбинацию для Knock on Ports.
Недостаток - в отличие от vpn при наличии нарушителя, имеющего доступ к каналу связи, размеры пакетов высвечиваются элементарно wireshark'ом.
Пользуйтесь для повышения защищенности своих роутеров.