前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
2014年10月14日,SSL加密协议第3版中的一个漏洞被披露。这个漏洞被称为POODLE(Padding Oracle On Downgraded Legacy Encryption),允许攻击者使用中间人攻击来读取使用该协议加密的信息的明文。
尽管SSLv3是一个较老的协议版本,主要已经过时,许多软件仍会在更好的加密选项不可用时退回到SSLv3。更重要的是,如果SSLv3是连接的可用备选项,攻击者可以强制使用SSLv3连接。
POODLE漏洞影响任何可以使用SSLv3进行通信的服务或客户端。由于这是协议设计上的缺陷,而不是实现问题,每一个使用SSLv3的软件都是脆弱的。
要了解更多关于该漏洞的信息,请参考CVE-2014-3566中的CVE信息。
什么是POODLE漏洞?
POODLE漏洞是SSL协议第3版中的一个弱点,允许中间人在一个特定的上下文中解密SSLv3加密消息的明文内容。
谁受到这个漏洞的影响?
这个漏洞影响任何可以被迫使用SSLv3进行通信的软件。这意味着任何实现包括SSLv3支持的回退机制的软件都是脆弱的,可以被利用。
一些可能受到影响的常见软件包括Web浏览器、Web服务器、VPN服务器、邮件服务器等。
它是如何工作的?
简而言之,POODLE漏洞存在是因为SSLv3协议没有充分检查发送的加密消息中的填充字节。
由于接收方无法验证这些填充字节,攻击者可以替换这些填充字节并将其传递给预期的目标。当以特定方式完成时,修改后的有效载荷有可能会被接收方接受而不会有任何投诉。
平均每256个请求中会有一个请求被目标接受,允许攻击者解密一个单个字节。这可以轻松重复,以逐步解密额外的字节。任何能够重复强制参与者使用该协议重新发送数据的攻击者都可以在很短的时间内破解加密。
如何保护自己?
应该采取行动来确保在作为客户端和服务器的角色中都不会受到影响。由于加密通常是在客户端和服务器之间协商的,这是一个涉及双方的问题。
服务器和客户端应该采取措施完全禁用SSLv3支持。许多应用程序默认使用更好的加密,但实现SSLv3支持作为备选项。这应该被禁用,因为恶意用户可以强制SSLv3通信,如果双方都允许它作为一种可接受的方法。
如何保护常见应用程序
下面,我们将介绍如何在一些常见的服务器应用程序上禁用SSLv3。请注意评估您的服务器,以保护可能依赖于SSL/TCP加密的任何其他服务。
由于POODLE漏洞不代表一个实现问题,而是整个协议的固有问题,因此没有解决方法,唯一可靠的解决方案是不使用它。
Nginx Web服务器
要在Nginx Web服务器上禁用SSLv3,您可以使用ssl_protocols
指令。这将位于您的配置中的server
或http
块中。
例如,在Ubuntu上,您可以将此全局添加到/etc/nginx/nginx.conf
中的http
块内,或者添加到/etc/nginx/sites-enabled
目录中的每个server
块内。
sudo nano /etc/nginx/nginx.conf
要禁用SSLv3,您的ssl_protocols
指令应设置如下:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
在进行上述修改后,您应该重新启动服务器:
sudo service nginx restart
Apache Web服务器
要在Apache Web服务器上禁用SSLv3,您需要调整mod_ssl
模块提供的SSLProtocol
指令。
该指令可以在服务器级别或虚拟主机配置中设置。根据您的发行版的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 负载均衡器
要在 HAProxy 负载均衡器中禁用 SSLv3,您需要打开 haproxy.cfg
文件。
它位于 /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 VPN 服务器
最近版本的 OpenVPN 实际上不允许 SSLv3。该服务不会受到此特定问题的影响,因此您无需调整配置。
请参阅 OpenVPN 论坛上的此帖子以获取更多信息。
Postfix SMTP 服务器
如果您的 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 IMAP 和 POP3 服务器
要在 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
如果您使用的是低于 2.1 版本的 Dovecot,您可以通过以下方式设置 ssl_cipher_list
来禁用 SSLv3:
ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL:!SSLv3
保存并关闭文件。
重新启动服务以实施更改:
sudo service dovecot restart
进一步步骤
除了服务器端应用程序,您还应更新任何客户端应用程序。
特别是,由于它们的降级协议协商,Web 浏览器可能会受到此问题的影响。确保您的浏览器不允许 SSLv3 作为可接受的加密方法。这可能可以在设置中调整,也可以通过安装额外的插件或扩展来实现。
结论
由于广泛支持 SSLv3,即使启用了更强的加密,此漏洞也具有广泛影响和危险性。您需要采取措施来保护自己,无论是作为使用 SSL 加密资源的消费者还是提供者。
确保检查所有可能利用 SSL/TLS 的网络可访问服务。通常,这些应用程序需要明确的指示才能完全禁用像 SSLv3 这样的较弱加密形式。