跳至內容

如何在 AWS WAF 中處理過大的 HTTP 請求?

3 分的閱讀內容
0

我想在 AWS WAF 中檢查 Web 請求內文時,管理大小限制。

簡短描述

當網路請求內文超出內文檢查大小限制時,基礎主機服務只會將限制範圍內的內容轉送至 AWS WAF。AWS WAF 無法偵測超出限制 Web 請求內文中的跨網站指令碼 (XSS) 攻擊或 SQL injection 隱碼攻擊模式。

**注意:**無論是否在內文檢查大小限制內發現攻擊模式,AWS WAF 都不會記錄 Web 請求內文的內容。

為了防範那些未出現在過大請求內文檢查大小限制內的攻擊模式,請設定一條規則來封鎖所有過大的請求。然後,建立一條明確允許合法過大請求的規則。您可以建立自訂規則,也可以使用核心規則集 (CRS) 來管理規則群組

解決方法

使用 CRS 受管規則

若要使用 CRS 受管規則群組,請啟用 SizeRestrictions_Body 規則來封鎖超過 8 KB (8,192 位元組) 的請求。然後,建立一條規則,允許超過大小限制的合法請求。

啟用 SizeRestrictions_Body 規則

請完成下列步驟:

  1. 開啟 AWS WAF 主控台
  2. 在導覽窗格的 AWS WAF 下,選擇 Web ACL
  3. Region (區域) 中,選擇您建立 Web 存取控制清單 (Web ACL) 的 AWS 區域。
    **注意:**如果您為 Amazon CloudFront 設定 Web ACL,請選取 Global (全域)。
  4. 選取您的 Web ACL。
  5. Rules (規則) 下,選擇 Add Rules (新增規則)。
  6. 在下拉清單中,選擇 Add managed rule groups (新增受管規則群組)。
  7. Add managed rule groups (新增受管規則群組) 下,選擇 AWS managed rule groups (AWS 受管規則群組)。
  8. Free rule groups (自由規則群組) 下,選擇 Core rule set (核心規則集)。
  9. 啟用 Add to web ACL (新增至 Web ACL),然後選擇 Edit (編輯)。
  10. 若要檢查並封鎖超過 8 KB 的網路請求內文,請將 SizeRestrictions_BODY 規則設為 Block (封鎖)。
  11. 選擇 Save rule (儲存規則)。

為了減少誤判的發生,請僅使用 SizeRestrictions_Body 規則,並將所有其他規則覆寫Count (計數)。

建立允許合法請求的規則

SizeRestrictions_Body 規則可能會封鎖超過 8 KB 的合法要求。若要允許超出大小限制的合法請求,請將 SizeRestrictions_BODY 規則設為 Count (計數)。然後,使用 AWS WAF 為後續規則評估所新增的標籤

請完成下列步驟:

  1. 開啟 AWS WAF 主控台
  2. 在導覽窗格的 AWS WAF 下,選擇 Web ACL
  3. Region (區域) 中,選取您建立 Web ACL 的區域。
    **注意:**如果您為 CloudFront 設定 Web ACL,請選取 Global (全域)。
  4. 選取您的 Web ACL。
  5. Rules (規則) 下,選擇 AWS-AWSManagedRulesCommonRuleSet
  6. 選擇 Edit (編輯)。
  7. SizeRestrictions_BODY 規則中,選擇 Override to Count (覆寫為計數)。
  8. 選擇 Save rule (儲存規則)。
  9. Rules (規則) 下,選擇 Add rules (新增規則),然後選擇 Add my own rules and rule groups (新增我自己的規則和規則群組)。
  10. Name (名稱) 中,輸入規則名稱,然後選擇 Regular rule (一般規則)。
  11. If a request (如果請求) 中,選擇 matches all the statements (AND) (符合所有陳述式 (AND))。
  12. Statement 1 (陳述式 1) 中,輸入下列資訊:
    Inspect (檢查) 中,選擇 Has a label (有標籤)。
    Match scope (匹配範圍) 中,選擇 Label (標籤)。
    Match key (匹配金鑰) 中,輸入標籤 awswaf:managed:aws:core-rule-set:SizeRestrictions_Body
  13. Statement 2 (陳述式 2) 中,輸入下列資訊:
    選擇 Negate statement results (否定陳述式結果)。
    Inspect (檢查) 中,選擇 URI path (URI 路徑)。
    對於比對類型,選擇完全相符字串
    String to match (要匹配的字串) 中,輸入 /upload
    **注意:**將 /upload 替換為您發出請求的 URI 路徑。
  14. (選用) 在 Text transformation (文字轉換) 中,選擇 text transformation (文字轉換) 或 None (無)。
  15. Action (動作) 中,選擇 Block (封鎖)。
  16. 選擇 Add rule (新增規則)。
  17. Set rule priority (設定規則優先順序) 中,更新優先順序,使規則位於 CRS 受管規則群組之後。CRS 中的 SizeRestrictions_Body 規則現在可以新增標籤,並且 AWS WAF 可以在後續規則中使用該標籤。
  18. 選擇 Save rule (儲存規則)。

**注意:**最佳做法是在非生產環境中測試規則,將 Action (動作) 設定為 Count (計數)。若要評估規則,請將 Amazon CloudWatch 指標與 AWS WAF 取樣請求或 AWS WAF 日誌結合使用。

建立自訂內文檢查規則

設定規則處理過大請求的動作

設定自訂內文檢查規則時,您可以選擇過大請求處理動作。過大處理會告訴 AWS WAF 當請求內文超出大小限制時,如何處理 Web 請求。處理過大元件的選項包括 Continue (繼續)、Match (符合) 和 No match (不符合)。在 AWS WAF 主控台上,您必須選擇下列其中一個選項。在主控台之外,預設選項設定為 Continue (繼續)。若要封鎖過大請求,請建立使用過大請求處理動作的自訂規則。

建立允許合法請求的規則

若要允許超過大小限制的合法請求,請建立明確允許來自合法主機請求的規則。然後,更新該規則的優先順序,使其高於封鎖該請求規則的優先順序。

相關資訊

為什麼 AWS WAF 會封鎖我的合法上傳請求?

AWS 官方已更新 1 年前