VPN конечно же, так же альтернатива проброса подключений через разные порты - это каскадирование rdp подключений.
Пользователи подключаются под общедоступным логином и паролем до сервера, у которого вместо стандартного шела стоит запуск mstsc (клиента для подключения по rdp), все остальное у пользователя по максимуму ограничено, кстати это может быть вообще отдельная машина или несколько (будет сильная нагрузка на сеть при большом количестве одновременных подключений, в принципе все то же самое что и с перенаправлением портов, но там железки дешевле).
Так же нужно будет отключить возможность сохранения логина и пароля в локальных политиках.
p.s. это решение может являться костылем, но зато позволяет в принципе не трогать настройки фаервола на роутере, т.е. при появлении новых пользователей, не понадобится туда лезть