在IIS上,如何修补SSL 3.0 POODLE漏洞(CVE-2014-3566)?


53

如何在运行IIS的Windows Server 2012系统上修补CVE-2014-3566

Windows Update中是否有修补程序,还是必须更改注册表才能禁用SSL 3.0


1
您链接到MS KB页面上有一个Microsoft Fix it 50495
MattBianco 2014年

3
我尝试在Windows 2008上运行Fix it 50495,但由于错误“此Microsoft Fix它不适用于您的操作系统或应用程序版本”而失败。那好吧。
2014年

Answers:


58

没有“补丁”。这是协议中的漏洞,而不是实现中的错误。

在Windows Server 2003至2012 R2中,SSL / TLS协议由注册表中设置为的标志控制HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols

若要禁用与POODLE漏洞相关的SSLv3,请在上述位置(如果尚不存在)命名一个子项,然后在该位置下创建一个子SSL 3.0Server(如果尚不存在)。在此位置(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上不需要重新启动。您可以通过输入URL和SSL端口443来在poodlebleed.com之前和之后进行验证
Simon

谢谢,您知道我是否也应该禁用PCT,因为据称默认情况下已禁用PCT,但尚未以这种方式禁用它?
Mark Broadhurst,2014年

@Simon,您还有别的事情要做才能使更改生效吗?我只是在一台Server 2012计算机上进行了注册表更新,但仍在报告已启用SSL3。
安倍·米斯勒

我不相信 我假设您使用的是iis和我的Apache,并且您检查了该网站。并且您确定您具有正确的注册表项?
西蒙

*不是Apache(我不知道“我的Apache”来自哪里!)
Simon

24

为了简化安装,我从上述Evan的回答中得出了这个“ 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 2014年

你确定吗?我为我创造了它们。在较低版本的Powershell和Windows(我在Server 2008 R2上使用v2)上可能有所不同
Vasili Syrakis 2014年

2
是的...请参阅上载至PS.3和WSMan 3.0的屏幕截图。i.imgur.com/rctFH4D.png
Jaans 2014年


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支持(使用RC4的SSLv3),并且具有超过可接受的配置安全性。仅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协议。此外,它通过禁用不安全的SSL2和SSL3以及所有不安全和弱密码(浏览器也可能会回退)来提高SSL连接的安全性。该脚本实现了当前的最佳实践规则。

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


嗯,不知道为什么这被否决了。我自己使用了该实用程序,并且效果很好。
David Thomas

这看起来不错,但至少有一个人在运行它后遇到了问题-不知道它是否孤立,其他人说它很棒。
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.