共用方式為


Azure Front Door 上 Azure Web 應用程式防火牆的自訂規則

Azure Front Door 上的 Azure Web 應用程式防火牆,可讓您根據自行定義的條件來控制 Web 應用程式的存取權。 自訂 Web 應用程式防火牆 (WAF) 規則包含優先順序號碼、規則類型、比對條件和動作。

自訂規則有兩種類型:對比規則和速率限制規則。 比對規則會根據一組比對條件控制存取權。 速率限制規則會根據比對條件和傳入要求的速率來控制存取權。 您可以停用自訂規則,以防止對其進行評估,但仍會保留該設定。

如需速率限制的詳細資訊,請參閱什麼是 Azure Front Door 的速率限制?

優先順序、動作類型和比對條件

您可以使用定義優先順序編號、規則類型、比對條件陣列和動作的自訂 WAF 規則來控制存取。

  • 優先順序

    描述 WAF 規則評估順序的唯一整數。 在具有較高值的規則之前,系統會先評估優先順序較低的規則。 除了記錄以外,規則評估會在任何規則動作上停止。 優先順序編號在所有自訂規則中都必須是唯一的。

  • 動作

    定義如何在符合 WAF 規則時路由傳送要求。 您可以選擇下列其中一個動作,以在要求符合自訂規則時套用。

    • 允許:WAF 允許要求處理、記錄 WAF 記錄中的項目,然後結束。
    • 封鎖:已封鎖要求。 WAF 會將回應傳送至用戶端,而不需要進一步轉送要求。 WAF 會記錄 WAF 記錄中的項目並結束。
    • 記錄:WAF 會記錄 WAF 記錄中的項目,並繼續以優先順序評估下一個規則。
    • 重新導向:WAF 會將要求重新導向至指定的 URI、記錄 WAF 記錄中的項目,然後結束。
  • 比對條件

    定義比對變數、運算子和比對值。 每個規則可能包含多個比對條件。 比對條件可能會以地理位置、用戶端 IP 位址 (CIDR)、大小或字串比對為基礎。 字串比對可以針對相符變數的清單。

    • 比對變數

      • RequestMethod
      • QueryString
      • PostArgs
      • RequestUri
      • RequestHeader
      • RequestBody
      • Cookie
    • 運算子

      • Any:通常用來定義沒有任何規則相符的預設動作。 Any 是符合所有情況的運算子。
      • 等於
      • 包含
      • LessThan:大小限制
      • GreaterThan:大小限制
      • LessThanOrEqual:大小限制
      • GreaterThanOrEqual:大小限制
      • BeginsWith
      • EndsWith
      • RegEx
    • Regex

      不支援下列作業:

      • 反向參考和擷取子運算式
      • 任意零寬判斷提示
      • 副程式參考和遞迴模式
      • 條件式模式
      • 回溯控制項動詞
      • \C 單一位元組指示詞
      • \R 新行比對指示詞
      • \K 比對重設指示詞的開始
      • 圖說文字和內嵌程式碼
      • 不可部分完成的群組和獨吐量詞
    • 否定 [選用]

      如果條件的結果應是否定,則您可以將 negate 條件設定為 true

    • 轉換 [選用]

      具有要在嘗試比對前進行轉換之名稱的字串清單。 可為下列轉換:

      • 大寫
      • 小寫
      • Trim
      • RemoveNulls
      • UrlDecode
      • UrlEncode
    • 比對值

      支援的 HTTP 要求方法值包含:

      • GET
      • POST
      • PUT
      • HEAD
      • DELETE
      • LOCK
      • UNLOCK
      • 設定檔
      • OPTIONS
      • PROPFIND
      • PROPPATCH
      • MKCOL
      • 複製
      • MOVE
      • 修補檔
      • CONNECT

範例

請思考一下下列範例。

根據 HTTP 要求參數進行比對

假設您需要設定自訂規則,以允許符合下列兩個條件的要求:

  • Referer 標頭的值等於已知值。
  • 查詢字串不包含「password」一詞。

以下是自訂規則的範例 JSON 描述:

{
  "name": "AllowFromTrustedSites",
  "priority": 1,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestHeader",
      "selector": "Referer",
      "operator": "Equal",
      "negateCondition": false,
      "matchValue": [
        "www.mytrustedsites.com/referpage.html"
      ]
    },
    {
      "matchVariable": "QueryString",
      "operator": "Contains",
      "matchValue": [
        "password"
      ],
      "negateCondition": true
    }
  ],
  "action": "Allow"
}

封鎖 HTTP PUT 要求

假設您需要封鎖任何使用 HTTP PUT 方法的要求。

以下是自訂規則的範例 JSON 描述:

{
  "name": "BlockPUT",
  "priority": 2,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestMethod",
      "selector": null,
      "operator": "Equal",
      "negateCondition": false,
      "matchValue": [
        "PUT"
      ]
    }
  ],
  "action": "Block"
}

大小限制

Azure Front Door WAF 可讓您組建自訂規則,以針對傳入要求的一部分套用長度或大小限制式。 測量此大小限制式 (以位元組為單位)。

假設您需要封鎖 URL 長度超過 100 個字元的要求。

以下是自訂規則的範例 JSON 描述:

{
  "name": "URLOver100",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "GreaterThanOrEqual",
      "negateCondition": false,
      "matchValue": [
        "100"
      ]
    }
  ],
  "action": "Block"
}

根據要求 URI 進行比對

假設您需要允許 URI 包含 'login' 的要求。

以下是自訂規則的範例 JSON 描述:

{
  "name": "URIContainsLogin",
  "priority": 5,
  "ruleType": "MatchRule",
  "matchConditions": [
    {
      "matchVariable": "RequestUri",
      "selector": null,
      "operator": "Contains",
      "negateCondition": false,
      "matchValue": [
        "login"
      ]
    }
  ],
  "action": "Allow"
}

複製自訂規則

自訂規則可以在指定的原則內重複。 複製規則時,您必須為規則指定唯一的名稱和唯一的優先順序值。 此外,只要原則都在相同的訂用帳戶中,就可以將自訂規則從 Azure Front Door WAF 原則複製到另一個原則。 將規則從某個原則複製到另一個原則時,您必須選取想要將規則複製到其中的 Azure Front Door WAF 原則。 選取 WAF 原則之後,您需要為規則指定唯一的名稱,並指派優先順序排名。

下一步