首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复Apache (httpd)中的“logjam”漏洞

如何修复Apache (httpd)中的“logjam”漏洞
EN

Server Fault用户
提问于 2015-05-20 09:34:33
回答 3查看 65.9K关注 0票数 56

最近,Diffie-Hellman中出现了一个新的漏洞,非正式地称为“logjam”,为此此页被整合在一起,建议如何应对该漏洞:

我们为TLS正确部署Diffie-Hellman提供了三个建议:

  1. 禁用导出密码套件。即使现代浏览器不再支持导出套件,这种反常的和僵局的攻击也允许中间人攻击者欺骗浏览器使用导出级密码,然后可以解密TLS连接。出口密码是20世纪90年代政策的残余,它阻止了强大的密码协议从美国输出。没有现代客户依赖出口套间,禁用这些套间也没有什么坏处。
  2. 部署(短期)椭圆曲线微分-Hellman (ECDHE)。椭圆曲线Diffie (ECDH)密钥交换避免了所有已知可行的密码分析攻击,而现代网络浏览器现在更喜欢ECDHE而不是原始的有限域Diffie-Hellman。我们用来攻击标准Diffie-Hellman群的离散日志算法并不能从预计算中获得很强的优势,并且单独的服务器不需要生成唯一的椭圆曲线。
  3. 生成一个强大的,独特的Diffie Hellman集团。数以百万计的服务器使用几个固定组,这使它们成为预计算和潜在窃听的最佳目标。管理员应该为每个网站或服务器生成唯一的2048位或更强的Diffie-Hellman组,使用“安全”素数。

按照上述建议,我应该采取哪些最佳实践步骤来保护我的服务器?

EN

回答 3

Server Fault用户

回答已采纳

发布于 2015-05-20 09:50:16

你联系的文章中,有三个建议步骤来保护自己免受此漏洞的攻击。原则上,这些步骤适用于您可能在SSL/TLS中使用的任何软件,但在这里,我们将讨论将它们应用到Apache (httpd)的具体步骤,因为这是有问题的软件。

  1. 禁用导出密码套件

在我们将在下面2中进行的配置更改中处理(!EXPORTSSLCipherSuite行的末尾是如何禁用导出密码套件的)

  1. 部署(短期)椭圆曲线Diffie-Hellman (ECDHE)

为此,您需要在Apache文件中编辑一些设置--即SSLProtocolSSLCipherSuiteSSLHonorCipherOrder --以获得“最佳实践”设置。以下几点就足够了:

代码语言:javascript
复制
SSLProtocol             all -SSLv2 -SSLv3

SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

SSLHonorCipherOrder     on

注意:对于要使用的SSLCipherSuite设置,这种情况总是在改变,最好参考这一个之类的资源来检查最新的推荐配置。

  1. 生成一个强大而独特的Diffie Hellman群

要做到这一点,您可以运行

openssl dhparam -out dhparams.pem 2048

请注意,在生成params时,这将给服务器带来很大的负载--您可以通过在另一台机器上生成params并使用scp或类似的方法将它们传输到有关服务器以供使用来解决这个潜在问题。

若要在Apache中使用这些新生成的dhparams,请从Apache文档

要生成自定义DH参数,请使用openssl dhparam命令。或者,您可以将RFC 2409第6.2节中的标准1024位DH参数附加到相应的SSLCertificateFile文件中:

(强调地雷)

然后是一个标准的1024位DH参数。由此我们可以推断,自定义生成的DH参数可以简单地附加到相关的SSLCertificateFile中。

为此,运行类似于以下内容的代码:

cat /path/to/custom/dhparam >> /path/to/sslcertfile

或者,根据您最初链接的文章的Apache分段,如果您不愿意更改证书文件本身,也可以指定您创建的自定义dhparams文件:

SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"

无论哪种Apache (S)都与您的特定SSL/TLS实现相关--通常是在conf.d/ssl.confconf.d/vhosts.conf中,但是这取决于您如何配置Apache。

值得注意的是,按照此链接的说法,

在Apache2.4.7之前,DH参数始终设置为1024位,不能配置用户。这在mod_ssl 2.4.7中已经得到了修正,Red已经用httpd-2.2.15-32.el6支持RHEL6Apache2.2发行版。

在Debian上,将apache2升级到2.2.22-13+deb7u4或更高版本,将openssl升级到1.0.1e-2+ and 7u 17。上面的SSLCipherSuite不能很好地工作,而是按照这个博客使用以下内容:

代码语言:javascript
复制
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-DSS-AES128-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-CAMELLIA128-SHA:!DHE-RSA-CAMELLIA256-SHA

您应该检查您的Apache版本是否晚于这些版本号,这取决于您的发行版,如果没有,则尽可能地更新它。

执行上述步骤更新配置并重新启动Apache服务以应用更改后,您应该通过在SSLLabs文章上运行与此特定漏洞相关的测试来检查配置是否符合要求。

票数 82
EN

Server Fault用户

发布于 2015-05-21 02:32:54

基于Winni的修补程序,我已经为Apache/2.2.22 (Debian,可能也可以在Ubuntu上使用)发布了一个修复程序:https://flo.sh/debian-wheezy-apache2-logjam-fix/ - thx。听取你的反馈。

票数 1
EN

Server Fault用户

发布于 2015-11-04 11:16:42

与其走上述“黑客”的复杂路线,不如将转到nginx作为您的主要not服务器软件(而不仅仅是缓存或代理)。显然,在安全性方面,它似乎更符合当前的标准,而不是老的apache引擎。通过使用nginx存储库,它为您提供了一种比apache更最新、更稳定的way服务器引擎的方法。

我完全改过自新。在TLS方面,节省了我很多时间来解决问题,而且--对于我们的配置--它也在相同的情况下释放了很多RAM。事实上,与我已经习惯的httpd/apache的大量配置复杂性相比,我发现nginx的使用简单明了。这可能是一个品味问题,在我转向之前,我已经非常流利地掌握了httpd/apache重写/config/维护,这比我所担心的要容易得多。有适当的最新信息的nginx配置在线可用,其用户基础庞大,非常活跃和支持友好。https://news.netcraft.com/wp-content/uploads/2018/11/wpid-wss-top-1m-share.png

票数 -8
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/693241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档