Front Door 上的 Web 应用程序防火墙
将 WAF 策略附加到 Front Door 配置文件,启用托管规则集来防护 OWASP Top 10,并创建自定义规则以阻止已知的恶意 IP。
Front Door 上的 Web 应用程序防火墙 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。
什么是 Web Application Firewall
Web Application Firewall(WAF)会在第 7 层检查 HTTP/HTTPS 请求,并在已知攻击模式到达应用程序之前将其阻止。它可以防御的常见攻击包括SQL 注入、跨站脚本攻击(XSS)、远程文件包含和协议异常。如果没有 WAF,即使您的网络已正确锁定,攻击者仍可能利用应用程序代码中的漏洞。Azure WAF 可与 Azure Front Door 和 Azure Application Gateway 集成。
WAF 策略资源
在 Azure 中,WAF 策略是一个独立资源,其中包含托管规则集和自定义规则。您可以创建策略、配置规则,然后将其关联到一个或多个 Front Door 终结点或 Application Gateway 实例。这种解耦设计意味着一个 WAF 策略可以保护多个 Front Door 终结点,对策略进行的一次更改会自动传播到所有关联的终结点。WAF 策略存在于特定 Azure 区域中,但关联到 Front Door 后,保护功能会在所有 PoPs 全局应用。
# Create a WAF policy for Front Door
az network front-door waf-policy create \
--name myWAFPolicy \
--resource-group myRG \
--sku Premium_AzureFrontDoor \
--mode Prevention检测模式与防护模式
WAF 策略有两种模式。检测模式会检查所有请求并记录与规则的匹配项,但不会阻止任何流量。这适合初始部署阶段,用于了解策略在强制执行前会阻止哪些流量。防护模式不仅会记录日志,还会主动阻止符合规则条件的请求。最佳实践是先从检测模式开始,检查 WAF 日志中的误报并调整规则;确认策略正确后,再切换到防护模式。
# Switch WAF policy to Prevention mode
az network front-door waf-policy update \
--name myWAFPolicy \
--resource-group myRG \
--mode PreventionMicrosoft Default Rule Set
Microsoft Default Rule Set (DRS) 是由 Microsoft 安全团队维护的一组托管规则。它包含用于检测 OWASP Top 10 漏洞的规则,以及机器人特征和凭据填充模式。Microsoft 会根据不断出现的威胁持续更新 DRS,您无需自行编写规则。DRS 会定期发布新版本(例如 DRS 2.1),您可以在维护时段将 WAF 策略升级到较新版本。
# Add the Microsoft Default Rule Set to your WAF policy
az network front-door waf-policy managed-rules add \
--policy-name myWAFPolicy \
--resource-group myRG \
--type Microsoft_DefaultRuleSet \
--version '2.1'OWASP Rule Set
OWASP Core Rule Set (CRS) 可用于 Application Gateway WAF,也包含在 Verizon 级别的 CDN WAF 中。它包含 200 多条规则,涵盖 OWASP Top 10,包括注入攻击、身份验证失效、敏感数据泄露、XML 外部实体攻击等。每条规则都有一个 ID 和所属组(例如 REQUEST-942-APPLICATION-ATTACK-SQLI)。您可以根据 ID 禁用单条规则,在不禁用整个规则组的情况下抑制误报。
自定义 WAF 规则
自定义规则可让您编写托管规则集未涵盖的特定允许或阻止条件。自定义规则由一个或多个匹配条件组成(例如源 IP、请求 URI、标头值或查询字符串),并结合一个操作(允许、Block、记录或 Redirect)。自定义规则会在托管规则集之前进行评估,并支持按优先级排序。常见用途包括阻止特定国家/地区、限制高频爬虫的请求速率,或将受信任的监控 IP 列入允许列表,使其绕过 WAF 规则。
# Create a custom rule to block requests from a specific IP
az network front-door waf-policy rule create \
--name BlockMaliciousIP \
--policy-name myWAFPolicy \
--resource-group myRG \
--priority 100 \
--action Block \
--rule-type MatchRule \
--match-condition remoteAddr IPMatch '1.2.3.4/32'速率限制
速率限制规则会限制单个客户端 IP 地址在指定时间窗口(1 分钟或 5 分钟)内可以发出的 HTTP 请求数量。当请求数量超过阈值时,WAF 会向该客户端返回 HTTP 429(请求过多)。速率限制可有效防御暴力登录攻击、凭据填充和API 滥用。您可以在 WAF 策略的自定义规则定义中配置请求阈值和时间窗口。
# Create a rate limit rule — max 100 requests per minute per IP
az network front-door waf-policy rule create \
--name RateLimitLogin \
--policy-name myWAFPolicy \
--resource-group myRG \
--priority 200 \
--action Block \
--rule-type RateLimitRule \
--rate-limit-threshold 100 \
--rate-limit-duration-in-minutes 1 \
--match-condition requestUri Contains '/login'机器人防护规则集
Bot Manager 规则集(适用于 Front Door Premium)会将传入流量分类为良性机器人(经过验证的搜索引擎爬虫)、恶意机器人(已知扫描器和漏洞探测器)以及未知机器人(未分类的自动化流量)。您可以按类别配置操作:允许良性机器人、阻止恶意机器人,并记录未知机器人。没有机器人防护时,自动化扫描器可能产生巨大的流量,增加您的成本,并在分析数据中掩盖真实用户流量。
WAF 排除项
托管规则集有时会产生误报:合法请求只是因为碰巧匹配了某种安全规则模式,就被阻止。例如,具有富文本编辑功能的 CMS 可能会在 POST 正文中发送 HTML,而该内容可能匹配 XSS 规则。WAF 排除项允许您将特定请求属性(请求标头、Cookie、查询字符串参数或请求正文字段)排除在规则评估之外。排除范围可以是全局范围,也可以限定为特定规则组或规则 ID,同时不会完全禁用该规则。
使用日志监视 WAF
WAF 会在 Azure Monitor 中生成两类日志条目:WAF 日志(每个匹配规则的请求,无论该请求被阻止还是仅被记录)和访问日志(所有请求,包括未匹配任何规则而直接通过的请求)。将这些日志发送到 Log Analytics 工作区,并使用 KQL 查询被阻止请求的趋势、识别遭受攻击最多的终结点,或调查特定客户端 IP。门户中的 WAF Insights 工作簿提供了用于直观呈现这些日志的预建仪表板。
// KQL — top 10 WAF rule hits in the last 24h
AzureDiagnostics
| where Category == 'FrontDoorWebApplicationFirewallLog'
| where TimeGenerated > ago(24h)
| where action_s == 'Block'
| summarize HitCount = count() by ruleName_s
| top 10 by HitCount desc将 WAF 策略与 Front Door 关联
要激活 WAF 防护,您必须将 WAF 策略与 Front Door 安全配置文件关联。在门户中,转到 Front Door 配置文件,选择安全策略,然后添加 WAF 策略,并指定该策略适用的域名。或者,您也可以使用 CLI 链接该策略。关联后,WAF 会检查抵达这些 Front Door 域名的所有 HTTP/HTTPS 请求,然后再将请求路由到源站。每个域名只能关联一个 WAF 策略。
# Associate WAF policy with a Front Door security policy
az afd security-policy create \
--profile-name myFrontDoor \
--resource-group myRG \
--security-policy-name mySecurityPolicy \
--domains /subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.Cdn/profiles/myFrontDoor/customDomains/myDomain \
--waf-policy /subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.Network/frontDoorWebApplicationFirewallPolicies/myWAFPolicy快速检查
测试您对本课程中 Microsoft Azure 基础知识(AZ-900)概念的理解。
课程回顾
在本课程中,您学习了以下内容:WAF 策略包含托管规则集(Microsoft DRS、OWASP)和自定义规则,可在 HTTP 流量到达源站之前对其进行检查;检测模式可让您在切换到防护模式之前调整规则;速率限制规则可防御暴力攻击和滥用。接下来,我们将探索如何使用 Front Door 的规则引擎,通过 Redirect 和安全标头优化性能。
常见问题解答
「Front Door 上的 Web 应用程序防火墙」课时是免费的吗?
是的 — 「Front Door 上的 Web 应用程序防火墙」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「Front Door 上的 Web 应用程序防火墙」这节课中我会学到什么?
将 WAF 策略附加到 Front Door 配置文件,启用托管规则集来防护 OWASP Top 10,并创建自定义规则以阻止已知的恶意 IP。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「Front Door 上的 Web 应用程序防火墙」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Azure CDN 配置文件和终结点
- Azure Front Door:全球负载均衡
- Front Door 上的 Web 应用程序防火墙
- 使用 CDN 规则优化性能