Протокол RDP широко используется в корпоративных Microsoft инфраструктурах для осуществления удаленных подключений к целевым системам. Его защита состоит из многих пунктов, один из которых — это использование TLS для RDP подключений. В этой заметке будет рассмотрен процесс конфигурирования данной возможности. Для этого потребуется развернутые инфраструктуры Active Directory Domain Services и Active Directory Certificate Services. Поехали.
Создание шаблона сертификата RDP в ADCS
Первый шаг состоит в создании шаблона сертификата, с помощью которого Windows клиенты будут автоматически генерировать сертификаты используемые в RDP подключениях. Для этого в оснастке ADCS переходим к управлению шаблонами сертификатов:
Дублируем сертификат Computer
Задаем имя будущего шаблона:
Указываем настройки совместимости:
В Extensions, необходимо задать правильные Application Policies для поддержки TLS в RDP протоколе
Для этого удаляем Client Authentication и Server Authentication и добавляем Remote Desktop Authentication с OID 1.3.6.1.4.1.311.54.1.2, как показано на скриншоте:
Далее, необходимо задать группу безопасности, члены которой должны автоматически сгенерировать сертификат по этому шаблону. Для этого добавляем нужную группу безопасности в DACL и назначаем соответствующие права:
Завершающим шагом будет его выпуск на выдающем корпоративном ЦС:
Создание групповой политики для RDP подключений
Непосредственно сама конфигурация Windows машин будет централизовано выполнятся с помощью групповой политики. Я рекомендую создать отдельный экземпляр политики, в котором будет следующее:
- Задание имени шаблона сертификата для использования в RDP подключениях;
- Задание типа шифрования RDP подключений;
- Конфигурирование автоматического выпуска сертификатов.
Задание имени шаблона сертификата для использования в RDP подключениях
В экземпляре групповой политики переходим в Computer Configuration -> Policies -> Administrative Template -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Security и выбираем Server authentication certificate template. Задаем имя шаблона который был создан ранее:
Задание типа шифрования RDP подключений
Переходим в Computer Configuration -> Policies -> Administrative Template -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Security и выбираем Require use of specific layer for remote (RDP) connection. Указываем использование SSL:
Конфигурирование автоматического выпуска сертификатов
Переходим в Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Public Key Policies и выбираем Certificate Services Client – Auto-Enrollment Включаем автоматический выпуск сертификатов а так же настройки по их автоматическому обновлению:
Проверка работоспособности
После применения групповой политики Windows клиенты должны в автоматическом порядке получить сертификат. Если этого не произошло, стоит обратить внимание на:
- Отсутствие в правильной группе безопасности, которая указана в шаблоне;
- Отсутствие к ЦС необходимых сетевых портов от клиента. Напомню, это tcp/135 (RPC) и динамические порты tcp/49152—65535.
Проверить что сертификат был успешно выпущен можно в консоли ADCS:
При следующем RDP подключении, стоит обратить внимание на наличие “замка” в верхнем меню RDP подключения. Нажав на этот “замок” можно удостоверится что используется нужный сертификат.
На этом все. Если у вас возникли какие-либо вопросы, пожалуйста, пишите в комментарии.
Добрый день.
А подскажите плз, как можно настроить подключение к ферме RemoteAPP используя сертификат пользователя выданного доменым СА.
Спасибо.
Добрый день, имеете ввиду аутентификацию используя смарт-карту?
Ок, смоделируем ситуацию. Есть RD GW который стоит в Dmz. Есть ряд приложений которые надо опубликовать через RemoteAPP (допустим 1с). Как повысить безопасность подключения, кроме логина/пароля пользователя? На ум приходит вариант с сертификатами пользователя или ПК. Так как про ПК которые стоят удаленно, мы мало знаем, то остается только по сертификатам пользователя.
Александр, в вашем кейсе, для повышения безопасности возможно воспользоваться двумя вариантами:
1) использование смарт-карт
2) Встраивание МФА в процес аутентификации пользователей
Первый требует наличия PKI инфраструктуры и самих смарт-карт. Второй потребует внешнего MFA провайдера, например, Azure – https://azure.microsoft.com/ru-ru/pricing/details/multi-factor-authentication/ . В этом случае, провайдер интегрируется с NPS сервером, который аутентифицирует пользователей, добавляя второй фактор.
Сертификаты пользователей могут быть только на смарт-картах. Компьютерные сертификаты не применимы в процессе аутентификации на RD GTW.
А можно выдавать пользователю персональный сертификат и разрешать подключение только с использованием списка подписанных сертификатов?