如何缓解 SSL/TLS 协议初始化向量实现信息泄露漏洞?

信息安全 tls 阿帕奇
2021-08-28 19:04:20

免责声明:我不是系统管理员,请尝试以开发人员友好的语言给出答案;)

我正在测试用 Nessus 扫描一个新的 VPS 图像,我得到了插件58751我试图弄清楚该做什么并尝试SSLCipherSuite在 Apache 中使用不同的设置,ssl.conf但我一直得到它。

该图像尚不包含 openssl 1.0.1,因此不支持 TLS 1.2。

推荐的工作设置是什么?或者我做错了什么?

请为该特定 mod_ssl 配置参数建议可能的值,例如:

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

这不是一个好,我明白。

2个回答

这些胡说八道是什么意思?我可以对我的服务器上的 TLS 1.0 javascript 注入漏洞做些什么?

我应该改成什么?我应该忽略 BEAST SSL 漏洞并继续偏爱 AES 吗?

深入了解不同的密码选择及其影响:配置 SSL 证书后,我应该在 Web 服务器中使用哪些密码?

密码串

让我们获取这些信息并在我编写此代码时检查默认的 Apache 密码字符串:

SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

这基本上允许任何身份验证的密码。匿名 Diffie-Hellman 交换 ( ADH) 被排除在考虑之外 ( !),但其他所有内容都只是堆在那里。事实上,ALL在开始时给予权利,只有!ADH在产生影响。一切都已经包括在内。导出密码、低质量密码(40/56 位等)都是公平的谈判游戏。

如果我们想非常简单,RC4(对称)、RSA(非对称交换和签名)和 SHA1(对称哈希)是普遍支持的。RC4 有一些学术上的弱点,但它不受 BEAST 攻击的影响,而且它也是我的浏览器与 Google 协商的内容。

SSLCipherSuite 'ECDHE-RSA-RC4-SHA:RC4+SHA1+RSA'

核实:

 $ openssl ciphers -v 'ECDHE-RSA-RC4-SHA:RC4+SHA1+RSA'
 ECDHE-RSA-RC4-SHA       SSLv3 Kx=ECDH     Au=RSA  Enc=RC4(128)  Mac=SHA1
 RC4-SHA                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=SHA1

这需要设置它并忘记它。我把 ECDHE-RSA-RC4-SHA 放在前面是因为我喜欢使用完美前向保密,但它并没有得到普遍支持。

但是,为了将来参考,如果您正在构建一个一般指定密码的字符串,这里还有一些其他的事情要查看:

  • 没有弱“导出”密码: !EXP
  • 没有未经身份验证的 Diffie-Hellman 交换: !ADH
  • 我们没有使用预共享密钥,所以 !PSK

之后添加您感兴趣的密码。如果您需要限制某些内容,请使用更多排除项。+使用符号而不是冒号选择特定组合。例如:

$ openssl ciphers -v '!ADH:AES+DH'
DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
DHE-DSS-AES256-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(256)  Mac=SHA1
DHE-RSA-AES128-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA1
DHE-DSS-AES128-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(128)  Mac=SHA1

与以下各项不同:

$ openssl ciphers -v '!ADH:AES:DH'
ECDHE-RSA-AES256-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA1
ECDHE-ECDSA-AES256-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA1
DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
DHE-DSS-AES256-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(256)  Mac=SHA1
AECDH-AES256-SHA        SSLv3 Kx=ECDH     Au=None Enc=AES(256)  Mac=SHA1
ECDH-RSA-AES256-SHA     SSLv3 Kx=ECDH/RSA Au=ECDH Enc=AES(256)  Mac=SHA1
ECDH-ECDSA-AES256-SHA   SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256)  Mac=SHA1
AES256-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA1
PSK-AES256-CBC-SHA      SSLv3 Kx=PSK      Au=PSK  Enc=AES(256)  Mac=SHA1
ECDHE-RSA-AES128-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA1
ECDHE-ECDSA-AES128-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA1
DHE-RSA-AES128-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA1
DHE-DSS-AES128-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(128)  Mac=SHA1
AECDH-AES128-SHA        SSLv3 Kx=ECDH     Au=None Enc=AES(128)  Mac=SHA1
ECDH-RSA-AES128-SHA     SSLv3 Kx=ECDH/RSA Au=ECDH Enc=AES(128)  Mac=SHA1
ECDH-ECDSA-AES128-SHA   SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128)  Mac=SHA1
AES128-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA1
PSK-AES128-CBC-SHA      SSLv3 Kx=PSK      Au=PSK  Enc=AES(128)  Mac=SHA1
DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH       Au=RSA  Enc=Camellia(256) Mac=SHA1
DHE-DSS-CAMELLIA256-SHA SSLv3 Kx=DH       Au=DSS  Enc=Camellia(256) Mac=SHA1
EDH-RSA-DES-CBC3-SHA    SSLv3 Kx=DH       Au=RSA  Enc=3DES(168) Mac=SHA1
EDH-DSS-DES-CBC3-SHA    SSLv3 Kx=DH       Au=DSS  Enc=3DES(168) Mac=SHA1
DHE-RSA-SEED-SHA        SSLv3 Kx=DH       Au=RSA  Enc=SEED(128) Mac=SHA1
DHE-DSS-SEED-SHA        SSLv3 Kx=DH       Au=DSS  Enc=SEED(128) Mac=SHA1
DHE-RSA-CAMELLIA128-SHA SSLv3 Kx=DH       Au=RSA  Enc=Camellia(128) Mac=SHA1
DHE-DSS-CAMELLIA128-SHA SSLv3 Kx=DH       Au=DSS  Enc=Camellia(128) Mac=SHA1
EDH-RSA-DES-CBC-SHA     SSLv3 Kx=DH       Au=RSA  Enc=DES(56)   Mac=SHA1
EDH-DSS-DES-CBC-SHA     SSLv3 Kx=DH       Au=DSS  Enc=DES(56)   Mac=SHA1
EXP-EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH(512)  Au=RSA  Enc=DES(40)   Mac=SHA1 export
EXP-EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH(512)  Au=DSS  Enc=DES(40)   Mac=SHA1 export

这是一个有价值的问题吗?

我们正在权衡学术漏洞。RC4 在学术上比 AES 弱。如果您让客户端运行不需要的代码,则 AES 在学术上较弱。

了解风险是件好事,但在进行了一些搜索之后,由于 PCI-DSS 扫描,人们遇到了这个问题。审计员在他们的自动化工具中看到了这一点并做出了反应。如果最终用户正在运行不需要的代码,那么就会发生更大的根本问题:您的站点受到 XSS 之类的攻击,您需要修复该问题,或者他们的机器受到攻击(直接或从另一个站点运行跨站​​点代码)并且攻击者可能会运行更多的恶意软件。现代浏览器应该通过在连接开始时踢出一个字节数据包来调整填充并消除攻击。

在很多方面,它真的在客户端。如果您要关心客户隐私,那么在我看来,确保您的网站不被泄露是更重要的问题。鉴于此,SSL 对在本地运行恶意软件的客户端没有多大帮助,所以现在我们回到更强大的 AES 密码。

...但是,为了在没有争论的情况下通过审核并观察客户的支持(基本上是谷歌试图做的事情),RC4 让您今天实现目标。希望明天有更高版本的 TLS 让每个人都能到达那里,但这种进展实际上是缓慢的。

我们正在使用这个 SSLProtocol all -SSLv2 -TLSv1

SSLCipherSuite ECDHE-RSA-AES256-SHA384:!AES:!AES256-SHA256:!AES256-SHA256:RC4:HIGH:!MD5:!SSLv2:!ADH:!aNULL:!eNULL:!NULL:!DH:!ADH: !EDH:!AESGCM:!DES-CBC3-SHA

但是,我们无论如何都无法通过 403labs PCI 扫描(看起来他们使用的是相同的插件/nessus),并且 Qualys SSL 实验室测试表明我们符合 PCI... https://www.ssllabs.com/ssltest/index.html