Назад | Перейти на главную страницу

Требовать TLS на RDP для всех подключений

У меня есть DC 2008 года, сервер AD CS 2008 года и клиент Windows 7. Я бы хотел, чтобы сертификат использовался при подключении к серверу по протоколу RDP.

Сертификат действителен, и если я подключаюсь с использованием FQDN, мне будет показано, что я был аутентифицирован как сертификатом, так и Kerberos, как и ожидалось. Когда я подключаюсь только с именем хоста, мне разрешено подключаться, и я проверяю подлинность только с помощью Kerberos, даже если у меня установлен Require TLS 1.0 на сервере, к которому я подключаюсь по RDP. Я полностью понимаю, что сертификат не будет действителен, если к серверу не будет обращаться по полному доменному имени. Я хочу запретить соединения, которые не используют сертификат И Kerberos.

Я думал, что установка Require TLS 1.0 сделает это. Что мне не хватает?

  1. Пуск -> Администрирование -> Службы терминалов -> Настройка служб терминалов
  2. Щелкните правой кнопкой мыши RDP-Tcp и выберите Свойства.
  3. «Уровень безопасности» по умолчанию установлен на «Согласование» и должен быть изменен на «SSL (TLS 1.0)».
  4. «Уровень шифрования» должен быть установлен на «Высокий» или «Соответствует FIPS».

Ссылка: http://technet.microsoft.com/en-us/library/cc782610(WS.10).aspx

редактировать: В статье Microsoft Technet указано, что TLS нельзя включить с помощью групповой политики. Однако я поэкспериментировал с Process Monitor и Regedit и определил, что вы можете изменить эти параметры, установив соответствующие значения реестра, как показано ниже.

Чтобы установить для минимального уровня шифрования значение «Высокий» вместо «Совместимость с клиентом»:

HKLM \ System \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp \ MinEncryptionLevel REG_DWORD Значение: 3

Чтобы установить для уровня безопасности значение «SSL (TLS 1.0)» вместо «Согласовать»:

HKLM \ System \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp \ SecurityLayer
REG_DWORD Значение: 2

Вот что я сделал, чтобы проверить ваш сценарий:

  • У меня Windows Server 2008 R2 DC
  • Установленные роли -> Службы сертификации Active Directory, доменные службы Active Directory, Remote Desktop Services -> Remote Desktop Web Access, Веб-сервер (IIS). Поскольку это мой единственный DC, у меня также установлены DNS-сервер и DHCP-сервер.
  • Установлены Server Authentication Certificate на моем веб-сайте IIS также размещено приложение RDWeb
  • Изменить аутентификацию на RDWeb from Anonymous to Windows Authentication
  • получил доступ к веб-сайту с самого сервера, URL: https: // локальный хост / rdweb. Работает отлично
  • С моего клиента (это Windows Server 2008 R2) попытался получить доступ к URL-адресу: https: // fqdn / rdweb работает. Также попробовал URL: https: // имя_сервера / rdweb.. работает.

ПРИМЕЧАНИЕ: мы все еще не уверены, использует ли он TLS 1.0.

Теперь, чтобы заставить RDWeb работать только с TLS:

  1. Открыть Regedit
  2. Перейти к HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
  3. Создать новый Binary Value и назови это SSLCertificateSHA1Hash
  4. Скопируйте отпечаток из SSL-сертификата и добавьте его как значение SSLCertificateSHA1Hash.

например.:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
"SSLCertificateSHA1Hash"="hex:‎23,91,fc,0e,95,ad,e9,3e,fa,df,3d,54,54,f0,99,dc,cd,70,5c,5c"

Теперь получил доступ к URL-адресу веб-сайта: https: // fqdn / rdweb отслеживая его с помощью скрипачей, мы видим все HTTPS-соединение с Cipher: 0x2F. Пробовал использовать URL: https: // имя_сервера тот же результат.

В соответствии с http://tools.ietf.org/html/rfc5289,
CipherSuite TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = {0xC0,0x2F};

Также проверьте это RDP с настраиваемым сертификатом в Windows 7? (Нет tsconfig.msc или параметров групповой политики)

Для WMI вы можете проверить статью Win32_TSGeneralSetting - класс

Подтвердили ли вы захватом пакета, что клиент не согласовывает соединение TLS? Это единственный известный мне способ окончательно убедиться, что он работает должным образом.