介绍
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。该服务对这个特定的问题并不容易受到影响,因此您不需要调整配置。
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。