博客 | NGINX

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

NGINX-F5-horiz-black-type-RGB 的一部分
罗伯特·海恩斯缩略图
罗伯特·海恩斯
2023 年 4 月 5 日发布

对抗 DDoS 攻击的斗争正在不断转变。 在2023 年 DDoS 攻击趋势报告中,F5 实验室分析了最近三年的分布式拒绝服务(DDoS) 攻击数据,发现攻击者虽然仍在使用复杂的多向量 DDoS 攻击,但他们也已转向发起更纯粹的应用层(第 7 层)攻击。 仅在 2022 年,第 7 层攻击的流行率就增长了 165%。

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

通常,攻击者会选择最简单的途径来实现他们的目标,无论是阻止网站的运行还是勒索目标。 第 7 层攻击的增加可能表明,仅使用容量耗尽或协议策略发起 DDoS 攻击变得越来越困难,而应用层攻击被证明更为有效。

使用 eBF 和 XDP 保护现代应用程序

在保护您的应用免受 DDoS 攻击时,重要的是尽可能利用技术进步来最大限度地保持您的应用可用(并让您的用户满意)。 虽然带有eXpress数据路径(XDP) 技术的扩展伯克利数据包过滤器(eBPF) 自 2014 年就已经存在,但由于微服务和云原生架构的采用日益增多,它在开发人员、SRE 和运营社区中的受欢迎程度正在飙升。

增强型BPF

eBPF 是 Linux 内核中的数据链路层虚拟机(VM),允许用户安全高效地运行程序。 它还在运行时扩展了内核的功能,而无需更改内核源代码或添加额外的内核模块。eBPF 是事件触发的——它检测 Linux 主机上的特定活动并采取特定的操作。 该技术提供了应用程序和应用服务的全栈可视性,能够跟踪微服务和最终用户之间的连接和交易。 可用数据的范围相当广泛。 它能够解决敏锐的可观察性、分析网络流量管理和运行时安全需求,并使用其基本的高效设计来降低计算成本。

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

西地普

XDP 提供了高性能网络的优势。 它使用户空间程序能够直接读取和写入网络数据包数据,并在到达内核级之前决定如何处理数据包。 该技术允许开发人员将 eBPF 程序附加到由 Linux 内核内的网络设备驱动程序实现的低级挂钩。

NGINX 应用程序如何使用 eBPF 保护 DoS?

NGINX App Protect DoS是一种先进的基于行为的第 7 层 DDoS 缓解解决方案,它在 NGINX Plus 和 NGINX Ingress Controller 上运行,以保护 HTTP 和 HTTP/2 应用程序免受SlowlorisHTTP Flood等攻击。 简而言之,NGINX App Protect DoS 可防御简单的网络 DDoS 解决方案无法检测到的应用层攻击。

图表展示了 NGINX App Protect DoS 所防御的攻击类型
NGINX App Protect DoS 可以部署在 NGINX Plus 的负载均衡器或 API 网关上,也可以部署在 NGINX Ingress Controller 上或集群内部作为每个 pod 或每个服务的代理。 它还可以作为“安全即代码”轻松集成到敏捷 DevOps 的 CI/CD 管道中。

与 NGINX App Protect DoS 一起使用时,eBPF 有望显著增强 DDoS 攻击吸收能力。 NGINX App Protect DoS 使用 eBPF(NGINX Ingress Controller 本身不提供)作为多层解决方案的一部分,通过阻止不良行为者的流量(单独或与 TLS 指纹识别)来加速缓解性能。

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

异常检测

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{}块中添加以下指令

    保护_dos_accelerated_mitigation开启;
    
  4. 重新加载 NGINX 配置。

    $ sudo nginx -t && nginx -s 重新加载
    

概括

将 NGINX App Protect DoS 的自适应学习功能与 eBPF 内核执行的高效流量处理相结合,可提供多层、加速的第 7 层 DDoS 缓解策略,并增强应对当今多向量和以应用为中心的 DDoS 攻击的能力。 此外,它还通过减少缓解任何特定 DDoS 攻击所需的资源来降低基础设施和计算成本。

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

其他资源


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”