AWS WAF 中的 AWS Managed Rules 規則群組封鎖了對我應用程式發出的合法請求。我想要了解這些規則如何造成誤判。我也想要讓受管規則繼續生效,並允許合法流量通過。
解決方法
首先,識別 AWS Managed Rules 造成的誤判。然後,使用標籤或範圍縮小陳述式,將這些誤判項目新增至允許清單。
**注意:**以下範例使用 IP 集。不過,您可以在含有標籤的自訂規則中使用 AWS WAF 可檢查的任何屬性,包括標頭和 URI。
偵測受管規則群組造成的誤判
請完成以下步驟:
-
在 AWS WAF 日誌的 terminatingRuleId 下,找出封鎖合法請求的受管規則群組。以下是 AWS WAF 日誌的範例:
{
"timestamp": 1712236911743,
"formatVersion": 1,
"webaclId": "arn:aws:wafv2:us-west-2:***:regional/webacl/WAFtester/3c372***-***",
"terminatingRuleId": "AWS-AWSManagedRulesCommonRuleSet",
"terminatingRuleType": "MANAGED_RULE_GROUP",
"action": "BLOCK",
"terminatingRuleMatchDetails": [],
"ruleGroupList": [
{
"ruleGroupId": "AWS#AWSManagedRulesCommonRuleSet",
"terminatingRule": {
"ruleId": "SizeRestrictions_BODY",
"action": "BLOCK",
"overriddenAction": "BLOCK",
"ruleMatchDetails": null
},
"nonTerminatingMatchingRules": [],
"excludedRules": null,
"customerConfig": null
}
]
}
-
在 terminatingRule 中,尋找 ruleId,以識別封鎖合法請求的規則。例如,在上述日誌中,封鎖合法請求的規則是 SizeRestrictions_Body。
-
識別造成誤判的屬性或條件。例如,如果資料庫管理員從遠端執行預存程序,其請求可能會包含大量資料。ManagedRulesCommonRuleSet 規則群組會因 SizeRestrictions_Body 規則而封鎖這些請求。
將誤判項目新增至允許清單
若要讓合法請求通過造成誤判的受管規則群組,請設定 Web 存取控制清單 (Web ACL)。首先建立 IP 集,然後使用標籤或範圍縮小陳述式。
**注意:**最佳實務是使用標籤來建立精細、明確的規則。對於超出範圍的請求,範圍縮小陳述式不會使用規則群組中的所有規則進行檢查。
標籤
使用 AWS Managed Rules 新增的標籤,以防止誤判。當您建立可比對含有這些標籤之請求的自訂規則時,請變更受管規則群組內規則的預設動作。
請完成以下步驟:
- 開啟 AWS WAF console (AWS WAF 主控台)。
- 在導覽窗格中,選擇 Protection packs (web ACLs) (保護套件 (Web ACL))。
- 選取您的 protection pack (保護套件),然後選擇 Manage rules (管理規則)。
- 選擇封鎖您請求的 AWS Managed Rules。
**注意:**從日誌中識別封鎖您請求的規則。
- 在 Rule overrides (規則覆寫) 下,於封鎖請求的規則,將動作變更為 Count (計數)。
- 選擇 Save rule (儲存規則)。
- 在右側窗格中,選擇 Manage rule (管理規則),然後選擇 Add rule (新增規則)。
- 選取 Custom rule (自訂規則),然後選擇 Next (下一步)。
- 在規則類型,選取 Custom rule (自訂規則),然後選擇 Next (下一步)。
- 在 Action (動作),選取 BLOCK (封鎖)。
- 輸入您的 Rule name (規則名稱)。
- 在 If a request (如果請求),選取 matches all the statements (AND) (符合所有陳述式 (AND))。
- 在 Statement 1 (陳述式 1) 中,使用以下選項:
在 Inspect (檢查),選擇 Has a label (具有標籤)。
在 Statement (陳述式),選擇 Label (標籤)。
在 Match key (比對索引鍵),選取 AWS Managed Rules 規則群組中封鎖您請求之規則的標籤。
- 在 Statement 2 (陳述式 2) 中,使用以下選項:
在 Inspect (檢查),選擇 Originates from IP address in (來源為以下清單中的 IP 位址)。
在 IP address list (IP 位址清單),選取您的 IP 集。
在 Rule configuration (規則組態) 中,選取 Negate statement (NOT) (否定陳述式 (NOT))。
在 Source IP address for origin (用於判斷來源的 IP 位址),選取 Source IP address (來源 IP 位址)。
- 選擇 Add rule (新增規則)。
- 選擇 Edit Rule Order (編輯規則順序),然後將新規則拖曳至 AWS Managed Rules 規則群組下方。
**注意:**系統會依照規則的顯示順序套用規則,新規則必須位於 AWS Managed Rules 規則群組下方。
- 選擇 Save Rule Order (儲存規則順序)。
範圍縮小陳述式
使用範圍縮小陳述式,縮小規則或規則群組評估請求的範圍。當您將範圍縮小陳述式新增至規則群組時,規則群組會檢查請求。該陳述式會略過其中包含的合法 IP 位址。
請完成以下步驟:
- 開啟 AWS WAF console (AWS WAF 主控台)。
- 在導覽窗格的 AWS WAF 下,選擇 Protection packs (web ACLs) (保護套件 (Web ACL))。
- 選取您的 protection pack (保護套件),然後選擇 Manage rule (管理規則)。
- 選擇封鎖您請求的 AWS Managed Rules 規則群組。
- 在 Inspection (檢查) 中,選取 Match statement (比對陳述式),然後使用以下選項:
在 If a request (如果請求),選取 doesn't match the statement (NOT) (與陳述式不相符 (NOT))。
在 Inspect (檢查),選取 Originates from IP address in (來源為以下清單中的 IP 位址)。
在 IP address list (IP 位址清單),選取您的 IP 集。
在 Rule configuration (規則組態) 中,在 Source IP address for origin (用於判斷來源的 IP 位址),選取 Source IP address (來源 IP 位址) 作為來源。
- 選擇 Save rule (儲存規則)。