Jak wyłączyć TLS 1.0 bez zerwania RDP?

48

Nasz procesor karty kredytowej niedawno powiadomił nas, że od 30 czerwca 2016 r. Będziemy musieli wyłączyć protokół TLS 1.0, aby zachować zgodność z PCI . Próbowałem być proaktywny, wyłączając TLS 1.0 na naszym komputerze z systemem Windows Server 2008 R2, ale okazało się, że natychmiast po ponownym uruchomieniu nie byłem w stanie połączyć się z nim za pomocą protokołu RDP. Po niektórych badaniach wydaje się, że RDP obsługuje tylko TLS 1.0 (patrz tutaj lub tutaj ), a przynajmniej nie jest jasne, jak włączyć RDP przez TLS 1.1 lub TLS 1.2. Czy ktoś zna sposób na wyłączenie TLS 1.0 w Windows Server 2008 R2 bez zerwania RDP? Czy Microsoft planuje obsługę protokołu RDP przez TLS 1.1 lub TLS 1.2?

Uwaga: Wydaje się, że można to zrobić, konfigurując serwer do korzystania z warstwy zabezpieczeń RDP, ale wyłącza to uwierzytelnianie na poziomie sieci , co wydaje się być zamianą jednego zła na drugie.

AKTUALIZACJA 1 : Microsoft rozwiązał teraz ten problem. Zobacz odpowiedź poniżej dotyczącą odpowiedniej aktualizacji serwera.

AKTUALIZACJA 2 : Microsoft wydał samouczek dotyczący obsługi SQL Server dla PCI DSS 3.1 .

Mikrofon
źródło
Przepraszam wszystkich - instrukcje, które opublikowałem, są ważne tylko dla Win8 / Server2012 / 2012R2 ... nie działają na 2008R2 / Win7. Testowałem 2008R2 i to nie to samo. Przykro mi.
Ryan Ries
I zauważ, że w 2012 r., Jak wspomniano, usunięcie TLS 1.0 zmusza RDP do przejścia na warstwę zabezpieczeń RDP.
Jim B
Zrobiłem to samo i nie mogę dostać się na mój serwer (AWS), czy udało Ci się znaleźć sposób na wejście bez fizycznego dostępu?
Thomas Paine,
1
Zgodnie z tym artykułem wsparcia Microsoft niedawno załatał SQL 2012 i 2014 do pracy z TLS 1.1 i 1.2 support.microsoft.com/en-us/kb/3052404
CarlR
1
@CarlR w tym artykule nie wspomina się o RDP na serwerze. W rzeczywistości wydaje się, że jest specyficzny dla samej łączności z bazą danych, jak wspomina: „Ta aktualizacja dodaje obsługę protokołu Transport Layer Security (TLS) w wersji 1.2 do SQL Server 2014 i sterownika Microsoft ODBC dla SQL Server”.
k1DBLITZ

Odpowiedzi:

19

Firma Microsoft wydała poprawkę dotyczącą tego problemu 15 września 2015 r

Zobacz https://support.microsoft.com/en-us/kb/3080079

Eric Winn
źródło
Dzięki bardzo pomocny. Po zainstalowaniu tych aktualizacji ekran tsconfig.msc nie wykazuje żadnych oznak TLS 1.1 ani TLS 1.2. Czy ktoś był w stanie potwierdzić, że łączysz się z serwerem za pomocą RDP przez TLS 1.2? Wiem, że możemy to zweryfikować, wyłączając wczesny protokół TLS na serwerze. Ale jeśli to nie działa, nie można w ogóle używać protokołu RDP na serwerze.
Nirlep,
Możliwe, że po wybraniu opcji „Negocjuj” będzie komunikował się najwyższy możliwy poziom, którym może być TLS 1.2
Nirlep 18.09.15
1
Możesz włączyć rejestrowanie Schannel, aby zobaczyć, która wersja jest używana. Link do tego, jak to zrobić, jest pokazany w mojej odpowiedzi.
CarlR
Wiem, że to stary wątek, ale ... Mam starszy system Windows Server 2008 R2. Zainstalowałem KB3080079 i teraz wyłączę TLS 1.0. Ale nie jestem pewien, czy ustawienie serwera RDP powinno być ustawione na „Negocjuj” czy „TLS”.
Chris Harrington,
15

Przyglądam się temu od kilku dni, ponieważ musimy przestrzegać PCI-DSS 3.1, który wymaga wyłączenia TLS 1.0.

Nie chcemy również wracać do warstwy zabezpieczeń RDP, która stanowi poważny problem bezpieczeństwa.

W końcu udało mi się znaleźć dokumentację potwierdzającą, że TLS 1.1 i TLS 1.2 SĄ obsługiwane przez RDP. Ta dokumentacja jest ukryta w logowaniu SChannel i bardzo szczegółowej specyfikacji RDP .

Całkowity brak dokumentacji głównego strumienia w Technet lub innych witrynach Microsoft wydaje się, więc mam nadzieję, że udokumentowanie tego tutaj może pomóc niektórym ludziom.

Odpowiednie fragmenty z podanych linków:

Z linku MSDN:

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

Ze specyfikacji PDF w 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"

Dlatego można stwierdzić, że zgodnie z tą dokumentacją można używać TLS 1.1 lub 1.2 w systemie Windows Server 2008 R2.

Jednak nasze testy wykazały, że NIE działa on z klientem RDP systemu Windows 7 (wersja 6.3.9600), gdy protokół TLS 1.0 jest wyłączony, a opcja zabezpieczeń RDP wymaga ustawienia TLS 1.0.

Jest to oczywiście także możliwe włączenie TLS 1.1 i 1.2, które są domyślnie wyłączone w 2008R2 - nawiasem mówiąc, robimy to przy użyciu bardzo przydatnego narzędzia kryptograficznego IIS firmy Nartac Software .

Patrząc na ten problem, warto włączyć rejestrowanie SChannel, aby zobaczyć więcej szczegółów na temat tego, co dzieje się po otwarciu sesji.

Możesz ustawić rejestrowanie SChannel poprzez zmianę klucza HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL \ EventLogging na 5 i ponowne uruchomienie.

Po wykonaniu tej czynności można obserwować zdarzenia SChannel, które pokazują wersję TLS używaną podczas nawiązywania połączenia RDP. Po włączeniu rejestrowania można zaobserwować błąd SChannel, gdy klient RDP próbuje nawiązać połączenie w systemie Windows 2008 R2 z wyłączonym TLS 1.0:

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

Testowałem również wyłączenie TLS 1.0 w Windows Server 2012 i 2012 R2, co mogę potwierdzić, że działa idealnie przy użyciu klienta Windows 7 RDP. Wpis w dzienniku SChannel pokazuje, że używany jest 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

Mam nadzieję, że to pomoże komuś, kto szuka wyjaśnień w tej sprawie.

Będę nadal szukał, w jaki sposób możemy uzyskać RDP działający na TLS 1.1 i TLS 1.2 w systemie Windows Server 2008 R2.

AKTUALIZACJA: 2015-AUG-05

Podnieśliśmy kwestię, że protokół RDP nie działa z serwerem 2008 R2 ze wsparciem Microsoft, w tym kroki do odtworzenia.

Po kilku tygodniach wstecz i do przodu w końcu dzisiaj otrzymaliśmy telefon od zespołu wsparcia, aby potwierdzić, że rzeczywiście mogą go odtworzyć, co jest teraz klasyfikowane jako błąd. Uaktualnienie zostanie wydane, w tej chwili spodziewane jest to w październiku 2015 r. Jak tylko będę mieć artykuł KB lub inne szczegóły, dodam je do tego postu.

Mamy nadzieję, że ci, którzy utknęli w systemie Windows Server 2008 R2, mogą przynajmniej rozwiązać ten problem przed upływem terminu czerwca 2016 r., Kiedy aktualizacja zostanie wydana.

AKTUALIZACJA: 19 września 2015 r

Microsoft wreszcie wydała support kb artykuł o tym tutaj i mogę potwierdzić, że działa OK.

CarlR
źródło
Twoja ostatnia aktualizacja mówi: „Próbowałem Windows 7 i Windows 2012 R2 i nie działa; nadal łączy się przy użyciu TLS1”. Czy kiedykolwiek byłeś w stanie sprawić, żeby to zadziałało?
Doug S
Ktoś inny umieścił ten komentarz, właśnie go usunąłem, ponieważ teraz działa dla nas dobrze w stosunku do TLS1.2.
CarlR
Hmmm. Nigdy nie udało mi się go uruchomić, nawet przy tych zmianach / aktualizacjach i wszystkim innym, co mogłem znaleźć.
Doug S
Dziennik SChannel można znaleźć w dzienniku systemu.
Ivan Chau,
8

Zamiast tego należy użyć protokołu IPsec, jak zaleca dokument: „Najpierw należy skonfigurować silnie zaszyfrowaną sesję (np. Tunel IPsec), a następnie wysłać dane przez SSL w bezpiecznym tunelu”

Głównym powodem tego jest konfiguracja protokołu TLS dla protokołu RDP, ponieważ zasady zapory można łatwo skontrolować pod kątem zgodności (w porównaniu z potwierdzeniem zgodności wielu zmian w rejestrze), a protokół IPsec można dość łatwo skonfigurować w systemie Windows.

Jeśli potrzebujesz pełnej zgodności z pakietem B, IPSEC z tls 1.0 jest jedynym dostępnym sposobem na zastosowanie do odpowiednich długości certyfikatów

Jim B.
źródło
Tunelowanie przez SSH to także opcja, o której wspomnę. (Oczywiście wymaga oprogramowania serwera SSH dla systemu Windows.)
Chris W. Rea
IPsec nie jest SSH
Jim B
3
Zgadza się i nie chciałem sugerować, że są takie same. Przeciwnie, SSH jest alternatywną metodą ustanawiania bezpiecznego tunelu do serwera.
Chris W. Rea,
@JimB Przepraszam, miałeś rację.
Ryan Ries
1
@RyanRies Np, wciąż drapię się po głowie, jak głosowało 12 osób, nie wiedząc, że to działa.
Jim B
8

To nie jest odpowiedź na pytanie, ale na pytanie cząstkowe „Jak przywrócić zdalny dostęp do maszyny wirtualnej, na której wyłączyłem TLS 1.0 i bez dostępu fizycznego?”.

Wyłączyłem TLS 1.0 za pomocą IISCrypto, co dało użyteczne ostrzeżenie o skutku ubocznym, że RDP przestanie działać, jeśli jest ustawiony na TLS. Więc się zameldowałem:

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

a mój poziom bezpieczeństwa został ustawiony na „Negocjuj”. Zakładałem, że oznacza to, że jeśli TLS nie będzie dostępny, z wdziękiem obniży się do RDP Security.

Ale nie, Negocjacja nie działa w ten sposób. Przed wyłączeniem TLS 1.0 musisz ustawić Poziom bezpieczeństwa na Zabezpieczenia RDP, a nie Negocjuj.

Straciłem więc zdolność zdalnego łączenia się z moją instancją AWS!

Aby połączyć się ponownie, użyłem innej instancji AWS.

  1. Zaktualizowałem SecurityGroup, aby umożliwić połączenie zapory ogniowej z tego komputera do mojego „zagubionego” komputera.
  2. Otworzyłem administracyjny udział sieciowy w DOS, z użytkownikiem administratora i hasłem:

net use \\lost_machine_ip\c$

  1. Następnie otworzyłem Regedit iw menu Plik wybierz „Połącz rejestr sieciowy” i podaj adres IP „utraconego” serwera. Powinieneś zobaczyć rejestr zdalnego serwera. Iść do :

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

i ustaw wartość na SecurityLayer0 (0 to RDP Security).

Będziesz wtedy mógł połączyć się zdalnie i ponownie włączyć TLS 1.0 w IISCrypto, jeśli to konieczne.

Thierry_S
źródło
Dzięki, zaoszczędziło mi to dużo pracy przy odtwarzaniu serwera. Nie jestem pewien, jak zmieniłeś grupę zabezpieczeń, aby umożliwić połączenie między komputerami --- Otworzyłem cały dostęp do „zagubionej” maszyny do adresu IP drugiego komputera i to zadziałało. Czy jest lepszy sposób?
Gullbyrd
@ Gullbyrd albo to albo ustaw WSZYSTKIE TCP na grupę zabezpieczeń, do której należą oba komputery. Robi to samo.
Dave Beer
3

Konieczne będzie zainstalowanie protokołu RDP 8.0 na komputerach z systemem Windows 7 i serwerami Windows Server 2008 R2, a następnie włączenie protokołu RDP 8.0 na zasadach komputera lokalnego lub zasadach grupy.

Oto Microsoft KB dla RDP 8.0. https://support.microsoft.com/en-us/kb/2592687

Po wykonaniu tej czynności powinieneś móc wyłączyć TLS 1.0 na komputerach i serwerach, edytując rejestr zgodnie z instrukcją w tym artykule. https://technet.microsoft.com/en-us/library/dn786418.aspx

Po zainstalowaniu RDP 8.0 można także zainstalować RDP 8.1, ale przed zainstalowaniem RDP 8.1 należy zainstalować RDP 8.0. RDP 8.0 zawiera zarówno składniki klienta, jak i protokół po stronie serwera, ale RDP 8.1 obejmuje tylko klienta. Microsoft KB dla RDP 8.1 to KB2830477.

Wprowadziłem te zmiany na jednej ze swoich stacji roboczych z systemem Windows 7 i przetestowałem połączenia RDP przy włączonym ustawieniu zasad grupy „Wymagaj użycia określonej warstwy zabezpieczeń dla połączeń zdalnych (RDP)” i ustawiam „SSL (TLS 1.0)”, aby upewnić się, że nie wróciłby do szyfrowania RDP.

AKTUALIZACJA 6/19/2015:

W końcu dostałem szansę przetestowania tego na jednym z naszych serwerów Windows Server 2008 R2 i zdecydowanie zrywa połączenia RDP z serwerem. Wygląda na to, że komponenty po stronie serwera RDP 8.0 są instalowane tylko na komputerach z systemem Windows 7 i nie są instalowane na serwerach z systemem Windows Server 2008 R2.

Kenny R.
źródło
Wspomniany artykuł z bazy wiedzy pomocy technicznej nie działa obecnie (pętla przekierowań), ale możesz użyć wersji pamięci podręcznej Google, aby zobaczyć zawartość. Ciekawe, że w tym artykule nie ma absolutnie żadnej wzmianki o wsparciu TLS 1.1 lub 1.2, a jednak sądzę, że to jest główny powód, dla którego ktokolwiek będzie patrzył na to pytanie! Istnieje również duża liczba zastrzeżeń, w tym lokalni administratorzy nie mogą się już logować, chyba że zostaną specjalnie dodani do grupy użytkowników Remote Destop. Uważaj, jeśli próbujesz tego.
CarlR
Czy otworzyłeś port 3389 UDP na serwerze, gdy próbowałeś połączyć się z serwerem 2008?
Elvar
Poszedłem tak daleko, że tymczasowo całkowicie wyłączyłem Zaporę systemu Windows na serwerze 2008 R2, ale nadal nie mogłem się z nim połączyć przy użyciu RDP z wyłączonym TLS 1.0 na serwerze.
Kenny R
3

Jak opublikowano w Jak wyłączyć TLS 1.0 bez przerywania RemoteApps na serwerze 2012 R2, ale ponowne przesłanie tutaj z korzyścią dla tych, którzy mogą nie monitorować tego łącza:

Po prawie roku w końcu wymyśliłem działające rozwiązanie do wyłączenia TLS 1.0 / 1.1 bez zerwania łączności RDP i usług pulpitu zdalnego i uruchomienia RemoteApps:

Uruchom IISCrypto i wyłącz TLS 1.0, TLS 1.1 i wszystkie złe szyfry.

Na serwerze usług pulpitu zdalnego z rolą bramy otwórz lokalną politykę bezpieczeństwa i przejdź do Opcje bezpieczeństwa - Kryptografia systemu: Użyj zgodnych algorytmów FIPS do szyfrowania, mieszania i podpisywania. Zmień ustawienie zabezpieczeń na Włączone. Uruchom ponownie, aby zmiany odniosły skutek.

Należy pamiętać, że w niektórych przypadkach (szczególnie w przypadku korzystania z certyfikatów z podpisem własnym na serwerze 2012 R2) opcja Zasady bezpieczeństwa Zabezpieczenia sieci: Poziom uwierzytelniania LAN Manager może wymagać ustawienia wysyłania tylko odpowiedzi NTLMv2.

kardiotoracyka
źródło
2

Tylko aktualizacja tego, jeśli ktokolwiek szuka informacji na ten temat. W przypadku 64-bitowych urządzeń z systemem Windows 7 musiałem zainstalować KB2574819 (pierwszy) i KB2592687 (drugi). Windows 7 musi mieć zainstalowany dodatek SP1, zanim te 2 paczki zostaną zainstalowane. Jeśli masz problemy z instalacją dodatku SP1, tak jak ja, najpierw musiałem odinstalować KB958830, a następnie zainstalować dodatek SP1.

W przypadku moich pudeł z systemem Windows Server 2008 R2 musiałem zainstalować KB3080079. Po wykonaniu tej czynności i wprowadzeniu wszystkich odpowiednich ustawień bezpiecznej komunikacji, użyje TLS 1.2. Możesz to potwierdzić za pomocą Wireshark, aby wykonać przechwytywanie komunikacji między dwoma urządzeniami.

Seth Dunn
źródło
0

Z powodzeniem korzystałem z rdesktop ( http://www.rdesktop.org ) dla Linuksa, aby obejść ten problem.

Steven B.
źródło
0

Jeden przypadek nie jest objęty istniejącymi odpowiedziami: klienci Windows 7 łączący się przez bramę RDP nadal będą używać TLS 1.0 podczas łączenia się z bramą i zawiodą, jeśli brama nie obsługuje TLS 1.0, nawet po zastosowaniu KB3080079 , jak zaobserwowano w tym wątku na forum TechNet .

Aby używać TLS 1.2 do łączenia się przez bramę RDP, upewnij się, że KB3140245 jest zainstalowany i dodaj następujące klucze rejestru (zapisz w pliku z .regrozszerzeniem do zaimportowania):

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

Jak udokumentowano w KB3140245 , zastąpi WINHTTP_OPTION_SECURE_PROTOCOLSto domyślnie użycie TLS 1.2 (i tylko TLS 1.2). Pamiętaj więc, że wpłynie to nie tylko na klienta RDP.

(Uwaga: jeśli wymagana jest kompatybilność wsteczna, dword:00000800można ją zmienić na dword:00000A00lub dword:00000A80odpowiednio uwzględnić TLS 1.1 i 1.0)

Kevinoid
źródło