為什麼我的 AWS WAF 自訂規則無法運作?

上次更新日期:2022 年 7 月 12 日

我建立了自訂 AWS WAF 規則,但沒有按預期運作。我該怎麼做才能對該問題進行疑難排解?

解決方案

如果您的自訂 AWS WAF 規則沒有按預期運作,請檢查以下各項:

  • 規則的優先順序
  • 文字轉換
  • 布林逻辑

規則的優先順序

檢查您是否已將自訂規則設定為正確的優先順序。如需詳細資訊,請參閱在 Web ACL 中處理規則和規則群組的順序

您可以在規則群組或定義規則的 Web ACL 中,依名稱存取規則。

AWS WAF 規則評估順序按從上到下排序,然後在第一個符合終止 Allow (允許)、Block (封鎖) 或 CAPTCHA 的規則處停止。如果您的請求與自訂規則上方放置的其中一個終止規則相符,AWS WAF 將採取該規則中指定的動作。系統不會根據您的自訂規則來評估請求。如需詳細資訊,請參閱 Web ACL 中規則和規則群組動作的基本處理

例如,假設您正在建立自訂允許規則,以允許 AWS 受管規則群組 (AMR) 封鎖的請求。您必須將自訂規則置於封鎖請求的 AMR 之上 (優先順序較低)。

您可以透過 AWS WAF 主控台 Rule Builder 管理優先順序,這適用於 Web ACL 和規則群組。若要使用 AWS API 變更優先順序,請使用 UpdateWebACLUpdateRuleGroup API 呼叫。若要使用 AWS CLI 變更優先順序,請使用 update-web-aclupdate-rule-group 命令。

文字轉換

如果您在自訂規則中使用文字轉換,請檢查您是否已經以正確的方式套用。如需詳細資訊,請參閱 AWS WAF 文字轉換

AWS WAF 會在檢查請求之前套用轉換。如果您指定多個轉換,AWS WAF 會按列出的順序處理這些轉換。如果您在自訂規則中使用多個轉換,則必須驗證轉換和轉換的順序。

例如,如果您建立了自訂規則,針對查詢引數中的字串執行 Base64 解碼URL 解碼。AWS WAF 會先執行傳入請求中查詢字串的 Base64 解碼Base64 解碼結果字串使用 URL 解碼來進一步轉換。然後,將會根據您在規則組態中提供的字串,檢查 URL 解碼結果字串。

布林逻辑

如果您使用邏輯規則陳述式,請確認用於自訂規則的 ANDORNOT 邏輯是否正確。如需詳細資訊,請參閱規則陳述式清單,並遵循邏輯規則陳述式 中的指示。

若要使用布林邏輯對此進行驗證,請考慮此範例:

如果您建立自訂規則,並且與具有以下條件的請求相符:請求具有 URI "/test" 來源 IP 位於 IP 集 X 中,則為 Block (封鎖)。

請求 1

如果請求具有 URI "/test" (布林 1) IP 在 IP 集 X (布林 0) 中,則布林 1 布林 0 會產生布林 0。

此請求不符合您的自訂規則。

請求 2

如果請求沒有 URI "/test" (布林 0) IP 在 IP 集 X (布林 0) 中,則布林 0 布林 0 會產生布林 0。

此請求不符合您的自訂規則。

請求 3

如果請求具有 URI "/test" (布林 1) IP 在 IP 集 X (布林 1) 中,則布林 1 布林 1 會產生布林 1。

此請求將符合您的自訂規則。


此文章是否有幫助?


您是否需要帳單或技術支援?