默认情况下,当 Azure Front Door Web 应用程序防火墙(WAF)由于匹配的规则而阻止请求时,它将返回一个 403 状态代码,其中包含消息“请求被阻止”。默认消息还包括用于链接到请求 的日志条目 的跟踪引用字符串。
本文介绍如何使用 Azure 门户、PowerShell 或 Azure CLI 为用例配置自定义响应状态代码和包含引用字符串的自定义消息。
先决条件
拥有有效订阅的 Azure 帐户。 免费创建帐户。
Azure Cloud Shell 或 Azure PowerShell。
本文中的步骤在 Azure Cloud Shell 中以交互方式运行 Azure PowerShell cmdlet 命令。 若要在 Cloud Shell 中运行 cmdlet,请选择代码块右上角的“打开 Cloud Shell”。 选择“复制”以复制代码,并将其粘贴到 Cloud Shell 以运行。 也可以从 Azure 门户中运行 Cloud Shell。
也可以在本地安装 Azure PowerShell 以运行 cmdlet。 本文需要 Azure PowerShell 模块。 如果在本地运行 PowerShell,请使用 Connect-AzAccount cmdlet 登录到 Azure。
拥有有效订阅的 Azure 帐户。 免费创建帐户。
Azure Cloud Shell 或 Azure CLI。
本文中的步骤在 Azure Cloud Shell 中以交互方式运行 Azure CLI 命令。 要在 Cloud Shell 中运行命令,请选择代码块右上角的“打开 Cloud Shell”。 选择“复制”以复制代码,并将其粘贴到 Cloud Shell 以运行。 也可以从 Azure 门户中运行 Cloud Shell。
还可以 在本地安装 Azure CLI 以运行命令。 本文需要 Azure CLI 2.67.0 或更高版本和 前端 扩展。 运行 az --version 命令查找安装的版本。 如果在本地运行 Azure CLI,请使用 az login 命令登录到 Azure。
若要自定义响应状态代码和正文,请执行以下步骤:
在 Azure 门户中转到 Front Door WAF 策略。
在 “设置”下,选择“ 策略设置”。
分别在 “阻止响应状态代码 ”和 “阻止响应正文 ”框中输入自定义响应状态代码和响应正文。
选择“保存”。
若要自定义响应状态代码和正文,请使用 Update-AzFrontDoorWafPolicy cmdlet。
# Update WAF policy settings to customize response body and status code
Update-AzFrontDoorWafPolicy `
-Name 'myWAFPolicy' `
-ResourceGroupName 'myResourceGroup' `
-RequestBodyCheck 'Enabled' `
-RedirectUrl 'https://learn.microsoft.com/en-us/azure/web-application-firewall/' `
-CustomBlockResponseStatusCode '403' `
-CustomBlockResponseBody '<html><head><title>WAF Demo</title></head><body><p><h1><strong>WAF Custom Response Page</strong></h1></p><p>Please contact us with this information:<br>{{azure-ref}}</p></body></html>'
若要自定义响应状态代码和正文,请使用 az network front-door waf-policy update 命令。
# Update WAF policy settings to customize response body and status code
az network front-door waf-policy update \
--name 'myWAFPolicy' \
--resource-group 'myResourceGroup' \
--request-body-check 'Enabled' \
--redirect-url 'https://learn.microsoft.com/en-us/azure/web-application-firewall/' \
--custom-block-response-status-code '403' \
--custom-block-response-body 'PGh0bWw+PGhlYWQ+PHRpdGxlPldBRiBEZW1vPC90aXRsZT48L2hlYWQ+PGJvZHk+PHA+PGgxPjxzdHJvbmc+V0FGIEN1c3RvbSBSZXNwb25zZSBQYWdlPC9zdHJvbmc+PC9oMT48L3A+PHA+UGxlYXNlIGNvbnRhY3QgdXMgd2l0aCB0aGlzIGluZm9ybWF0aW9uOjxicj57e2F6dXJlLXJlZn19PC9wPjwvYm9keT48L2h0bWw+'
注释
参数的值 --custom-block-response-body
必须是 base64 编码的字符串。
在前面的示例中,响应代码保留为 403,其中包含一条自定义消息:“请与我们联系,了解此信息:”。
注释
{{azure-ref}}
在响应正文中插入唯一引用字符串。 此值与 FrontDoorAccessLog
和 FrontDoorWebApplicationFirewallLog
日志中的 TrackingReference 字段匹配。
重要
如果将块响应正文留空,WAF 会对正常 WAF 块返回“403 禁止”响应,对速率限制块返回“429 请求过多”响应。
后续步骤