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

Как отключить TLS 1.0, не нарушая RDP?

Наш обработчик кредитных карт недавно уведомил нас, что с 30 июня 2016 года нам необходимо отключите TLS 1.0, чтобы оставаться совместимым с PCI. Я попытался проявить инициативу, отключив TLS 1.0 на нашем компьютере с Windows Server 2008 R2, но обнаружил, что сразу после перезагрузки я совершенно не смог подключиться к нему через протокол удаленного рабочего стола (RDP). После некоторых исследований выяснилось, что RDP поддерживает только TLS 1.0 (см. Вот или Вот), или хотя бы непонятно, как включить RDP через TLS 1.1 или TLS 1.2. Кто-нибудь знает способ отключить TLS 1.0 на Windows Server 2008 R2, не нарушая RDP? Планирует ли Microsoft поддержку RDP через TLS 1.1 или TLS 1.2?

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

ОБНОВЛЕНИЕ 1: Microsoft решила эту проблему. Увидеть ответ ниже для соответствующего обновления сервера.

ОБНОВЛЕНИЕ 2: Microsoft выпустила руководство по Поддержка SQL Server для PCI DSS 3.1.

Microsoft выпустила исправление для этой проблемы 15 сентября 2015 г.

Видеть https://support.microsoft.com/en-us/kb/3080079

Я занимаюсь этим уже пару дней, поскольку мы должны соблюдать PCI-DSS 3.1, который требует отключения TLS 1.0.

Мы также не хотим возвращаться к уровню безопасности RDP, который является серьезной проблемой безопасности.

Мне наконец удалось найти документацию, подтверждающую, что протоколы TLS 1.1 и TLS 1.2 ПОДДЕРЖИВАЮТСЯ RDP. Эта документация спрятана в Ведение журнала SChannel и очень подробная спецификация для RDP.

На Technet или других сайтах Microsoft полностью отсутствует документация по основному потоку, поэтому, надеюсь, документирование этого здесь может помочь некоторым людям.

Соответствующие выдержки из предоставленных ссылок:

Из ссылки MSDN:

"RDP supports four External Security Protocols: TLS 1.0 ([RFC2246]) TLS 1.1 ([RFC4346])<39>, TLS 1.2 ([RFC5246])<40>"

Из PDF-файла спецификации RDP:

"When Enhanced RDP Security is used, RDP traffic is no longer protected by using the techniques
described in section 5.3. Instead, all security operations (such as encryption and decryption, data
integrity checks, and Server Authentication) are implemented by one of the following External
Security Protocols:
TLS 1.0 (see [RFC2246])
TLS 1.1 (see [RFC4346])
TLS 1.2 (see [RFC5246])
CredSSP (see [MS-CSSP])"

"<39> Section 5.4.5: TLS 1.1 is not supported by Windows NT, Windows 2000 Server, Windows XP,
Windows Server 2003, Windows Vista and Windows Server 2008.
<40> Section 5.4.5:  TLS 1.2 is not supported by Windows NT, Windows 2000 Server, Windows XP,
Windows Server 2003, Windows Vista, and Windows Server 2008"

Следовательно, можно сделать вывод, что вы можете использовать TLS 1.1 или 1.2 в Windows Server 2008 R2 в соответствии с этой документацией.

Однако наше тестирование доказало, что это НЕ работает с клиентом RDP Windows 7 (версия 6.3.9600), когда TLS 1.0 отключен и для параметра безопасности RDP задано требование TLS 1.0.

Это, конечно, так же, как включение TLS 1.1 и 1.2, которые по умолчанию отключены в 2008R2 - кстати, мы делаем это с помощью очень полезного IIS Crypto Tool от Nartac Software.

При рассмотрении этой проблемы полезно включить ведение журнала SChannel, чтобы увидеть более подробную информацию о том, что происходит при открытии сеанса.

Вы можете установить Ведение журнала SChannel путем изменения ключа HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ EventLogging на 5 и перезагрузки.

Как только это будет сделано, вы можете наблюдать события SChannel, которые показывают, какая версия TLS используется, когда установлено соединение RDP. После включения ведения журнала вы можете наблюдать ошибку SChannel, когда клиент RDP пытается установить соединение в Windows 2008 R2 с отключенным TLS 1.0:

A fatal error occurred while creating an SSL server credential. The internal error state is 10013.

Я также протестировал отключение TLS 1.0 на Windows Server 2012 и 2012 R2, что, как я могу подтвердить, отлично работает с помощью клиента RDP Windows 7. Запись журнала SChannel показывает, что используется TLS 1.2:

An SSL server handshake completed successfully. The negotiated cryptographic parameters are as follows.

   Protocol: TLS 1.2
   CipherSuite: 0xC028
   Exchange strength: 256

Я надеюсь, что это поможет тому, кто ищет разъяснения по этому поводу.

Я буду продолжать искать способы заставить RDP работать поверх TLS 1.1 и TLS 1.2 в Windows Server 2008 R2.

ОБНОВЛЕНИЕ: 2015-АВГ-05

Мы подняли вопрос о том, что RDP не работает с Server 2008 R2 с поддержкой Microsoft, включая шаги по воспроизведению.

После нескольких недель перемотки назад и вперед мы наконец получили сегодня телефонный звонок от службы поддержки, чтобы подтвердить, что они действительно могут воспроизвести это, и теперь это классифицируется как ошибка. Будет выпущено обновление, на данный момент это ожидается в октябре 2015 года. Как только у меня появится статья в базе знаний или другие подробности, я добавлю их в этот пост.

Надеюсь, те, кто застрял с Windows Server 2008 R2, по крайней мере, смогут решить эту проблему до крайнего срока в июне 2016 года после выпуска исправления.

ОБНОВЛЕНИЕ: 19 сентября 2015 г.

Microsoft наконец-то выпустила статью поддержки kb об этом Вот и я могу подтвердить, что он работает нормально.

Это ответ не на вопрос, а на подвопрос «Как восстановить удаленный доступ к виртуальной машине, на которой я отключил TLS 1.0 и не имеет физического доступа?».

Я отключил TLS 1.0 с помощью IISCrypto, который дал полезное предупреждение о побочном эффекте, заключающемся в том, что RDP перестанет работать, если для него установлено значение TLS. Итак, я зарегистрировался:

Admin Tools\Remote Desktop Services\Remote Desktop Session Host Configuration, RDP-Tcp, General Tab, Security Layer

и мой уровень безопасности был установлен на «переговоры». Я предположил, что это означает, что если TLS недоступен, он будет постепенно снижен до RDP Security.

Но нет, Negotiate так не работает. Перед отключением TLS 1.0 необходимо установить уровень безопасности RDP Security, а не Negociate.

Поэтому я потерял возможность удаленного подключения к своему экземпляру AWS!

Для повторного подключения я использовал другой экземпляр AWS.

  1. Я обновил SecurityGroup, чтобы разрешить межсетевое соединение с этой машины на мою «потерянную» машину.
  2. Я открыл административный сетевой ресурс в DOS с пользователем и паролем администратора:

net use \\lost_machine_ip\c$

  1. Затем я открыл Regedit, в меню «Файл» выбрал «Подключить сетевой реестр» и ввел IP-адрес «потерянного» сервера. Вы должны увидеть реестр удаленного сервера. Перейти к :

\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\

и установите значение для SecurityLayer до 0 (0 - безопасность RDP).

После этого вы сможете удаленно подключиться и при необходимости снова включить TLS 1.0 в IISCrypto.

Вместо этого используйте IPsec, как рекомендует документ: «Сначала установите строго зашифрованный сеанс (например, туннель IPsec), а затем отправьте данные по SSL в защищенном туннеле»

Основная причина сделать это при настройке TLS для RDP заключается в том, что политика брандмауэра легко проверяется на соответствие (в отличие от подтверждения соответствия нескольких изменений реестра), а IPsec довольно легко настроить в Windows.

Если вам понадобится полное соответствие B, IPSEC с tls 1.0 - единственный доступный способ применить к сертификату соответствующей длины.

Вам нужно будет установить RDP 8.0 на компьютеры с Windows 7 и серверы Windows Server 2008 R2, а затем включить RDP 8.0 в политике локального компьютера или групповой политике.

Вот база знаний Microsoft для RDP 8.0. https://support.microsoft.com/en-us/kb/2592687

Как только это будет сделано, вы сможете отключить TLS 1.0 на компьютерах и серверах, отредактировав реестр, как описано в этой технической статье. https://technet.microsoft.com/en-us/library/dn786418.aspx

После установки RDP 8.0 вы также можете установить RDP 8.1, но перед установкой RDP 8.1 необходимо установить RDP 8.0. RDP 8.0 содержит компоненты протокола как на стороне клиента, так и на стороне сервера, но RDP 8.1 включает только клиента. База знаний Microsoft для RDP 8.1 - KB2830477.

Я внес эти изменения на одной из своих рабочих станций с Windows 7 и протестировал RDP-соединения с включенным параметром групповой политики «Требовать использования определенного уровня безопасности для удаленных (RDP) подключений» и установленным на «SSL (TLS 1.0)», чтобы убедиться, что он не вернется к шифрованию RDP.

ОБНОВЛЕНИЕ 19.06.2015:

Наконец-то у меня появилась возможность протестировать это на одном из наших серверов Windows Server 2008 R2, и он определенно прерывает RDP-соединения с сервером. Похоже, что серверные компоненты RDP 8.0 устанавливаются только на компьютеры с Windows 7 и не устанавливаются на серверы Windows Server 2008 R2.

Как размещено на Как отключить TLS 1.0 без нарушения работы RemoteApps на сервере 2012 R2 но репост здесь для тех, кто не отслеживает эту ссылку:

Спустя почти год я наконец-то нашел рабочее решение для отключения TLS 1.0 / 1.1 без нарушения подключения RDP и служб удаленных рабочих столов и запуска RemoteApps:

Запустите IISCrypto и отключите TLS 1.0, TLS 1.1 и все плохие шифры.

На сервере служб удаленных рабочих столов, выполняющем роль шлюза, откройте локальную политику безопасности и перейдите к параметрам безопасности - Системная криптография: используйте FIPS-совместимые алгоритмы для шифрования, хеширования и подписи. Измените настройку безопасности на Включено. Перезагрузитесь, чтобы изменения вступили в силу.

Обратите внимание, что в некоторых случаях (особенно при использовании самозаверяющих сертификатов на Server 2012 R2) для параметра политики безопасности «Сетевая безопасность: уровень проверки подлинности LAN Manager» может потребоваться установить значение «Отправлять только ответы NTLMv2».

Просто сообщите об этом, если кто-то еще ищет информацию об этом. Для моих 64-разрядных компьютеров с Windows 7 мне пришлось установить KB2574819 (первый) и KB2592687 (второй). В Windows 7 должен быть установлен SP1, прежде чем эти 2 пакета будут установлены. Если у вас возникли проблемы с установкой SP1, как у меня, мне пришлось сначала удалить KB958830, а затем установить SP1.

Для моих ящиков с Windows Server 2008 R2 мне пришлось установить KB3080079. Как только вы это сделаете и настроите все необходимые настройки для безопасного обмена данными, он будет использовать TLS 1.2. Вы можете подтвердить это с помощью Wireshark, чтобы выполнить захват обмена данными между вашими двумя устройствами.

Я успешно использовал rdesktop (http://www.rdesktop.org) для Linux, чтобы обойти эту проблему.

Один случай, не охваченный существующими ответами: клиенты Windows 7, подключающиеся через шлюз RDP, все равно будут использовать TLS 1.0 при подключении к шлюзу и откажутся, если шлюз не поддерживает TLS 1.0, даже после применения KB3080079, как указано в этой ветке форума TechNet.

Чтобы использовать TLS 1.2 для подключения через шлюз RDP, убедитесь, что KB3140245 установлен и добавьте следующие ключи реестра (сохраните в файл с .reg расширение для импорта):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000800

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000800

Как указано в KB3140245, это переопределит WINHTTP_OPTION_SECURE_PROTOCOLS использовать TLS 1.2 (и только TLS 1.2) по умолчанию. Так что имейте в виду, что это повлияет не только на клиента RDP.

(Примечание: если требуется обратная совместимость, dword:00000800 можно изменить на dword:00000A00 или dword:00000A80 включить TLS 1.1 и 1.0 соответственно)