你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

应用程序(第 7 层)DDoS 防护

Azure WAF 具有多种防御机制,有助于防止分布式拒绝服务 (DDoS) 攻击。 DDoS 攻击可以针对网络层 (L3/L4) 或应用程序层 (L7)。 Azure DDoS 可保护客户免受大型网络层容量耗尽攻击。 在第 7 层运行的 Azure WAF 可保护 Web 应用程序免受 HTTP 泛洪等 L7 DDoS 攻击。 这些防御可防止攻击者访问应用程序和影响应用程序的可用性与性能。

如何保护服务?

可以添加 Web 应用程序防火墙 (WAF) 或将 DDoS 放在服务前面来筛选出恶意的请求,从而缓解这些攻击。 Azure 通过 Azure Front Door 提供在网络边缘运行的 WAF,通过应用程序网关提供在数据中心内运行的 WAF。 以下步骤为通用列表,需要进行调整以适应你的应用程序服务要求。

  • 使用 Azure Front Door Premium 或应用程序网关 WAF v2 SKU 部署 Azure Web 应用程序防火墙 (WAF),以防范 L7 应用程序层攻击。
  • 纵向扩展原点实例计数,以便有足够的备用容量。
  • 在源公共 IP 上启用 Azure DDoS 防护,以保护公共 IP 免受第 3 层 (L3) 和第 4 层 (L4) DDoS 攻击。 Azure 的 DDoS 产品/服务可自动保护大多数站点免受向网站发送大量数据包的 L3 和 L4 容量耗尽攻击。 默认情况下,Azure 还为 Azure 上托管的所有站点提供基础结构级别防护。

Azure WAF 与 Azure Front Door

Azure WAF 具有许多功能,可用于缓解许多不同类型的攻击,例如 HTTP 洪水、缓存绕过、僵尸网络发起的攻击。

  • 使用机器人防护托管规则集来防范已知的恶意机器人。 有关详细信息,请参阅配置机器人防护

  • 应用速率限制可防止 IP 地址过于频繁地调用服务。 有关详细信息,请参阅速率限制

  • 阻止标识为恶意的 IP 地址和范围。 有关详细信息,请参阅 IP 限制

  • 阻止来自某个定义的地理区域之外的或在某个定义的区域之内但不符合应用程序流量模式的流量,或者将其重定向到某个静态网页。 有关详细信息,请参阅地区筛选

  • 创建自定义 WAF 规则来自动阻止具有已知签名的 HTTP 或 HTTPS 攻击并对这些攻击进行速率限制。 签名(例如特定的用户代理)或特定的流量模式(包括标头、Cookie、查询字符串参数或多个签名的组合)。

除了 WAF 之外,Azure Front Door 还提供默认的 Azure 基础结构 DDoS 防护,以防范 L3/4 DDoS 攻击。 在 Azure Front Door 上启用缓存有助于吸收边缘的突发高峰流量,并保护后端原点免受攻击。

有关 Azure Front Door 上的功能和 DDoS 防护的详细信息,请参阅 Azure Front Door 上的 DDoS 防护

Azure WAF 与 Azure 应用程序网关

建议使用带有最新功能(包括 L7 DDoS 缓解功能)的应用程序网关 WAF v2 SKU 来抵御 L7 DDoS 攻击。

应用程序网关 WAF SKU 可用于缓解许多 L7 DDoS 攻击:

  • 将应用程序网关设置为自动纵向扩展,而不强制实施最大实例数。

  • 使用机器人防护托管规则集可针对已知的恶意机器人提供保护。 有关详细信息,请参阅配置机器人防护

  • 应用速率限制可防止 IP 地址过于频繁地调用服务。 有关详细信息,请参阅配置速率限制自定义规则

  • 阻止标识为恶意的 IP 地址和范围。 有关详细信息,请参阅创建和使用 v2 自定义规则中的示例。

  • 阻止来自某个定义的地理区域之外的或在某个定义的区域之内但不符合应用程序流量模式的流量,或者将其重定向到某个静态网页。 有关详细信息,请参阅创建和使用 v2 自定义规则中的示例。

  • 创建自定义 WAF 规则来自动阻止具有已知签名的 HTTP 或 HTTPS 攻击并对这些攻击进行速率限制。 签名(例如特定的用户代理)或特定的流量模式(包括标头、Cookie、查询字符串参数或多个签名的组合)。

其他注意事项

  • 锁定对原点上的公共 IP 的访问,并将入站流量限制为仅允许从 Azure Front Door 或应用程序网关到原点的流量。 请参阅 Azure Front Door 指南。 应用程序网关部署在虚拟网络中,请确保没有任何公开的 IP。

  • 将 WAF 策略切换到预防模式。 在检测模式下部署策略时,操作仅在日志中进行,不会阻止流量。 使用生产流量验证及测试 WAF 策略并对其进行微调以减少任何误报后,应将策略转到“防护”模式(阻止/防御模式)。

  • 使用 Azure WAF 日志监视流量是否有异常。 可以创建自定义规则来阻止任何违规流量 - 可疑 IP 发送非比寻常的大量请求、异常用户代理字符串、异常查询字符串模式等。

  • 可以绕过已知合法流量的 WAF,方法是使用“允许”操作创建匹配自定义规则以减少误报。 应当为这些规则配置比其他阻止和速率限制规则更高的优先级(更低的数值)。

  • 至少应该有一个速率限制规则来阻止来自任何单个 IP 地址的高速率请求。 例如,可以将速率限制规则配置为单个客户端 IP 地址在每个时段向站点发送的流量不得超过 XXX。 Azure WAF 支持两个时段的请求跟踪,即 1 分钟和 5 分钟。 建议使用 5 分钟时段,以便更好地缓解 HTTP 泛洪攻击。 此规则应是优先级最低的规则(优先级为 1 表示最高优先级),以便可以创建更具体的速率限制规则或匹配规则以在此规则之前匹配。 如果使用应用程序网关 WAF v2,则可以利用其他速率限制配置通过客户端 IP 以外的方法来跟踪和阻止客户端。 有关应用程序网关 waf 速率限制的详细信息,请参阅速率限制概述

    以下 Log Analytics 查询有助于确定应当用于上述规则的阈值。 对于使用应用程序网关的类似查询,请将“FrontdoorAccessLog”替换为“ApplicationGatewayAccessLog”。

    AzureDiagnostics
    | where Category == "FrontdoorAccessLog"
    | summarize count() by bin(TimeGenerated, 5m), clientIp_s
    | summarize max(count_), percentile(count_, 99), percentile(count_, 95)
    
  • 托管规则虽然不是直接针对 DDoS 攻击的防线,但可提供针对其他常见攻击的保护。 有关详细信息,请参阅托管规则 (Azure Front Door)托管规则(应用程序网关),详细了解这些规则可帮助防范的各种攻击类型。

WAF 日志分析

可以使用以下查询在 Log Analytics 中分析 WAF 日志。

Azure Front Door

AzureDiagnostics
| where Category == "FrontdoorWebApplicationFirewallLog"

有关详细信息,请参阅 Azure WAF 与 Azure Front Door

Azure 应用程序网关

AzureDiagnostics
| where Category == "ApplicationGatewayFirewallLog"

有关详细信息,请参阅 Azure WAF 与 Azure 应用程序网关

后续步骤