根據預設,當 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 請求過多。
後續步驟