跳至內容

如何偵測 AWS Managed Rules 造成的誤判?

3 分的閱讀內容
0

AWS WAF 中的 AWS Managed Rules 規則群組封鎖了對我應用程式發出的合法請求。我想要了解這些規則如何造成誤判。我也想要讓受管規則繼續生效,並允許合法流量通過。

解決方法

首先,識別 AWS Managed Rules 造成的誤判。然後,使用標籤或範圍縮小陳述式,將這些誤判項目新增至允許清單。

**注意:**以下範例使用 IP 集。不過,您可以在含有標籤的自訂規則中使用 AWS WAF 可檢查的任何屬性,包括標頭和 URI。

偵測受管規則群組造成的誤判

請完成以下步驟:

  1. 在 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
        }
      ]
    }
  2. terminatingRule 中,尋找 ruleId,以識別封鎖合法請求的規則。例如,在上述日誌中,封鎖合法請求的規則是 SizeRestrictions_Body

  3. 識別造成誤判的屬性或條件。例如,如果資料庫管理員從遠端執行預存程序,其請求可能會包含大量資料。ManagedRulesCommonRuleSet 規則群組會因 SizeRestrictions_Body 規則而封鎖這些請求。

將誤判項目新增至允許清單

若要讓合法請求通過造成誤判的受管規則群組,請設定 Web 存取控制清單 (Web ACL)。首先建立 IP 集,然後使用標籤或範圍縮小陳述式。

**注意:**最佳實務是使用標籤來建立精細、明確的規則。對於超出範圍的請求,範圍縮小陳述式不會使用規則群組中的所有規則進行檢查。

標籤

使用 AWS Managed Rules 新增的標籤,以防止誤判。當您建立可比對含有這些標籤之請求的自訂規則時,請變更受管規則群組內規則的預設動作。

請完成以下步驟:

  1. 開啟 AWS WAF console (AWS WAF 主控台)。
  2. 在導覽窗格中,選擇 Protection packs (web ACLs) (保護套件 (Web ACL))。
  3. 選取您的 protection pack (保護套件),然後選擇 Manage rules (管理規則)。
  4. 選擇封鎖您請求的 AWS Managed Rules。
    **注意:**從日誌中識別封鎖您請求的規則。
  5. Rule overrides (規則覆寫) 下,於封鎖請求的規則,將動作變更為 Count (計數)。
  6. 選擇 Save rule (儲存規則)。
  7. 在右側窗格中,選擇 Manage rule (管理規則),然後選擇 Add rule (新增規則)。
  8. 選取 Custom rule (自訂規則),然後選擇 Next (下一步)。
  9. 在規則類型,選取 Custom rule (自訂規則),然後選擇 Next (下一步)。
  10. Action (動作),選取 BLOCK (封鎖)。
  11. 輸入您的 Rule name (規則名稱)。
  12. If a request (如果請求),選取 matches all the statements (AND) (符合所有陳述式 (AND))。
  13. Statement 1 (陳述式 1) 中,使用以下選項:
    Inspect (檢查),選擇 Has a label (具有標籤)。
    Statement (陳述式),選擇 Label (標籤)。
    Match key (比對索引鍵),選取 AWS Managed Rules 規則群組中封鎖您請求之規則的標籤。
  14. 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 位址)。
  15. 選擇 Add rule (新增規則)。
  16. 選擇 Edit Rule Order (編輯規則順序),然後將新規則拖曳至 AWS Managed Rules 規則群組下方。
    **注意:**系統會依照規則的顯示順序套用規則,新規則必須位於 AWS Managed Rules 規則群組下方。
  17. 選擇 Save Rule Order (儲存規則順序)。

範圍縮小陳述式

使用範圍縮小陳述式,縮小規則或規則群組評估請求的範圍。當您將範圍縮小陳述式新增至規則群組時,規則群組會檢查請求。該陳述式會略過其中包含的合法 IP 位址。

請完成以下步驟:

  1. 開啟 AWS WAF console (AWS WAF 主控台)。
  2. 在導覽窗格的 AWS WAF 下,選擇 Protection packs (web ACLs) (保護套件 (Web ACL))。
  3. 選取您的 protection pack (保護套件),然後選擇 Manage rule (管理規則)。
  4. 選擇封鎖您請求的 AWS Managed Rules 規則群組。
  5. 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 位址) 作為來源。
  6. 選擇 Save rule (儲存規則)。
AWS 官方已更新 6 個月前