Share via


使用 WAF 為 Azure Front Door 設定 IP 限制規則

本文說明如何使用 Azure 入口網站、Azure CLI、Azure PowerShell 或 Azure Resource Manager 範本,在 Web 應用程式防火牆 (WAF) 中為 Azure Front Door 設定 IP 限制規則。

IP 位址型存取控制規則是一種自訂 WAF 規則,可讓您控制 Web 應用程式的存取。 此規則會以無類別網域間路由選擇 (CIDR) 格式指定 IP 位址或 IP 位址範圍的清單。

IP 位址比對中有兩種類型的比對變數:RemoteAddrSocketAddrRemoteAddr 變數通常為以 X-Forwarded-For 要求標頭傳送的原始用戶端 IP。 SocketAddr 變數是 WAF 會看到的來源 IP 位址。 如果您的使用者位於 Proxy 後方,SocketAddr 通常是 Proxy 伺服器位址。

根據預設,Web 應用程式可從網際網路存取。 如果您想要限制從已知 IP 位址或 IP 位址範圍清單存取用戶端,則可建立 IP 比對規則,其中包含 IP 位址清單做為比對值,並將運算子設定為 Not (否定值為 true ) 並將動作設定為 Block。 套用 IP 限制規則之後,來自此允許清單外部地址的要求會收到「403 禁止」回應。

使用 Azure 入口網站設定 WAF 原則

請遵循下列步驟,使用 Azure 入口網站設定 WAF 原則。

必要條件

請遵循快速入門:為高可用性全球 Web 應用程式建立 Azure Front Door 執行個體 (部分機器翻譯) 中所述的指示來建立 Azure Front Door 設定檔。

建立 WAF 原則

  1. 在 Azure 入口網站中,選取 [建立資源]。 在 [搜尋服務和市集] 搜尋方塊中輸入 Web 應用程式防火牆 ,然後選取 Enter。 然後選取 [Web 應用程式防火牆 (WAF)]

  2. 選取 建立

  3. 在 [建立 WAF 原則] 頁面上,使用下列值來完成 [基本] 索引標籤。

    設定
    原則適用對象 全域 WAF (Front Door)。
    Front Door 分層 選取 [進階] 或 [標準] 以符合您的 Azure Front Door 階層。
    訂用帳戶 選取您的訂用帳戶。
    資源群組 選取 Azure Front Door 執行個體所在的資源群組。
    原則名稱 輸入原則的名稱。
    原則狀態 已選取。
    原則模式 防護。
  4. 選取 [下一步:受控規則]

  5. 選取 [下一步: 原則設定]

  6. 在 [原則設定] 索引標籤上,針對 [封鎖回應本文] 輸入您已遭封鎖!,使您可以看到自訂規則已經生效。

  7. 選取 [下一步:自訂規則]

  8. 選取 [新增自訂規則]

  9. 在 [新增自訂規則] 頁面上,請使用下列測試值來建立自訂規則。

    設定
    自訂規則名稱 FdWafCustRule
    狀態 已啟用
    規則類型 比對
    優先順序 100
    比對類型 IP 位址
    比對變數 SocketAddr
    作業 不包含
    IP 位址或範圍 10.10.10.0/24
    結果為 拒絕流量

    Custom rule

    選取 [新增]。

  10. 選取 [下一步:關聯]

  11. 選取 [與 Front Door 設定檔建立關聯]

  12. 針對 [前端設定檔],選取您的前端設定檔。

  13. 針對 [網域],選取網域。

  14. 選取 [新增]。

  15. 選取 [檢閱 + 建立]。

  16. 原則驗證完成後,選取 [建立]

測試 WAF 原則

  1. WAF 原則部署完成之後,瀏覽至 Azure Front Door 前端主機名稱。

  2. 您應會看見自訂封鎖訊息。

    WAF rule test

    注意

    自訂規則中會刻意使用私人 IP 位址,以確保觸發規則。 在實際部署中,使用您特定情況的 IP 位址建立「允許」和「拒絕」規則。

使用 Azure CLI 設定 WAF 原則

請遵循下列步驟,使用 Azure CLI 設定 WAF 原則。

必要條件

開始設定 IP 限制原則之前,請先設定 CLI 環境並建立 Azure Front Door 設定檔。

設定 Azure CLI 環境

  1. 安裝 Azure CLI 或使用 Azure Cloud Shell。 Azure Cloud Shell 是免費的 Bash Shell,您可以直接在 Azure 入口網站內執行。 它具有預先安裝和設定的 Azure CLI,可與您的帳戶搭配使用。 在接下來的 CLI 命令中,選取 [試用] 按鈕。 然後在開啟的 Cloud Shell 工作階段中登入您的 Azure 帳戶。 工作階段啟動之後,輸入 az extension add --name front-door 以新增 Azure Front Door 延伸模組。
  2. 如果在 Bash 中使用本機 CLI,請使用 az login 登入 Azure。

建立 Azure Front Door 設定檔

請遵循快速入門:為高可用性全球 Web 應用程式建立 Azure Front Door 執行個體 (部分機器翻譯) 中所述的指示來建立 Azure Front Door 設定檔。

建立 WAF 原則

使用 az network front-door waf-policy create 命令建立 WAF 原則。 在接下來的範例中以唯一原則名稱取代「IPAllowPolicyExampleCLI」原則名稱。

az network front-door waf-policy create \
  --resource-group <resource-group-name> \
  --subscription <subscription ID> \
  --name IPAllowPolicyExampleCLI

新增自訂 IP 存取控制規則

使用 az network front-door waf-policy custom-rule create 命令為您所建立的 WAF 原則新增自訂 IP 存取控制規則。

在下列範例中:

  • 以稍早建立的唯一原則取代「IPAllowPolicyExampleCLI」
  • 以您自己的範圍取代 ip-address-range-1ip-address-range-2

首先,為上一個步驟建立的原則建立 IP 允許規則。

注意

必須有 --defer,因為規則必須有比對條件,才能在下一個步驟中新增。

az network front-door waf-policy rule create \
  --name IPAllowListRule \
  --priority 1 \
  --rule-type MatchRule \
  --action Block \
  --resource-group <resource-group-name> \
  --policy-name IPAllowPolicyExampleCLI --defer

然後,將比對條件新增至規則:

az network front-door waf-policy rule match-condition add \
--match-variable SocketAddr \
--operator IPMatch \
--values "ip-address-range-1" "ip-address-range-2" \
--negate true \
--name IPAllowListRule \
  --resource-group <resource-group-name> \
  --policy-name IPAllowPolicyExampleCLI

尋找 WAF 原則的識別碼

使用 az network front-door waf-policy show 命令尋找 WAF 原則。 將下列範例中的「IPAllowPolicyExampleCLI」以您稍早建立的唯一原則取代。

az network front-door  waf-policy show \
  --resource-group <resource-group-name> \
  --name IPAllowPolicyExampleCLI

使用 az network front-door update 命令,將 Azure Front Door 的 「WebApplicationFirewallPolicyLink」識別碼設定為原則識別碼。 以稍早建立的唯一原則取代「IPAllowPolicyExampleCLI」

az network front-door update \
  --set FrontendEndpoints[0].WebApplicationFirewallPolicyLink.id=/subscriptions/<subscription ID>/resourcegroups/resource-group-name/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/IPAllowPolicyExampleCLI \
  --name <frontdoor-name> \
  --resource-group <resource-group-name>

在此範例中,WAF 原則會套用至 FrontendEndpoints[0]。 您可以將 WAF 原則連結至任何前端。

注意

您只需要設定 WebApplicationFirewallPolicyLink 屬性一次,即可將 WAF 原則連結至 Azure Front Door 前端。 後續原則更新會自動套用至前端。

使用 Azure PowerShell 設定 WAF 原則

請遵循下列步驟,使用 Azure PowerShell 設定 WAF 原則。

必要條件

開始設定 IP 限制原則之前,請先設定 PowerShell 環境並建立 Azure Front Door 設定檔。

設定 PowerShell 環境

Azure PowerShell 提供了一組 Cmdlet,會使用 Azure Resource Manager 模型來管理 Azure 資源。

您可以在本機電腦上安裝 Azure PowerShell,並將其用於任何 PowerShell 工作階段。 請遵循頁面上的指示,透過 Azure 認證登入 PowerShell,然後安裝 Az 模組。

  1. 使用下列命令連線至 Azure,並使用互動式對話方塊登入。

    Connect-AzAccount
    
  2. 在安裝 Azure Front Door 模組之前,請確定您已安裝最新版的 PowerShellGet 模組。 執行下列命令,並重新開啟 PowerShell。

    Install-Module PowerShellGet -Force -AllowClobber
    
  3. 使用下列命令安裝 Az.FrontDoor 模組:

    Install-Module -Name Az.FrontDoor
    

建立 Azure Front Door 設定檔

請遵循快速入門:建立高可用性全域 Web 應用程式的 Front Door 設定檔中所述的指示來建立 Azure Front Door 設定檔。

定義 IP 比對條件

使用 New-AzFrontDoorWafMatchConditionObject 命令來定義 IP 比對條件。 在下列範例中,以您自己的範圍取代 ip-address-range-1ip-address-range-2

$IPMatchCondition = New-AzFrontDoorWafMatchConditionObject `
-MatchVariable  SocketAddr `
-OperatorProperty IPMatch `
-MatchValue "ip-address-range-1", "ip-address-range-2"
-NegateCondition 1

建立自訂 IP 允許規則

使用 New-AzFrontDoorWafCustomRuleObject 命令來定義動作並設定優先順序。 在下列範例中,非來自符合清單用戶端 IP 的要求將會遭到封鎖。

$IPAllowRule = New-AzFrontDoorWafCustomRuleObject `
-Name "IPAllowRule" `
-RuleType MatchRule `
-MatchCondition $IPMatchCondition `
-Action Block -Priority 1

設定 WAF 原則

使用 Get-AzResourceGroup 尋找包含 Azure Front Door 設定檔的資源群組名稱。 接下來,使用 New-AzFrontDoorWafPolicy 設定具有 IP 規則的 WAF 原則。

  $IPAllowPolicyExamplePS = New-AzFrontDoorWafPolicy `
    -Name "IPRestrictionExamplePS" `
    -resourceGroupName <resource-group-name> `
    -Customrule $IPAllowRule`
    -Mode Prevention `
    -EnabledState Enabled

提示

針對現有的 WAF 原則,您可以使用 Update-AzFrontDoorWafPolicy 來更新原則。

將 WAF 原則物件連結至現有的前端主機,並更新 Azure Front Door 屬性。 請先使用 Get-AzFrontDoor 擷取 Azure Front Door 物件。 接下來,使用 Set-AzFrontDoor 命令,將 WebApplicationFirewallPolicyLink 屬性設定為在上一個步驟中所建立的 $IPAllowPolicyExamplePS 資源識別碼。

  $FrontDoorObjectExample = Get-AzFrontDoor `
    -ResourceGroupName <resource-group-name> `
    -Name $frontDoorName
  $FrontDoorObjectExample[0].FrontendEndpoints[0].WebApplicationFirewallPolicyLink = $IPBlockPolicy.Id
  Set-AzFrontDoor -InputObject $FrontDoorObjectExample[0]

注意

在此範例中,WAF 原則會套用至 FrontendEndpoints[0]。 您可以將 WAF 原則連結至任何前端。 您只需要設定 WebApplicationFirewallPolicyLink 屬性一次,即可將 WAF 原則連結至 Azure Front Door 前端。 後續原則更新會自動套用至前端。

使用 Resource Manager 範本設定 WAF 原則

若要檢視使用自訂 IP 限制規則建立 Azure Front Door 原則和 WAF 原則的範本,請前往 GitHub

下一步

了解如何建立 Azure Front Door 設定檔