SSLCipherSuite - 禁用弱加密、cbc 密码和基于 md5 的算法

SSLCipherSuite - 禁用弱加密、cbc 密码和基于 md5 的算法

一位开发人员最近使用 TripWire 对我们的 LAMP 服务器进行了 PCI 扫描。他们发现了几个问题,并指示采取以下措施来纠正这些问题:

问题:SSL 服务器对 SSLv3、TLSv1 的加密支持较弱,

解决方案:在httpd.conf中添加以下规则

SSLCipherSuite ALL:!aNULL:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM

问题:SSL 服务器支持 SSLv3、TLSv1 的 CBC 密码

解决方案:禁用任何使用 CBC 密码的密码套件

问题:SSL 服务器支持 SSLv3、TLSv1 的弱 MAC 算法

解决方案:禁用任何使用基于 MD5 的 MAC 算法的密码套件

我尝试在 Google 上搜索有关如何构建 SSLCipherSuite 指令以满足我的需求的全面教程,但我没有找到任何我能理解的内容。我看到了 SSLCipherSuite 指令的示例,但我需要解释该指令的每个组件的作用。因此,即使在指令中SSLCipherSuite ALL:!aNULL:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM,我也不明白例如是什么!LOW意思。

有人可以 a) 告诉我符合我需求的 SSLCipherSuite 指令,或者 b) 向我展示一个资源,清楚地解释 SSLCipherSuite 的每个部分是什么以及如何构建一个?

答案1

如果他们唯一的抱怨是基于 MD5 的 MAC,您应该能够简单地将该!MD5元素添加到您现有的密码套件中以满足建议。

话虽如此,我看到他们也抱怨使用 CBC 模式。不幸的是,没有CBC密码组。给您的建议也没有排除 CBC 模式密码规范,至少在我的 openSSL 版本(1.0.1e)上没有。这很遗憾。如果您需要排除所有此类密码,您可以明确排除所有 CBC 密码,但您必须更新它,因为它们已包含在内。请注意,甚至HIGH包括 CBC 密码。

包括ALLRC4+RSA都是多余的。我不愿意相信一个安全顾问(即使是计算机化的顾问),他们甚至不能构建一个符合他们自己建议的格式良好的密码规范。

采用SSLCipherSuiteOpenSSL 密码规范。您可以找到在 openssl 文档中(链接),但我发现这个文档通常已经过时了。但是,您可以通过openssl ciphers ${cipherspec}在服务器上运行来测试它;输出将是:给定规范允许的以 - 分隔的密码列表,或指示不允许任何密码的错误。

类似地,如果您想知道LOW包含什么,请执行以下操作:

falcon@tiernyn ~ $ openssl ciphers 'LOW'
EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:ADH-DES-CBC-SHA:DES-CBC-SHA:DES-CBC-MD5

!LOW表示排除那些。 +HIGH表示在排序中优先考虑安全性较高的。

如果您想要一个以行分隔的列表,其中包含密码规范中使用 CBC 的所有密码,请执行以下操作:

openssl ciphers ${cipherspec} | sed 's/:/\n/g' | grep CBC

这些是您必须排除的。但是,您可能会发现grep -v CBC仅包含这些更合理(只需将它们设置在:-delimited 列表中并将其用作密码规范)。

答案2

mod_ssl文档解释了设置的组成部分SSLCipherSuite这里

如果您想满足所有这些扫描要求,您几乎只需要运行 RC4 SSLCipherSuite RC4-SHA(或者运行较新的 TLS,这对于您的系统来说可能实用也可能不实用)。

相关内容