Налаштування довірених SSL / TLS сертифікатів для захисту RDP підключень

У цій статті ми покажемо, як використовувати довірені 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_USER \ Software \ Microsoft \ Terminal Server Client \ Servers \). Якщо ви приховали повідомлення про неможливість перевірити справжність RDP сервера, щоб скинути настройки, видаліть ключ з відбитком сертифіката з реєстру.

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

Створюємо шаблон RDP сертифіката в центрі сертифікації (CA)

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

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

  1. Запустіть консоль Certificate Authority і перейдіть в секцію Certificate Templates;
  2. Зробіть копію шаблону сертифіката Computer (Certificate Templates -> Manage -> Computer -> Duplicate);
  3. на вкладці General вкажіть ім'я нового шаблону сертифіката - RDPTemplate. Переконайтеся, що значення поля Template Name повністю збігається з Template display name;
  4. на вкладці Compatibility вкажіть мінімальну версію клієнтів у вашому домені (наприклад, Windows Server 2008 R2 для CA і Windows 7 для клієнтів). Тим самим будуть використовуватися більш стійкі алгоритми шифрування;
  5. Тепер на вкладці Extensions в політиці додатків (Application policy) потрібно обмежити область використання такого сертифіката тільки для Remote Desktop Authentication (Вкажіть наступний object identifier - 1.3.6.1.4.1.311.54.1.2). Натисніть Add -> New, створіть нову політику і виберіть її;
  6. В налаштуваннях шаблону сертифіката (Application Policies Extension) видаліть всі політики окрім Remote Desktop Authentication;
  7. Щоб використовувати цей шаблон RDP сертифікатів на контролерів домену, відкрийте вкладку Security, додайте групу Domain Controllers і включіть для неї опцію Enroll і Autoenroll;
  8. Збережіть шаблон сертифікату;
  9. Тепер в оснащенні Certificate Authority, клацніть по папці Certificate Templates, виберіть New -> Certificate Template to Issue -> виберіть створений шаблон RDPTemplate.

Налаштування групової політики для видачі 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

Тепер при RDP підключенні до сервера перестане з'являтися запит на Довірити сертифікату (щоб з'явився запит про довіру сертифікату, підключіться до сервера по IP адресою замість FQDN імені сервера, для якого випущений сертифікат). Натисніть кнопку "Подивитися сертифікат", перейдіть на вкладку "Склад", скопіюйте значення поля "Відбиток сертифіката".

Також можете в консолі Certification Authority в секції Issued Certificates перевірити, що за шаблоном RDPTemplate був виданий сертифікат певного Windows комп'ютера / сервера. Також перевірте значення Thumbprint сертифіката:

Тепер порівняйте отримані дані з відбитком сертифіката, який використовується службою 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.

Щоб працював прозорих RDP вхід без введення пароля (RDP Single Sign On), потрібно налаштувати політику Allow delegation defaults credential і вказати в ній імена RDP / RDS серверів (див. Статтю).