保护NGINX和NGINX Plus免受针对SSLv3的POODLE攻击(CVE-2014-3566)

NGINX | 2014年11月15日

最近披露的SSL协议第3版(SSLv3)漏洞可能被利用来实施中间人攻击,从经HTTPS加密的明文传输内容中提取部分数据。Google研究人员已发布一份详细说明,介绍了此类攻击可能如何实施。

这并非任何SSL/TLS实现中的漏洞,而是SSLv3协议在使用分组密码时存在的设计漏洞。由于所有可替代的流密码也存在弱点,唯一的应对措施是在NGINX和NGINX Plus配置中禁用SSLv3。

在NGINX中禁用SSLv3

NGINX和NGINX Plus默认启用SSLv3,HTTP和邮件服务可能会使用该协议。

[编者注:TCP流量的代理和负载均衡在本文最初发布时尚未得到完全支持。为确保内容完整,以下步骤已更新,纳入了对TCP流量的保护。]

在所有NGINX和NGINX Plus实例上执行以下步骤:

  1. 从HTTP流量使用的协议集中移除SSLv3。如果ssl_protocols指令不存在,请将以下指令添加到http{}块中;如果已存在,请编辑该指令,从参数列表中移除SSLv3。
# in the http{} configuration blockssl_protocols TLSv1 TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE (CVE‑2014‑3566)
  1. 如果NGINX或NGINX Plus实例处理邮件流量,请在mail{}配置块中创建或编辑同一指令。
# in the mail{} configuration blockssl_protocols TLSv1 TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE (CVE‑2014‑3566)
  1. 如果NGINX或NGINX Plus实例处理TCP流量,请在stream{}配置块中创建或编辑同一指令。
# in the stream{} configuration blockssl_protocols TLSv1 TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE (CVE‑2014‑3566)
  1. 在配置中找到所有其他的“ssl_protocols”指令(该指令可能包含在“server{}”配置块中,而该配置块可能位于“http{}”、“mail{}”和“stream{}”块内)。建议删除这些“ssl_protocols”指令,但至少应从参数列表中删除“SSLv3”:
# in every server{} block ssl_protocols TLSv1 TLSv1.1 TLSv1.2;# omit SSLv3 because of POODLE (CVE‑2014‑3566)
  1. 运行以下命令以重新加载配置:
# nginx –s reload

此更改有何影响?

所有现代浏览器和API客户端均支持TLSv1及更高版本。禁用SSLv3会给使用Internet Explorer 6浏览网页的WindowsXP用户带来不便;CloudFlare估计,WindowsXP用户占其流量的3.12%,其中1.12%会受到影响,约相当于每3,000名用户中有1名。

此更改还可能影响网络爬虫及其他自动化机器人流量。

未来展望

在SSL降级攻击中,攻击者可以干扰SSL/TLS握手,使客户端和服务器选择较早版本的SSL/TLS。如果攻击者借此强制选择SSLv3,SSL/TLS连接可能会遭受POODLE攻击。在服务器端禁用SSLv3可防止此类攻击。

Google has proposed an extension to SSL/TLS named TLS_FALLBACK_SCSV that seeks to prevent forced SSL/TLS downgrades. [Editor – The extension was adopted as RFC 7507 in April 2015.] This extension might eventually be accepted into OpenSSL, and the corresponding client‑side support added to major browsers. This will allow web services to support SSLv3, but legacy clients will still be vulnerable.

不过,这一漏洞可能意味着SSLv3将彻底退出历史舞台,而这总体上是一种更简单、更可靠的解决方案。

还可以采取哪些措施?

建议更新客户端软件,使其不再支持SSLv3。这样,在访问尚未更新且仍未禁用SSLv3的服务时,可以防范此类攻击。

延伸阅读


分享

关于作者

相关博客文章

NGINX Plus R26 正式发布
NGINX | 2022/02/15

NGINX Plus R26 正式发布

NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
NGINX | 2022/02/10

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击

gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
NGINX | 2021/09/13

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划

了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。

NGINX Plus R19 正式发布
NGINX | 2019/09/03

NGINX Plus R19 正式发布

NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。

NGINX现已正式加入F5
NGINX | 2019/05/09

NGINX现已正式加入F5

NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。

使用NGINX和NGINX Plus实现高性能缓存
NGINX | 2016/08/24

使用NGINX和NGINX Plus实现高性能缓存

我将介绍NGINX在内容缓存和性能方面的工作原理,并分享一些控制NGINX内容缓存方式的技巧。