识别和禁用弱密码套件

信息安全 tls 网络服务器 密码选择
2021-08-15 18:25:24

在 Windows Server 2008 R2 上部署 Web 应用程序之前的安全扫描结果引发了以下消息:

支持弱 SSL 密码套件

重新配置服务器以避免使用弱密码套件。配置更改是特定于服务器的。

SSLCipherSuite HIGH:MEDIUM:!MD5!EXP:!NULL:!LOW:!ADH

对于 Microsoft Windows Vista、Microsoft Windows 7 和 Microsoft Windows Server 2008,请按照以下说明从支持的密码套件列表中删除被识别为弱的密码套件:

http://msdn.microsoft.com/en-us/library/windows/desktop/bb870930(v=vs.85).aspx

我尝试了解 MSDN 信息,但我完全迷失在那里。

首先,我不明白应该删除或禁用哪个密码套件。

那么我应该如何运行给定示例的代码以删除密码套件?

#include <stdio.h>
#include <windows.h>
#include <bcrypt.h>

void main()
{

SECURITY_STATUS Status = ERROR_SUCCESS;
  LPWSTR wszCipher = (L"TLS_RSA_WITH_RC4_128_SHA");

Status = BCryptRemoveContextFunction(
            CRYPT_LOCAL,
            L"SSL",
            NCRYPT_SCHANNEL_INTERFACE,
            wszCipher);
}
4个回答

找出要删除的密码套件可能非常困难。对于 Windows,我过去使用过免费的IIS Crypto工具:

IIS Crypto is a free tool that gives administrators the ability to enable or disable
protocols, ciphers, hashes and key exchange algorithms on Windows Server 2003, 2008
and 2012. It also lets you reorder SSL/TLS cipher suites offered by IIS, implement
best practices with a single click and test your website.

这不仅利用了某人的专业知识,就哪些算法或多或少安全,而且还很难弄清楚如何在 Windows 中实际实施更改(提示:这是一堆注册表项)。

协议

要禁用协议,请使用协议版本创建客户端服务器键,并添加DisabledByDefault = 1 (DWord)Enabled = 0 (DWord)值。

示例或键: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0\Client HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\SSL 3.0\Server

密码

要禁用密码,请使用套件名称创建一个密钥并添加Enabled = 0 (DWord)

键示例: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128 HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\Triple DES 168

密码套件

在 Win 2016 及更高版本的系统上,有Disable-TlsCipherSuitecmdlet。在早期的操作系统上,有一个Functions注册表值,其中包含接受的密码套件的整个列表。这些值位于以下路径的子项下:

HKLM:\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\Default HKLM:\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL

但是,根据微软的说法:

Microsoft SCHANNEL 团队不支持直接操作注册表中的组策略和默认密码套件位置。

这也可以通过位于此处的 GPO 来实现:Computer Configuration\Administrative Templates\Network\SSL Configuration Settings\SSL Cipher Suite Order

资料来源:https ://blogs.technet.microsoft.com/askds/2015/12/08/speaking-in-ciphers-and-other-enigmatic-tonguesupdate/

至于确定要删除哪些密码套件,我首先要指出我对现在是 2015 年的回答,在高安全性 HTTPS 环境中应该使用哪些 SSL/TLS 密码套件?详细的纲要。

简短,简短,简短的版本是:

  • 您可以一次又一次地禁用您的扫描仪讨厌的任何一个,直到您的扫描仪不再像猪一样尖叫!
  • 您可以遵循NIST SP131-52 第 1 版指南,或您的政府或行业监管机构提供的其他指南。
  • 您可以使用ssllabs.com继续测试您的服务器,遵循它的建议,直到获得您喜欢的分数并删除您不喜欢的任何警告

禁用弱密码似乎是在每个应用程序配置的基础上完成的。

Hynek Schlawack正在积极维护 Web 服务器和代理服务器密码配置指南(包括 Apache/httpd、nginx、HAProxy 和一般说明)。

截至 2015 年 1 月 16 日,他推荐的“密码套件”字符串为:

ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

我相信 tomcat 等价物是[编辑:我以前的列表不包括任何适用于当前版本 Firefox 的密码]:

 ciphers="TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,
          TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,
          TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
          TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,
          TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,
          TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
          TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,
          TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
          TLS_RSA_WITH_AES_256_GCM_SHA384,
          TLS_RSA_WITH_AES_128_GCM_SHA256,
          TLS_RSA_WITH_AES_256_CBC_SHA256,
          TLS_RSA_WITH_AES_128_CBC_SHA256,
          TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
          TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
          TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
          TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
          TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
          TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
          TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
          TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
          TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
          TLS_RSA_WITH_AES_128_CBC_SHA,
          TLS_RSA_WITH_AES_256_CBC_SHA,
          TLS_RSA_WITH_3DES_EDE_CBC_SHA,
          TLS_EMPTY_RENEGOTIATION_INFO_SCSV"

来自 Tomcat 的格式化方法:SSL 密码和来自 Christopher Schultz的电子邮件提供的运行代码的可用密码