在 Azure 應用程式閘道上自訂 Web 應用程式防火牆 v2 的規則
Azure 應用程式閘道 Web 應用程式防火牆 (WAF) v2 具預先設定的平台管理規則集,可防範許多不同類型的攻擊。 這些攻擊包括跨網站指令碼、SQL 插入和其他攻擊。 如果您是 WAF 管理員,建議您撰寫自己的規則,加強核心規則集 (CRS) 規則。 您的自訂規則可以根據比對準則,封鎖、允許或記錄要求的流量。 如果 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 位址的流量,和只在使用特定瀏覽器時。
如果您想要在兩個不同的條件之間使用或,則這兩個條件必須在不同規則中。 例如,封鎖來自特定 IP 位址的流量,或在使用特定瀏覽器時封鎖流量。
自訂規則也支援規則運算式,就像 CRS 規則集一樣。 如需範例,請參閱建立和使用自訂 Web 應用程式防火牆規則中的範例 3 和 5。
注意
WAF 自訂規則的數量上限為 100。 如需應用程式閘道限制的詳細資訊,請參閱 Azure 訂用帳戶和服務限制、配額與限制式。
警告
在應用程式閘道層級套用的任何重新導向規則都會略過 WAF 自訂規則。 如需重新導向規則的詳細資訊,請參閱應用程式閘道重新導向概觀 (機器翻譯)。
比較允許與封鎖
使用自訂規則允許和封鎖流量很簡單。 例如,您可以封鎖來自 IP 位址範圍的所有流量。 如果要求來自特定瀏覽器,您可以建立另一個規則允許流量。
若要允許部分流量,請確定 -Action
參數已設定為 Allow。 若要封鎖部分流量,請確定 -Action
參數已設定為 Block。
$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' 時,才會套用使用此比對變數的自訂規則。 CRS 3.2 版或更新版本、Bot 保護規則集和地區比對自訂規則支援
application/json
的其他內容類型。 - 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 - 只在比對變數為 RemoteAddr 時使用,並僅支援 IPv4
- Equal – 輸入與 MatchValue 相同
- Any - 不應該有 MatchValue。 建議具有有效選取器的比對變數使用。
- 包含
- LessThan
- GreaterThan
- LessThanOrEqual
- GreaterThanOrEqual
- BeginsWith
- EndsWith
- RegEx
- Geomatch
否定條件 [選用]
否定目前的條件。
轉換 [選用]
具有要在嘗試比對前進行轉換之名稱的字串清單。 可為下列轉換:
- 小寫
- 大寫
- Trim
- UrlDecode
- UrlEncode
- RemoveNulls
- HtmlEntityDecode
比對值 [必要]
要比對的值清單,可視為 OR。 例如,可為 IP 位址或其他字串。 值格式取決於上一個運算子。
支援的 HTTP 要求方法值包含:
- GET
- HEAD
- POST
- OPTIONS
- PUT
- DELETE
- 修補檔
動作 [必要]
在 WAF 原則偵測模式中,如果觸發自訂規則,則一律會記錄動作,而不論自訂規則上設定的動作值為何。
- Allow – 授權交易,略過所有其他規則。 指定的要求會新增至允許清單,一旦相符,要求就會停止進一步評估,並傳送至後端集區。 系統不會針對任何其他自訂規則或受控規則,評估允許清單上的規則。
- 封鎖 – 根據 SecDefaultAction (偵測/預防模式) 封鎖或記錄交易。
- 預防模式 – 根據 SecDefaultAction 封鎖交易。 如同
Allow
動作,一旦評估要求且將其新增至封鎖清單,就會停止評估並封鎖該要求。 系統不會評估在那之後符合相同條件的任何要求,而是會將其封鎖。 - 偵測模式 - 根據 SecDefaultAction 記錄交易,之後會停止評估。 系統不會評估在那之後符合相同條件的任何要求,而是會將其記錄下來。
- 預防模式 – 根據 SecDefaultAction 封鎖交易。 如同
- Log – 讓規則寫入記錄,但讓其餘規則執行以供評估。 系統會依優先順序評估其他自訂規則,接著是受控規則。
複製自訂規則
自訂規則可以在指定的原則內重複。 複製規則時,您必須為規則指定唯一的名稱和唯一的優先順序值。 此外,只要原則都在相同的訂用帳戶中,就可以將自訂規則從某個應用程式閘道 WAF 原則複製到另一個原則。 將規則從某個原則複製到另一個原則時,您必須選取想要將規則複製到其中的應用程式閘道 WAF 原則。 選取 WAF 原則之後,您需要為規則指定唯一的名稱,並指派優先順序排名。
地區比對自訂規則
自訂規則可讓您建立量身打造的規則,以符合您應用程式和安全性原則的確切需求。 您可以依國家/地區限制對您 Web 應用程式的存取。 如需詳細資訊,請參閱 Geomatch 自訂規則 (機器翻譯)。