如果网站面向多个地区访问,源站安全不能只靠Nginx和服务器防火墙。更好的做法,是在边缘入口先做Web攻击检测、访问控制、限速和日志监控,再把正常请求转发给源站。
Azure Front Door上的Web Application Firewall可以集中保护Web应用。本文用Azure CLI和KQL演示一套最小可落地方案:创建Azure Front Door WAF策略,启用托管规则,添加自定义限速规则,配置诊断日志,最后用Log Analytics验证拦截、限速和请求链路。

一、架构:WAF放在全球入口

Microsoft Learn说明,Azure Front Door上的WAF可以基于自定义规则和托管规则控制访问;WAF可先处于检测模式,观察影响后再改为防护模式。对于新上线的业务,这个流程比直接强拦截更稳。
基本链路是:
用户请求 → Azure Front Door → WAF Policy → Origin Group → 源站应用。
二、准备变量
bash
export RESOURCE_GROUP="rg-edge-security"
export LOCATION="global"
export PROFILE_NAME="afd-prod-profile"
export WAF_POLICY="afd-prod-waf"
export LOG_WORKSPACE="law-afd-security"
az account show --output table
本文假设你已经有Azure Front Door Standard/Premium配置。若还没有,先完成Profile、Endpoint、Origin Group和Route配置。
三、创建WAF策略
bash
az network front-door waf-policy create \
--resource-group "$RESOURCE_GROUP" \
--name "$WAF_POLICY" \
--sku Premium_AzureFrontDoor \
--mode Detection \
--enabled-state Enabled
建议先用Detection模式观察日志。确认误报可控后再改为Prevention:
bash
az network front-door waf-policy update \
--resource-group "$RESOURCE_GROUP" \
--name "$WAF_POLICY" \
--mode Prevention
四、启用托管规则

托管规则适合挡常见攻击类型,例如SQL注入、XSS、协议异常等。上线时不要一次性把所有规则都强拦截,先观察业务接口日志。
bash
az network front-door waf-policy managed-rules add \
--policy-name "$WAF_POLICY" \
--resource-group "$RESOURCE_GROUP" \
--type Microsoft_DefaultRuleSet \
--version 2.1
查看策略:
bash
az network front-door waf-policy show \
--resource-group "$RESOURCE_GROUP" \
--name "$WAF_POLICY" \
--query "{mode:policySettings.mode, managedRules:managedRules.managedRuleSets[].ruleSetType}"
五、添加API限速规则
Microsoft文档说明,Azure Front Door WAF自定义规则包括Match规则和Rate limit规则;Rate limit规则可按源IP等条件控制请求速率。下面示例对/api/路径按IP限速:
bash
az network front-door waf-policy rule create \
--resource-group "$RESOURCE_GROUP" \
--policy-name "$WAF_POLICY" \
--name RateLimitApiPerIP \
--priority 100 \
--rule-type RateLimitRule \
--action Block \
--rate-limit-duration 1 \
--rate-limit-threshold 120 \
--match-variable RequestUri \
--operator BeginsWith \
--match-value /api/
阈值不能照抄。先看一周访问日志,确认正常用户、公司出口NAT、移动网络共享IP的峰值,再设置阈值。

六、关联Front Door策略
WAF策略必须关联到Front Door安全策略或域名路径,才会生效。不同Front Door版本CLI命令略有差异,生产环境建议在门户中确认关联对象。
检查Front Door配置:
bash
az afd profile show \
--resource-group "$RESOURCE_GROUP" \
--profile-name "$PROFILE_NAME" \
--query "{name:name,sku:sku.name}"
门户检查路径:
Azure Front Door and CDN profiles → 目标Profile → Security policies → 确认WAF policy已绑定到对应域名和路径。
七、开启诊断日志
Microsoft文档提醒,Azure Front Door的访问日志、健康探测日志和WAF日志默认不启用,需要配置诊断设置。
bash
AFD_ID=$(az afd profile show \
--resource-group "$RESOURCE_GROUP" \
--profile-name "$PROFILE_NAME" \
--query id -o tsv)
WORKSPACE_ID=$(az monitor log-analytics workspace show \
--resource-group "$RESOURCE_GROUP" \
--workspace-name "$LOG_WORKSPACE" \
--query id -o tsv)
az monitor diagnostic-settings create \
--name afd-diagnostics \
--resource "$AFD_ID" \
--workspace "$WORKSPACE_ID" \
--logs '[{"category":"FrontDoorAccessLog","enabled":true},{"category":"FrontDoorWebApplicationFirewallLog","enabled":true},{"category":"FrontDoorHealthProbeLog","enabled":true}]'
八、用KQL验证

查询WAF命中:
kusto
AzureDiagnostics
| where Category == "FrontDoorWebApplicationFirewallLog"
| project TimeGenerated, action_s, ruleName_s, clientIP_s, requestUri_s
| order by TimeGenerated desc
查询被Block请求:
kusto
AzureDiagnostics
| where Category == "FrontDoorWebApplicationFirewallLog"
| where action_s =~ "Block"
| summarize count() by ruleName_s, bin(TimeGenerated, 10m)
查询访问日志中的状态码:
kusto
AzureDiagnostics
| where Category == "FrontDoorAccessLog"
| summarize count() by httpStatusCode_d, bin(TimeGenerated, 10m)
九、验收清单
| 验收项 | 方法 | 标准 |
|---|---|---|
| WAF策略 | waf-policy show |
Enabled |
| 托管规则 | managed-rules | 有规则集 |
| 限速规则 | custom rule | 优先级和阈值正确 |
| 关联关系 | Portal Security policies | 绑定目标域名 |
| WAF日志 | KQL | 有命中记录 |
| 访问日志 | KQL | 有状态码和路径 |
十、常见坑
第一,策略创建了但没关联到Front Door域名或路径。
第二,直接Prevention导致误伤。先Detection观察。
第三,限速阈值过低,误伤共享出口IP。
第四,只开WAF不开日志,无法复盘。
第五,把WAF当成应用鉴权,忽略代码层权限控制。
结语
Azure Front Door WAF适合给跨地区网站和API建立边缘防护。小团队先做托管规则、API限速、诊断日志和KQL验证,就能把"开了WAF"变成可验证、可复盘的安全能力。
如需国际云服务器合规开户流程咨询、Azure Front Door与WAF部署、实例选型、安全加固和运维支持,可通过平台私信说明业务地区、访问量、接口类型和预算上限。客户本人完成实名、验证码、支付和合同确认;本文不含返佣链接,不承诺百分百防护或固定节省比例。
官方资料
- Azure Front Door WAF overview:https://learn.microsoft.com/en-us/azure/frontdoor/web-application-firewall
- Azure Front Door WAF custom rules:https://learn.microsoft.com/en-us/azure/web-application-firewall/afds/waf-front-door-custom-rules
- Configure WAF rate-limit rule:https://learn.microsoft.com/en-us/azure/web-application-firewall/afds/waf-front-door-rate-limit-configure
- Azure Front Door WAF monitoring and logging:https://learn.microsoft.com/en-us/azure/web-application-firewall/afds/waf-front-door-monitor
- Configure Azure Front Door logs:https://learn.microsoft.com/en-us/azure/frontdoor/standard-premium/how-to-logs