Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.13. 强化 TLS 配置

TLS(传输层安全性)是用于保护网络通信的加密协议在通过配置首选密钥交换协议、身份验证方法和 加密算法来强化系统安全设置时,需要记住支持的客户端的范围越宽,进而降低由此产生的安全性。相反,严格的安全设置会导致与客户端的兼容性受限,这可能导致某些用户被锁定在系统之外。务必以最严格的可用配置为目标,且仅在出于兼容性原因需要时才放松。
请注意,Red Hat Enterprise Linux 7 中包含的库提供的默认设置足以满足大部分部署的需要。TLS 实施尽可能使用安全算法,而不阻止与旧客户端或服务器的连接。在具有严格安全要求的环境中应用本节中描述的强化设置,其中不支持安全算法或协议的传统客户端或服务器不会或者不允许连接。

4.13.1. 选择 Algorithms 来启用

需要选择和配置多个组件。以下每项都直接影响结果配置的稳健性(以及客户端的支持级别)或解决方案对系统的计算需求。

协议版本

TLS 的最新版本提供了最佳安全机制。除非有引人注目的原因包括支持旧版本的 TLS (甚至 SSL),否则请允许您的系统使用最新版本的 TLS 协商连接。
不允许使用 SSL 版本 2 或 3 进行协商。这两个版本都具有严重的安全漏洞。仅允许使用 TLS 1.0 或更高版本协商。应始终首选 TLS 的当前版本 1.2。
注意
请注意,目前,所有 TLS 版本的安全性取决于 TLS 扩展、特定密码(如下)的使用和其他临时解决方案。所有 TLS 连接对等点都需要实施安全重新协商指示(RFC 5746),且必须支持压缩,并且必须为针对 CBC-mode 加密器(Lucky Thirteen 攻击)的计时攻击实施缓解措施。TLS 1.0 客户端还需要实施记录分割(针对 BEAST 攻击的一个临时解决方案)。TLS 1.2 支持通过关联数据(AEAD)模式密码(如 AES-GCM、AES-CCMCamellia-GCM )进行验证加密,这些密码没有已知问题。所有上述缓解方案均在 Red Hat Enterprise Linux 中包含的加密库中实施。
有关协议版本和推荐用法的快速概述,请参阅 表 4.6 “协议版本”

表 4.6. 协议版本

协议版本使用建议
SSL v2
不要使用。具有严重的安全漏洞。
SSL v3
不要使用。具有严重的安全漏洞。
TLS 1.0
在需要时用于互操作性.有无法以保证互操作性的方式缓解的已知问题,因此不默认启用缓解方案。不支持现代加密套件。
TLS 1.1
在需要时用于互操作性.没有已知问题,但依赖于 Red Hat Enterprise Linux 中的所有 TLS 实施中包含的协议修复。不支持现代加密套件。
TLS 1.2
推荐的版本。支持现代 AEAD 密码套件。
Red Hat Enterprise Linux 中的一些组件被配置为使用 TLS 1.0,即使它们提供对 TLS 1.1 甚至 1.2 的支持。其动机在于试图实现最高级别的与可能不支持 TLS 最新版本的外部服务的互操作性。根据您的互操作性要求,启用最高可用版本的 TLS
重要
不建议使用 SSL v3。但是,如果该事实被视为不安全且不适合一般使用,您绝对必须启用 SSL v3,请参阅 第 4.8 节 “使用 stunnel” 以获得有关如何使用 stunnel 安全加密通信的说明,即使使用不支持加密的服务或者只能使用过时且不安全的加密模式。

密码套件

现代、更安全的密码套件应该优先于旧的不安全密码套件。总是禁用 eNULL 和 aNULL 密码套件的使用,它们根本不提供任何加密或身份验证。如果可能,基于 RC4HMAC-MD5 的密码套件也应被禁用。这同样适用于所谓的出口密码套件,其本意为较弱,因此容易中断。
虽然不会立即变得不安全,但提供安全性少于 128 位的密码套件在它们的短使用期中不应考虑。使用 128 位或更高安全性的算法可以预期在至少数年内不会被破坏,因此强烈建议您这样做。请注意,虽然 3DES 密码公告使用 168 位,但实际上提供了 112 位的安全性。
始终优先使用支持(perfect)转发保密 (PFS)的密码套件,这样可确保加密数据的机密性,即使在服务器密钥泄露时也是如此。此规则退出了快速 RSA 密钥交换,但允许使用 ECDHEDHE在两者中,ECDHE 是速度更快,因此是首选。
您还应优先选择 AEAD 密码,如 AES-GCM,在 CBC-mode 密码之前,因为它们不会受到 padding oracle 攻击。此外,在很多情况下,AES-GCMCBC 模式中比 AES 快,特别是在硬件为AES加密加速器的情况下
另请注意,在使用 ECDSA 证书的 ECDHE 密钥交换时,事务的速度甚至要快于纯 RSA 密钥交换。为了支持旧客户端,您可以在服务器上安装两对证书和密钥:一台带有 ECDSA 密钥(用于新客户端),另一个用于 RSA 密钥(用于旧密钥)。

公钥长度

使用 RSA 密钥时,始终首选使用至少由 SHA-256 签名的 3072 位的密钥长度,对于真正的 128 位安全性来说,这个值足够大。
警告
请记住,您的系统安全性仅与链中最弱链接一样强大。例如,只是一个强大的密码不能保证良好安全性。密钥和证书以及认证机构 (CA)用来签署您的密钥的哈希功能和密钥同样重要。