在 Azure 應用程式閘道上自訂 Web 應用程式防火牆 v2 的規則

適用於: ✔️應用閘道 v2

Azure 應用程式閘道 Web 應用程式防火牆(WAF)v2 包含一套預先配置的平台管理規則集,能防禦多種不同類型的攻擊。 這些攻擊包括跨站腳本、SQL 注入等。 如果您是 WAF 管理員,建議您撰寫自己的規則,加強核心規則集 (CRS) 規則。 你的自訂規則可以根據符合條件封鎖、允許或記錄請求流量。 如果你把 WAF 政策設為偵測模式,並觸發自訂封鎖規則,請求會被記錄,且不會採取阻擋行動。

使用自訂規則來建立你自己的規則,讓 WAF 對每個請求進行評估。 這些規則的優先權高於管理規則集中的其他規則。 自訂規則包含規則名稱、規則優先順序和比對條件的陣列。 若符合這些條件,WAF 會採取行動允許、封鎖或記錄。 如果自訂規則觸發,WAF 採取允許或封鎖的動作,WAF 不會再從自訂或管理規則中執行任何後續行動。 如果自訂規則觸發允許或封鎖動作,你仍可能看到一些來自已設定規則集(核心規則集/預設規則集)的規則匹配日誌事件,但這些規則不會被強制執行。 記錄事件顯示的原因僅是 WAF 引擎為平行規則處理強制執行最佳化,可安全忽略。 你可以隨時啟用或停用自訂規則。

例如,您可以封鎖 192.168.5.0/24 範圍內 IP 位址的所有要求。 在此規則中,運算子是 IPMatch,matchValues 是 IP 位址範圍 (192.168.5.0/24),動作是封鎖流量。 你也可以設定規則名稱、優先順序,以及啟用或停用狀態。

自訂規則支援使用複合邏輯,建立更進階的規則,滿足您的安全性需求。 例如,您可以使用兩個自訂規則,來建立下列邏輯 ((rule1:Condition 1 和 rule1:Condition 2) 或 rule2:Condition 3)。 此邏輯表示,如果符合條件 1 和條件 2,或符合條件 3,WAF 就應採取自訂規則中指定的動作。

相同規則內的不同比對條件一律會使用和結合。 例如,封鎖來自特定 IP 位址的流量,和只在使用特定瀏覽器時。

如果要在兩個不同的條件之間使用 OR ,則這兩個條件必須採用不同的規則。 例如,封鎖來自特定 IP 位址的流量,或在使用特定瀏覽器時封鎖流量。

自訂規則也支援正則表達式,就像 CRS 規則集一樣。 如需範例,請參閱建立和使用自訂 Web 應用程式防火牆規則中的範例 3 和 5。

注意

你可以建立最多 100 條 WAF 自訂規則。 如需應用程式閘道限制的詳細資訊,請參閱 Azure 訂用帳戶和服務限制、配額與限制式。

警告

你在應用程式閘道層套用的任何重定向規則都會繞過 WAF 自訂規則。 如需詳細資訊,請參閱應用程式閘道重新導向概觀。

允許與封鎖的對比

你可以用自訂規則輕鬆允許或阻擋流量。 例如,你可以封鎖來自多個 IP 位址範圍的所有流量。 如果請求來自特定瀏覽器,你可以建立另一條規則來允許流量。

要允許某件事,請將參數設 -Action 為 允許。 要阻擋某物,將參數設 -Action 為 阻擋。

$AllowRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example1 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Allow `
   -State Enabled

$BlockRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example2 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Block `
   -State Enabled

上一個 $BlockRule 會對應至 Azure Resource Manager 中的下列自訂規則:

"customRules": [
      {
        "name": "blockEvilBot",
        "priority": 2,
        "ruleType": "MatchRule",
        "action": "Block",
        "state": "Enabled",
        "matchConditions": [
          {
            "matchVariables": [
              {
                "variableName": "RequestHeaders",
                "selector": "User-Agent"
              }
            ],
            "operator": "Contains",
            "negationCondition": false,
            "matchValues": [
              "evilbot"
            ],
            "transforms": [
              "Lowercase"
            ]
          }
        ]
      }
    ], 

此自訂規則包含名稱、優先順序、動作,以及必須符合才能執行動作的比對條件陣列。 如需這些欄位的進一步說明,請參閱下列欄位說明。 若如範例自訂規則,請參閱建立和使用自訂 Web 應用程式防火牆規則。

注意

WAF 自定義規則不支援根據檔名或檔類型允許或封鎖要求。

自訂規則的欄位

名稱 [選用]

規則的名稱。 這會顯示在記錄中。

啟用規則 [選用]

開啟或關閉這條規則。 自訂規則依預設會啟用。

優先順序 [必要]

  • 決定規則評估順序。 值越低,規則評估越早。 允許的範圍是1到100。
  • 在所有自訂規則中必須是唯一的。 優先順序 40 的規則會比優先順序 80 的規則先評估。

規則類型 [必要]

目前必須為 MatchRule。

比對變數 [必要]

必須是下列任一變數:

  • RemoteAddr – 遠端電腦連線的 IPv4 位址或範圍
  • RequestMethod – HTTP 請求方法
  • QueryString – URI 中的變數
  • PostArgs – POST 本文中傳送的引數。 使用此匹配變數的自訂規則僅適用於「Content-Type」標頭設為「application/x-www-form-urlencoded」或「multipart/form-data」時。 CRS 3.2 或更高版本支援額外的內容類型 application/json,並支援機器人防護規則集及地理匹配自訂規則。
  • RequestUri – 要求的 URI
  • RequestHeaders – 要求的標頭
  • RequestBody – 此變數包含整個要求本文。 使用此匹配變數的自訂規則僅適用於「Content-Type」標頭設為 application/x-www-form-urlencoded 媒體類型時。 CRS 3.2 或更高版本支援額外的內容類型 application/soap+xml, application/xml, text/xml,並支援機器人防護規則集和地理位置匹配自訂規則。
  • RequestCookies – 要求的 Cookie

選取器 [選用]

說明 matchVariable 集合的欄位。 舉例來說,如果 matchVariable 是 RequestHeaders,則選取器可能位於 User-Agent 標頭上。

運算子 [必要]

請使用以下其中一種運算子:

  • IPMatch - 僅在匹配變數為 RemoteAddr 且僅支援 IPv4 時使用。
  • Equal - 當輸入與 MatchValue 相同時使用。
  • Any - 當沒有 MatchValue 時使用。 建議搭配具有有效選取器的比對變數使用。
  • Contains - 當 MatchValue 僅為明確值時使用。 不支援通配符和正則表達式。
  • LessThan
  • GreaterThan
  • LessThanOrEqual
  • GreaterThanOrEqual
  • BeginsWith
  • EndsWith
  • Regex
  • Geomatch

否定條件 [選用]

否定目前的條件。

轉換 [選用]

一串字串值,指定在嘗試匹配前要套用的轉換。 可用的轉換包括:

  • 小寫
  • 大寫
  • Trim
  • UrlDecode
  • UrlEncode
  • RemoveNulls
  • HtmlEntityDecode

比對值 [必要]

一份要比對的數值清單,你可以把它們當作 OR 處理。 例如,清單可能包含 IP 位址或其他字串。 值格式取決於上一個運算子。

注意

若您的 WAF 運行核心規則集(CRS)3.1 或其他更早版本的 CRS,匹配值僅接受字母、數字及標點符號。 不支援引號 "、 '、空格。

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

  • GET
  • HEAD
  • 郵件
  • 選項
  • PUT
  • 刪除
  • 修補檔

動作 [必要]

在 WAF 原則偵測模式中,如果觸發自訂規則,則一律會記錄動作,而不論自訂規則上設定的動作值為何。

  • Allow – 授權交易,略過所有其他規則。 指定的要求會新增至允許清單,一旦相符,要求就會停止進一步評估,並傳送至後端集區。 系統不會針對任何其他自訂規則或受控規則,評估允許清單上的規則。
  • 封鎖 - 根據 SecDefaultAction(偵測或防止模式)封鎖或記錄交易。 - 預防模式 - 根據 SecDefaultAction 阻擋交易。 就像 Allow 動作一樣,一旦請求被評估並加入封鎖清單,評估就會停止,請求也會被封鎖。 系統不會評估在那之後符合相同條件的任何要求,而是會將其封鎖。
    • 偵測模式 - 根據 SecDefaultAction 記錄交易,之後停止評估。 在此滿足相同條件之後的任何請求都不會被評估並記錄下來。
  • Log – 讓規則寫入記錄,但讓其餘規則執行以供評估。 系統會依優先順序評估其他自訂規則,接著是受控規則。

複製和重複自訂規則

你可以在特定政策內重複自訂規則。 當你複製規則時,你需要指定規則的唯一名稱和唯一的優先權值。 此外,只要兩個政策都在同一訂閱中,你可以將自訂規則從一個 Application Gateway 的 WAF 政策複製到另一個。 當你從一個政策複製規則到另一個時,你需要選擇你想複製該規則的 Application Gateway WAF 政策。 一旦你選擇了 WAF 政策,你需要為該規則命名唯一,並分配優先權等級。

地區比對自訂規則

自訂規則可讓您建立量身打造的規則,以符合您應用程式和安全性原則的確切需求。 你可以依國家或地區限制對網頁應用程式的存取權限。 如需詳細資訊,請參閱 Geomatch 自訂規則 (機器翻譯)。

後續步驟