如何在运行IIS的Windows Server 2012系统上修补 CVE-2014-3566 ?
Windows Update中是否有补丁,还是我必须做 更改注册表以禁用SSL 3. ?
没有“补丁”。这是协议中的漏洞,而不是实现中的错误。
在Windows Server 2003至2012 R2中,SSL/TLS协议由注册表中位于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols
。
要禁用与POODLE漏洞有关的SSLv3,请在上面的位置(如果尚不存在)创建一个名为SSL 3.0
,并在此之下创建一个名为Server
的子项(如果尚不存在)。在此位置(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0\Server
)创建一个名为Enabled
的DWORD值,并将其设置为0
。
禁用SSL 2.0(您也应该这样做)的方法相同,只是您将使用名为SSL 2.0
在上述注册表路径中。
我尚未测试所有版本,但我认为可以安全地假设必须重新启动此更改才能生效。
为了简化安装,我从 上面的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
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 }
Nartac提供了一个免费实用程序,可用于禁用协议。
这是一个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作业或命令行。创建和/或修改注册表项后,需要重新启动。
或获取IISCrypto的副本并单击最佳实践按钮,然后取消选中SSL 3.0,然后应用,然后重新启动
您不必禁用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密码。
有一个很好的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