Шлюз удаленных рабочих столов это роль Remote Desktop Services в Windows Server, которая используется для обеспечения безопасного доступа к удаленным рабочим столам и опубликованным RemoteApps из Интернета через HTTPS-шлюз. Сервер с ролью RD Gateway выступает в качестве посредника между внешними клиентами RDP и внутренними службами RD. При использовании RDGW пользователям не нужно настраивать VPN для подключения к RDS в корпоративной сети. Для подключения используется стандартный клиент Remote Desktop Connection (mstsc.exe). В этой статье мы рассмотрим, как установить Remote Desktop Gateway на Windows Server 2019 (руководство также применимо для Windows Server 2022/2016 и 2012 R2).
Развертывание роли RDS-Gateway на Windows Server
Служба Remote Desktop Gateway является дополнительным компонентом фермы RDS, поэтому ее нужно устанавливать отдельно. В большинстве случаев рекомендуется использовать выделенный сервер для развертывания RDGW или сочетать ее с RD Web Access.
Вы можете установить Шлюз удаленных рабочих столов роль через Server Manager (Add roles & Features -> Server Role -> Remote Desktop Services) или с помощью PowerShell.
При установке службы RDGW также устанавливается веб-сервер IIS и роль NPS (Network Policy Server).
Убедитесь, что роль RDS-Gateway установлена:
Get-WindowsFeature RDS*
Или установите роль на Windows Server с помощью команды Install-WindowsFeature:
Install-WindowsFeature RDS-Gateway -IncludeAllSubFeature –IncludeManagementTools
Создайте группы доступа в Active Directory с помощью консоли ADUC (dsa.msc) или с помощью PowerShell:
- rdgwExtUsers — группа пользователей, которым разрешена аутентификация на RDGW;
- rdgwExternalAdmins — группа для доступа к внутренним хостам RDS через RDGW;
- mun-rdsfarm — должен включать все узлы RDS и брокер подключений RD, к которым вы хотите разрешить подключения через шлюз удаленных рабочих столов
Настройка политик авторизации шлюза удаленных рабочих столов
Сайт RD Gateway Manager (tsgateway.msc
) консоль используется для управления политиками авторизации и правилами доступа RDGW. Здесь можно настроить два типа политик:
- Политики авторизации подключений (RD CAP) — устанавливает, кому разрешена аутентификация на шлюзе RDS;
- Политики авторизации ресурсов (RD RAP) — определяют пользователей и ресурсы (компьютеры) во внутренней сети, которым разрешено подключаться через RDGW.
Сначала создайте RD CAP:
- Разверните Политики -> Политики авторизации подключений и выберите Создать новую политику -> Мастер;
- Введите имя политики (rdgwExtUsers);
- Выберите тип аутентификации (пароль и/или смарт-карта) и укажите группу пользователей, которым разрешена аутентификация на RDGW;
- В Включить или отключить перенаправление устройств В этом окне можно указать, какие устройства разрешено перенаправлять в сеанс RDP (буфер обмена, принтеры, локальные диски и т. д.);
- Затем можно настроить таймауты для сессий RDP;
- Подтвердите создание политики.
Политику подключения RDGW можно также создать с помощью PowerShell:
Import-Module -Name RemoteDesktopServices
New-Item -Path 'RDS:\GatewayServer\CAP' -Name 'rdgwAllowAutht-CAP' -UserGroups rdgwExtUsers -AuthMethod '1'
После этого создайте политику RD RAP:
- В консоли RD Gateway Manager нажмите Policies -> Resource Authorization Policies и выберите Create New Policy -> Wizard;
- Введите имя политики: rdgwExternalAdmins;
- Укажите имя группы пользователей, которым разрешено подключаться к внутренним ресурсам RDS;
- На вкладке Сетевые ресурсы укажите, к каким серверам RDS разрешено подключаться внешним пользователям (mun-rdsfarm);
- Затем укажите номера портов, к которым вы хотите разрешить подключение. По умолчанию рекомендуется открыть только стандартный порт RDP TCP/3389. Но вы можете открыть и другие порты;
- Политика готова.
Вы можете добавить это правило RAP с помощью PowerShell:
New-Item -Path RDS:\GatewayServer\RAP -Name allowextAdminMunRDS -UserGroups [email protected] -ComputerGroupType 1 -ComputerGroup [email protected]
Установка SSL-сертификата для шлюза удаленных рабочих столов
Чтобы защитить соединение со шлюзом RDS, необходимо установить на него SSL-сертификат. Лучше использовать коммерческий сертификат, выпущенный внешним центром сертификации (CA). Можно также использовать бесплатный SSL-сертификат Let’s Encrypt (Настройка сертификата Let’s Encrypt на IIS для шлюза удаленных рабочих столов) или самоподписанный SSL-сертификат Windows, но учтите, что внешние клиенты должны ему доверять. Если клиент не доверяет сертификату на сервере RDGW, он не сможет подключиться к шлюзу (вы можете импортировать самоподписанные SSL-сертификаты клиентам вручную или с помощью GPO).
- Откройте свойства сервера RDGW в консоли RD Gateway и перейдите в раздел SSL-сертификат вкладка;
- В этом примере мы используем самоподписанный сертификат. Выберите Создать самоподписанный сертификат -> Создание и импорт сертификата;
- Введите имя сертификата (это имя будет использоваться вашими клиентами для подключения к RDGW) и выберите каталог, в который вы хотите сохранить сертификат (распространите этот сертификат среди ваших RD-клиентов).
Для подключения к RDGateway на Windows Server 2019 используются следующие порты:
- HTTPPort (по умолчанию) — 443 TCP
- UDPPort (по умолчанию) — 3391 UDP (использование транспортного протокола UDP необязательно, однако оно позволяет значительно повысить производительность туннеля и качество изображения в RDP-сессии).
Не забудьте открыть (пробросить) эти порты с вашего публичного IP на хост RDGW на сетевом оборудовании.
Откройте RDGW Manager и убедитесь, что ошибок нет и все элементы имеют зеленые значки.
Настройка RDP-клиента для использования шлюза RDS
Затем вы можете настроить клиент Remote Desktop Connection для подключения к внутренним узлам RDS через шлюз Remote Desktop Gateway.
- Запустите программу
mstsc.exe
клиент; - В Генерал На вкладке Введите имя отдельного хоста RDS, фермы RDS или компьютера, к которому нужно подключиться по RDP (можно также указать имя пользователя и использовать сохраненные учетные данные для подключения по RDP);
- Затем перейдите в раздел Advanced вкладку и нажмите Настройки по ссылке Подключение из любого места (настройка параметров для подключения через шлюз удаленных рабочих столов, когда я работаю удаленно) раздел;
- Выберите Используйте эти настройки сервера шлюза RD и укажите внешнее DNS-имя вашего сервера RDGW (обратите внимание, что это имя должно быть указано в сертификате). Если вы используете другой порт для RDGW, укажите его после имени сервера через двоеточие, например,
gw.woshub.com:4443
. - Чтобы не вводить пароль дважды при подключении, отметьте опцию Использовать мои учетные данные шлюза RD для удаленного компьютера;
- Нажмите Connect (Подключиться) и введите учетные данные пользователя для подключения к серверу RD Gateway;
- Клиент установит соединение с узлом RDS/RDP в вашей локальной сети;
- Откройте RD Gateway Manager, перейдите в раздел Monitoring и убедитесь, что в списке отображается подключение вашего клиента.
Вы можете отслеживать успешные или неудачные подключения к RDGW в средстве просмотра событий (Applications and Services Logs -> Microsoft -> Microsoft-Windows-TerminalServices-Gateway -> Operational).
Если пользователь успешно подключился к RDGW, из источника TerminalServices-Gateway появится событие Event ID 205.
The user "woshub\maxadmin", on client computer "xx.xx.xx.xx", successfully connected to the remote server "mun-rdsgw.woshub.com" using UDP proxy. The authentication method used was: "Cookie".
Если вы хотите запускать RemoteApps через RD Gateway, добавьте следующие строки в RemoteApp *.rdp
файл:
gatewayhostname:s:gw.woshub.com gatewayusagemethod:i:1
В этой статье мы показали, как настроить роль Remote Desktop Gateway на Windows Server для реализации безопасного удаленного доступа к вашей сети с помощью RDP по HTTPS.
Автономный шлюз RD в рабочей группе (без домена AD)
Если вы публикуете автономный сервер RDSH в Интернете, небезопасно открывать для внешнего мира стандартный порт RDP 3389. В этом случае вы будете постоянно видеть попытки перебора паролей RDP в журналах безопасности хоста. Вы можете использовать шлюз RD для безопасного развертывания RDSH через Интернет и использовать зашифрованное SSL/TLS-соединение на порту TCP:443 для подключения к службе RDP.
Вопреки распространенному мнению, шлюз RD можно развернуть без домена Active Directory (в среде Workgroup). Предположим, у вас есть отдельный хост RDS под управлением Windows Server в рабочей группе.
Установите роль RDGateway с помощью команды:
Install-WindowsFeature RDS-Gateway -IncludeAllSubFeature –IncludeManagementTools
Откройте RD Gateway Manager оснастка (tsgateway.msc
) и создайте Политика авторизации (CAP).
- В настройках политики разрешите пользователям из BUILTIN\Remote Desktop Users локальная группа для подключения с использованием парольной аутентификации;
- Выберите, какие устройства могут быть перенаправлены клиентами в сеанс RDP (по умолчанию все локальные устройства могут быть перенаправлены в RDP, включая принтеры, локальные диски и буфер обмена);
- На следующем шаге вы можете настроить таймауты бездействия сеансов RD.
Теперь создайте новый Политика авторизации ресурсов (RAP).
- Разрешить соединения с членами BUILTIN\Remote Desktop Users группа;
- Выберите опцию Разрешить пользователям подключаться к любому сетевому ресурсу (компьютеру);
- Разрешить подключения только к RDP-порту 3389.
Следующим шагом будет установка SSL/TLS-сертификата на шлюз RDS. Вы можете использовать бесплатный SSL-сертификат Let’s Encrypt, коммерческий сертификат или самоподписанный сертификат Windows (мы будем использовать этот вариант).
По умолчанию RDGW генерирует самоподписанный сертификат, который действителен в течение шести месяцев. Вы можете использовать PowerShell для создания сертификата с длительным сроком действия. Внешнее DNS-имя и/или публичный IP-адрес узла шлюза RD, к которому будут подключаться клиенты, должны быть включены в тему сертификата CN или альтернативное имя темы (DNS). При создании сертификата укажите все необходимые имена и IP-адреса, разделяя их запятыми:
$todaydate = Get-Date
$addyear = $todaydate.AddYears(5)
New-SelfSignedCertificate -dnsname gw1.woshub.com,10.11.12.13,rdgw.woshub.com -notafter $addyear -CertStoreLocation cert:\LocalMachine\My
Откройте Свойства RDGW, перейдите к пункту SSL-сертификат вкладка -> Выберите существующий сертификат из локального/личного хранилища сертификатов шлюза RD. -> Сертификат на импорт. Выберите созданный сертификат.
Теперь вы можете настроить RDP-соединение на клиенте. Сначала нужно экспортировать сертификат с хоста RDGW:
- Откройте консоль «Сертификаты компьютера» (
certlm.msc
); - Развернуть магазин Персональный -> Сертификаты;
- Выберите свой сертификат RDGW -> Все задания -> Экспорт;
- Экспортируйте сертификат в файл *.CER файл (без закрытого ключа);
Этот сертификат должен быть установлен на клиентах. Если клиент не доверяет сертификату шлюза RD, он не сможет установить соединение.
Вы можете установить сертификат вручную или с помощью GPO. Поместите сертификат в Доверенные корневые центры сертификации хранить.
Теперь откройте mstsc.exe
клиент и настройте подключение через шлюз удаленных рабочих столов. Укажите FQDN или IP-адрес хоста RDGW в разделе Advanced -> Settings -> Use these RD Gateway settings.
Для имени хоста RDP укажите localhost
и имя пользователя для подключения в формате rds01\user1
, где rds01
это имя локального компьютера (имя хоста) Windows Server, на котором запущена роль RDS.
Если какое-либо из имен SAN в сертификате не совпадает с именем шлюза RD, будет выдано сообщение об ошибке.
Your computer cannot connect to the remote computer because the remote desktop gateway server address requested, and the certificate subject name do not match.