Jak w IIS załatać lukę w zabezpieczeniach POODLE SSL 3.0 (CVE-2014-3566)?


53

Jak załatać CVE-2014-3566 w systemie Windows Server 2012 z uruchomionymi usługami IIS?

Czy w Windows Update jest łatka, czy muszę wprowadzić zmiany w rejestrze, aby wyłączyć SSL 3.0 ?


1
Istnieje Microsoft Fix it 50495 na stronie MS KB, z którą się łączysz.
— MattBianco

3
Próbowałem uruchomić Fix it 50495 w systemie Windows 2008 i nie powiodło się z błędem „Ta poprawka Microsoft nie dotyczy systemu operacyjnego ani wersji aplikacji”. No cóż.
— Josh

Odpowiedzi:


58

Nie ma „łatki”. Jest to luka w protokole, a nie błąd w implementacji.

W systemie Windows Server 2003 do 2012 R2 protokoły SSL / TLS są kontrolowane przez flagi w rejestrze ustawione na HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols.

Aby wyłączyć protokół SSLv3, którego dotyczy luka POODLE, utwórz podklucz w powyższej lokalizacji (jeśli jeszcze go nie ma) o nazwie, SSL 3.0a pod nim podklucz o nazwie Server(jeśli jeszcze nie jest obecny). W tej lokalizacji ( HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0\Server) utwórz wartość DWORD o nazwie Enabledi pozostaw ją ustawioną na 0.

Wyłączanie protokołu SSL 2.0, które należy również wykonać, odbywa się w ten sam sposób, z tym wyjątkiem, że będziesz używać klucza o nazwie SSL 2.0podanej powyżej w rejestrze.

Nie przetestowałem wszystkich wersji, ale myślę, że prawdopodobnie bezpiecznie jest założyć, że ponowne uruchomienie jest konieczne, aby ta zmiana zaczęła obowiązywać.


3
ponowne uruchomienie komputera nie jest konieczne przynajmniej w systemie Windows Server 2012. możesz zweryfikować przed i po w witrynie poodlebleed.com , wpisując swój adres URL i numer 443 dla portu SSL
— Simon

Dzięki, czy wiesz, czy powinienem również wyłączyć PCT, ponieważ jest rzekomo wyłączony domyślnie, a jednak nie wyłączony w ten sposób?
— Mark Broadhurst,

@ Simon, czy jest coś jeszcze, co musisz zrobić, aby zmiany odniosły skutek? Właśnie dokonałem aktualizacji rejestru na komputerze z serwerem Server 2012, ale wciąż pojawia się informacja, że ​​protokół SSL3 jest włączony.
— Abe Miessler,

Nie wierzę w to. Zakładam, że używasz iis i mojego Apache i sprawdziłeś, czy korzystasz z tej strony. I jesteś pewien, że masz dokładnie odpowiedni klucz rejestru?
— Simon

* NIE apache (nie wiem, skąd pochodzi „mój Apache”!)
— Simon

24

Dla ułatwienia instalacji wyprowadziłem ten plik „wyłącz ssl 2 i 3.reg” z odpowiedzi Evana powyżej :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server]
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]
"Enabled"=dword:00000000

12

PowerShell do wyłączania SSL2 i SSL3:

2..3 | %{ New-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL $_.0\Server" -Name Enabled -PropertyType "DWORD" -Value 0 -Force }

Niestety powyższe działa tylko wtedy, gdy podklucze rejestru są już obecne. Byłoby miło zobaczyć PS, który może je utworzyć, jeśli nie istnieje, lub zaktualizować, jeśli tak jest.
— Jaans

Jesteś pewny? Mój tworzy je dla mnie. Może się różnić w niższych wersjach Powershell i Windows (używam v2 na Server 2008 R2)
— Vasili Syrakis,

2
Tak ... patrz zrzut ekranu przesłany na: i.imgur.com/rctFH4D.png Korzystanie z PS 3.0 i WSMan 3.0.
— Jaans


8

Oto PowerShell, który przetestuje obecność kluczy rejestru, w razie potrzeby utwórz je, a następnie wprowadź niezbędne wartości, aby wyłączyć SSL 2.0 i SSL 3.0

$regPath1 = 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 2.0'
$regPath2 = 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 2.0\Server'
$regPath3 = 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0'
$regPath4 = 'HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0\Server'


If(!(Test-Path -Path $regPath1))
{
New-Item -Path $regPath1 -Force
}

If(!(Test-Path $regPath2))
{
New-Item -Path $regPath2 -Force
}
   New-ItemProperty -Path $regPath2 -Name DisabledByDefault -PropertyType DWORD -Value "1" -Force
   New-ItemProperty -Path $regPath2 -Name Enabled -PropertyType DWORD -Value "0" -Force 

If(!(Test-Path $regPath3))
{
New-Item -Path $regPath3 -Force
}

If(!(Test-Path $regPath4))
{
New-Item -Path $regPath4 -Force
}
   New-ItemProperty -Path $regPath4 -Name DisabledByDefault -PropertyType DWORD -Value "1" -Force
   New-ItemProperty -Path $regPath4 -Name Enabled -PropertyType DWORD -Value "0" -Force

Można to wdrożyć za pomocą SCCM lub wiersza poleceń - po prostu uruchom zadanie SCCM lub wiersz poleceń jako Administrator. Niektóre witryny z informacjami o rejestrze wskazują, że po utworzeniu i / lub modyfikacji kluczy rejestru konieczne jest ponowne uruchomienie komputera.


4

Lub pobierz kopię IISCrypto i kliknij przycisk najlepszych praktyk, następnie odznacz SSL 3.0, a następnie zastosuj, a następnie uruchom ponownie


3

Nie musisz wyłączać SSL3. Możesz włączyć SSL3 i zminimalizować POODLE .

# Copy and paste this in PowerShell then restart your server
$cipherSuitesOrder = @(
    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256',
    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384',
    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256',
    'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384',
    'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256',
    'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384',
    'TLS_RSA_WITH_AES_128_CBC_SHA256',
    'TLS_RSA_WITH_AES_128_CBC_SHA',
    'TLS_RSA_WITH_AES_256_CBC_SHA256',
    'TLS_RSA_WITH_AES_256_CBC_SHA',
    'TLS_RSA_WITH_RC4_128_SHA',
    'TLS_RSA_WITH_3DES_EDE_CBC_SHA',
    'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256',
    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256',
    'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384',
    'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384',
    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256',
    'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384',
    'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256',
    'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384'
)
$cipherSuitesAsString = [string]::join(',', $cipherSuitesOrder)
New-ItemProperty -path 'HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002' \
-name 'Functions' -value $cipherSuitesAsString -PropertyType 'String' -Force | Out-Null

Przy tych ustawieniach nadal będziesz mieć obsługę IE6 (z SSLv3 przy użyciu RC4) i masz więcej niż akceptowalną pod względem bezpieczeństwa konfigurację. Tylko IE6 i naprawdę stary klient używałyby szyfrów SSLv3 lub RC4.


3

Istnieje dobry skrypt PowerShell, który pomaga w konfiguracji IIS 7.5 i 8:

Ten skrypt PowerShell konfiguruje serwer Microsoft Internet Information Server 7.5 i 8.0 (IIS) do obsługi protokołu TLS 1.1 i TLS 1.2 z zachowaniem tajemnicy przekazywania. Ponadto zwiększa bezpieczeństwo połączeń SSL, wyłączając niezabezpieczone SSL2 i SSL3 oraz wszystkie niepewne i słabe szyfry, które może spowodować awaria przeglądarki. Ten skrypt implementuje obecne zasady najlepszych praktyk.

https://www.hass.de/content/setup-your-iis-ssl-perfect-forward-secrecy-and-tls-12


Hmm, nie jestem pewien, dlaczego to zostało odrzucone. Sam skorzystałem z tego narzędzia i działa ono idealnie.
— David Thomas

Wygląda to dobrze, ale przynajmniej jeden facet miał problemy po uruchomieniu - nie wiem, czy jest izolowany, widząc, jak inni mówią, że jest świetny.
— Mark
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.