越来越多的企业坚持对内部应用程序采用 API 优先的方法,针对 Web 应用程序的安全攻击的数量和复杂性不断发展。 这种情况要求企业采用强大的安全策略来保护 API 免受各种 Web 应用程序攻击。
Azure Web 应用程序防火墙(WAF) 是一种 Azure 网络产品,可保护 API 免受各种 OWASP 前 10 个 Web 攻击、CVE 和恶意机器人攻击。
本文介绍如何使用 Azure Front Door 上的 Azure Web 应用程序防火墙来保护 Azure API 管理上托管的 API
创建 APIM 实例并在 APIM 中发布 API,以生成模拟 API 响应
创建 APIM 实例。 有关详细信息,请参阅 快速入门:使用 Azure 门户创建新的 Azure API 管理服务实例。
以下屏幕截图显示已创建名为 contoso-afd-apim-resource 的 APIM 实例。 创建和激活 API 管理服务最多可能需要 30 到 40 分钟。
创建 API 并生成模拟 API 响应。 有关详细信息,请参阅 教程:模拟 API 响应。
将上述教程中给定 的测试 API 中的 API 名称替换为 Book API。
Book API 执行
_/test_
GET作作为 API 的 URL 路径。 可以看到 API 的响应设置为 “200 正常 ”,内容类型为 application/json,文本为{“Book”:” $100”}
。取消选中“API 设置”选项卡下的“ 需要订阅 ”复选框,然后选择“ 保存”。
从 APIM 接口测试模拟响应。 应收到 200 正常 响应。
现在,已创建书籍 API。 成功调用此 URL 将返回 200 正常 响应,并将书籍的价格返回为 $100。
使用 APIM 托管 API 作为源创建 Azure Front Door Premium 实例
Microsoft托管的默认 规则集基于 OWASP 核心规则集 ,包括Microsoft威胁情报规则。
注释
托管规则集不适用于 Azure Front Door 标准 SKU。 有关不同 SKU 的详细信息,请参阅 Azure Front Door 层比较。
使用快速创建选项中所述的步骤,在同一资源组中创建具有关联 WAF 安全策略的 Azure Front Door Premium 配置文件:
快速入门:创建 Azure Front Door 配置文件 - Azure 门户
创建 Azure Front Door 配置文件时,请使用以下设置:
- 名称:myAzureFrontDoor
- 终结点名称:bookfrontdoor
- 源类型:API 管理
- 源主机名:contoso-afd-apim-resource.azure-api.net(contoso-afd-apim-resource)
- WAF 策略:使用名称 bookwafpolicy 创建新的 WAF 策略。
所有其他设置都保留默认值。
在阻止模式下启用 Azure Web 应用程序防火墙
选择“bookwafpolicy”Azure WAF 策略,并确保策略模式在 策略的概述选项卡中设置为“预防”
Azure WAF 检测模式用于测试和验证策略。 检测不会阻止呼叫,而是记录检测到的所有威胁,而阻止模式阻止调用(如果检测到攻击)。 通常,在切换到预防模式之前测试方案。 在本练习中,我们切换到预防模式。
Azure Front Door 上的 Azure Web 应用程序防火墙 提供有关各种 WAF 策略模式的详细信息。
仅通过 Azure Front Door 限制 APIM 访问
通过 Front Door 路由的请求包括特定于 Front Door 配置的标头。 可以将 检查标头策略 配置为入站 APIM 策略,以基于发送到 API 管理的 X-Azure-FDID HTTP 请求标头的唯一值筛选传入请求。 此标头值是可在 AFD 概述页上提供的 Azure Front Door ID。
从 AFD 概述页复制 Front Door ID。
访问 APIM API 页,选择“书籍 API”,选择“ 设计 ”和“ 所有”作。 在入站策略中,选择“ + 添加策略”。
选择“其他策略”
选择“显示代码段”,然后选择 “检查 HTTP 标头”。
将以下代码添加到 HTTP 标头
X-Azure-FDID
的入站策略。 将此{FrontDoorId}
ID 替换为本部分第一步中复制的 AFD ID。<check-header name="X-Azure-FDID" failed-check-httpcode="403" failed-check-error-message="Invalid request" ignore-case="false"> <value>{FrontDoorId}</value> </check-header>
选择“保存”。
此时,APIM 访问仅限于 Azure Front Door 终结点。
验证 API 调用是否通过 Azure Front Door 路由并受 Azure Web 应用程序防火墙保护
从 Front Door 管理器获取新创建的 Azure Front Door 终结点。
查看源组并确认源主机名 contoso-afd-apim-resource.azure-api.net。 此步骤验证 APIM 实例是否是新配置的 Azure Front Door 高级版中的源。
在 “安全策略 ”部分下,验证是否已预配 WAF 策略 bookwafpolicy 。
选择 bookwafpolicy 并验证 bookwafpolicy 是否已预配托管规则。 Microsoft_DefaultRueSet 和 Microsoft_BotManagerRuleSet 的最新版本已预配,可保护源免受 OWASP 前 10 个漏洞和恶意机器人攻击。
此时,将设置端到端调用,API 受 Azure Web 应用程序防火墙保护。
验证设置
通过浏览器通过 Azure Front Door 终结点访问 API。 API 应返回以下响应:
验证无法直接通过 Internet 访问 APIM,并且只能通过 AFD 访问:
现在,尝试通过任何 OWASP 前 10 个攻击或机器人攻击调用 AFD 终结点 URL,应收到
REQUEST IS BLOCKED
消息并阻止请求。 该 API 已受到 Azure Web 应用程序防火墙的 Web 攻击保护。