2014年10月14日,SSL加密协议第3版中的漏洞被披露。该漏洞被称为 POODLE(Padding Oracle On Downgraded Legacy Encryption),允许攻击者使用中间人攻击以纯文本形式读取使用此版本协议加密的信息。
虽然 SSLv3 是该协议的旧版本,主要已经过时,many如果没有更好的加密选项,软件仍然会依赖 SSLv3。更重要的是,如果尝试连接的双方都可以使用 SSLv3 连接,那么攻击者就有可能强制使用 SSLv3 连接。
POODLE 漏洞会影响任何可以使用 SSLv3 进行通信的服务或客户端。因为这是协议设计的缺陷,而不是实现问题,every使用 SSLv3 的软件很容易受到攻击。
要了解有关该漏洞的更多信息,请查阅以下位置的 CVE 信息:CVE-2014-3566.
POODLE 漏洞是 SSL 协议版本 3 中的一个弱点,允许中间人环境中的攻击者破译 SSLv3 加密消息的纯文本内容。
此漏洞会影响所有可强制使用 SSLv3 进行通信的软件。这意味着任何实现包含 SSLv3 支持的回退机制的软件都容易受到攻击并可能被利用。
可能受影响的一些常见软件包括网络浏览器、网络服务器、VPN 服务器、邮件服务器等。
简而言之,POODLE 漏洞的存在是因为 SSLv3 协议没有充分检查与加密消息一起发送的填充字节。
由于接收方无法验证这些内容,因此攻击者可以替换这些内容并将其传递到预期目的地。当以特定方式完成时,修改后的有效负载可能会被接收者毫无怨言地接受。
目的地平均每 256 个请求中就会接受一次,从而允许攻击者解密单个字节。可以轻松重复此操作,以便逐步解密附加字节。任何能够使用此协议反复迫使参与者重新发送数据的攻击者都可以在很短的时间内破解加密。
应采取措施确保您在作为客户端和服务器的角色中不会受到攻击。由于加密通常是在客户端和服务器之间协商的,因此这是一个涉及双方的问题。
服务器和客户端应采取措施完全禁用 SSLv3 支持。许多应用程序默认使用更好的加密,但将 SSLv3 支持作为后备选项。应禁用此功能,因为如果双方都允许将 SSLv3 通信作为可接受的方法,则恶意用户可以强制使用 SSLv3 通信。
下面,我们将介绍如何在一些常见的服务器应用程序上禁用 SSLv3。请注意评估您的服务器以保护可能依赖于 SSL/TCP 加密的任何其他服务。
由于 POODLE 漏洞并不代表实现问题,而是整个协议的固有问题,因此没有解决方法,唯一可靠的解决方案就是不使用它。
要在 Nginx Web 服务器中禁用 SSLv3,您可以使用ssl_protocols
指示。这将位于server
or http
您的配置中的块。
例如,在 Ubuntu 上,您可以将其全局添加到/etc/nginx/nginx.conf
里面的http
块,或每个server
块在/etc/nginx/sites-enabled
目录。
sudo nano /etc/nginx/nginx.conf
要禁用 SSLv3,您的ssl_protocols
指令应该这样设置:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
完成上述修改后,需要重新启动服务器:
sudo service nginx restart
要在 Apache Web 服务器上禁用 SSLv3,您必须调整SSLProtocol
指令由mod_ssl
module.
该指令可以在服务器级别或虚拟主机配置中设置。根据您的发行版的 Apache 配置,SSL 配置可能位于来源的单独文件中。
在 Ubuntu 上,可以通过编辑以下内容来调整服务器的服务器范围规范/etc/apache2/mods-available/ssl.conf
文件。如果mod_ssl
启用后,符号链接将将此文件连接到mods-enabled
子目录:
sudo nano /etc/apache2/mods-available/ssl.conf
在 CentOS 上,您可以在此处的 SSL 配置文件中进行调整(如果启用了 SSL):
sudo nano /etc/httpd/conf.d/ssl.conf
在里面你可以找到SSLProtocol
指示。如果该选项不可用,请创建它。修改此设置以显式删除对 SSLv3 的支持:
SSLProtocol all -SSLv3 -SSLv2
保存并关闭文件。重新启动服务以启用您的更改。
在 Ubuntu 上,您可以输入:
sudo service apache2 restart
在 CentOS 上,这将是:
sudo service httpd restart
要在 HAProxy 负载均衡器中禁用 SSLv3,您需要打开haproxy.cfg
file.
这是位于/etc/haproxy/haproxy.cfg
:
sudo nano /etc/haproxy/haproxy.cfg
在您的前端配置中,如果您启用了 SSL,您的bind
指令将指定公共 IP 地址和端口。如果您使用 SSL,则需要添加no-sslv3
到该行的末尾:
frontend name
bind public_ip:443 ssl crt /path/to/certs no-sslv3
保存并关闭文件。
您需要重新启动服务才能实施更改:
sudo service haproxy restart
最新版本的 OpenVPN 实际上不允许 SSLv3。该服务不易受到此特定问题的影响,因此您无需调整配置。
See OpenVPN 论坛上的这篇文章了解更多信息.
如果您的 Postfix 配置设置为需要加密,它将使用名为smtpd_tls_mandatory_protocols
.
您可以在主 Postfix 配置文件中找到它:
sudo nano /etc/postfix/main.cf
对于设置为始终使用加密的 Postfix 服务器,您可以通过设置此参数来确保不接受 SSLv3 和 SSLv2。如果您不强制加密,则无需执行任何操作:
smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3
保存您的配置。重新启动服务以实施您的更改:
sudo service postfix restart
为了在 Dovecot 服务器上禁用 SSLv3,您需要调整一个名为ssl_protocols
。根据您的发行版打包方法,SSL 配置可能会保存在备用配置文件中。
对于大多数发行版,您可以通过打开此文件来调整此指令:
sudo nano /etc/dovecot/conf.d/10-ssl.conf
在内部,如果您使用的是 Dovecot 2.1 或更高版本,请设置ssl_protocols
禁用 SSLv2 和 SSLv3 的指令:
ssl_protocols = !SSLv3 !SSLv2
如果您使用的Dovecot版本低于2.1,您可以设置ssl_cipher_list
像这样禁止 SSLv3:
ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL:!SSLv3
保存并关闭文件。
重新启动服务以实施您的更改:
sudo service dovecot restart
除了服务器端应用程序之外,您还应该更新所有客户端应用程序。
特别是,由于 Web 浏览器采用降压协议协商,因此可能容易受到此问题的影响。确保您的浏览器不允许 SSLv3 作为可接受的加密方法。这可以在设置中或通过安装附加插件或扩展来调整。
由于对 SSLv3 的广泛支持,即使启用了更强的加密,此漏洞影响深远且危险。作为使用 SSL 加密的任何资源的消费者和提供者,您需要采取措施保护自己。
请务必检查所有可能以任何形式利用 SSL/TLS 的网络可访问服务。通常,这些应用程序需要显式指令来完全禁用 SSLv3 等较弱形式的加密。