如何保护服务器免受 POODLE SSLv3 漏洞攻击

介绍

2014年10月14日,SSL加密协议版本3中的漏洞被揭露,这个漏洞被命名为POODLE(Padding Oracle On Downgraded Legacy Encryption),允许攻击者通过中间人攻击读取该版本的协议加密的信息。

虽然SSLv3是一个较旧的协议版本,主要是过时的,但如果没有更好的加密选项,许多软件仍然会返回SSLv3。

POODLE 漏洞会影响使用 SSLv3 进行通信的任何服务或客户端,因为这是协议设计的缺陷,而不是实施问题,所以使用 SSLv3 的每个软件都是脆弱的。

若要了解有关漏洞的更多信息,请参阅CVE信息(CVE-2014-3566)(LINK0)。

什么是 POODLE 漏洞?

POODLE漏洞是SSL协议版本3中的一个弱点,允许攻击者在中间环境中解密SSLv3加密消息的简单文本内容。

谁受到了这种脆弱性的影响?

这种漏洞会影响任何可以被强迫与 SSLv3 通信的软件,这意味着任何实施包括 SSLv3 支持的倒退机制的软件都是易受攻击的。

一些可能受到影响的常见软件部分是网页浏览器,网页服务器,VPN服务器,邮件服务器等。

它是如何工作的?

简而言之,POODLE漏洞存在,因为SSLv3协议无法充分检查与加密消息发送的插件字节。

由于接收方无法验证这些,攻击者可以更换这些,并将其传送到预定目的地。

平均每 256 个请求都会被接受一次,允许攻击者解密一个字节,这样可以很容易地重复,以便逐步解密额外的字节。

我怎样才能保护自己?

应该采取措施确保您在作为客户端和服务器的角色中不易受到影响. 由于加密通常在客户端和服务器之间进行谈判,这是一个涉及双方的问题。

服务器和客户端应该采取措施完全禁用 SSLv3 支持. 许多应用程序默认使用更好的加密,但将 SSLv3 支持作为回避选项。

如何保护常见应用程序

下面我们将介绍如何在一些常见的服务器应用程序上禁用SSLv3。小心评估您的服务器以保护可能依赖SSL/TCP加密的任何额外服务。

由于 POODLE 漏洞并不代表实施问题,并且是整个协议的固有问题,因此没有解决方案,唯一可靠的解决方案是不使用它。

Nginx Web 服务器

要在 Nginx 網頁伺服器中禁用 SSLv3,您可以使用「ssl_protocols」指令,這將位於您配置中的「伺服器」或「http」區塊中。

例如,在Ubuntu上,您可以将此添加到http块中的/etc/nginx/nginx.conf,或在/etc/nginx/sites-enabled目录中的每个服务器块中。

1sudo nano /etc/nginx/nginx.conf

要禁用 SSLv3,您的ssl_protocols指令应设置为:

1ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

您应该在做上述更改后重新启动服务器:

1sudo service nginx restart

Apache Web 服务器

要在Apache Web 服务器上禁用 SSLv3,您需要调整由mod_ssl模块提供的SSLProtocol指令。

此指令可以在服务器级别或虚拟主机配置中设置,根据您的分布的 Apache 配置,SSL 配置可能位于一个单独的源文件中。

在Ubuntu上,可以通过编辑 /etc/apache2/mods-available/ssl.conf 文件来调整服务器的全服务器规格,如果 mod_ssl 被启用,一个符号链接将该文件连接到 mods-enabled 子目录:

1sudo nano /etc/apache2/mods-available/ssl.conf

在CentOS上,您可以在这里的SSL配置文件中调整(如果SSL已启用):

1sudo nano /etc/httpd/conf.d/ssl.conf

内部可以找到SSLProtocol指令. 如果这不是可用的,请创建它. 修改此,以明确取消对SSLv3的支持:

1SSLProtocol all -SSLv3 -SSLv2

保存并关闭文件. 重新启动服务以启用更改。

在Ubuntu中,你可以输入:

1sudo service apache2 restart

对于 CentOS,这将是:

1sudo service httpd restart

HAProxy 负荷平衡器

要在 HAProxy 负载平衡器中禁用 SSLv3,您需要打开haproxy.cfg文件。

此位置为 /etc/haproxy/haproxy.cfg:

1sudo nano /etc/haproxy/haproxy.cfg

在您的前端配置中,如果您已启用 SSL,则您的绑定指令将指定公共 IP 地址和端口。

1frontend name
2    bind public_ip:443 ssl crt /path/to/certs no-sslv3

保存并关闭文件。

您将需要重新启动服务来执行这些更改:

1sudo service haproxy restart

OpenVPN VPN服务器

OpenVPN的最新版本实际上不允许SSLv3。该服务对这个特定的问题并不容易受到影响,因此您不需要调整配置。

请参见 在OpenVPN论坛上的此帖子以获取更多信息

SMTP服务器

如果您的 Postfix 配置设置要求加密,则将使用名为smtpd_tls_mandatory_protocols的指令。

您可以在主要的 Postfix 配置文件中找到:

1sudo nano /etc/postfix/main.cf

如果 Postfix 服务器随时使用加密,则可以通过设置此参数来确保 SSLv3 和 SSLv2 不被接受。

1smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3

保存配置. 重新启动服务以实现更改:

1sudo service postfix restart

IMAP 和 POP3 服务器

为了在Dovecot服务器上禁用SSLv3,您需要调整一个名为ssl_protocols的指令。

对于大多数发行版,您可以通过打开此文件来调整此指令:

1sudo nano /etc/dovecot/conf.d/10-ssl.conf

内部,如果您正在使用Dovecot 2.1 或更高版本,请设置ssl_protocols指令以禁用 SSLv2 和 SSLv3:

1ssl_protocols = !SSLv3 !SSLv2

如果您正在使用低于 2.1 的 Dovecot 版本,您可以设置 ssl_cipher_list 以此方式禁用 SSLv3:

1ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL:!SSLv3

保存并关闭文件。

重新启动服务以实现更改:

1sudo service dovecot restart

进一步步骤

除了您的服务器侧应用程序,您还应该更新任何客户端应用程序。

特别是,网页浏览器可能因其下一步协议谈判而容易受到此问题。 确保您的浏览器不允许SSLv3作为可接受的加密方法。

结论

由于对SSLv3的广泛支持,即使启用了更强的加密功能,这种漏洞是遥远的和危险的,您将需要采取措施来保护自己作为使用SSL加密的任何资源的消费者和提供商。

请务必检查您的所有网络可访问的服务,这些服务可能以任何形式利用 SSL/TLS。

Published At
Categories with 技术
comments powered by Disqus