一位开发人员最近用我们的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密码。
包括ALL和RC4+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,这对您的系统可能不太实用)。