Remote Desktop Gateway на Windows Server: RDP в интернет без VPN
Remote Desktop Gateway (RD Gateway) — компонент Windows Server, который публикует RDP-доступ через HTTPS (порт 443). Пользователям не нужен VPN: они подключаются к серверу напрямую через браузер или mstsc, а трафик зашифрован SSL. Это удобная альтернатива связке «VPN + RDP» из серии про DSCP. Разберём установку и настройку на Windows Server 2019/2022.
Зачем RD Gateway вместо VPN
| Критерий | RD Gateway | VPN + RDP |
|---|---|---|
| Пользователь | Просто mstsc + порт 443 | Настроить VPN-клиент |
| Безопасность трафика | TLS поверх 443 | Зависит от VPN |
| Фильтрация | По AD, группам, OTP | По VPN-группам |
| NAT/DDoS | 443 везде открыт, меньше атак | Открытые VPN-порты |
| Для 1С/RemoteAPP | Отлично сочетается | Ок |
Для сценария «терминальный сервер без домена» (есть статья на сайте) GW тоже работает, но полнее — с Active Directory. Здесь даём оба варианта.
Шаг 1. Устанавливаем роль RD Gateway
Включите роли на сервере-шлюзе (может быть сам RDS-сервер):
Install-WindowsFeature -Name RDS-Gateway
Для RemoteAPP/управления — лучше RDS-Gateway, RDS-Web-Access:
Install-WindowsFeature -Name RDS-Gateway,RDS-Web-Access
Проверка установки
Get-WindowsFeature RDS-Gateway | Select Name, InstallState
Шаг 2. HTTPS-сертификат
RD Gateway требует сертификат для SSL. Проще всего — Let’s Encrypt через win-acme:
- Установите
win-acme(WACS) на Windows Server. - Выпустите сертификат на DNS-имя
rds.example.ru. - Войдите в Certificate Store (Local Machine).
Ручная проверка сертификата:
Get-ChildItem Cert:LocalMachineMy | Select Subject, NotAfter, Thumbprint
Сертификат должен быть на имя, которое пользователи будут писать в адресной строке шлюза.
Шаг 3. Настройка через Server Manager (графическая)
- Server Manager → Tools → Remote Desktop Services.
- На стойке RD Gateway Manager → правый клик по серверу → Properties.
- Вкладка SSL: выбрать сертификат.
- Вкладка Policies: создать политику доступа.
Политика авторизации (RD CAP)
CAP (Connection Authorization Policy) решает, КТО может заходить:
- Groups: выберите AD-группу (например
RDS-Users) - или для сценария без домена — локальную группу
Политика ресурсов (RD RAP)
RAP (Resource Authorization Policy) решает, НА КАКИЕ серверы можно:
- Allow users to connect to any computer
- или ограничить конкретными IP/именами
Шаг 4. Настройка через PowerShell (быстрый вариант)
Тот же результат полностью через скрипт:
$thumb = (Get-ChildItem Cert:LocalMachineMy | Where-Object {$_.Subject -like "*rds.example.ru*"}).Thumbprint
# Создаём политики доступа
New-RDRemoteAppCertificate -SSLCertificateThumbprint $thumb
# CAP
New-RDPolicyConfiguration -ConnectionAuthPolicyName "Allow RDS Users" `
# Работает через RD Provider:
Set-Item wsman:localhostClientTrustedHosts *
Более полный вариант через RDGateway cmdlets:
# Добавить группы в CAP
Set-RDCertificate -Role RDGateway -Thumbprint $thumb
Set-RDAuthorizationPolicy -Role RDGateway -EnableIntermediateCertificateStore 1
Для стабильного развёртывания рекомендую сначала поработать в Server Manager вручную, а PowerShell применить как внедрение.
Шаг 5. Настройка на клиенте (Windows 10/11)
Пользователь добавляет подключение обычным mstsc:
mstsc→ Параметры → Подключение через RD Gateway:- Server name:
rds.example.ru - Logon method: As username-password
- Или через RD Web Access (браузер):
https://rds.example.ru/RDWeb
Пользователь логинится и запускает RemoteAPP / удалённый рабочий стол прямо из браузера.
Шаг 6. NAT на Mikrotik (связка со статьями про роутер)
Связка с Mikrotik из других статей сайта:
/ip firewall nat add chain=dstnat protocol=tcp dst-port=443
action=dst-nat to-addresses=192.168.10.50 to-ports=443
comment="RD Gateway"
/ip firewall filter add chain=input protocol=tcp dst-port=443
action=accept place-before=0
/ip firewall nat add chain=srcnat src-address=192.168.0.0/24
dst-address=192.168.10.50 dst-port=443 protocol=tcp
action=masquerade comment="SRCNAT RDP-GW"
VPN не нужен: GW публикуется напрямую через 443. Но WAN-фильтр (Fail2ban/rate-limit) желателен — снизит перебор.
Шаг 7. 2FA (связка со статьёй про двухфакторку)
RD Gateway можно дополнить двухфакторной аутентификацией — но классически OTP для RDGW делается через NPS/Radius. Подробнее в отдельной статье про FreeRADIUS. Быстрый вариант:
- Установить
Remote Accessроль NPS. - Настроить
Radius-clientна RD Gateway. - FreeRADIUS + OTP — проверяет пользователя.
Экономный вариант — комбинация Windows-пароля + сертификат и ограничение по IP с Fail2ban/GeoIP.
Проверка
- С телефона/внешнего ПК запустите
mstsc, подключитесь кrds.example.ru:443. - Введите доменный логин/пароль.
- Должно открыться окно входа в терминальный сервер.
- В Event Viewer → RDP session — видно успешные подключения:
Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-Gateway/Operational"
Tонкости и подводные камни
- Сертификат у локального CA/самодельный — клиенты увидят предупреждение. Используйте общедоступный (Let’s Encrypt).
- RD Gateway без AD — CAP/RAP на локальных группах работают, но RAP на конкретные компьютеры ограничен. Для одного RDS-сервера — ок.
- 443 занят другим (например, nginx) — на одном IP с IIS нельзя делить 443. Разные IP или SNI.
- Windows Firewall — обязательно разрешить TCP 443 входящий:
powershell
New-NetFirewallRule -DisplayName "RD Gateway 443" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow - Двойная авторизация (GW + RDS) — нормально, ожидайте два окна входа.
- Session timeout — по умолчанию у GW нет жёсткого таймаута; настройте CAP timeouts под политику безопасности.
Шпаргалка
Install-WindowsFeature RDS-Gateway,RDS-Web-Access
# RD Gateway Manager -> настроить сертификат + CAP + RAP
# Клиент: mstsc -> RD Gateway: rds.example.ru
# NAT на Mikrotik: dstnat 443 -> 192.168.10.50:443
Проверено на: Windows Server 2019/2022.
Дата: Сентябрь 2026.