本文介绍如何为 Microsoft Entra 外部 ID 租户启用 Azure Web 应用程序防火墙(WAF)服务。 Azure WAF 可保护 Web 应用程序免受常见的攻击和漏洞,例如跨站点脚本、分布式拒绝服务 (DDoS) 攻击和恶意机器人活动。
先决条件
- Azure 订阅。 如果没有帐户,免费获取一个 Azure 帐户。
- Microsoft Entra 外部 ID 租户。 使用租户中的用户流验证用户凭据的授权服务器,也称为标识提供者 (IdP)。 了解如何创建外部租户。
- Azure Front Door Premium。 Azure Front Door 为 Microsoft Entra 外部 ID 租户启用自定义域,并提供安全优化功能以及对 WAF 托管规则集的访问权限。
- Azure Web 应用程序防火墙(需要高级 SKU)。 Azure WAF 管理授权服务器接收的流量。
- 自定义域。 与 Azure Front Door 中的自定义域功能一起使用。 了解如何为外部租户中的应用启用自定义 URL 域。
重要
在配置自定义域后,在使用之前,先测试您的自定义域。
启用 Azure Web 应用程序防火墙
若要启用 WAF 进行保护,请配置 WAF 策略并将其与 Azure Front Door Premium 相关联。 Microsoft优化 Azure Front Door 高级版的安全性,并管理 WAF 提供的规则集,以防止常见的漏洞,包括跨站点脚本和 Java 攻击。 此外,Azure WAF 还提供规则集,可帮助防范恶意机器人活动,并为应用程序提供第 7 层 DDoS 防护。
创建 Azure Web 应用程序防火墙策略
使用以下步骤创建 WAF 策略。
- 登录 Azure 门户。
- 在 Azure 服务下,选择 创建资源。
- 在搜索栏中,键入
Azure WAF ,然后从Microsoft中选择Azure 服务 Web 应用程序防火墙(WAF)。 - 选择 创建。
- 转到 创建 WAF 策略。
- 选择“基本信息”。
- 对于“策略适用范围”,请选择“全局 WAF (Front Door)”。
- 对于“Front Door SKU”,请选择“Premium SKU”。
- 对于“订阅”,请选择 Front Door 订阅名称。
- 对于“资源组”,请选择 Front Door 资源组名称。
- 对于“策略名称”,请输入 WAF 策略的唯一名称。
- 对于“策略状态”,选择“已启用”。
- 对于“策略模式”,选择“检测”。
- 转到“创建 WAF 策略”>“关联”。
- 选择“+ 关联 Front Door 配置文件”。
- Front Door:选择与你的 Microsoft Entra 外部 ID 自定义域关联的 Front Door 名称。
- 域:选择要将 WAF 策略关联到的 Microsoft Entra 外部 ID 自定义域。
- 选择“添加”。
- 选择“查看 + 创建”。
- 选择 创建。
配置默认规则集
创建新的 WAF 策略后,Azure Front Door 会自动使用最新版本的 Azure 托管的默认规则集(DRS)进行部署。 此规则集保护 Web 应用程序免受常见漏洞和攻击。 Azure 托管的规则集可防范常见的安全威胁。 Azure 根据需要管理和更新这些规则集,以防止新的攻击签名。 DRS 包含 Microsoft 威胁情报收集规则,这些规则提供更高的覆盖范围、特定的漏洞修补程序并进一步减少误报。
配置机器人管理器规则集
默认情况下,Azure Front Door WAF 部署了最新版本的 Azure 托管机器人管理器规则集。 此规则集将机器人流量分类为好、坏和未知。 WAF 平台管理并动态更新此规则集后面的机器人签名。
配置速率限制
Azure Front Door 的速率限制使你能够检测并阻止来自任何套接字 IP 地址的异常高流量。 使用 Azure Front Door 中的 Azure WAF 缓解某些类型的拒绝服务攻击。 速率限制可以保护因配置错误而在短时间内意外发送大量请求的客户端。 必须使用自定义规则手动为 WAF 配置速率限制。
配置检测和防护模式
创建 WAF 策略后,Azure 会在 检测模式启动策略。 根据流量调整 WAF 时,将 WAF 策略保留在“检测模式”。 在 检测模式中,WAF 不会阻止请求。 相反,WAF 会在启用日志记录后记录与 WAF 规则匹配的请求。
启用日志记录且 WAF 收到请求流量后,查看日志并调整 WAF。
以下查询展示了过去24小时内,一项示例WAF策略所阻止的请求。 详细信息包括规则名称、请求数据、策略采取的操作和策略模式。
AzureDiagnostics
| where TimeGenerated >= ago(24h)
| where Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"
| project RuleID=ruleName_s, DetailMsg=details_msg_s, Action=action_s, Mode=policyMode_s, DetailData=details_data_s
RuleID | DetailMsg | 操作 | 模式 | 详细数据 |
---|---|---|---|---|
DefaultRuleSet-1.0-SQLI-942430 | 受限 SQL 字符异常情况检测 (args):已超出特殊字符数 (12) | 阻止 | 检测 | 匹配的数据:CfDJ8KQ8bY6D |
查看 WAF 日志,以确定 WAF 的规则是否导致任何误报。 然后使用排除项来减少 WAF 误报。 配置 Web 应用程序防火墙排除列表。 使用 Azure Front Door 排除列表配置
设置日志记录并且 WAF 开始接收流量后,您可以评估您的机器人管理规则在处理机器人流量方面的有效性。 以下查询显示了示例机器人管理器规则集按机器人类型分类的操作。 在“检测模式”下,WAF 仅记录机器人流量操作。 切换到 防护模式后,WAF 将开始主动阻止不需要的机器人流量。
AzureDiagnostics
| where Category == "FrontDoorWebApplicationFirewallLog"
| where action_s in ("Log", "Allow", "Block", "JSChallenge", "Redirect") and ruleName_s contains "BotManager"
| extend RuleGroup = extract("Microsoft_BotManagerRuleSet-[\\d\\.]+-(.*?)-Bot\\d+", 1, ruleName_s)
| extend RuleGroupAction = strcat(RuleGroup, " - ", action_s)
| summarize Hits = count() by RuleGroupAction, bin(TimeGenerated, 30m)
| project TimeGenerated, RuleGroupAction, Hits
| render columnchart kind=stacked
从检测模式切换到预防模式
若要观察请求流量的活动,请从 Azure 门户中 WAF 策略的“概述”页选择“切换到预防模式”。 此选择将模式从 检测模式 更改为 防护模式。 WAF 会阻止与 WAF 策略中的规则匹配的请求,并将其记录在 WAF 日志中。 当请求与一个或多个规则匹配并记录结果时,WAF 会采取规定的操作。 默认情况下,DRS 设置为 异常评分模式;WAF 不会对请求执行操作,除非它满足异常分数阈值。
若要还原为 检测模式,请从“概述”页中选择 切换到检测模式。