利用eBPF加速F5 NGINX App Protect DoS的DDoS缓解

NGINX | 2023年4月05日

应对DDoS攻击的攻防态势仍在不断变化。在《2023年DDoS攻击趋势报告》中,F5 Labs分析了近3年的分布式拒绝服务(DDoS)攻击数据,发现攻击者虽然仍在使用复杂的多向量DDoS攻击,但也开始更多地发起纯应用层(第7层)攻击。仅2022年,第7层攻击的发生率就增长了165%。

显示2020年至2022年各类DDoS攻击(流量型、协议型、应用型和多向量型)数量的图表
2020–2022年各类DDoS攻击的数量,显示应用层攻击数量大幅增加,而容量型攻击和多向量攻击数量相应减少。

通常,攻击者会选择最容易得手的方式来实现目标,无论是阻止网站正常运行,还是勒索目标。第 7 层攻击数量的上升可能表明,仅采用流量型或协议型策略发起 DDoS 攻击正变得越来越困难,而应用层攻击可能更为有效。

使用eBF和XDP保护现代应用

在防御DDoS攻击、保护应用时,应尽可能利用技术进步,提高应用保持可用的可能性(并让用户满意)。虽然扩展伯克利数据包过滤器(eBPF)与快速数据路径(XDP)技术早在2014年就已出现,但随着微服务和云原生架构日益普及,该技术目前在开发人员、SRE和运维群体中迅速受到关注。

eBPF

eBPF是Linux内核中的数据链路层虚拟机(VM),支持用户安全、高效地运行程序。它还可以在不更改内核源代码或添加额外内核模块的情况下,在运行时扩展内核功能。eBPF由事件触发,可检测Linux主机上的特定活动并执行相应操作。该技术可提供应用和应用服务的全栈可见性,并能跟踪微服务与最终用户之间的连接和事务。其可提供的数据范围十分广泛,能够满足迫切的可观测性需求,分析网络流量管理和运行时安全需求,并凭借其高效的基础设计降低计算成本。

观看 F5 DevCentral 的视频《什么是 eBPF?》,快速了解 eBPF 技术。

XDP

XDP可提供高性能网络处理能力。它支持用户空间程序直接读取和写入网络数据包数据,并在数据包到达内核层之前决定如何处理。借助这项技术,开发人员可以将eBPF程序附加到由Linux内核中的网络设备驱动程序实现的低级挂钩点。

NGINX App Protect DoS 如何使用 eBPF?

NGINX App Protect DoS是一款基于高级行为分析的第7层DDoS缓解解决方案,可在NGINX Plus和NGINX Ingress Controller上运行,保护HTTP和HTTP/2应用免受以下攻击:Slowloris和HTTP Flood。简而言之,NGINX App Protect DoS可防御简单的网络DDoS解决方案无法检测到的应用层攻击。

显示NGINX App Protect DoS可防御的攻击类型的示意图
NGINX App Protect DoS可部署在负载均衡器或API网关的NGINX Plus上,也可部署在NGINX Ingress Controller上或集群内,作为每个Pod或每项服务的代理。它还可作为“安全即代码”轻松集成到CI/CD流水线中,支持敏捷DevOps。

与NGINX App Protect DoS配合使用时,eBPF有望显著提升DDoS攻击流量的吸收能力。NGINX App Protect DoS将eBPF(NGINX Ingress Controller本身不提供此功能)作为多层解决方案的一部分,通过阻止恶意行为者的流量来提升缓解性能。系统可仅根据源IP地址识别恶意行为者,也可结合TLS指纹进行识别。

接下来,我们来了解NGINX App Protect DoS在以下3个阶段中的基本工作机制:异常检测、动态规则创建和自适应学习以及规则执行。

异常检测

NGINX App Protect DoS持续监控受保护的应用,并利用机器学习构建应用和客户端行为的统计站点模型。它实时观察流量并跟踪300多项HTTP请求指标,从而建立持续更新且全面的活动和性能基线。除了被动监控应用流量外,NGINX App Protect DoS还会主动执行应用运行状况检查,并监控响应时间和丢弃的请求等指标。

当应用遭受第7层DDoS攻击时,应用响应时间(或错误率)会偏离已学习的模型,从而触发应用保护系统。

动态规则创建与自适应学习

检测到异常后,NGINX App Protect DoS会动态创建规则,以识别并阻止恶意流量。为确保合法用户能够访问应用,同时阻止恶意攻击者,该产品会生成客户端行为的统计画像,以识别哪些用户参与了攻击,哪些用户未参与攻击。

除了部署动态签名来阻止攻击外,NGINX App Protect DoS还会持续衡量缓解措施的有效性,并运用自适应学习,持续提供强大的应用安全防护并阻止零日攻击。识别出引发攻击的客户端和请求后,它会创建规则来拒绝此类流量。

NGINX App Protect DoS 实施多层防御策略,包括:

  • 根据IP地址或TLS指纹阻止恶意行为者
  • 使用攻击特征码阻止恶意请求
  • 应用全局速率限制

这三种缓解措施会逐步应用,以便在不影响合法用户的情况下尽可能阻止攻击者。不过,大部分阻止操作通常发生在初始阶段,即结合使用IP地址和TLS指纹进行阻止,或仅使用IP地址进行阻止。所幸,eBPF程序恰好可以有效实施这些类型的规则。

规则执行

NGINX App Protect DoS使用已创建的规则,并将其应用于传入的应用流量,以阻止恶意请求。由于所有应用流量都由NGINX Plus代理转发到后端(或“上游”)应用,因此任何与阻止规则匹配的请求都会被直接丢弃,不会传递到后端应用。

尽管NGINX Plus是一款高性能代理,但攻击和缓解规则产生的额外工作负载仍可能耗尽NGINX运行平台的可用资源。这正是eBPF发挥作用的地方。通过在内核中仅按IP地址进行阻止,或结合IP地址和TLS指纹进行阻止,可以在传输层(第4层)尽早评估并阻止恶意流量。与在用户空间中运行的NGINX执行这些操作相比,这种方式的效率要高得多。

在受支持的平台上,当NGINX App Protect DoS创建规则,根据源IP地址或TLS指纹阻止攻击者时,这些规则会被编译为eBPF字节码程序。当网络事件(称为钩子)发生时,内核会执行该程序。如果特定网络事件触发规则,流量会在第4层被提前丢弃。这有助于在流量到达第7层之前加快DDoS缓解。由于所有这些活动都在内核中进行,因此效率很高;与在用户空间中实施规则相比,可以在资源耗尽前过滤更多流量。

示意图展示NGINX App Protect DoS如何在内核中调用以eBPF编码的规则来抵御攻击者
NGINX App Protect DoS借助eBPF在恶意流量到达用户空间之前从内核中将其阻止,从而加快DDoS缓解并降低计算成本。

在NGINX App Protect DoS上启用eBPF加速缓解

NGINX App Protect DoS加速缓解功能适用于以下Linux发行版:

  • Alpine 3.15+
  • Debian 11+
  • RHEL 8+
  • Ubuntu 20.04+

要启用加速DDoS缓解,请按以下步骤操作:

  1. 安装支持eBPF的NGINX App Protect DoS软件包,并执行其他必要任务。(有关详细信息,请参阅安装文档,因为安装后任务因发行版而异。)
  2. 配置 NGINX App Protect DoS,操作方式与往常相同。
  3. 在NGINX Plus配置的http{}块中添加以下指令。
protect_dos_accelerated_mitigation on;
  1. 重新加载NGINX配置。
$ sudo nginx -t && nginx -s reload

总结

将NGINX App Protect DoS的自适应学习能力与eBPF内核执行的高效流量处理相结合,可提供多层加速的第7层DDoS缓解策略,增强应对当前多向量及应用程序定向DDoS攻击的能力。此外,通过减少缓解各类DDoS攻击所需的资源,还有助于降低基础设施和计算成本。

通过30天免费试用亲自体验NGINX App Protect DoS,或联系我们,讨论您的用例。

其他资源


分享

相关博客文章

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内容缓存方式的技巧。