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 ?
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 ?
Odpowiedzi:
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.0
a 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 Enabled
i 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.0
podanej 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ć.
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
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 }
Istnieje bezpłatne narzędzie firmy Nartac, którego można użyć do wyłączenia protokołów.
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.
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.
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