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

Joh*_*ohn 7 ssl tls

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

问题:SSL 服务器支持 SSLv3、TLSv1、

解决方法:在httpd.conf中加入如下规则

SSLCipherSuite ALL:!aNULL:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
Run Code Online (Sandbox Code Playgroud)

问题: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 的每个部分以及如何构建一个?

Fal*_*mot 10

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

也就是说,我看到他们也抱怨使用 CBC 模式。不幸的是,没有CBC密码组。给您的建议也不排除 CBC 模式密码规范,至少在我的 openSSL (1.0.1e) 版本中。这是一种耻辱。如果您需要排除所有此类密码,则可以明确排除所有 CBC 密码,但您必须在包含这些密码时对其进行更新。请注意,甚至HIGH包括 CBC 密码。

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

SSLCipherSuite采用 OpenSSL 密码规范。您可以在 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
Run Code Online (Sandbox Code Playgroud)

!LOW意味着排除那些。 +HIGH意味着在排序中更喜欢高安全性的。

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

openssl ciphers ${cipherspec} | sed 's/:/\n/g' | grep CBC
Run Code Online (Sandbox Code Playgroud)

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