Настройка шлюза Remote Desktop Gateway на Windows Server

Настройка шлюза Remote Desktop Gateway на Windows Server

Remote Desktop Gateway это один из сервисов роли Remote Desktop Services в Windows Server для организации защищенного доступа из Интернета к службам рабочих столов и опубликованным RemoteApp приложениям через HTTPS шлюз. Сервер с ролью RD Gateway выступает в роли посредника между внешними клиентами и развернутыми внутри службами RDS. При использовании RDGW пользователям не нужно настраивать VPN для подключения к RDS в корпоративной сети. Для подключения используется стандартный клиент Remote Desktop Connection (mstsc.exe). В этой статье рассмотрим процесс развертывания шлюза Remote Desktop Gateway на Windows Server 2019 (инструкция применима для Windows Server 2022/2016 и 2012 R2).

Установка роли RDS-Gateway в Windows Server

Служба шлюза удаленных рабочих столов не является обязательным компонентом фермы RDS, поэтому ее нужно установить отдельно. В большинстве случае рекомендуется использовать отдельный сервер для развертывания RDGW или можно совместить его с RDWeb.

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

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

установка роли Remote Desktop Gateway черех Server manager

При установке службы 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 или с помощью PowerShell:

  • rdgwExtUsers – группа пользователей, которым разрешено аутентифицироваться на RDGW;
  • rdgwExternalAdmins – группа для доступа к терминальным серверам через RDGW;
  • msk-rds-farm — должна включать в себя все хосты RDSH и RD Conneciton Broker, к которым вы хотите разрешить подключаться через шлюз удаленных рабочих столов.

Настройка политик доступа RDS Gateway

Для управления политиками и правилами доступа на RDGW используется консоль RD Gateway Manager (tsgateway.msc). Здесь нужно настроить два типа политик:

  • Connection Authorization Policies (RD CAP) – определяют кому разрешено авторизоваться на шлюзе RDS;
  • Resource Authorization Policies (RD RAP)– определяют кому и к каким ресурсам (компьютерам) внутренней сети разрешено подключаться через RDGW.

Создайте сначала политику RD CAP:

  1. Разверните Policies -> Connection Authorization Policies и выберите пункт меню Create New Policy -> Wizard;
  2. Укажите имя политики (rdgwExtUsers);
  3. Выберите тип аутентификации (по паролю и/или по смарт карте), укажите группу пользователей, которым разрешено аутентифицироваться на RDGW; группа, которой разрешено аутентфицироваться на шлюзе удаленных рабочих столов
  4. В окне Enable or Disable Device Redirection можно указать какие устройства разрешено прокидывать в RDP сессию (буфер обмена, принтера, локальные диски и т.д.); разрещить перенаправление локальных устройств в RDP сессии
  5. Далее можно настроить таймауты для RDP сеансов;
  6. Подтвердите создание политики.

Также вы можете создать политику клиентского доступа RDGW с помощью PowerShell:

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

Затем создайте политику RD RAP:

  1. В консоли RD Gateway Manager выберите Policies -> Resource Authorization Policies и выберите пункт меню Create New Policy -> Wizard; RD Gateway manager создать политику Resource Authorization Policies
  2. Укажите имя политики: rdgwExternalAdmins;
  3. Укажите имя группу, которой разрешено подключаться к внутренним RDS ресурсам; разрешить подключение через RDGW для группу пользователей
  4. На вкладке Network Resources нужно указать к каким RDS серверам разрешено подключаться вашим внешним пользователям (msk-rds-farm); разрешить подключение к группе серверов
  5. Далее укажите разрешенные для подключения порты. По-умолчанию рекомендуется открыть только стандартный RDP порт 3389. Но вы можете открыть и дополнительные порты; разрешить подключение через 3389 порт
  6. Политика готова.

Правило RAP также можно создать с помощью PowerShell:
New-Item -Path RDS:GatewayServerRAP -Name allowextAdminMskRDS -UserGroups [email protected] -ComputerGroupType 1 -ComputerGroup [email protected]

Настройка SSL сертификата для Remote Desktop Gateway

Для защиты подключения к шлюзу RDS на нем нужно установить сертификат. Оптимально использовать коммерческий сертификат, выданный внешним центром сертификации. Возможно использовать бесплатного SSL сертификат Let’s Encrypt (установка Let’s Encrypt сертификата на IIS для Remote Desktop Gateway). Также вы можете использовать самоподписанный SSL сертификат Windows, но здесь имейте в виду что внешние клиенты должны обязательно доверять такому сертификату. Если клиент не доверяет сертификату на сервере RDGW, он не сможет подключиться к шлюзу (самоподписанные SSL сертификаты можно импортировать на клиентов вручную или через GPO) .

В поле Subject Name (CN) или Subject Alternative Name сертификата должно обязательно содержаться DNS имя сервера RDGW, которое будет использоваться для подключения внешними клиентами (доступное из интернета).

  1. Откройте свойства сервера RDGW в консоли RD Gateway и перейдите на вкладку SSL Certificate;
  2. В этом примере мы используем самоподписанный сертификат. Выберите пункт Create a self-signed certificate -> Create and Import Certificate; SSL сертификат для Remote Desktop GW
  3. Укажите имя сертификата (это DNS будет использоваться вашими клиентами для подключения к RDGW) и каталог, в который нужно сохранить сертификат (это сертификат нужно распространить на клиентов); смамоподписанный сертификат для RD Gateway

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

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

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

порты подключения RD Gateway 443 TCP и 3391 UDP

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

настройка Remote Desktop Gateway на Windows Server 2019 закончена

Настройка RDP клиента для подключения шлюзу RD Gateway

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

  1. Запустите клиент
    mstsc.exe
    ;
  2. На вкладке General укажите имя RDSH хоста, RDS фермы, или компьютера к которому вы хотите подключиться по RDP (можно также указать имя пользователя и использовать сохраненные учетные данные для RDP подключения); подключение rdp к внутреннему серверу
  3. Затем перейдите на вкладку Advanced и щелкните на кнопку Settings в разделе Connect from anywhere (Configure settings to connect through Remote Desktop Gateway when I am working remotely); настройка клиента mstsc
  4. Выберите опцию Use these RD Gateway server settings, укажите внешнее DNS имя по которому доступен ваш RDGW сервер (напоминаю, что это имя должно быть указано в сертификате).Если вы используете нестандартный порт для RDGW, его нужно указать после имени сервера через двоеточие, например: gw.winitpro.ru:4443; RDP подключение через RD Gateway
  5. Чтобы не при подключении клиент не запрашивал пароль два раза, включите опцию Use my RD Gateway credentials for the remote computer;
  6. Нажмите кнопку Connect и введите пароль для подключения к RDGW серверу в окне RD Gateway Server Credentials; пароль для аутентфикации на RDGW
  7. Клиент должен установить подключение с RDS/RDP хостом в вашей локальной сети;
  8. Запустите консоль RD Gateway Manager, перейдите в раздел Monitoring и проверьте, что в списке отображается подключение вашего клиента. мониторинг подключений через шлюз удаленного доступа рабочих столов
Если вы используете утилиту RDCMan для RDP подключений, параметры RD Gateway можно задать на вкладке GatewaySetting. Включите опцию Use a TS Gateway server и укажите параметры подключения. rdcman подключение через remote desktop gateway

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

При успешном подключении пользователя через RDGW в журнале появится событие с Event ID 205 от источника TerminalServices-Gateway

The user "winitprokbuldogov", on client computer "xx.xx.xx.xx", successfully connected to the remote server "msk-rdsman.winitpro.ru" using UDP proxy. The authentication method used was: "Cookie".

Event ID 205 событие подключения через rdgw

Если вы хотите запускать RemoteApp через RD Gateway, нужно добавить в *.rdp файл remoteapp следующие строки:

gatewayhostname:s:gw.winitpro.ru
gatewayusagemethod:i:1

В этой статье мы показали, как настроить роль Remote Desktop Gateway на Windows Server для реализации защищенного удаленного доступа в вашу сеть с помощью RDP over HTTPS.

Настройка шлюза RD Gateway в рабочей группе

При размещении отдельностоящего RDSH сервера в интернете, открывать наружу стандартный RDP порт 3389 небезопасно. В журналах безопасности хоста будут постоянно фиксироваться события перебора паролей по RDP. Вы можете безопасно опубликовать RDSH в интернете через RD Gateway и использовать для RDP доступа защищённое SSL/TLS подключение по порту TCP:443.

Вопреки распространённому убеждения, RD Gateway можно развернуть без домена Active Directory (в рабочей группе).

Предполагаем, что вы развернули отдельный RDS хост с Windows Server в рабочей группе.

Установите роль RDGateway с помощью команды:

Install-WindowsFeature RDS-Gateway -IncludeAllSubFeature –IncludeManagementTools

Откройте консоль RD Gateway Manager (
tsgateway.msc
) и создайте политику Connection Authorization Policy (CAP).

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

После этого создайте новую Resource Authorization Policy (RAP).

  1. Разрешите подключения для группы
    BUILTINRemote Desktop Users
    ; RD gateway доступ для группы BUILTINRemote Desktop Users
  2. Выберите опцию Allow users to connect to any network resource (computer); Разрешить подключение RDP пользователей
  3. Разрешите подключение только на RDP порт 3389. открыть только доступ для 3389 портв

Следующий этап – установить SSL/TLS сертификат для защиты подключений к шлюзу RDS. Можно использовать бесплатный SSL сертификат Let’s Encrypt или самоподписанный SSL сертификат Windows (для простоты мы будем использовать этот вариант).

По умолчанию для RDGW генерируется самоподписанный сертификат со сроком действия полгода. С помощью PowerShell можно создать сертификат с большим сроком. В CN имени сертификата или в Subject Alternative Name (DNS) должно содержаться внешнее DNS имя и/или статический (белый) IP адрес сервера RD Gateway, к которому будут подключаться клиенты. Укажите через запятую все необходимые имена при создании сертификата:

$todaydate = Get-Date
$addyear = $todaydate.AddYears(5)
New-SelfSignedCertificate -dnsname rdgw.winitpro.ru,123.123.123.12,gw.mydomain.ru -notafter $addyear -CertStoreLocation cert:LocalMachineMy

Откройте свойства сервера RDGW, перейдите на вкладку SSL Certificates -> Select an existing certificate from the RD Gateway Certificates Local/Personal Store -> Import Certificate. Выберите созданный вами сертификат.

Самоподписанный SSL сертификат для Remote Desktop Gateway

Теперь можно настроить подключение на клиенте. В первую очередь надо экспортировать с сервера RDGW сертификат.

  1. Откройте консоль сертификатов компьютера (
    certlm.msc
    );
  2. Разверните хранилище Personal -> Certificates;
  3. Выберите сертификат -> All tasks -> Export; Экспорт сертификата RDGW
  4. Экспортируйте сертификат в файл *.CER (без закрытого ключа);

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

Вы можете установить сертификат вручную или через GPO. Установить сертификат в Trusted Root Certification Authorities.

Добавить сертификат RDGW в Trusted Root Certification Authorities

Теперь откройте клиент
mstsc
и настройте подключение через Remote Desktop Gateway. Укажите имя или IP адрес хоста RDGW в разделе Advanced -> Settings -> Use these RD Gateway settings.

Подключение к RDS через шлюз Remote Desktop Gateway в рабочей группе

В качестве имени RDP хоста укажите
localhost
и имя пользователя для подключения в формате
rdssrv01user1
, где rdssrv01- локальное имя компьютера (hostname) Windows Server с ролью RDS.

RDP подключение к localhost через RDGW

Если SAN имя в сертификат не соответствует имени RD gateway хоста в подключении, появится ошибка:

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 server не совпадает с именем в сертификате

Windows Server 2016
Настройка шлюза Remote Desktop Gateway на Windows Server