Шлюз удаленных рабочих столов это роль 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.

Предполагается, что Active Directory и ферма RDS уже развернуты в вашей сети.

Вы можете установить Шлюз удаленных рабочих столов роль через Server Manager (Add roles & Features -> Server Role -> Remote Desktop Services) или с помощью PowerShell.

Установка роли шлюза удаленных рабочих столов на Windows Server

При установке службы RDGW также устанавливается веб-сервер IIS и роль NPS (Network Policy Server).

Убедитесь, что роль RDS-Gateway установлена:

Get-WindowsFeature RDS*

powershell - добавить RDS-Gateway

Или установите роль на 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:

  1. Разверните Политики -> Политики авторизации подключений и выберите Создать новую политику -> Мастер;
  2. Введите имя политики (rdgwExtUsers);
  3. Выберите тип аутентификации (пароль и/или смарт-карта) и укажите группу пользователей, которым разрешена аутентификация на RDGW; Политика авторизации шлюза RDS
  4. В Включить или отключить перенаправление устройств В этом окне можно указать, какие устройства разрешено перенаправлять в сеанс RDP (буфер обмена, принтеры, локальные диски и т. д.); rdgw - настройка перенаправления устройств
  5. Затем можно настроить таймауты для сессий RDP;
  6. Подтвердите создание политики.

Политику подключения RDGW можно также создать с помощью PowerShell:

Import-Module -Name RemoteDesktopServices
New-Item -Path 'RDS:\GatewayServer\CAP' -Name 'rdgwAllowAutht-CAP' -UserGroups rdgwExtUsers -AuthMethod '1'

После этого создайте политику RD RAP:

  1. В консоли RD Gateway Manager нажмите Policies -> Resource Authorization Policies и выберите Create New Policy -> Wizard; RD Gateway manager - Политика авторизации ресурсов
  2. Введите имя политики: rdgwExternalAdmins;
  3. Укажите имя группы пользователей, которым разрешено подключаться к внутренним ресурсам RDS; выбрать группу безопасности, которой разрешено подключаться к RDS
  4. На вкладке Сетевые ресурсы укажите, к каким серверам RDS разрешено подключаться внешним пользователям (mun-rdsfarm); Сетевые ресурсы - разрешить доступ к внутренним узлам
  5. Затем укажите номера портов, к которым вы хотите разрешить подключение. По умолчанию рекомендуется открыть только стандартный порт RDP TCP/3389. Но вы можете открыть и другие порты; шлюз rd - разрешенные порты
  6. Политика готова.

Вы можете добавить это правило 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).

В полях Subject Name (CN) или Subject Alternative Name сертификата должно быть указано FQDN (DNS) имя вашего сервера RDGW. Оно будет использоваться для подключения внешних клиентов (доступных через Интернет).
  1. Откройте свойства сервера RDGW в консоли RD Gateway и перейдите в раздел SSL-сертификат вкладка;
  2. В этом примере мы используем самоподписанный сертификат. Выберите Создать самоподписанный сертификат -> Создание и импорт сертификата; Настройка SSL-сертификата на шлюзе RD
  3. Введите имя сертификата (это имя будет использоваться вашими клиентами для подключения к RDGW) и выберите каталог, в который вы хотите сохранить сертификат (распространите этот сертификат среди ваших RD-клиентов). Использование самоподписанных сертификатов на шлюзе RD

Для подключения к RDGateway на Windows Server 2019 используются следующие порты:

  • HTTPPort (по умолчанию) — 443 TCP
  • UDPPort (по умолчанию) — 3391 UDP (использование транспортного протокола UDP необязательно, однако оно позволяет значительно повысить производительность туннеля и качество изображения в RDP-сессии).

Не забудьте открыть (пробросить) эти порты с вашего публичного IP на хост RDGW на сетевом оборудовании.

Транспортный HTTP-порт 443 шлюза удаленных рабочих столов

Откройте RDGW Manager и убедитесь, что ошибок нет и все элементы имеют зеленые значки.

Состояние RDGW

Настройка RDP-клиента для использования шлюза RDS

Затем вы можете настроить клиент Remote Desktop Connection для подключения к внутренним узлам RDS через шлюз Remote Desktop Gateway.

Если вы используете самоподписанный сертификат на RDGW, внесите его в список доверенных корневых центров сертификации на вашем клиенте. См. статью о том, как обновлять корневые сертификаты в Windows.
  1. Запустите программу mstsc.exe клиент;
  2. В Генерал На вкладке Введите имя отдельного хоста RDS, фермы RDS или компьютера, к которому нужно подключиться по RDP (можно также указать имя пользователя и использовать сохраненные учетные данные для подключения по RDP); mstsc - свойства RDP-соединения
  3. Затем перейдите в раздел Advanced вкладку и нажмите Настройки по ссылке Подключение из любого места (настройка параметров для подключения через шлюз удаленных рабочих столов, когда я работаю удаленно) раздел;
  4. Выберите Используйте эти настройки сервера шлюза RD и укажите внешнее DNS-имя вашего сервера RDGW (обратите внимание, что это имя должно быть указано в сертификате). Если вы используете другой порт для RDGW, укажите его после имени сервера через двоеточие, например, gw.woshub.com:4443. клиент mstsc - использование шлюза RD
  5. Чтобы не вводить пароль дважды при подключении, отметьте опцию Использовать мои учетные данные шлюза RD для удаленного компьютера;
  6. Нажмите Connect (Подключиться) и введите учетные данные пользователя для подключения к серверу RD Gateway;
  7. Клиент установит соединение с узлом RDS/RDP в вашей локальной сети;
  8. Откройте RD Gateway Manager, перейдите в раздел Monitoring и убедитесь, что в списке отображается подключение вашего клиента. мониторинг соединений шлюза rd
Если вы используете RDCMan для RDP-соединений, вы можете настроить параметры RD-шлюза на странице Настройка шлюза вкладка. Проверьте Использовать сервер шлюза TS и установите параметры соединения. rdcman - настройки шлюза ts

Вы можете отслеживать успешные или неудачные подключения к RDGW в средстве просмотра событий (Applications and Services Logs -> Microsoft -> Microsoft-Windows-TerminalServices-Gateway -> Operational).

Эти журналы пригодятся вам при анализе журналов соединений RDP.

Если пользователь успешно подключился к 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".

Event ID 205 - rd gateway sucessful connection

Если вы хотите запускать 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).

  1. В настройках политики разрешите пользователям из BUILTIN\Remote Desktop Users локальная группа для подключения с использованием парольной аутентификации;
  2. Выберите, какие устройства могут быть перенаправлены клиентами в сеанс RDP (по умолчанию все локальные устройства могут быть перенаправлены в RDP, включая принтеры, локальные диски и буфер обмена); Политика шлюза удаленных рабочих столов для недоменного RDSH
  3. На следующем шаге вы можете настроить таймауты бездействия сеансов RD.

Теперь создайте новый Политика авторизации ресурсов (RAP).

  1. Разрешить соединения с членами BUILTIN\Remote Desktop Users группа; разрешить подключение к среде рабочей группы через шлюз RD
  2. Выберите опцию Разрешить пользователям подключаться к любому сетевому ресурсу (компьютеру); Позволяет пользователям подключаться к любому сетевому ресурсу (компьютеру);
  3. Разрешить подключения только к RDP-порту 3389. Разрешить только 3389 на RDGW

Следующим шагом будет установка 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. -> Сертификат на импорт. Выберите созданный сертификат.

Выбор сертификата на шлюзе RD

Теперь вы можете настроить RDP-соединение на клиенте. Сначала нужно экспортировать сертификат с хоста RDGW:

  1. Откройте консоль «Сертификаты компьютера» (certlm.msc);
  2. Развернуть магазин Персональный -> Сертификаты;
  3. Выберите свой сертификат RDGW -> Все задания -> Экспорт; Экспорт сертификата RDGM в файл
  4. Экспортируйте сертификат в файл *.CER файл (без закрытого ключа);

Этот сертификат должен быть установлен на клиентах. Если клиент не доверяет сертификату шлюза RD, он не сможет установить соединение.

Вы можете установить сертификат вручную или с помощью GPO. Поместите сертификат в Доверенные корневые центры сертификации хранить.

установка сертификата шлюза RD на клиенте

Теперь откройте mstsc.exe клиент и настройте подключение через шлюз удаленных рабочих столов. Укажите FQDN или IP-адрес хоста RDGW в разделе Advanced -> Settings -> Use these RD Gateway settings.

Клиент удаленного рабочего стола - использование настроек сервера шлюза RD

Для имени хоста RDP укажите localhost и имя пользователя для подключения в формате rds01\user1, где rds01 это имя локального компьютера (имя хоста) Windows Server, на котором запущена роль RDS.

Клиент MSTSC - подключение RDP через шлюз

Если какое-либо из имен 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.

Невозможно подключить компьютер: Адрес сервера Remote Desktop Gateway не соответствует имени темы сертификата