如何在 AWS WAF 中對特定請求參數或 URI 套用費率限制?
簡短描述
AWS WAF 具有以速率為基礎的規則,可追蹤每個原始 IP 地址的請求速率。規則會針對在五分鐘內超過指定限制的 IP 啟動規則動作。
您可以使用以速率為基礎的規則,對來自傳送過多請求之 IP 地址的請求設定暫時封鎖。依預設,AWS WAF 會根據 Web 請求來源的 IP 地址彙總請求。但是,您可以將規則改為設定使用來自 HTTP 標頭的 IP 地址,如 X-Forwarded-For。
針對這些以速率為基礎的規則陳述式,您也可以將條件定義為縮小範圍陳述式的一部分。您可以定義條件,以便只有符合縮小範圍陳述式的請求,該規則才會考慮進行評估。
**注意:**針對以速率為基礎的規則,AWS WAF 主控台沒有「縮小範圍陳述式」的選項。選取 Only consider requests that match the criteria in a rule statement (僅考慮符合規則陳述式中條件的請求) 選項,以建立縮小範圍陳述式的等效項目。
下列解決方案會考慮兩種案例,您可以在其中根據特定參數,自訂以速率為基礎的規則。
解決方案
案例 1:將速率限制新增至特定 URI
**注意:**您可以指定任何請求參數。
- 開啟 AWS WAF 主控台。
- 選取 Web ACL
- 選取 Web ACL,然後選取 Rules (規則) 索引標籤。
- 選取 Add rules (新增規則)。
- 選取 Add my own rules and rule groups (新增我自己的規則和規則群組)。
- 針對 Rule type (規則類型),選取 Rule builder (規則產生器)。
- 輸入 Name (名稱),然後選取 Rate-based rule (以速率為基礎的規則)。
- 針對 Request rate details (請求速率詳細資訊),輸入下列參數:
**速率限制:**輸入介於 100 至 20,000,000 之間的數字。這是 5 分鐘期間內每個 IP 允許的請求數量上限。
**用於速率限制的 IP 地址:**如果您想要根據用戶端 IP 欄位設定頻率限制,請選取 Source IP address (來源 IP 地址)。或者,如果您想要根據標頭中的 IP 地址設定頻率限制,請選取 IP address in header (標頭中的 IP 地址)。例如,X-Forwarder-for。
**將請求計入費率限制的條件:**選取 Only consider requests that match the criteria in a rule statement (僅考慮符合規則陳述式中條件的請求)。
- 在 If a request (如果請求) 下拉式清單中,選取 matches the statement (符合陳述式)。如果您要指定多個條件,可以根據使用案例變更此選項。
- 完成 Statement (陳述式) 詳細資訊區段中的下列欄位:
注意:在此範例中,速率限制位於 URI 路徑 “/admin” 上。您可以根據使用案例變更詳細資訊。
**檢查:**URI 路徑
**符合類型:**包含字串
要比對的字串:/admin
**文字轉換︰**無
- 在 Action (動作) 區段中,選取 Block (封鎖)。
- 選取 Add rule (新增規則)。將規則移至您使用案例的正確優先順序,然後選取 Save (儲存)。
案例 2:從速率限制規則中排除選取的內部 IP
在此案例中,請建立包含所有內部 IP 的 IP 集。然後,在縮小範圍陳述式中排除此 IP 集。
使用下列步驟將 IP 集排除在以速率為基礎的規則之外:
- 開啟 AWS WAF 主控台。
- 選取 Web ACL。
- 選取 Web ACL,然後選取 Rules (規則) 索引標籤。
- 選取 Add rules (新增規則)。
- 選取 Add my own rules and rule groups (新增我自己的規則和規則群組)。
- 針對 Rule type (規則類型),選取 Rule builder (規則產生器)。
- 輸入 Name (名稱),然後選取 Rate-based rule (以速率為基礎的規則) 作為 Type (類型)。
- 針對 Request rate details (請求速率詳細資訊),輸入下列參數:
**速率限制:**輸入介於 100 至 20,000,000 之間的數字。這是 5 分鐘期間內每個 IP 允許的請求數量上限。
**用於速率限制的 IP 地址:**如果您想要根據用戶端 IP 欄位設定頻率限制,請選取 Source IP address (來源 IP 地址)。或者,如果您想要根據標頭中的 IP 地址設定頻率限制,請選取 IP address in header (標頭中的 IP 地址)。例如,X-Forwarder-for。
**將請求計入費率限制的條件:**選取 Only consider requests that match the criteria in a rule statement (僅考慮符合規則陳述式中條件的請求)。
- 在 If a request (如果請求) 下拉式清單中,選取 Doesn’t match the statement (NOT) (不符合陳述式 (否))。
- 完成 Statement (陳述式) 詳細資訊區段中的下列欄位:
**檢查:**源自其中的 IP 地址。
**IP 集:**從下拉式清單中選取 IP 集。
**用作來源地址的 IP 地址:**如果您想要根據用戶端 IP 欄位設定頻率限制,則選取 Source IP address (來源 IP 地址)。或者,如果您想要根據標頭中的 IP 地址設定頻率限制,請選取 IP address in header (標頭中的 IP 地址)。例如,X-Forwarder-for。
- 在 Action (動作) 區段中,選取 Block (封鎖)。
- 選取 Add rule (新增規則)。將規則移至您使用案例的正確優先順序,然後選取 Save (儲存)。