NGINX.COM
Web Server Load Balancing with NGINX Plus

针对 DDoS 攻击的保卫战在不断演变。在《2023 年 DDoS 攻击趋势报告》中,F5 Labs 分析了最近三年有关分布式拒绝服务 (DDoS) 攻击的数据,发现尽管攻击者仍使用复杂的混合矢量 DDoS 攻击,但也开始转而发起更纯粹的应用层 (七层) 攻击。仅在 2022 年,七层攻击数量就增长 165%。

2020-2022 年 DDoS 攻击类型的数量,从中可以发现应用攻击数量大幅增加,流量耗尽型攻击和混合矢量攻击相应减少。

通常,攻击者会选择最简单的手段来实现其目标,无论是妨碍网站运营还是勒索目标对象。七层攻击的增加可能表明,仅仅使用流量耗尽型策略或协议策略来发起 DDoS 攻击正变得越发困难,而应用层攻击则被证明更为有效。

 

使用 eBF 和 XDP 保护现代应用

在保护您的应用免受 DDoS 攻击时,必须尽可能地利用技术进步,以最大限度地提高应用可用性(和用户满意度)。 虽然采用 eXpress Data Path (XDP) 技术的扩展伯克利数据包过滤器 (eBPF) 早在 2014 年就已问世,但直至最近才随着微服务和云原生架构的普及在开发人员、SRE 和运营社区中盛行开来。

eBPF

eBPF 是 Linux 内核中的一个数据链路层虚拟机 (VM),支持用户安全高效地运行程序。它还扩展了运行时内核的功能,既无需更改内核的源代码,也不必添加额外的内核模块。由事件触发的 eBPF 会检测 Linux 主机上的特定活动并采取特定操作。这项技术提供了对应用和应用服务的全栈可见性,可追踪微服务和最终用户之间的连接和事务。可用数据的范围相当广泛。它能够提供出色的可观测性,分析网络流量管理和运行时安全防护需求,并利用高效的设计来降低计算成本。

请观看 F5 DevCentral 视频 “什么是 eBPF” ,快速了解 eBPF 技术。

XDP

XDP 具有高性能网络连接的优势。它支持用户空间程序直接读取和写入网络数据包数据,并在数据包到达内核层之前确定如何处理数据包。这项技术允许开发人员将 eBPF 程序附加到由 Linux 内核中的网络设备驱动程序实施的低级别 hook 中。

 

NGINX App Protect DoS 如何使用 eBPF?

NGINX App Protect DoS 是一款基于行为的高级七层 DDoS 防护解决方案,在 NGINX Plus 和 NGINX Ingress Controller 上运行,可保护 HTTP 和 HTTP/2 应用免受 Slowloris 慢速攻击HTTP 洪水攻击等攻击。 简而言之,NGINX App Protect DoS 能够抵御简单网络 DDoS 解决方案检测不到的应用层攻击。

NGINX App Protect DoS 可以部署在作为负载均衡器或 API 网关的 NGINX Plus 上,也可以部署在作为 per-pod 或 per-service 代理的 NGINX Ingress Controller 上或集群内部。它还可以“安全防护即代码”的形式轻松地集成到 CI/CD 流水线中,以实现敏捷的 DevOps。

当与 NGINX App Protect DoS 结合使用时,eBPF 有望显著增强 DDoS 攻击防御能力。NGINX App Protect DoS 将 eBPF(NGINX Ingress Controller 本身不提供)用作多层解决方案的一部分,可拦截来自攻击者的流量(通过仅使用源 IP 地址或者组合使用源 IP 地址和 TLS 指纹进行识别),从而提高防护性能。

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

异常检测

NGINX App Protect DoS 能够持续监控受保护的应用,并使用机器学习来构建应用和客户端行为的统计站点模型。它可实时观测流量并跟踪 300 多个 HTTP 请求指标,以创建一个不断更新的全面的活动和性能基线。除了被动地监控应用流量以外,NGINX App Protect DoS 还执行主动应用健康检查,并监控响应时间和丢弃请求数等指标。

当应用遭到七层 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 指纹拦截,可以在传输层(四层)及早评估和拦截恶意流量。这比在用户空间运行的 NGINX 来执行要更为高效。

在支持的平台上,当 NGINX App Protect DoS 根据源 IP 地址或 TLS 指纹创建规则来阻止攻击者时,这些规则会被编译成 eBPF 字节码程序,当发生网络事件(称为 hook)时由内核来执行。如果特定网络事件触发了规则,相关流量就会在四层被提前丢弃。这有助于加速 DDoS 防护,阻止 DDoS 到达七层。由于该活动是在内核中执行,因此非常高效,并且与在用户空间中实施规则相比,能够过滤更多流量(在耗尽资源之前)。

采用 eBPF 的 NGINX App Protect DoS 在内核中拦截恶意流量,阻止其到达用户空间,从而加速 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;
  4. 重新加载 NGINX 配置。

    $ sudo nginx -t && nginx -s reload

 

总结

NGINX App Protect DoS 的自感知可控,随需而变的学习功能与 eBPF 内核执行的高效流量处理相结合,提供了一个多层级的七层 DDoS 加速防护策略,可帮助组织更有效地缓解当今针对应用的混合矢量 DDoS 攻击。此外,它还能够减少缓解任何特定 DDoS 攻击所需的资源,从而帮助降低基础设施和计算成本。

如欲亲自试用 NGINX App Protect DoS,请立即下载 30 天免费试用版,或联系我们讨论您的用例

更多资源

Hero image
免费 O'Reilly 电子书:
《NGINX 完全指南》

更新于 2022 年,一本书了解关于 NGINX 的一切

关于作者

Robert Haynes

技术营销经理

关于作者

Thelen Blum

F5 NGINX App Protect 高级产品营销经理

关于 F5 NGINX

F5, Inc. 是备受欢迎的开源软件 NGINX 背后的商业公司。我们为现代应用的开发和交付提供一整套技术。我们的联合解决方案弥合了 NetOps 和 DevOps 之间的横沟,提供从代码到用户的多云应用服务。访问 nginx-cn.net 了解更多相关信息。