Как подписать rdp файл сертификатом

Обновлено: 05.07.2024

Удаленный рабочий стол (RD) зачастую используется как инструмент удаленного администрирования не только внутри корпоративных сетей, но и для доступа извне, через интернет. Незащищенное использование RDP может сделать успешными брутфорс-атаки и атаки «человек посередине», поэтому нужно с большим вниманием относиться к защите соединения RDP при внешнем подключении к сети. Одним из вариантов реализации такой защиты под управлением Microsoft Windows Server являются службы удалённых рабочих столов RDS (Remote Desktop Services), которые разворачиваются в доменной среде ActiveDirectory. В этом разделе рассматривается настройка роли шлюза подключений RDGateway, входящей в состав RDS, на примере WindowsServer 2016 с использованием алгоритмов ГОСТ, реализованных в КриптоПро CSP 4.0 и КриптоПро CSP 5.0.

Упрощённая схема подключения по протоколу RDP, защищённому TLS, с устройств, находящихся вне корпоративной сети, показана на рисунке. Аутентификация пользователя производится по электронному ключу на носителе.

упрощенная схема сети

В настройках подключения к удалённому рабочему столу внешнего устройства (компьютера, ноутбука и т.д.) со смарт-картой (например, USB-токеном) в качестве адреса шлюза удалённых рабочих столов указывается внешний адрес межсетевого экрана (Firewall) и порт (по умолчанию 443), а в качестве адреса назначения указывается имя удалённого компьютера, на который требуется зайти. Через межсетевой экран соединение направляется на шлюз подключений RDGateway. В соответствии с политиками домена шлюз позволяет установить c компьютером внешнего пользователя шифрованный канал, через который по протоколу RDP уже и происходит соединение с компьютером внутри защищённой сети.

Для реализации этой схемы нужно произвести настройку служб WindowsServer и клиентских машин (в этой инструкции не упоминается настройка AD, DNS, Firewall, эти службы должны быть настроены согласно схеме сети организации):

  • Установить СКЗИ КриптоПро CSP на серверные и клиентские машины.
  • Настроить службу сертификации Active Directory (ЦС) и шаблоны сертификата TLS и клиентского сертификата для аутентификации по RDP с помощью смарт-карты
  • Выпустить сертификаты для серверов и клиентов.
  • Настроить TS Gateway.
  • Дать права на сертификат TLSслужбам, которые их будут использовать (например, NetworkServices).
  • Выбрать сертификаты TLS в свойствах служб сервера терминалов.
  • Выдать пользователям права на доступ по RDP.
  • Настроить политики авторизации соединений (TSCAP).
  • Разрешить удаленные подключения на клиентских машинах.

Установка СКЗИ КриптоПро CSP

Для реализации шифрования по алгоритмам ГОСТ требуется установить СКЗИ КриптоПро CSP на сервер, на котором разворачивается контроллер домена, на сервер Центра сертификации (в случае, если служба ЦС располагается на отдельном сервере), на сервер или сервера, где разворачиваются службы удалённых рабочих столов и на компьютеры пользователей которые будут осуществлять доступ по RDP в соответствии с документацией по установке СКЗИ КриптоПро CSP. При этом на серверных машинах должна применяться серверная лицензия на КриптоПро CSP, на клиентских – клиентская.

Установка и настройка службы сертификации ActiveDirectory (Центра сертификации)

Описание настройки службы сертификации (CAEnterprise) и выпуска сертификатов можно прочесть в документации ЖТЯИ.00103-01 92 01. Инструкция по использованию. Windows (раздел 5). Для выпуска сертификатов по алгоритмам ГОСТ также можно использовать КриптоПро УЦ версий 1.5 или 2.0, установив и настроив их в соответствии с документацией к этим продуктам. Собственный Центр сертификации требуется в том случае, если сертификаты для серверных и клиентских машин организация выпускает самостоятельно.

Выпуск серверных и клиентских сертификатов

Выпуск сертификатов производится согласно документации ЖТЯИ.00103-01 92 01. Инструкция по использованию. Windows (раздел 5).

При этом в свойствах сертификата TLS рекомендуется указывать все необходимые для идентифицирования имена в поле Дополнительное имя субъекта (SubjectAlternativeName, SAN)

Выпускаем сертификат TLS в соответствии с алгоритмом ГОСТ, для этого подходит шаблон «Проверка подлинности рабочей станции», выгружаем в .pfx

Выпускаем сертификаты пользователей домена на основе шаблона для входа по смарт-карте с использованием алгоритмов ГОСТ.

У сертификатов смарт-карт есть дополнительные требования к формату:

  • Точка распространения CRL (где CRL - список отзыва сертификата) должна быть заполнена, доступна и находиться в оперативном режиме.

основное имя пользователя = user1@name.com
UPN Другое имя OID: "1.3.6.1.4.1.311.20.2.3"
UPN Другое имя значение: Это должна быть ASN1-кодированная строка UTF8

  • Тема = Различающееся имя пользователя. Это поле является обязательным дополнением, но заполнять его необязательно.

Подробнее о создании шаблона сертификата TLS в УЦ 2.0 для защиты RDP-подключений

Для выпуска правильного сертификата TLS нужно создать шаблон сертификата в консоли Диспетчера УЦ. Для этого создаётся копия шаблона Веб-сервера (Диспетчер УЦ - Роли УЦ - Сервер ЦС - Шаблоны - Добавить). В мастере создания шаблона сертификата выбирается шаблон Веб-сервер, указывается наименование нового шаблона, например, RDG-сервер и далее по подсказкам мастера.

После этого редактируются свойства шаблона (важно разрешить в параметрах создания ключа экспорт ключа)

свойства шаблона серверного сертификата

Назначение прав доступа к закрытому ключу сертификата TLS

Для того, чтобы сертификат TLS мог использоваться службами удалённого рабочего стола, необходимо дать этим службам права на контейнер закрытого ключа.

Для этого в хранилище Личное Локального компьютера нужно выбрать сертификат TLS, правой кнопкой мыши вызвать контекстное меню: Все задачи - Управление закрытыми ключами – в открывшемся окне необходимо добавить учётную запись NETWORKSERVICE (или пула приложений, что предпочтительнее) и установить для неё права на чтение закрытого ключа.

права доступа к серверному ключу

Проверка сертификата TLS в свойствах служб сервера терминалов

Рекомендуется проверять, что сертификат указан в свойствах служб сервера терминалов. Для этого запустите оснастку диспетчера шлюза удалённых рабочих столов через командную строку, выполнив команду tsgateway.msc

В открывшемся окне выберите сервер терминалов и через контекстное меню откройте Свойства. На вкладке Сертификат SSL должен быть указан сертификат TLS, выпущенный для служб сервера терминалов. Если он не указан, отметьте пункт «Выбрать существующий сертификат…» и нажмите кнопку Импорт сертификата… После этого в открывшемся окне выбора сертификатов из личного хранилища локального компьютера выберите сертификат TLS.

проверка сертификата шлюза

Настройка политики авторизации соединений

Откройте оснастку диспетчера шлюза удалённых рабочих столов через командную строку, выполнив команду tsgateway.msc

Выберите в дереве сервер шлюза удалённых рабочих столов и откройте Политики - Политики авторизации подключений. Можно использовать существующую политику RDG_CAP_AllUsers, но крайне рекомендуется создать новую политику. Для этого вызовите контекстное меню, щёлкнул правой кнопкой мыши по Политикам авторизации подключений и выберите Создать новую политику - Мастер.

настройка политик авторизации

Следуя указаниям мастера создания новых политик авторизации укажите требуемые значения, при этом на шаге Требования при указании метода проверки подлинности Windows отметьте пункт Смарт-карта. Пункт Пароль можно оставить, но его будет необходимо отключить в свойствах политики после успешной проверки авторизации по смарт-карте. Укажите группу или группы пользователей, которым разрешается удалённый доступ по RDP.

требования политик

Следуя дальнейшим указаниям мастера завершите настройку новой политики. В списке политик проверьте, что политика находится в состоянии Включено.

Настройка политики авторизации ресурсов

Выберите в дереве сервер шлюза удалённых рабочих столов и откройте Политики - Политики авторизации ресурсов. Создайте новую политику. Для этого вызовите контекстное меню, щёлкнул правой кнопкой мыши по Политикам авторизации ресурсов и выберите Создать новую политику - Мастер.

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

Назначение пользователям прав на доступ по RDP в домен

назначение прав доступа для пользователей

Разрешение удаленных подключений на клиентских машинах внутри защищенной сети

В системных настройках клиентских машин нужно разрешить удаленные подключения:

разрешение RDP на машинах сети

Настройки удаленных подключений на машинах внешней сети

На компьютере, находящемся во внешней незащищенной сети, с предварительно установленным КриптоПро CSP нужно открыть интерфейс подключения к удалённому рабочему столу, для этого вызовите окно для запуска программ комбинацией клавиш Win+R: укажите в нём mstsc и нажмите кнопку ОК. В открывшемся окне введите в свойствах RDP -соединения на вкладке Дополнительно внешний адрес сервера, выберите метод входа Смарт-карты, снимите флажки Не использовать сервер шлюза удаленных рабочих столов… На вкладке Общие укажите имя удаленного компьютера и имя учётной записи пользователя, с помощью которой будет осуществлено соединение

настройка внешних машин

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

date

09.07.2020

directory

Windows 10, Windows Server 2016, Групповые политики

comments

комментариев 18

В этой статье мы покажем, как использовать доверенные SSL/TLS сертификаты для защиты RDP подключений к компьютерам и серверам Windows в домене Active Directory. Эти сертфикаты мы будем использовать вместо самоподписанных RDP сертификатов (у пользователей появляется предупреждение о невозможности проверки подлинности при подключению к RDP хосту с таким сертификатом). В этом примере мы настроим специальный шаблон для выпуска RDP сертификатов в Certificate Authority и настроим групповую политику для автоматического выпуска и привязки SSL/TLS сертификата к службе Remote Desktop Services.

Предупреждение о самоподписанном сертификате RDP

По умолчанию в Windows для защиты RDP сессии генерируется самоподписанный

сертификат. В результате при первом подключении к RDP/RDS серверу через клиента mstsc.exe, у пользователя появляется предупреждение:

При этом отпечаток RDP сертификата сохраняется на клиенте в параметре CertHash в ветке реестра с историей RDP подключений (HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\). Если вы скрыли уведомление о невозможности проверить подлинность RDP сервера, чтобы сбросить настройки, удалите ключ с отпечатком сертификата из реестра.

отпечаток RDP сертфиката хранится на клиенте в реестре

Несмотря на то, что для подключения используется самоподписанный сертификат, ваше RDP подключение защищено, а трафик зашифрован.

Создаем шаблон RDP сертификата в центре сертификации (CA)

Попробуем использовать для защиты RDP подключений доверенный SSL/TLS сертификат, выданный корпоративным центром сертификации. С помощью такого сертификата пользователь может выполнить проверку подлинности RDP сервера при подключении. Предположим, что у вас в домене уже развернут корпоративной центр сертификации (Microsoft Certificate Authority), в этом случае вы можете настроить автоматическую выдачу и подключение сертификатов всем компьютерам и серверам Windows в домене.

Н на вашем CA нужно создать новый тип шаблона сертификата для RDP/RDS серверов.

Настройка групповой политики для выдачи RDP сертификатов

Теперь нужно настроить доменную политику, которая будет автоматически назначать RDP сертификат компьютерам/серверам согласно настроенного шаблона.

Предполагается, что все компьютеры домена доверяют корпоративному центру сертификации, т.е. корневой сертификат через GPO добавлен в доверенные корневые центры сертификации.
  1. Откройте консоль управления доменными групповыми политиками gpmc.msc, создайте новый объект GPO и назначьте его на OU с RDP/RDS серверами или компьютерами, для которых нужно автоматически выдавать TLS сертификаты для защиты RDP подключения;
  2. Перейдите в раздел GPO: Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Security. Включите политику Server Authentication Certificate Template. Укажите имя шаблона CA, который вы создали ранее (RDPTemplate);
  3. Затем в этом же разделе GPO включите политику Require use of specific security layer for remote (RDP) connections и установите для нее значение SSL;
  4. Для автоматического продления 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”;
  5. Если вы хотите, чтобы клиенты всегда проверяли сертификат 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);
  6. Если нужно, можете через политики файервола открыть входящий RDP порт TCP/UDP 3389;
  7. Осталось обновить политики на клиенте, запустить консоль сертификатов компьютера (Certlm.msc), и проверить, что в разделе Personal -> Certificates появился сертификат для Remote Desktop Authentication, выданный вашим CA.
Если политики не применились, для диагностики GPO воспользуйтесь утилитой gpresult и этой статьей.

Для применения нового RDP сертификата, перезапустите службу Remote Desktop Services:

Get-Service TermService -ComputerName msk-dc01| Restart-Service –force –verbose

Также можете в консоли Certification Authority в секции Issued Certificates проверить, что по шаблону RDPTemplate был выдан сертификат определённому Windows компьютеру/серверу. Также проверьте значение Thumbprint сертификата:

Thumbprint у сертфиката

получить отпечаток rdp сертификата

Теперь сравните полученные данные с отпечатком сертификата, который используется службой Remote Desktop Service. Вы можете посмотреть значение отпечатка сертификата службы RDS в реестре (ветка HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations, параметр TemplateCertificate) или командой PowerShell: Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices|select SSLCertificateSHA1Hash

Теперь, при подключении к удаленном столу любого сервера или компьютера, на который действует эта политика, вы не увидите предупреждения о недоверенном RDP сертификате.

Подписываем RDP файл и добавляем отпечаток доверенного RDP сертификата

Если у вас отсутствует CA, но вы хотите, чтобы при подключении к RDP/RDS серверу у пользователей не появлялось предупреждения, вы можете добавить сертификат в доверенные на компьютерах пользователей.

Как описано выше получите значение отпечатка (Thumbprint) RDP сертификата:

Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices|select|select SSLCertificateSHA1Hash

Используйте этот отпечаток для подписывания .RDP файла с помощью RDPSign.exe:

rdpsign.exe /sha256 65A27B2987702281C1FAAC26D155D78DEB2B8EE2 "C:\Users\root\Desktop\rdp.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.

политика Указать отпечатки SHA1 сертификатов, представляющих доверенных издателей RDP

Чтобы работал прозрачных RDP вход без ввода пароля (RDP Single Sign On), нужно настроить политику Allow delegation defaults credential и указать в ней имена RDP/RDS серверов (см. статью).


Если ваши пользователи все еще приходят к вам с подобными страхами, и вам надоело ставить галочку «Больше не спрашивать» — добро пожаловать под кат.

Итак, наш пользователь тыкает на сохраненный файл с расширением .rdp и получает такой вот запрос:


Для избавления от этого окна используется специальная утилита под названием RDPSign.exe. Полная документация доступна, как обычно, на официальном сайте, а мы разберем пример использования.

Для начала нам нужно взять сертификат для подписывания файла. Он может быть:

  • Публичным.
  • Выданным внутренней службой Certificate Authority.
  • Вовсе самоподписанным.

Самое главное, чтобы сертификат имел возможность подписывать (да, можно отобрать
у бухгалтеров ЭЦП), а клиентские ПК ему доверяли. Здесь я буду использовать самоподписанный сертификат.

Напомню, что доверие самоподписанному сертификату можно организовать при помощи групповых политик. Чуть больше подробностей — под спойлером.

Как сделать сертификат доверенным при помощи магии GPO

Для начала нужно взять имеющийся сертификат без закрытого ключа в формате .cer (это можно сделать, экспортировав сертификат из оснастки «Сертификаты») и положить его в сетевую папку, доступную пользователям для чтения. После этого можно настроить групповую политику.

Импорт сертификата настраивается в разделе: Конфигурация компьютера — Политики — Конфигурация Windows — Параметры безопасности — Политики открытого ключа — Доверенные корневые центры сертификации. Далее правой кнопкой мыши импортируем сертификат.


Теперь клиентские ПК будут доверять самоподписанному сертификату.

Если проблемы с доверием решены, переходим непосредственно к вопросу подписи.

Сертификат есть, теперь нужно узнать его отпечаток. Просто откроем его в оснастке «Сертификаты» и скопируем на вкладке «Состав».


Нужный нам отпечаток.

Лучше сразу его привести к должному виду — только большие буквы и без пробелов, если они есть. Это удобно сделать в консоли PowerShell командой:

Получив отпечаток в нужном формате, можно смело подписывать файл rdp:

Где .\contoso.rdp — абсолютный или относительный путь к нашему файлу.

После того как файл подписан, уже не получится изменить часть параметров через графический интерфейс вроде имени сервера (действительно, иначе смысл подписывать?) А если поменять настройки текстовым редактором, то подпись «слетает».


Избавимся же и от него.


Нужная нам политика.

В политике достаточно добавить уже знакомый нам отпечаток с предыдущего шага.

Стоит отметить, что эта политика перекрывает политику «Разрешать RDP-файлы от допустимых издателей и пользовательские параметры RDP, заданные по умолчанию».


Вуаля, теперь никаких странных вопросов — только запрос логина-пароля. Хм…

Действительно, если мы уже авторизовались при входе на доменный компьютер, то зачем нам вводить повторно тот же логин и пароль? Передадим же учетные данные на сервер «прозрачно». В случае с простым RDP (без использования RDS Gateway) на помощь нам придет… Правильно, групповая политика.

Идем в раздел: Конфигурация компьютера — Политики — Административные шаблоны — Система — Передача учетных данных — Разрешить передачу учетных данных, установленных по умолчанию.


Теперь, если посмотреть на наш ярлык, то выглядеть он будет примерно так:


Имя пользователя не поменять.

В случае если используется RDS Gateway, понадобится еще и разрешить на нем передачу данных. Для этого в диспетчере IIS нужно в «Методах проверки подлинности» отключить анонимную проверку и включить проверку подлинности Windows.

RemoteApp убираем предупреждение не удается определить издателя

В данной статье пойдет речь о том, как убрать предупреждение "Не удается определить издателя" при запуске RemoteApp.

Текст ошибки

Не удается определить издателя удаленного приложения RemoteApp. Подключиться для запуска приложения?
Это удаленное приложение RemoteApp может нанести вред локальному или удаленному компьютеру. Не подключайтесь для запуска этого приложения, если издатель данного приложения неизвестен или оно не использовалось ранее

remoteapp1

Для того, чтобы избавиться от этого, необходимо:

  1. При создании RDP файла для RemoteApp использовать цифровую подпись.
  2. Настроить соответствующим образом политику (локальную или в домене).

Процесс создания сертификата мы упустим, т.к. это не тема этой статьи. Считаем, что вы уже сгенерировали сертификат и подписали им опубликованное приложение, создав RDP файл вашего приложения. Далее нам необходимо открыть сертификат и получить из него так называемый "Отпечаток". Сделать это можно следующим образом:

remoteapp2

Добавить или удалить оснастку > Сертификаты > Добавить:

remoteapp3

remoteapp4

remoteapp5

В итоге получаем такое: Это и есть наш сертификат, который вы уже сгенерировали ранее.

remoteapp6

Теперь нам нужно посмотреть его "Отпечаток". Для этого необходимо дважды щелкнуть мышкой на нужном сертификате:

remoteapp7

Полученная последовательность символов и есть "Отпечаток".

Удаляем из нее все пробелы, чтобы строка приняла вид:

Далее в "Конфигурация компьютера/Политика/Административные шаблоны/Компоненты Windows/Службы удаленных рабочих столов/Клиент подключения к удаленному рабочему столу" включаем параметр "Указать отпечатки SHA1 сертификатов, представляющих доверенных издателей RDP" и вписываем туда нашу строку с "Отпечатком" без пробелов. В случае, если в "Отпечатке" содержится два нуля, т.е. 00, их необходимо удалить.

После применения политики на нужном компьютере, этого предупреждения не должно выскакивать.

Читайте также: