如何在 AWS WAF 中處理過大的 HTTP 請求?
我想在 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 規則
請完成下列步驟:
- 開啟 AWS WAF 主控台。
- 在導覽窗格的 AWS WAF 下,選擇 Web ACL。
- 在 Region (區域) 中,選擇您建立 Web 存取控制清單 (Web ACL) 的 AWS 區域。
**注意:**如果您為 Amazon CloudFront 設定 Web ACL,請選取 Global (全域)。 - 選取您的 Web ACL。
- 在 Rules (規則) 下,選擇 Add Rules (新增規則)。
- 在下拉清單中,選擇 Add managed rule groups (新增受管規則群組)。
- 在 Add managed rule groups (新增受管規則群組) 下,選擇 AWS managed rule groups (AWS 受管規則群組)。
- 在 Free rule groups (自由規則群組) 下,選擇 Core rule set (核心規則集)。
- 啟用 Add to web ACL (新增至 Web ACL),然後選擇 Edit (編輯)。
- 若要檢查並封鎖超過 8 KB 的網路請求內文,請將 SizeRestrictions_BODY 規則設為 Block (封鎖)。
- 選擇 Save rule (儲存規則)。
為了減少誤判的發生,請僅使用 SizeRestrictions_Body 規則,並將所有其他規則覆寫為 Count (計數)。
建立允許合法請求的規則
SizeRestrictions_Body 規則可能會封鎖超過 8 KB 的合法要求。若要允許超出大小限制的合法請求,請將 SizeRestrictions_BODY 規則設為 Count (計數)。然後,使用 AWS WAF 為後續規則評估所新增的標籤。
請完成下列步驟:
- 開啟 AWS WAF 主控台。
- 在導覽窗格的 AWS WAF 下,選擇 Web ACL。
- 在 Region (區域) 中,選取您建立 Web ACL 的區域。
**注意:**如果您為 CloudFront 設定 Web ACL,請選取 Global (全域)。 - 選取您的 Web ACL。
- 在 Rules (規則) 下,選擇 AWS-AWSManagedRulesCommonRuleSet。
- 選擇 Edit (編輯)。
- 在 SizeRestrictions_BODY 規則中,選擇 Override to Count (覆寫為計數)。
- 選擇 Save rule (儲存規則)。
- 在 Rules (規則) 下,選擇 Add rules (新增規則),然後選擇 Add my own rules and rule groups (新增我自己的規則和規則群組)。
- 在 Name (名稱) 中,輸入規則名稱,然後選擇 Regular rule (一般規則)。
- 在 If a request (如果請求) 中,選擇 matches all the statements (AND) (符合所有陳述式 (AND))。
- 在 Statement 1 (陳述式 1) 中,輸入下列資訊:
在 Inspect (檢查) 中,選擇 Has a label (有標籤)。
在 Match scope (匹配範圍) 中,選擇 Label (標籤)。
在 Match key (匹配金鑰) 中,輸入標籤 awswaf:managed:aws:core-rule-set:SizeRestrictions_Body。 - 在 Statement 2 (陳述式 2) 中,輸入下列資訊:
選擇 Negate statement results (否定陳述式結果)。
在 Inspect (檢查) 中,選擇 URI path (URI 路徑)。
對於比對類型,選擇完全相符字串。
在 String to match (要匹配的字串) 中,輸入 /upload。
**注意:**將 /upload 替換為您發出請求的 URI 路徑。 - (選用) 在 Text transformation (文字轉換) 中,選擇 text transformation (文字轉換) 或 None (無)。
- 在 Action (動作) 中,選擇 Block (封鎖)。
- 選擇 Add rule (新增規則)。
- 在 Set rule priority (設定規則優先順序) 中,更新優先順序,使規則位於 CRS 受管規則群組之後。CRS 中的 SizeRestrictions_Body 規則現在可以新增標籤,並且 AWS WAF 可以在後續規則中使用該標籤。
- 選擇 Save rule (儲存規則)。
**注意:**最佳做法是在非生產環境中測試規則,將 Action (動作) 設定為 Count (計數)。若要評估規則,請將 Amazon CloudWatch 指標與 AWS WAF 取樣請求或 AWS WAF 日誌結合使用。
建立自訂內文檢查規則
設定規則處理過大請求的動作
設定自訂內文檢查規則時,您可以選擇過大請求處理動作。過大處理會告訴 AWS WAF 當請求內文超出大小限制時,如何處理 Web 請求。處理過大元件的選項包括 Continue (繼續)、Match (符合) 和 No match (不符合)。在 AWS WAF 主控台上,您必須選擇下列其中一個選項。在主控台之外,預設選項設定為 Continue (繼續)。若要封鎖過大請求,請建立使用過大請求處理動作的自訂規則。
建立允許合法請求的規則
若要允許超過大小限制的合法請求,請建立明確允許來自合法主機請求的規則。然後,更新該規則的優先順序,使其高於封鎖該請求規則的優先順序。
相關資訊
相關內容
已提問 4 年前
AWS 官方已更新 1 年前