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

48

Наш процессор кредитных карт недавно уведомил нас о том, что с 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 .

Майк
источник
Приношу свои извинения всем - опубликованные мной инструкции действительны только для Win8 / Server2012 / 2012R2 ... они не работают на 2008R2 / Win7. Я тестировал 2008R2, и это не то же самое. Мне жаль.
Райан Райс
И обратите внимание, что в 2012 году в качестве опций удаление TLS 1.0 вынуждает RDP понижаться до уровня безопасности RDP.
Джим Б.
Я сделал то же самое и не могу попасть на свой сервер (AWS), вы смогли найти способ войти без физического доступа?
Томас Пейн
1
Согласно этой статье поддержки Microsoft только недавно исправлен SQL 2012 и 2014 для работы с TLS 1.1 и 1.2 support.microsoft.com/en-us/kb/3052404
CarlR
1
@CarlR, эта статья не упоминает RDP на сервере. На самом деле, он, похоже, относится к самой возможности подключения к базе данных, поскольку в нем упоминается: «Это обновление добавляет поддержку протокола 1.2 TLS на SQL Server 2014 и драйвер ODBC для Microsoft для SQL Server».
k1DBLITZ

Ответы:

19

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

См. Https://support.microsoft.com/en-us/kb/3080079.

Эрик Винн
источник
Спасибо, очень полезно. После установки этих обновлений экран tsconfig.msc не показывает никаких признаков TLS 1.1 или TLS 1.2. Кто-нибудь смог подтвердить, что вы подключаетесь к серверу, используя RDP over TLS 1.2? Я знаю, что мы можем проверить, отключив ранний протокол TLS на сервере. Но если это не сработает, вы не сможете использовать RDP на сервере вообще.
Нирлеп
Вполне возможно, что, когда вы выберете опцию «Согласовать», он сообщит о максимально возможном уровне, который может быть TLS 1.2
Nirlep
1
Вы можете включить ведение журнала Schannel, чтобы увидеть, какая версия используется. Ссылка на то, как это сделать, показана в моем ответе.
CarlR
Я знаю, что это старая ветка, но ... У меня более старая версия Windows Server 2008 R2, которую я привожу в тупик. Я установил KB3080079 и теперь отключу TLS 1.0. Но я не уверен, должен ли параметр сервера RDP быть установлен на «Согласование» или «TLS».
Крис Харрингтон
15

Я изучал это в течение нескольких дней, так как мы должны соблюдать 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>"

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

"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, которое, как я могу подтвердить, прекрасно работает с помощью клиента Windows 7 RDP. Запись журнала 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 наконец-то выпустила статью поддержки об этом здесь, и я могу подтвердить, что она работает нормально.

CarlR
источник
В вашем последнем обновлении говорится: «Я пробовал Windows 7 и Windows 2012 R2, и он не работает; он все еще подключается с использованием TLS1». Удалось ли вам заставить это работать?
Даг С
Кто-то добавил этот комментарий, я только что удалил его, так как теперь он отлично работает для нас по TLS1.2.
CarlR
Хммм. Я никогда не мог заставить его работать, даже с этими изменениями / обновлениями и всем остальным, что я мог найти.
Даг С
Журнал SChannel можно найти в системном журнале.
Иван Чау
8

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

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

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

Джим Б
источник
Туннелирование по SSH также является вариантом, о котором я упомяну. (Требуется программное обеспечение сервера SSH для Windows, конечно.)
Крис В. Ри
IPsec - это не SSH
Джим Б.
3
Правильно, и я не хотел подразумевать, что они одинаковы. Скорее, SSH - это альтернативный метод для установки безопасного туннеля к серверу.
Крис В. Ри
@JimB Извини, ты был прав.
Райан Райс
1
@RyanRies Np, я все еще ломаю голову, как 12 других проголосовали бы, не зная, что это сработало.
Джим Б.
8

Это не ответ на вопрос, а на подвопрос «Как восстановить удаленный доступ к виртуальной машине, где я отключил 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.

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

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

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

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

net use \\lost_machine_ip\c$

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

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

и установите значение для SecurityLayer0 (0 - RDP Security).

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

Thierry_S
источник
Спасибо, это спасло мне много работы по воссозданию сервера. Не уверен, как вы изменили свою группу безопасности, чтобы разрешить соединение между компьютерами - я открыл доступ к «потерянному» компьютеру по IP-адресу второго компьютера, и это сработало. Есть ли способ лучше?
Gullbyrd
@Gullbyrd либо так, либо установите ВСЕ TCP в группу безопасности, к которой принадлежат обе машины. Делает то же самое.
Дейв Бир
3

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

Вот Microsoft KB для 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.0 должен быть установлен до установки RDP 8.1. RDP 8.0 содержит компоненты протокола как на стороне клиента, так и на стороне сервера, но RDP 8.1 включает только клиента. Microsoft KB для 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.

Кенни Р
источник
Упомянутая статья в базе знаний поддержки в настоящее время не работает (цикл перенаправления), однако вы можете использовать версию кэша Google, чтобы просмотреть ее содержимое. Интересно, что в этой статье до сих пор нет абсолютно никакого упоминания о поддержке TLS 1.1 или 1.2, и, тем не менее, я полагаю, что это основная причина, по которой любой будет смотреть на этот вопрос! Существует также большое количество предупреждений, включая локальных администраторов, которые больше не могут войти в систему, если только они не были добавлены в группу пользователей Remote Destop. Остерегайтесь, если вы пытаетесь это.
CarlR
Открыли ли вы UDP-порт 3389 на сервере, когда вы пытались подключиться к серверу 2008?
Эльвар
Я зашел так далеко, что временно полностью отключил брандмауэр Windows на сервере server 2008 R2, но все равно не смог подключиться к нему, используя RDP с отключенным TLS 1.0 на сервере.
Кенни Р,
3

Как написано в разделе Как отключить 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».

cardiothoracics
источник
2

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

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

Сет Данн
источник
0

Один случай, не охваченный существующими ответами: клиенты 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 соответственно)

Kevinoid
источник