如何在 IIS 上修复 SSL 2.0 和 BEAST

信息安全 tls iis
2021-08-26 01:18:00

正如您在这篇文章TeamMentor.net 中所见,易受 BEAST 和 SSL 2.0 攻击,现在该怎么办?我目前正在开发的应用程序被 SSL Labs 标记为 SSL 2.0 和 BEAST。

我正在使用带有最新补丁的 IIS 7.0,但似乎无法找到这些问题的答案:

  • 此漏洞对http://teammentor.net等网站的风险影响是什么
  • 漏洞利用场景有哪些?
  • 使用 IIS 7.0 是否有任何缓解(或没有缓解)?
  • 如何在 IIS 7.0 中解决此问题?
  • 应用层可以做些什么吗?

以下是有关此主题的其他几个 security.stackexchange.com 问题供参考:

4个回答

在 IIS 7(和 7.5)中,有两件事要做:

  1. 导航至:开始 > 'gpedit.msc' > 计算机配置 > 管理模板 > 网络 > SSL 配置设置 > SSL 密码套件顺序(在右窗格中,双击打开)。在那里,复制并粘贴以下内容(条目用一个逗号分隔,确保没有换行):

    TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_RC4_128_MD5,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,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_SHA256_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256

  2. 以管理员身份运行以下 PowerShell 命令(复制粘贴到记事本中,另存为“fix-beast-in-iis.ps1”并以提升的权限运行):

    #make TSL 1.2 protocol reg keys
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2"
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server"
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client"
    
    # Enable TLS 1.2 for client and server SCHANNEL communications
    new-itemproperty -path     "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "Enabled" -value 1 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "Enabled" -value 1 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
    
    # Make and Enable TLS 1.1 for client and server SCHANNEL communications
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1"
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server"
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" 
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -name "Enabled" -value 1 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -name "Enabled" -value 1 -PropertyType "DWord"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -name "DisabledByDefault" -value 0 -PropertyType "DWord"
    
    # Disable SSL 2.0 (PCI Compliance)
    md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server"
    new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server" -name Enabled -value 0 -PropertyType "DWord"
    

运行脚本后,您可以运行“regedit”并确保脚本中的键实际上是正确创建的。然后重新启动以使更改生效。

警告:请注意,我没有关闭 SSL 3.0 - 这样做的原因是,不管你喜不喜欢,仍然有人使用带有 IE 6/7 的 Windows XP。如果没有启用 SSL 3.0,就没有协议可供这些人使用。虽然您可能仍然无法在 Qualys SSL Labs 扫描中得到完美的结果,但大多数漏洞应该按照前面的步骤进行关闭。如果您想要绝对的 PCI 合规性,您可以从 Powershell 脚本的禁用 SSL 2.0 部分复制这些行,将它们粘贴到脚本的末尾并将它们更改为以下内容:

# Disable SSL 3.0 (PCI Compliance)
md "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server"
new-itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server" -name Enabled -value 0 -PropertyType "DWord"

然后,在运行脚本时,禁用 SSL 2.0、SSL 3.0 并启用 TLS 1.1 和 1.2。

我刚刚发布了IIS Crypto的更新,这是一个免费工具,只需单击一下即可设置 schannel 注册表项并将 RC4 置于 SSL 密码套件顺序的顶部。这减轻了对 Windows Server 2008 和 2012 的 BEAST 攻击。

至于实际的风险,似乎很难说。虽然 SSL Labs 之类的工具将其报告为高优先级,但我不知道有任何真正的攻击在野外利用它,并且根据我对攻击如何工作的(非常有限的)理解,执行起来相当复杂,并且有很多 pre -使其成为真正威胁的必要条件。您已经链接到大量资源,因此没有必要重复已经涵盖的内容。

至于配置 IIS 7 以使用 RC4,也许这个 pdf可以提供帮助?

使用 IIS Crypto 禁用所有“RC4”允许通过 Server 2008 / IIS 7.0 上的 PCI 合规性测试