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

Azure 應用程式閘道 Web 應用程式防火牆 (WAF) v2 隨附預先設定的平臺管理規則集,可提供許多不同類型的攻擊保護。 這些攻擊包括跨網站腳本、SQL 插入和其他攻擊。 如果您是 WAF 系統管理員,您可能想要撰寫自己的規則來增強核心規則集 (CRS) 規則。 您的自定義規則可以根據比對準則封鎖、允許或記錄要求的流量。 如果WAF原則設定為偵測模式,並觸發自定義區塊規則,則會記錄要求,而且不會採取封鎖動作。

自定義規則可讓您建立自己的規則,針對通過 WAF 的每個要求進行評估。 這些規則的優先順序高於 Managed 規則集中的其餘規則。 自訂規則包含規則名稱、規則優先順序,以及相符條件的陣列。 如果符合這些條件,則會採取動作(以允許、封鎖或記錄)。 如果觸發自定義規則,並採取允許或封鎖動作,則不會評估任何進一步的自定義或受控規則。 您可以視需要啟用/停用自訂規則。

例如,您可以封鎖 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位址的流量,而且只有在使用特定瀏覽器時。

如果您想要在兩個不同的條件之間使用 ,則兩個條件必須位於不同的規則中。 例如,如果流量是使用特定瀏覽器,請封鎖來自特定IP位址的流量或封鎖流量。

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

注意

WAF 自定義規則的最大數目為 100。 如需 應用程式閘道 限制的詳細資訊,請參閱 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 應用程式防火牆規則

自訂規則的欄位

名稱 [選擇性]

規則的名稱。 它會出現在記錄中。

開啟規則 [選擇性]

開啟/關閉此規則。 預設會啟用自定義規則。

優先順序 [必要]

  • 決定規則估值順序。 值越低,則為先前的規則評估。 允許的範圍是從 1-100。
  • 在所有自定義規則中都必須是唯一的。 優先順序為 40 的規則會在優先順序為 80 的規則之前進行評估。

規則類型 [必要]

目前必須是 MatchRule

比對變數 [必要]

必須是其中一個變數:

  • RemoteAddr – 遠端電腦連線的 IPv4 位址/範圍
  • RequestMethod – HTTP 要求方法
  • QueryString – URI 中的變數
  • PostArgs – POST 主體中傳送的自變數。 只有在 'Content-Type' 標頭設定為 'application/x-www-form-urlencoded' 和 'multipart/form-data' 時,才會套用使用此比對變數的自定義規則。 其他內容類型 application/json 支援 CRS 3.2 版或更新版本、Bot 保護規則集,以及異地比對自定義規則。
  • RequestUri – 要求的 URI
  • RequestHeaders – 要求的標頭
  • RequestBody – 此變數包含整個要求主體。 只有在 'Content-Type' 標頭設定為 application/x-www-form-urlencoded 媒體類型時,才會套用使用此比對變數的自定義規則。 CRS 3.2 版或更新版本、Bot 保護規則集和異地比對自定義規則支援其他內容類型 application/soap+xml, application/xml, text/xml
  • RequestCookies – 要求的 Cookie

選取器 [選擇性]

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

運算子 [必要]

必須是下列其中一個運算子:

  • IPMatch - 只有在 Match Variable 為 RemoteAddr 時才使用, 且僅支援 IPv4
  • Equal – 輸入與 MatchValue 相同
  • 任何 – 它不應該有 MatchValue。 建議使用有效的選取器來比對變數。
  • Contains
  • LessThan
  • GreaterThan
  • LessThanOrEqual
  • GreaterThanOrEqual
  • BeginsWith
  • EndsWith
  • RegEx
  • 地理匹配

否定條件 [選擇性]

否定目前的條件。

轉換 [選擇性]

嘗試比對之前,要執行之轉換名稱的字串清單。 這些可以是下列轉換:

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

比對值 [必要]

要比對的值清單,可視為 OR'ed。 例如,可能是IP位址或其他字串。 值格式取決於上一個運算符。

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

  • GET
  • HEAD
  • POST
  • OPTIONS
  • PUT
  • DELETE
  • 修補檔

動作 [必要]

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

  • 允許 – 授權交易,略過所有其他規則。 指定的要求會新增至allowlist,一旦相符,要求就會停止進一步評估,並傳送至後端集區。 允許清單上的規則不會針對任何進一步的自定義規則或Managed規則進行評估。
  • 封鎖 - 根據 SecDefaultAction 封鎖或記錄交易(偵測/預防模式)。
    • 預防模式 - 根據 SecDefaultAction 封鎖交易。 就像動作一樣 Allow ,一旦評估要求並新增至封鎖清單,就會停止評估並封鎖要求。 之後的任何要求都未評估並遭到封鎖。
    • 偵測模式 - 根據 SecDefaultAction 記錄交易,之後會停止評估。 之後的任何要求都未評估符合相同條件,而且只會記錄。
  • 記錄 – 讓規則寫入記錄檔,但讓其餘的規則執行以進行評估。 其他自定義規則會依優先順序進行評估,後面接著Managed規則。

複製和複製自定義規則

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

地區比對自訂規則

自定義規則可讓您建立量身打造的規則,以符合應用程式和安全策略的確切需求。 您可以依國家/地區限制 Web 應用程式的存取。 如需詳細資訊,請參閱 地理對應自定義規則

下一步