В IIS как я могу исправить уязвимость SSL 3.0 POODLE (CVE-2014-3566)?

53

Как мне установить исправление CVE-2014-3566 в системе Windows Server 2012 под управлением IIS?

Есть ли исправление в Центре обновления Windows или мне нужно внести изменения в реестр, чтобы отключить SSL 3.0 ?

Эрик Латроп
источник
1
На странице MS KB, на которую вы ссылаетесь, есть Microsoft Fix it 50495 .
MattBianco
3
Я попытался запустить Fix it 50495 в Windows 2008, и он не удался с ошибкой «Это исправление Microsoft не относится к вашей операционной системе или версии приложения». Ну что ж.
Джош

Ответы:

58

Там нет "патч". Это уязвимость в протоколе, а не ошибка в реализации.

В Windows Server 2003 по 2012 R2 протоколы SSL / TLS контролируются флагами в реестре, установленном на HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols.

Чтобы отключить SSLv3, с которым связана уязвимость POODLE, создайте подключ в указанном выше месте (если он еще не существует) с именем SSL 3.0и, соответственно, подключ с именем Server(если он еще не существует). В этом месте ( HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0\Server) создайте значение DWORD с именем Enabledи оставьте его в 0.

Отключение SSL 2.0, которое вы также должны делать, выполняется аналогичным образом, за исключением того, что вы будете использовать ключ, указанный SSL 2.0в указанном выше пути реестра.

Я не тестировал все версии, но думаю, что можно с уверенностью предположить, что перезагрузка необходима, чтобы это изменение вступило в силу.

Эван Андерсон
источник
3
перезагрузка не требуется на Windows Server 2012 по крайней мере. Вы можете проверить до и после на poodlebleed.com , введя свой URL и 443 для порта SSL
Симон
Спасибо. Знаете ли вы, следует ли мне также отключить PCT, поскольку он предположительно отключен по умолчанию и еще не отключен таким образом?
Марк Бродхерст
@ Симон, что еще нужно сделать, чтобы изменения вступили в силу? Я только что обновил реестр на компьютере с Server 2012, но по-прежнему сообщается, что SSL3 включен.
Абэ Мисслер
Я не верю в это. Я предполагаю, что вы используете iis и мой Apache, и вы проверили этот сайт. И вы уверены, что у вас есть правильный ключ реестра?
Саймон
* НЕ apache (я не знаю, откуда появился «мой Apache»!)
Simon
24

Просто для простоты установки я извлек этот файл "disable ssl 2 and 3.reg" из ответа Эвана выше :

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 для отключения SSL2 и SSL3:

2..3 | %{ New-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL $_.0\Server" -Name Enabled -PropertyType "DWORD" -Value 0 -Force }
Василий Сиракис
источник
К сожалению, вышесказанное работает только в том случае, если разделы реестра уже присутствуют. Было бы неплохо увидеть PS, который может создавать их, если они не существуют, или обновлять их, если они существуют.
Jaans
Ты уверен? Мой создает их для меня. Это может отличаться в более ранних версиях Powershell и Windows (я использую v2 на Server 2008 R2)
Василий Сиракис
2
Ага ... см. Скриншот, загруженный на: i.imgur.com/rctFH4D.png Использование PS 3.0 и WSMan 3.0.
Jaans
8

Вот PowerShell, который будет проверять наличие разделов реестра, создавать их при необходимости, а затем вводить необходимые значения для отключения SSL 2.0 и 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

Его можно развернуть с помощью SCCM или командной строки - просто обязательно запустите задание SCCM или командную строку от имени администратора. Некоторые веб-сайты с информацией о реестре указывают на необходимость перезагрузки после создания и / или изменения разделов реестра.

Кази
источник
4

Или возьмите копию IISCrypto и нажмите кнопку рекомендации, затем снимите флажок SSL 3.0 и затем примените, затем перезагрузите

Том
источник
3

Вам не нужно отключать SSL3. Вы можете включить SSL3 и смягчить 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

С этими настройками у вас все равно будет поддержка IE6 (с SSLv3 с использованием RC4) и более чем приемлемая конфигурация безопасности. Только IE6 и действительно старый клиент будут использовать шифры SSLv3 или RC4.

Анхель Абад Сердейра
источник
3

Есть хороший сценарий PowerShell, который помогает с настройкой IIS 7.5 и 8:

Этот сценарий PowerShell настраивает ваш Microsoft Internet Information Server 7.5 и 8.0 (IIS) для поддержки протоколов TLS 1.1 и TLS 1.2 с секретностью пересылки. Кроме того, он повышает безопасность ваших SSL-соединений, отключая небезопасные SSL2 и SSL3, а также все небезопасные и слабые шифры, которые браузер может использовать также. Этот скрипт реализует текущие правила передовой практики.

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

Дэвид Томас
источник
Хм, не уверен, почему за это проголосовали. Я сам использовал эту утилиту, и она отлично работает.
Дэвид Томас
Это выглядит хорошо, но по крайней мере у одного парня были проблемы после запуска - не знаю, если он изолирован, видел, что другие люди говорят, что это здорово.
Mark