В этой статье мы покажем, как использовать доверенные SSL/TLS сертификаты для защиты RDP подключений к компьютерам и серверам Windows в домене Active Directory. Эти сертфикаты мы будем использовать вместо самоподписанных RDP сертификатов (у пользователей появляется предупреждение о невозможности проверки подлинности при подключению к RDP хосту с таким сертификатом). В этом примере мы настроим специальный шаблон для выпуска RDP сертификатов в Certificate Authority и настроим групповую политику для автоматического выпуска и привязки SSL/TLS сертификата к службе Remote Desktop Services.
Содержание:
- Предупреждение о самоподписанном сертификате RDP
- Создаем шаблон RDP сертификата в центре сертификации (CA)
- Настройка групповой политики для выдачи RDP сертификатов
- Подписываем RDP файл и добавляем отпечаток доверенного RDP сертификата
Предупреждение о самоподписанном сертификате RDP
По умолчанию в Windows для защиты RDP сессии генерируется самоподписанный
сертификат. В результате при первом подключении к RDP/RDS серверу через клиента mstsc.exe, у пользователя появляется предупреждение:
Не удалось проверить подлинность удаленного компьютер из-за проблем с сертификатом безопасности. Ошибка сертификата: сертификат выдан не имеющим доверия центром сертификации.
Чтобы продолжить установление RDP подключении пользователь должен нажать кнопку Да. Чтобы RDP предупреждение не появлялось каждый раз, можно включить опцию “Больше не выводить запрос о подключениях к этому компьютеру».
При этом отпечаток RDP сертификата сохраняется на клиенте в параметре CertHash в ветке реестра с историей RDP подключений (HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers). Если вы скрыли уведомление о невозможности проверить подлинность RDP сервера, чтобы сбросить настройки, удалите ключ с отпечатком сертификата из реестра.
Несмотря на то, что для подключения используется самоподписанный сертификат, ваше RDP подключение защищено, а трафик зашифрован.
Создаем шаблон RDP сертификата в центре сертификации (CA)
Попробуем использовать для защиты RDP подключений доверенный SSL/TLS сертификат, выданный корпоративным центром сертификации. С помощью такого сертификата пользователь может выполнить проверку подлинности RDP сервера при подключении. Предположим, что у вас в домене уже развернут корпоративной центр сертификации (Microsoft Certificate Authority), в этом случае вы можете настроить автоматическую выдачу и подключение сертификатов всем компьютерам и серверам Windows в домене.
Н на вашем CA нужно создать новый тип шаблона сертификата для RDP/RDS серверов.
- Запустите консоль Certificate Authority и перейдите в секцию Certificate Templates;
- Сделайте копию шаблона сертификата Computer (Certificate Templates -> Manage -> Computer -> Duplicate);
- На вкладке General укажите имя нового шаблона сертификата – RDPTemplate. Убедитесь, что значение поля Template Name полностью совпадает с Template display name;
- На вкладке Compatibility укажите минимальную версию клиентов в вашем домене (например, Windows Server 2008 R2 для CA и Windows 7 для клиентов). Тем самым будут использоваться более стойкие алгоритмы шифрования;
- Теперь на вкладке Extensions в политике приложений (Application policy) нужно ограничить область использования такого сертификата только для Remote Desktop Authentication (укажите следующий object identifier — 1.3.6.1.4.1.311.54.1.2). Нажмите Add -> New, создайте новую политику и выберите ее;
- В настройках шаблона сертификата (Application Policies Extension) удалите все политики кроме Remote Desktop Authentication;
- Чтобы использовать данный шаблон RDP сертификатов на контролерах домена, откройте вкладку Security, добавьте группу Domain Controllers и включите для нее опцию Enroll и Autoenroll;
- Сохраните шаблон сертификата;
- Теперь в оснастке Certificate Authority, щёлкните по папке Certificate Templates, выберите New -> Certificate Template to Issue -> выберите созданный шаблон RDPTemplate.
Настройка групповой политики для выдачи RDP сертификатов
Теперь нужно настроить доменную политику, которая будет автоматически назначать RDP сертификат компьютерам/серверам согласно настроенного шаблона.
Предполагается, что все компьютеры домена доверяют корпоративному центру сертификации, т.е. корневой сертификат через GPO добавлен в доверенные корневые центры сертификации.
- Откройте консоль управления доменными групповыми политиками gpmc.msc, создайте новый объект GPO и назначьте его на OU с RDP/RDS серверами или компьютерами, для которых нужно автоматически выдавать TLS сертификаты для защиты RDP подключения;
- Перейдите в раздел GPO: Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Security. Включите политику Server Authentication Certificate Template. Укажите имя шаблона CA, который вы создали ранее (RDPTemplate);
- Затем в этом же разделе GPO включите политику Require use of specific security layer for remote (RDP) connections и установите для нее значение SSL;
- Для автоматического продления RDP сертификата, перейдите в раздел GPO Computer configuration -> Windows settings -> Security Settings -> Public Key Policies и включите политику Certificate Services Client – Auto-Enrollment Properties. Выберите опции “Renew expired certificates, update pending certificates and remove revoked certificates” и “Update certificates that use certificate templates”;
- Если вы хотите, чтобы клиенты всегда проверяли сертификат RDP сервера, вам нужно настроить политику Configure Authentication for Client = Warn me if authentication fails (секция GPO Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Settings -> Remote Desktop Connection Client);
- Если нужно, можете через политики файервола открыть входящий RDP порт TCP/UDP 3389;
- Осталось обновить политики на клиенте, запустить консоль сертификатов компьютера (Certlm.msc), и проверить, что в разделе Personal -> Certificates появился сертификат для Remote Desktop Authentication, выданный вашим CA.
Если политики не применились, для диагностики GPO воспользуйтесь утилитой gpresult и этой статьей.
Для применения нового RDP сертификата, перезапустите службу Remote Desktop Services:
Get-Service TermService -ComputerName msk-dc01| Restart-Service –force –verbose
Теперь при RDP подключении к серверу перестанет появляться запрос на доверие сертификату (чтобы появился запрос о доверии сертификату, подключитесь к серверу по IP адресу вместо FQDN имени сервера, для которого выпущен сертификат). Нажмите кнопку “Посмотреть сертификат”, перейдите на вкладку “Состав”, скопируйте значение поля “Отпечаток сертификата”.
Также можете в консоли Certification Authority в секции Issued Certificates проверить, что по шаблону RDPTemplate был выдан сертификат определённому Windows компьютеру/серверу. Также проверьте значение Thumbprint сертификата:
Теперь сравните полученные данные с отпечатком сертификата, который используется службой Remote Desktop Service. Вы можете посмотреть значение отпечатка сертификата службы RDS в реестре (ветка HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStations, параметр TemplateCertificate) или командой PowerShell:
Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace rootcimv2terminalservices|select SSLCertificateSHA1Hash
Теперь, при подключении к удаленном столу любого сервера или компьютера, на который действует эта политика, вы не увидите предупреждения о недоверенном RDP сертификате.
Подписываем RDP файл и добавляем отпечаток доверенного RDP сертификата
Если у вас отсутствует CA, но вы хотите, чтобы при подключении к RDP/RDS серверу у пользователей не появлялось предупреждения, вы можете добавить сертификат в доверенные на компьютерах пользователей.
Как описано выше получите значение отпечатка (Thumbprint) RDP сертификата:
Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace rootcimv2terminalservices|select|select SSLCertificateSHA1Hash
Используйте этот отпечаток для подписывания .RDP файла с помощью RDPSign.exe:
rdpsign.exe /sha256 65A27B2987702281C1FAAC26D155D78DEB2B8EE2 "C:UsersrootDesktoprdp.rdp"
Теперь через GPO добавим этот отпечаток сертификата в доверенные у пользователей. Укажите отпечатки (через точку с запятою) в политике Specify SHA1 thumbprints of certificates representing trusted .rdp publishers (Указать отпечатки SHA1 сертификатов, представляющих доверенных издателей RDP) в секции Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Settings -> Remote Desktop Connection Client.
Чтобы работал прозрачных RDP вход без ввода пароля (RDP Single Sign On), нужно настроить политику Allow delegation defaults credential и указать в ней имена RDP/RDS серверов (см. статью).
В данной инструкции у нас уже установлена операционная система Windows Server 2019 на виртуальной машине.
Минимальные требования:
- 64-разрядный процессор с тактовой частотой 1,4 ГГц;
- ОЗУ 512 МБ (2 ГБ для варианта установки «Сервер с рабочим столом»);
- диск 32 ГБ;
- доступ к интернету.
Для того чтобы подключить сертификат с помощью Let’s Encrypt требуется прямые пробросы портов TCP 443, 80 до машины, а также доменное имя, на которое будет вешаться сертификат.
Активация Windows Server 2019 проходит тоже на этом этапе.
Установка ролей на Windows Server 2019
После подготовки Windows Server 2019, мы приступаем к установке ролей для настройки терминального сервера и шлюза удаленных рабочих столов.
Заходим в Диспетчер серверов — Управление — Добавить роли и компоненты.
Открывается “Мастер добавления ролей и компонентов”:
Рисунок 1 — Мастер добавления ролей и компонентов
Добавление ролей на сервере:
- Тип установки — Установка ролей или компонентов.
- Выбор сервера — Выбираем наш текущий сервер.
- Роли сервера — Службы удаленных рабочих столов.
- Службы ролей — Лицензирование удаленных рабочих столов, шлюз удаленных.
Подтверждаем установку компонентов и проводим установку. После установки всех нужных нам ролей — перезагружаем сервер.
У нас вы можете взять готовый терминальный сервер 1С в аренду.
Настройка сервера лицензирования
Заходим в Диспетчер серверов — Средства — Remote Desktop Services — Диспетчер лицензирования удаленных рабочих столов.
В диспетчере нажимаем ПКМ на наш сервер и выбираем “Активировать сервер”.
Попадаем в “Мастер активации сервера”, вводим свои данные и нажимаем “Далее”.
Рисунок 2 — Мастер активации сервера
В следующем пункте вводим “Сведения об организации” и нажимаем “Далее”.
Завершение работы мастера активации сервера выполняется с поставленной галочкой “Запустить мастер установки лицензий” чтобы попасть в оснастку установки лицензий.
Рисунок 3 — Завершение работы мастера активации сервера
В мастере установки лицензий мы видим параметры сервера лицензирования и нажимаем “Далее”.
В следующем окне мы выбираем лицензию в зависимости от приобретенной вами лицензии.
Имеется несколько типов лицензии:
- Пакет лицензий (в розницу).
- Соглашение “Open License”.
- Соглашение “Select License”.
- Соглашение “Enterprise Agreement”.
- Соглашение “Campus Agreement”.
- Соглашение “School Agreement”.
- Лицензионное соглашение постановщика услуг.
- Другое соглашение.
- Лицензия Select Plus.
В нашем случае мы выбираем “Соглашение “Enterprise Agreement”” и нажимаем “Далее”.
- Версию продукта ставим “Windows Server 2019”.
- Тип лицензии “Клиентская лицензия служб удаленных рабочих столов “на устройство”.
- Количество в зависимости от приобретенной вами. В нашем случае мы активируем на 10 устройств.
Завершаем работу мастера установки лицензий.
Для завершение установки лицензий осталось выполнить пункт по добавление групповых политик, для этого нажимаем ПКМ по меню “Пуск” и выбираем “Выполнить”.
В окне “Выполнить” вводим gpedit.msc и нажимаем “ОК”.
Попадаем в “Редактор локальной групповой политики”
В данной настройке требуется править две записи. Для того чтобы указать сервер лицензирования мы переходим в пункт:
Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Служба удаленных рабочих столов — Узел сеансов удаленных рабочих столов — Лицензирование — Использовать указанные серверы лицензирования удаленных рабочих столов.
Включаем данную политику и вводим требуемый сервер лицензирования. В нашем случае мы будем ссылаться на свой локальный сервер “localhost” и применяем настройку.
Рисунок 4 — Использование серверов лицензирования
Для второго пункта мы переходи по следующему пути:
Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Служба удаленных рабочих столов — Узел сеансов удаленных рабочих столов — Лицензирование — Задать режим лицензирования удаленных рабочих столов.
Включаем политику и указываем режим лицензирования, в нашем случае мы активируем “на устройство” и применяем настройку.
Рисунок 5 — Задаем режим лицензирования
Настройка по установки лицензий прошла успешно, далее мы настраиваем шлюз удаленных рабочих столов.
Настройка шлюза удаленных рабочих столов
Шлюз удаленных рабочих столов является сервисом посредником между клиентами из внешней сети и сеансов внутренней сети, обеспечивает безопасный обмен данными между ними.
Заходим в Диспетчер серверов — Средства — Remote Desktop Services — Диспетчер шлюза удаленных рабочих столов.
Нажимаем ПКМ по папке “Политики” и выбираем “Создание новых политик авторизации”.
Мы попадаем в “Мастер создания новых политик авторизации”.
Рисунок 6 — Создание политик авторизации для шлюза удаленных рабочих столов
По пунктам выбираем следующее:
- Политики авторизации — Создать политику авторизации подключений к удаленным рабочим столам и авторизации ресурсов удаленных рабочих столов.
- Политика авторизации подключений — пишем наименование политики (в нашем случае Users).
- Требования — выбираем членство в группе для пользователей или компьютеров, которые смогут подключаться к серверу (в нашем случае, мы добавили группу пользователей “Пользователи удаленного рабочего стола” и “Администраторы”).
- Перенаправление устройств — выбираем, что требуется перенаправить (мы выбрали “Включить перенаправление устройств для всех клиентских устройств”).
- Время ожидания сеанса — по умолчанию.
- Сводка по политике авторизации подключений к RD — параметры которые будут созданы в данной политике.
- Политика авторизации ресурсов — пишем наименование политики (в нашем случае TS).
- Группы пользователей — выбираем членство в группе для пользователей или компьютеров, которые смогут подключаться к серверу (в нашем случае, мы добавили группу пользователей “Пользователи удаленного рабочего стола” и “Администраторы”).
- Сетевой ресурс — можем настроить группу терминальных серверов, куда можно подключиться, выберем “Разрешить подключение пользователей к любому ресурсу (компьютеру)”.
- Разрешенные порты — если настроен нестандартный порт, то в этом пункте можно это указать, выбираем “Разрешить подключение только к порту 3389”.
- Сводка по политике авторизации ресурсов RD — параметры которые будут созданы в данной политике.
На данном этапе мы завершили настройку шлюза удаленных рабочих столов, за исключением установки сертификата.
Рисунок 7 — Оснастка диспетчера шлюза удаленных рабочих столов без сертификата
Для того, чтобы установить сертификат на шлюз удаленных рабочих столов, мы воспользуемся утилитой win-acme.
Установка сертификата на шлюз удаленных рабочих столов через Let’s Encrypt
Скачиваем программу по ссылке:
https://github.com/win-acme/win-acme/releases/download/v2.1.14.1/win-acme.v2.1.14.996.x64.trimmed.zip
Копируем в папку C:Scriptswin-acme
Создаем 3 bat-файла:
- Файл «C:Scriptswin-acmeRegister.bat»
Файл «C:Scriptswin-acmeRegister.bat»
@echo off rem powershell.exe :: Ввод данных: set /p commonname_Data="Enter Domain name(exampe : v0162.esit.info) : " powershell -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "Get-WebBinding | Remove-WebBinding" powershell -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "New-WebBinding -Name 'Default Web Site' -Port 443 -Protocol https -SslFlags 0 -IPAddress "*" -HostHeader "*" " powershell -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "New-WebBinding -Name 'Default Web Site' -Port 80 -Protocol http -IPAddress "*" -HostHeader "*" " powershell -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "Set-WebBinding -Name 'Default Web Site' -BindingInformation "*:443:*" -PropertyName HostHeader -Value '%commonname_Data%'" powershell -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "Set-WebBinding -Name 'Default Web Site' -BindingInformation "*:80:*" -PropertyName HostHeader -Value '%commonname_Data%'" @echo on "C:Scriptswin-acmewacs.exe" --installation script --target iissite --siteid 1 --commonname %commonname_Data% --emailaddress [email protected] --accepttos --script "./scripts/PSScript.bat" --scriptparameters "./scripts/ImportRDGateway.ps1 {5}"
- Файл «C:Scriptswin-acmeScriptsPSScript.bat»
Листинг:
powershell.exe -ExecutionPolicy RemoteSigned -File %*
- После этого запускаем «C:Scriptswin-acmeRegister.bat».
- Вводим домен на котором находится наш шлюз удаленных рабочих столов.
- Если всё получилось, то в оснастке шлюза удаленных рабочих столов должен появится созданный сертификат, а в консоли — готовый результат.
- Элемент маркированного списка
Рисунок 8 — Сертификат успешно установлен
Подключение пользователей
Следующем этапом мы создаем пользователей для подключение к удаленному рабочему столу через шлюз удаленных рабочих столов.
- В окне “Выполнить” вводим команду “control userpasswords2”.
- Нажимаем “Дополнительно”.
- Выбираем папку “Пользователи” переходим в “Дополнительные действия” и нажимаем “Новый пользователь”.
- Вводим требуемые поля.
Рисунок 9 — Добавление нового пользователя
Создаем нового пользователя и добавляем его в группу “Пользователи удаленного рабочего стола”, для этого заходим в Панель управления — Система — Настройка удаленного рабочего стола — Выбрать пользователей — Добавить.
Добавляем созданных пользователей, после чего подключаемся к серверу.
Подключение к серверу терминалов
На машине, с которой будем подключаться к серверу, ищем утилиту “Подключение к удаленному рабочему столу” на Windows 10 она находится по следующему расположению: Пуск — Стандартные — Windows — Подключение к удаленному рабочему столу.
В открытом окне вводим имя нашего сервера или локальный ip-адрес. В нашему случае имя сервера “EFSOL-TS”
Пользователя указываем, которого создали (EFSOL-TSefsol_it).
Далее, чтобы указать адрес шлюза удаленных рабочих столов, переходим во вкладку “Дополнительно” нажимаем “Параметры” вводим в окне Имя сервера наше доменное — “gorbach.esit.info”.
Рисунок 10 — Подключение к шлюзу удаленных рабочих столов
Нажимаем “ОК” и “Подключить”.
При подключении к удаленному рабочему столу — может появится сообщение о сертификате, мы на него соглашаемся.
Установка терминального сервера произведена и шлюз удаленных рабочих столов успешно настроен.
Также мы готовы предложить готовый терминальный сервер в аренду. Конфигурации подобраны для комфортной работы в 1С, офисных приложениях и другом ПО.
One of the most popular posts of all time on my blog has been Create Trusted Remote Desktop Services (RDP) SSL Certificates for Windows 2008R2/2012/Win7. That article is a few years old, so I thought I would update it for Windows Server 2019 and Windows 10. The fundamentals have not changed, but I had a few requests for an updated post…so here it is!
When you install Windows it installs self-signed certificates for use with RDP. As we all know self-signed certificates are not good, and represent a security risk. Even if you install a Microsoft CA in your environment the RDP certificates are not automatically trusted. This post will show you to to automate the process of distributing trusted SSL certificates to the RDP service. As a result of this post you will no longer see the warning below when you RDP into your servers.
The high level process is creating a new certificate authority template that’s unique to RDP certificates. Next you setup a GPO to request these new certificate types, and finally on all servers covered by the GPO you now have a trusted RDP certificate. Fairly easy and once you configure it, you can forget about it. This blog post is based on Windows Server 2019, but the same steps work for Windows Server 2016 as well. The certificates are also good for Windows 10, if you need to RDP into a client OS (such as for VDI).
RDP Certificate Template
1. On your Microsoft certificate authority server open the Certificate Templates console.
2. Expand the CA and right click on Certificate Templates, then select Manage.
3. Right click on the Computer template and select Duplicate.
4. Change the template display name to RemoteDesktopComputer (no spaces). Verify the Template Name is exactly the same (no spaces). You can use a different name if you want, but both fields must match exactly. Change the validity period to match your company policy.
5. Now we need to create an application policy to limit the usage to RDS authentication, then remove the other application uses for the certificate. On the Extensions tab click on Application Policies then click on Edit.
6. Click on Add, then click on New. Set the value of Name to Remote Desktop Authentication. Change the object identifier (OID) to 1.3.6.1.4.1.311.54.1.2.
7. From the Application Policies list, select Remote Desktop Authentication and click OK.
8. Back on the certificate template properties, remove all other entries. Only Remote Desktop Authentication should be present.
9. You probably want to secure your domain controllers as well, so for that we need to modify the security setting on the template. Open the Security tab and add the group Domain Controllers and give the group Enroll (not Autoenroll). Close out the certificate.
10. Open the MMC snap-in for managing your Certificate Authority and locate the Certificate Templates node. Right click, select New, then Certificate Template to Issue. Choose the RemoteDesktopComputer template.
Group Policy Configuration
1. Next up is configuring the GPO to utilize the new template. You can modify any GPO you wish, or create a new one. Obviously the scope of the GPO should cover any servers that you want to secure with TLS.
2. In the GPO editor locate the node Computer ConfigurationPoliciesAdministrative TemplatesWindows ComponentsRemote Desktop ServicesRemote Desktop Session HostSecurity. Modify the Server Authentication Certificate Template setting. Enable the policy and enter the certificate template name that exactly matches what you created in your CA.
3. In the same GPO node, configure the Require use of specific security layer for remote (RDP) connections to use SSL.
4. Wait for the GPO to replicate, then refresh the GPO on a test server. Wait a minute, then open the Certificates MMC snap-in for the computer account. Look in the PersonalCertificates store for a certificate that has the Intended Purposes of Remote Desktop Authentication. If it’s not there, wait a minute, and refresh. If it never appears, something is wrong. Look at the gpresult to make sure your GPO is being applied to the server.
5. To use the new certificate restart the Remote Desktop Services service (or reboot).
6. Open the Certificate and look at the Thumbprint value. Remember the first few characters.
7. Open an elevated PowerShell prompt and run this command:
Get-WmiObject -class “Win32_TSGeneralSetting” -Namespace rootcimv2terminalservices
Validate that the Security Layer value is 2 and that the thumbprint matches the certificate. If both of those settings are correct, then you are good to go!
8. From another computer (domain joined) now RDP into this server and verify that you no longer get the certificate warning. In fact, it should just sail right through to your desktop.
Summary
The procedure for Windows Server 2019 and Windows 10 is basically the same as 5+ years ago when I documented it for Windows Server 2008 R2/2012/Win7. But it’s good to validate that the procedure still works, and give the audience a fresh post. You can check out my 2013 post titled: Create Trusted Remote Desktop Services (RDP) SSL Certificate if you want it for 2008 R2/2012 servers.
Опубликовано: 08.07.2020
Используемые термины: Remote Desktop Gateway, Active Directory, Терминальный сервер.
В данном руководстве мы рассмотрим развертывание роли шлюза удаленных рабочих столов (Remote Desktop Gateway или RDG) на отдельном сервере с Windows Server 2019. Действия будут аналогичны для Windows Server 2012 и 2016 (даже, в основных моментах, 2008 R2). Предполагается, что в нашей инфраструктуре уже имеются:
1. Служба каталогов Active Directory — настроено по инструкции Как установить роль контроллера домена на Windows Server.
2. Два терминальных сервера — настроено по инструкции Установка и настройка терминального сервера на Windows Server.
Пошагово, мы выполним следующие действия:
Установка серверной роли
Настройка шлюза
Создание групп в AD
Создание политик RDG
Привязка сертификата
Настройка клиента для подключения
Remoteapp через Gateway
DNS round robin
Часто встречаемые ошибки
Установка роли
Открываем Диспетчер серверов:
Переходим в Управление — Добавить роли и компоненты:
При появлении окна приветствия нажимаем Далее (при желании, можно поставить галочку Пропускать эту страницу по умолчанию):
На страницы выбора типа установки оставляем выбор на Установка ролей или компонентов:
Выбираем целевой сервер — если установка выполняется на сервере локально, то мы должны увидеть один сервер для выбора:
Ставим галочку Службы удаленных рабочих столов:
Дополнительные компоненты нам не нужны:
… просто нажимаем Далее.
На странице служб удаленных рабочих столов идем дальше:
Выбираем конкретные роли — нам нужен Шлюз удаленных рабочих столов. После установки галочки появится предупреждение о необходимости поставить дополнительные пакеты — кликаем по Добавить компоненты:
Откроется окно для настроек политик:
… нажимаем Далее.
Откроется окно роли IIS:
… также нажимаем Далее.
При выборе служб ролей веб-сервера ничего не меняем:
… и идем дальше.
В последнем окне ставим галочку Автоматический перезапуск конечного сервера, если требуется:
Нажимаем Установить:
Дожидаемся окончания установки роли:
Сервер может уйти в перезагрузку.
Настройка RDG
Для настройки Microsoft Remote Desktop Gateway мы создадим группу компьютеров в Active Directory, настроим политику для RDG и создадим сертификат.
Создание групп для терминальных серверов
Политика ресурсов позволит задать нам конкретные серверы, на которые терминальный шлюз позволит нам подключаться. Для этого мы откроем консоль Active Directory — Users and computers (Пользователи и компьютеры Active Directory) и создаем группу:
* в данном примере мы создаем группу All terminals в организационном юните Servers Group. Это группа безопасности (Security), локальная в домене (Domain local).
Добавим в нашу группу терминальные серверы:
* в данном примере у нас используются два сервера — Terminal-1 и Terminal-2.
Закрываем консоль Active Directory — Users and computers.
Настройка политик
Для предоставления доступа к нашим терминальным серверам, создадим политики для подключений и ресурсов.
В диспетчере сервера переходим в Средства — Remote Desktop Services — Диспетчер шлюза удаленных рабочих столов:
Раскрываем сервер — кликаем правой кнопкой по Политики — выбираем Создание новых политик безопасности:
Устанавливаем переключатель в положении Создать политику авторизации подключений к удаленным рабочим столам и авторизации ресурсов удаленных рабочих столов (рекомендуется):
Даем название политике:
Задаем параметры авторизации:
* мы указали, что пользователи должны подтверждать право вводом пароля, также мы указали, что для применения политики они должны принадлежать группе Domain Users.
В следующем окне есть возможность настроить ограничения использования удаленного рабочего стола. При желании, можно их настроить:
* в нашем случае ограничений нет. При необходимости, устанавливаем переключатель в положение Отключить перенаправление для следующих типов клиентских устройств и оставляем галочки пункты для ограничений.
Далее настраиваем временные ограничения использования удаленного подключения. Если в этом есть необходимость, оставляем галочки в состоянии Включить и указываем количество минут, по прошествии которых сеанс будет отключен:
В следующем окне мы увидим вне введенные настройки:
Идем далее.
Откроется страница создания политики для авторизации ресурса — задаем для нее название:
Указываем группу пользователей, для которой будет применяться политика:
* как и при создании первой политики, мы добавили группу Domain Users.
Теперь выбираем группу ресурсов, на которую будет разрешен доступ со шлюза терминалов:
* мы выбрали группу, созданную нами ранее в AD.
Указываем разрешенный для подключения порт или диапазон портов:
* в данном примере мы разрешим подключение по порту 3389, который используется по умолчанию для RDP.
Нажимаем Готово:
Политики будут созданы.
Настройка сертификата
Для работы системы нам необходим сертификат, который можно купить или получить бесплатно от Let’s Encrypt. Однако, с некоторыми неудобствами, будет работать и самоподписанный. Мы рассмотрим вариант настройки с ним.
Запускаем «Диспетчер шлюза удаленных рабочих столов» — кликаем правой кнопкой по названию нашего сервера — выбираем Свойства:
Переходим на вкладку Сертификат SSL:
Выбираем вариант Создать сомозаверяющий сертификат и кликаем по Создать и импортировать сертификат:
Задаем или оставляем имя для сертификата — нажимаем OK:
Мы увидим информацию о создании сертификата:
Консоль диспетчера шлюза перестанет показывать ошибки и предупреждения:
Сервер готов к работе.
Подключение к серверу терминалов через шлюз
Выполним первое подключение с использованием шлюза. В качестве клиентской операционной системы могут использоваться Windows, Linux, Mac OS. Рассмотрим пример на Windows 10.
Запускаем «Подключение к удаленному рабочему столу» (приложение можно найти в Пуск или ввести команду mstsc). На вкладке Общие вводим локальное имя конечного сервера, к которому мы хотим подключиться:
* в нашем случае мы будем подключаться к серверу terminal-1.dmosk.local.
Переходим на вкладку Дополнительно и кликаем по Параметры:
Переключаем параметр приложения в положение Использовать следующие параметры сервера шлюза удаленных рабочих столов и указываем внешнее имя сервера:
* важно указать именно имя сервера, а не IP-адрес. В моем примере имя сервера rdp.dmosk.local (данное имя не является правильным внешним, но это только пример).
Кликаем Подключить:
Если мы используем самозаверенный сертификат, приложение выдаст ошибку. Кликаем по Просмотреть сертификат:
Переходим на вкладку Состав и кликаем Копировать в файл:
Указываем путь для выгрузки файла:
Открываем папку, куда сохранили сертификат. Кликаем по сохраненному файлу правой кнопкой и выбираем Установить сертификат:
Выбираем Локальный компьютер — Далее:
В качестве размещения сертификата выбираем Доверенные корневые центры сертификации:
Импортируем сертификат.
После снова пробуем подключиться к удаленному рабочему столу через шлюз:
Система запросит логин и пароль для подключения (возможно, дважды) — вводим данные для учетной записи с правами на подключение (на основе настройки политики RDG).
Настройка Remoteapp через Gateway
Предположим, у нас есть опубликованное приложение Remoteapp и мы хотим подключаться к терминальному серверу через настроенный шлюз. Для этого открываем rdp-файл приложения на редактирование (например, блокнотом) и вносим в него изменения:
…
gatewayhostname:s:rdg.dmosk.local
gatewayusagemethod:i:1
…
* где:
- gatewayhostname:s:rdg.dmosk.local — добавленная строка. Настройка говорит, что если при подключении к серверу нужно использовать шлюз, то это должен быт rdg.dmosk.local.
- gatewayusagemethod:i:1 — отредактированная строка. Указывает, что необходимо использовать шлюз.
Пробуем подключиться.
Несколько терминальных серверов и dns round robin
При наличие нескольких серверов терминалов, мы можем создать несколько записей в DNS, чтобы получать по round robin разные серверы:
Однако, при попытке подключиться к незарегистрированному серверу мы увидим ошибку:
Для решения переходим в настройку шлюза — кликаем правой кнопкой по Политики авторизации ресурсов и выбираем Управление локальными группами компьютеров:
Выбираем нужную группу компьютеров и нажимаем Свойства:
* в моем случае это была единственная группа, созданная по умолчанию.
На вкладке Сетевые ресурсы добавляем имя, созданное в DNS:
Теперь подключение будет выполняться без ошибок.
Возможные ошибки
При подключении мы можем столкнуть со следующими ошибками.
1. Учетная запись пользователя не указана в списке разрешений шлюза удаленных рабочих столов.
Причиной является отсутствие пользователя, под которым идет подключение к шлюзу, в группе, которой разрешено использование политики. Для решения проблемы проверяем настройки политики — группы пользователей, которым разрешено использование политики и к каким ресурсам разрешено подключение. В итоге, наш пользователь должен быть в нужной группе, а терминальный сервер, к которому идет подключение должен быть указан в соответствующей группе ресурсов.
2. Возможно, удаленный компьютер указан в формате NetBIOS (например, computer1), но шлюз удаленных рабочих столов ожидает полное доменное имя или IP-адрес (например, computer1.fabrikam.com или 157.60.0.1).
Обращение к терминальному серверу выполняется по незарегистрированному имени. Необходимо проверить настройку в клиенте подключения или зарегистрировать ресурс, как мы это делали при настройке нескольких терминальных серверов.
3. Сертификат шлюза удаленных рабочих столов просрочен или отозван.
В данном случае нужно проверить, какой сертификат привязан к RDG. Также нужно убедиться, что привязанный сертификат, на самом деле, не просрочен или отозван. В крайнем случае, можно заново создать сертификат.
Не так давно внедряли мы решение на терминальном сервере Windows. Как водится, кинули на рабочие столы сотрудникам ярлыки для подключения, и сказали — работайте. Но пользователи оказались зашуганными по части КиберБезопасности. И при подключении к серверу, видя сообщения типа: «Вы доверяете этому серверу? Точно-точно?», пугались и обращались к нам — а все ли хорошо, можно нажимать на ОК? Тогда и было решено сделать все красиво, чтобы никаких вопросов и паники.
Если ваши пользователи все еще приходят к вам с подобными страхами, и вам надоело ставить галочку «Больше не спрашивать» — добро пожаловать под кат.
Шаг нулевой. Подготовка и вопросы доверия
Итак, наш пользователь тыкает на сохраненный файл с расширением .rdp и получает такой вот запрос:
«Зловредное» подключение.
Для избавления от этого окна используется специальная утилита под названием RDPSign.exe. Полная документация доступна, как обычно, на официальном сайте, а мы разберем пример использования.
Для начала нам нужно взять сертификат для подписывания файла. Он может быть:
- Публичным.
- Выданным внутренней службой Certificate Authority.
- Вовсе самоподписанным.
Самое главное, чтобы сертификат имел возможность подписывать (да, можно отобрать
у бухгалтеров ЭЦП), а клиентские ПК ему доверяли. Здесь я буду использовать самоподписанный сертификат.
Напомню, что доверие самоподписанному сертификату можно организовать при помощи групповых политик. Чуть больше подробностей — под спойлером.
Как сделать сертификат доверенным при помощи магии GPO
Для начала нужно взять имеющийся сертификат без закрытого ключа в формате .cer (это можно сделать, экспортировав сертификат из оснастки «Сертификаты») и положить его в сетевую папку, доступную пользователям для чтения. После этого можно настроить групповую политику.
Импорт сертификата настраивается в разделе: Конфигурация компьютера — Политики — Конфигурация Windows — Параметры безопасности — Политики открытого ключа — Доверенные корневые центры сертификации. Далее правой кнопкой мыши импортируем сертификат.
Настроенная политика.
Теперь клиентские ПК будут доверять самоподписанному сертификату.
Если проблемы с доверием решены, переходим непосредственно к вопросу подписи.
Шаг первый. Размашисто подписываем файл
Сертификат есть, теперь нужно узнать его отпечаток. Просто откроем его в оснастке «Сертификаты» и скопируем на вкладке «Состав».
Нужный нам отпечаток.
Лучше сразу его привести к должному виду — только большие буквы и без пробелов, если они есть. Это удобно сделать в консоли PowerShell командой:
("6b142d74ca7eb9f3d34a2fe16d1b949839dba8fa").ToUpper().Replace(" ","")
Получив отпечаток в нужном формате, можно смело подписывать файл rdp:
rdpsign.exe /sha256 6B142D74CA7EB9F3D34A2FE16D1B949839DBA8FA .contoso.rdp
Где .contoso.rdp — абсолютный или относительный путь к нашему файлу.
После того как файл подписан, уже не получится изменить часть параметров через графический интерфейс вроде имени сервера (действительно, иначе смысл подписывать?) А если поменять настройки текстовым редактором, то подпись «слетает».
Теперь при двойном клике по ярлыку сообщение будет другим:
Новое сообщение. Цвет менее опасный, уже прогресс.
Избавимся же и от него.
Шаг второй. И снова вопросы доверия
Для избавления от этого сообщения нам снова понадобится групповая политика. На этот раз дорога лежит в раздел Конфигурация компьютера — Политики — Административные шаблоны — Компоненты Windows — Службы удаленных рабочих столов — Клиент подключения к удаленному рабочему столу — Указать отпечатки SHA1 сертификатов, представляющих доверенных издателей RDP.
Нужная нам политика.
В политике достаточно добавить уже знакомый нам отпечаток с предыдущего шага.
Стоит отметить, что эта политика перекрывает политику «Разрешать RDP-файлы от допустимых издателей и пользовательские параметры RDP, заданные по умолчанию».
Настроенная политика.
Вуаля, теперь никаких странных вопросов — только запрос логина-пароля. Хм…
Шаг третий. Прозрачный вход на сервер
Действительно, если мы уже авторизовались при входе на доменный компьютер, то зачем нам вводить повторно тот же логин и пароль? Передадим же учетные данные на сервер «прозрачно». В случае с простым RDP (без использования RDS Gateway) на помощь нам придет… Правильно, групповая политика.
Идем в раздел: Конфигурация компьютера — Политики — Административные шаблоны — Система — Передача учетных данных — Разрешить передачу учетных данных, установленных по умолчанию.
Здесь в список можно добавить нужные серверы или использовать wildcard. Выглядеть это будет как TERMSRV/trm.contoso.com или TERMSRV/*.contoso.com.
Настроенная политика.
Теперь, если посмотреть на наш ярлык, то выглядеть он будет примерно так:
Имя пользователя не поменять.
В случае если используется RDS Gateway, понадобится еще и разрешить на нем передачу данных. Для этого в диспетчере IIS нужно в «Методах проверки подлинности» отключить анонимную проверку и включить проверку подлинности Windows.
Настроенный IIS.
Не забываем по завершении перезапустить веб-сервисы командой:
iisreset /noforce
Вот теперь все хорошо, никаких вопросов и запросов.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Расскажите, а вы подписываете ярлыки RDP своим пользователям?
41.75%
Не, они приучены жать на «ОК» в сообщениях не читая, некоторые даже сами галки ставят «Больше не спрашивать».
43
32.04%
Сам аккуратно руками кладу ярлычок и первый вход на сервер делаю вместе с каждым пользователем.
33
8.74%
Конечно, я люблю во всем порядок.
9
17.48%
Не использую терминальные серверы.
18
Проголосовали 103 пользователя.
Воздержались 20 пользователей.
Steps to Replace RDP Default Self Sign Certificate to fix the vulnerability detected by Nessus Scanner
You will see the following error message when connecting to remote server via Remote Desktop (RDP) due to the Default Self Sign SSL Certificate is used by default
Certificate Template for RDS
- Right click on Certificate Template and Manage
- Highlight Computer and right click to select Duplicate Template
- Change the Template Name to RDS
- Select Extensions – Application Policies and remove all the existing Application policies
Click Add to include the following
- Name = Remote Desktop Authentication
- Object Identifier = 1.3.6.1.4.1.311.54.1.2
- Right click Certificate Template and select New – Certificate Template to Issue by selecting RDS Template
- Verify RDS is shown in Certificate Template
A. Enforce with Default Domain Domain Group Policy
Open Group Policy Management and edit the Default Domain Policy to apply the Certificate Template to all servers in the AD Domain
Go to Computer ConfigurationPoliciesAdministrative TemplatesWindows ComponentsRemote Desktop ServicesRemote Desktop Session HostSecurityServer Authentication Certificate Template and enter the Template Name that you created
Go to Computer ConfigurationPoliciesAdministrative TemplatesWindows ComponentsRemote Desktop ServicesRemote Desktop Session HostSecurityRequire use of specific security layer for remote (RDP) connections and change the Security Layer to SSL
Run “gpupdate /force” and Restart Remote Desktop Services to force the settings to be applied immediately
#Force GPO to update immediately
gpupdate /force
#Restart RDS Service
Restart-Service TermService
RDS Authentication Certificate is installed successfully in Certificate – Local Computer
There is NO SSL Certificate error when you login to Remote Server with FQDN via Remote Desktop now
B. Replace RDP Default Self Sign Certificate manually
Open Certificate Authority and modify the RDS Template following the steps below
- Change the Compatibility to
- Certification Authority – Windows Server 2008 R2 or above
- Certificate Recipient – Windows 7 / Server 2008 R2 or above
- Go to Subject Name to Select Supply in the request and Use subject information from existing certificate for autoenrollment renewal request
Request RDS Certificate from Server
Open Certificate – Local Computer with certlm.msc and select Create Custom Request
Select RDS Template
Click Properties
Select Common Name and enter the FQDN of the Server
Enter a Friendly Name to identify this certificate
Save the Office Request
Login to http://CA_SERVER/certsrv and select Request a Certificate
Select Advanced Certificate Request
Click Submit a certificate request by using a base-64-encoded CMC or PKCS #10 file, or submit a renewal request by using a base-64-encoded PKCS #7 file.
Paste the content of Offline Request and select RDS as Certificate Template
Download and import to Certificate – Local Computer
Check the Thumbprint of the RDS Certificate
Set-Location Cert:LocalMachinemy
Get-ChildItem
Thumbprint Subject
---------- -------
AA439E86EA877521C5A98460DBEBA70CC28C70E6 CN=ib-ccdb.ibernas.plgroup.com.my
Replace the default self sign certificate with RDS Certificate
#Replace Certificate for RDS
wmic /namespace:\rootcimv2TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="AA439E86EA877521C5A98460DBEBA70CC28C70E6"
Verify the RDS Certificate is installed successfully
Get-WmiObject "Win32_TSGeneralSetting" -Namespace rootcimv2terminalservices -Filter "Termina
lName='RDP-tcp'"
SecurityLayer : 2
SSLCertificateSHA1Hash : AA439E86EA877521C5A98460DBEBA70CC28C70E6
SSLCertificateSHA1HashType : 3
Status :
TerminalName : RDP-Tcp
TerminalProtocol : Microsoft RDP 8.0
Transport : tcp
UserAuthenticationRequired : 1
WindowsAuthentication : 0
PSComputerName : IB-CCDB
The new RDS Certificate will be when we connect to the server via Remote Desktop now
Установка службы удаленных рабочих столов (RDS) на Windows Server 2019 состоит из многих шагов, но в действительности это очень просто. Из статьи вы узнаете о том, как установить эту службу в доменной среде, которая требует наличия двух серверов.
Предварительные условия
Перед началом установки RDS необходимо убедиться, что выполняются два требования, а именно:
- все серверы подключены к домену;
- есть по крайней мере два доступных сервера.
Необходимо, чтобы было именно два сервера, так как для роли RD Licensing, согласно лучшим практикам Microsoft, требуется отдельный сервер. В данной инструкции мы будем использовать для этой роли контроллер домена, что не вполне соответствует лучшим практикам, но мы делаем это, чтобы упростить демонстрационную установку.
Установка базовых ролей службы удаленных рабочих столов
Для начала мы добавим к основному RDS-серверу следующие роли:
- RD Connection Broker (Посредник подключений к удаленному рабочему столу);
- RD Web Access (Веб-доступ к удаленным рабочим столам);
- RD Session Host (Узел сеансов удаленных рабочих столов).
Пошаговая установка
- В диспетчере сервера на основном RDS-сервере, на котором выполняется установка, откройте Add Roles and Features Wizard (мастер добавления ролей и компонентов) и выберите Remote Desktop Services installation(установку службы удаленных рабочих столов).
2. Для этой инструкции мы используем опцию Quick Start (Быстрый старт), но если вам требуется больше контроля над процессом установки, вы можете выбрать Standard Deployment (Стандартную установку), которая позволяет редактировать большее количество настроек.
3. Далее мы выбираем Session-based desktop deployment (Установка рабочих столов на основе сеансов), так как это стандартная модель подключения к удаленным приложениям и удаленным рабочим столам, используемая в большинстве установок RDS.
4. В разделе Server Selection (Выбор сервера), выберите сервер, на который мы устанавливаем RDS.
5. Чтобы начать установку, выберите Restart the destination server automatically if required (Автоматический перезапуск конечного сервера в случае необходимости) и кликните на Deploy (Установить).
6. Проверьте, что все роли успешно установлены перед тем, как переходить к следующим шагам.
Добавление дополнительного сервера
В этой инструкции мы используем доменный контроллер в качестве сервера лицензирования удаленных рабочих столов, но для упрощения установки этой роли мы можем добавить дополнительный сервер в диспетчере серверов.
- Чтобы добавить дополнительный сервер, кликните правой кнопкой мыши на All Servers (Все серверы), выберите Add Servers (Добавление серверов), а затем выберите нужный сервер в Active Directory.
2. Перейдите на экран Remote Desktop Services (Службы удаленных рабочих столов) и кликните на зеленом плюсе над RD Licensing (Лицензирование удаленных рабочих столов).
3. Откроется окно Add RD Licensing Servers (Добавление серверов лицензирования удаленных рабочих столов), в котором вы сможете выбрать дополнительный сервер для роли RD Licensing.
4. Кликните на Add (Добавление), чтобы установить роль на дополнительный сервер.
5. Убедитесь, что установка завершена и зеленый плюс над RD Licensing заменен на соответствующий значок.
Добавление роли RD Gateway Role
Теперь нам нужно добавить RD Gateway Role (роль службы шлюза удаленных рабочих столов) к основному RDS-серверу.
- На экране Remote Desktop Services (Службы удаленных рабочих столов) кликните на зеленом плюсе над RD Gateway (Шлюз удаленных рабочих столов).
- Выберите основной RDS-сервер для установки этой роли.
3. Присвойте самоподписанному SSL-сертификату полное доменное имя.
4. Кликните Next и потом Add, чтобы установить роль на основной RDS-сервер.
Настройка параметров установки
Теперь, когда все роли установлены, можно перейти к настройке параметров установки.
- Откройте экран Remote Desktop Services и в выпадающем списке Tasks (Задания) кликните на Edit Deployment Properties (Редактирование параметров установки).
2. На экране RD Gateway оставьте настройки по умолчанию и кликните на пункте меню RD Licensing.
3. Выберите Per User (По количеству пользователей) на экране RD Licensing. Вы можете выбрать любую из двух опций, но в целях обучения мы выбираем Per User.
4. Обратите внимание на URL на экране RD Web Access (Веб-доступ к удаленным рабочим столам). Позже мы будем его использовать для доступа к установленным приложениям.
5. В целях тестирования можно оставить сертификаты как Not Configured (Не сконфигурированные) и нажать OK, чтобы сохранить параметры установки.
Если вы хотите сконфигурировать сертификат, вам придется делать это для каждой службы роли по отдельности.
Верификация службы удаленных рабочих столов
По умолчанию после установки создается QuickSessionCollection, куда входят Calculator, WordPad и Paint в качестве удаленных приложений. Мы можем использовать это для тестирования установки RDP.
- Для тестирования IIS перейдите по ссылке, представленной на экране RD Web Access, или используйте https://localhost/rdweb/, если вы находитесь на RDP-сервере.
2. Подключитесь к сеансу IIS RDS с помощью доменной учетной записи.
3. Запустите удаленное соединение: то, которое вы сконфигурировали, или удаленное приложение по умолчанию.
Установка службы удаленных рабочих столов может состоять из многих шагов, но после изначальной настройки ее легко конфигурировать и использовать. Удаленные приложения обеспечивают значительную гибкость, как и возможность настраивать коллекции RDP-подключений для предложения их пользователям.