В 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.