SSLCipherSuite – 禁用弱encryption,cbc密码和基于md5的algorithm

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

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

解决scheme:将以下规则添加到httpd.conf

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

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

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

问题:SSL服务器支持SSLv3,TLSv1的弱MACalgorithm

解决scheme:禁用任何使用基于MD5的MACalgorithm的密码套件

我试图search谷歌全面的教程如何构build一个SSLCipherSuite指令,以满足我的要求,但我没有find任何我能理解的。 我看到SSLCipherSuite指令的例子,但是我需要解释指令的每个组件。 所以即使在指令SSLCipherSuite ALL:!aNULL:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM ,我不明白例如!LOW意思。

有人可以a)告诉我SSLCipherSuite指令,将满足我的需求或b)给我一个资源,清楚地解释了SSLCipherSuite的每个部分是如何构build一个?

如果他们唯一的抱怨是基于MD5的MAC,那么您应该可以简单地将!MD5元素添加到您现有的密码套件中以符合build议。

也就是说,我看到他们抱怨使用CBC模式。 不幸的是,没有CBC密码组。 给你的build议也不排除CBC模式cipherspecs,至less在我的版本的openSSL(1.0.1e)。 这是一个耻辱。 如果你需要排除所有这样的密码,你可以明确地排除所有的CBC密码,尽pipe你将不得不更新,因为它们包括在内。 请注意,甚至包含CBC密码。

包括ALLRC4+RSA都是多余的。 我不愿意相信安全顾问(即使是电脑化的安全顾问)甚至不能构build符合自己build议的良好forms的密码技术。

SSLCipherSuite采用OpenSSL密码规范。 你可以在openssl文档(链接)中find它,但是我发现这个文档通常是过时的。 但是,您可以通过在服务器上运行openssl ciphers ${cipherspec}来testing它; 输出将是给定规范允许的一个分离的密码列表,或者表示没有被允许的错误。

同样,如果您想知道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高意味着在订购中更喜欢高安全性的。

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

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

那些是你不得不排除的。 但是,您可能会认为grep -v CBC更合理,并且只包含那些(只将它们设置在: -delimited列表中,并将其用作cipherspec)。

mod_ssl文档解释了SSLCipherSuite设置的组件, 在这里 。

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