[转载]TLS/SSL 密码强化建议

传输层安全 (TLS)及其前身安全套接层 (SSL)是广泛使用的协议。它们旨在通过身份验证、加密和完整性保护来保护客户端和服务器之间的数据传输。

TLS/SSL 技术通常与 HTTP 协议一起用于网站和 Web 应用程序。它还被其他一些服务和协议使用,例如电子邮件(SMTP、POP 和 IMAP 协议)、FTP、聊天(XMPP 协议)、虚拟专用网络 (TLS/SSL VPN) 和网络设备。

为了保护数据传输,TLS/SSL 使用一个或多个密码套件。密码套件是身份验证、加密和消息身份验证代码 (MAC) 算法的组合。它们用于协商TLS/SSL 连接的安全设置以及数据传输。

以下是密码套件可能使用的算法的示例。

功能算法
密钥交换RSA、Diffie-Hellman、ECDH、SRP、PSK
验证RSA、DSA、ECDSA
批量密码RC4、3DES、AES
消息认证HMAC-SHA256、HMAC-SHA1、HMAC-MD5

TLS 现在是多个监管标准的要求。在没有 TLS 的情况下,主要浏览器会将站点标记为不安全。因此,它也可能被视为服务网站和 Web 应用程序的要求。但是,获得正确的 TLS 实现可能很困难。糟糕的 TLS 配置可能会提供错误的安全感,并使网站和 Web 应用程序容易受到攻击。

许多常见的 TLS 错误配置是由选择错误的密码套件引起的。旧的或过时的密码套件通常容易受到攻击。如果您使用它们,攻击者可能会拦截或修改传输中的数据。以下是安全 SSL/TLS 实施的建议列表。

禁用 SSL 2.0 和 SSL 3.0

SSL 2.0 是 SSL 的第一个公共版本。它于 1995 年发布。此版本的 SSL 包含几个安全问题。1996 年,协议完全重新设计,SSL 3.0 发布。

由于安全问题,SSL 2.0 协议是不安全的,您应该完全禁用它。由于POODLE(Padding Oracle On Downgraded Legacy Encryption)漏洞,SSL 3.0 也是不安全的,您也应该禁用它。如果启用,攻击者可能会检索安全连接的纯文本内容。此外,您不能在 SSL 3.0 中使用椭圆曲线密码术(见下文)。

Internet Explorer 6 是唯一仍使用 SSL 3.0 的浏览器。因此,除非您仍然需要支持旧版 Internet Explorer 6浏览器,否则您应该禁用 SSL 3.0,如下所述。

禁用 TLS 1.0 和 1.1

除非您需要支持旧版浏览器,否则您还应该禁用 TLS 1.0 和 TLS 1.1。PCI DSS(支付卡行业数据安全标准)规定自 2018 年 6 月 30 日起可能不再使用 TLS 1.0。它还强烈建议您禁用 TLS 1.1。这些协议可能会受到FREAK、POODLE、BEAST 和 CRIME等漏洞的影响。如果您仍必须支持 TLS 1.0,请禁用 TLS 1.0 压缩以避免 CRIME 攻击。

您还应该禁用弱密码,例如 DES 和 RC4。DES 可以在几个小时内被破解,并且发现 RC4 比以前想象的要弱。过去,建议将 RC4 作为一种减轻 BEAST 攻击的方法。然而,由于对 RC4 的最新攻击,微软已经发布了针对它的警告。PCI DSS 还禁止使用 RC4 批量密码。

如果禁用 TLS 1.0 和 TLS 1.1,以下用户代理及其旧版本可能会受到影响(不同操作系统上的特定用户代理版本可能会有所不同)。

  • 安卓 4.3
  • 铬 29
  • 火狐 26
  • 互联网浏览器 10
  • Java 6u45、7u25
  • OpenSSL 0.9.8y
  • Safari 6.0

如何配置 TLS

根据您的业务用例(例如,需要支持旧版浏览器和法规要求),您可能需要使用稍微不同的密码套件配置。您可以使用Mozilla SSL 配置生成器来获得使用不同浏览器配置文件(现代、中级)的最佳 TLS 配置。

以下是现代配置文件的细分(最旧的兼容客户端:Firefox 27、Chrome 30、Windows 7 上的 Internet Explorer 11、Edge、Opera 17、Safari 9、Android 5.0 和 Java 8)。启用/禁用 TLS 协议和密码套件的语法会因 Web 服务器而略有不同。

Nginx

# Enable TLSv1.2, disable SSLv3.0, TLSv1.0 and TLSv1.1
ssl_protocols TLSv1.2;

# Enable modern TLS cipher suites
ssl_ciphers 
'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

# The order of cipher suites matters
ssl_prefer_server_ciphers on;

Apache HTTP 服务器

# Enable TLSv1.2, disable SSLv3.0, TLSv1.0 and TLSv1.1
SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1

# Enable modern TLS cipher suites
SSLCipherSuite          
ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

# The order of cipher suites matters
SSLHonorCipherOrder     on

# Disable TLS compression
SSLCompression          off

# Necessary for Perfect Forward Secrecy (PFS)
SSLSessionTickets       off

首选密码套件顺序

下表将上面的密码套件字符串按顺序分解为首选(最佳密钥交换算法/最强加密优先)。

  – 有关 OpenSSL 支持的密码的更多信息,请参见此处
OrderKey Exchange AlgorithmAuthentication AlgorithmBulk Encryption AlgorithmMac Algorithm
#1Elliptic Curve Diffie–Hellman (ECDH)Elliptic Curve Digital Signature Algorithm (ECDSA)AES 256 in Galois Counter Mode (AES256-GCM)SHA384
#2Elliptic Curve Diffie–Hellman (ECDH)RSAAES 256 in Galois Counter Mode (AES256-GCM)SHA384
#3Elliptic curve Diffie–Hellman (ECDH)Elliptic Curve Digital Signature Algorithm (ECDSA)ChaCha20 (CHACHA20)POLY1305
#4Elliptic curve Diffie–Hellman (ECDH)RSAChaCha20 (CHACHA20)POLY1305
#5Elliptic Curve Diffie–Hellman (ECDH)Elliptic Curve Digital Signature Algorithm (ECDSA)AES 128 in Galois Counter Mode (AES128-GCM)SHA256
#6Elliptic curve Diffie–Hellman (ECDH)RSAAES 128 in Galois Counter Mode (AES128-GCM)SHA256
#7Elliptic Curve Diffie–Hellman (ECDH)Elliptic Curve Digital Signature Algorithm (ECDSA)AES 256 (AES256)SHA384
#8Elliptic curve Diffie–Hellman (ECDH)RSAAES 256 (AES256)SHA384
#9Elliptic curve Diffie–Hellman (ECDH)Elliptic Curve Digital Signature Algorithm (ECDSA)AES 128 (AES128)SHA256
#10Elliptic curve Diffie–Hellman (ECDH)RSAAES 128 (AES128)SHA256

此字符串在现代浏览器和 TLS/SSL 客户端中提供最强的加密(Galois/Counter 模式中的 AES 仅在 TLS 1.2 中受支持)。此外,如果服务器和 TLS/SSL 客户端都支持此字符串(在 Apache HTTP 服务器上您必须设置SSLSessionTickets为),则此字符串还提供完美前向保密 (PFS off)。

如何验证配置

测试您的网站或 Web 应用程序是否使用易受攻击的 SSL/TLS 配置的一种简单方法是使用在线 Acunetix漏洞扫描程序运行自动扫描,其中包括网络安全扫描程序。同时,您还可以测试网络漏洞。进行演示并了解有关对您的网站或 Web 应用程序运行扫描的更多信息。

转载自:Recommendations for TLS/SSL Cipher Hardening | Acunetix

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值