如何在 AWS WAF 中對特定請求參數或 URI 套用費率限制?

2 分的閱讀內容
0

如何在 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

**注意:**您可以指定任何請求參數。

  1. 開啟 AWS WAF 主控台
  2. 選取 Web ACL
  3. 選取 Web ACL,然後選取 Rules (規則) 索引標籤。
  4. 選取 Add rules (新增規則)。
  5. 選取 Add my own rules and rule groups (新增我自己的規則和規則群組)。
  6. 針對 Rule type (規則類型),選取 Rule builder (規則產生器)。
  7. 輸入 Name (名稱),然後選取 Rate-based rule (以速率為基礎的規則)。
  8. 針對 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 (僅考慮符合規則陳述式中條件的請求)。
  9. If a request (如果請求) 下拉式清單中,選取 matches the statement (符合陳述式)。如果您要指定多個條件,可以根據使用案例變更此選項。
  10. 完成 Statement (陳述式) 詳細資訊區段中的下列欄位:
    注意:在此範例中,速率限制位於 URI 路徑 “/admin” 上。您可以根據使用案例變更詳細資訊。
    **檢查:**URI 路徑
    **符合類型:**包含字串
    要比對的字串:/admin
    **文字轉換︰**無
  11. Action (動作) 區段中,選取 Block (封鎖)。
  12. 選取 Add rule (新增規則)。將規則移至您使用案例的正確優先順序,然後選取 Save (儲存)。

案例 2:從速率限制規則中排除選取的內部 IP

在此案例中,請建立包含所有內部 IP 的 IP 集。然後,在縮小範圍陳述式中排除此 IP 集。

使用下列步驟將 IP 集排除在以速率為基礎的規則之外:

  1. 開啟 AWS WAF 主控台
  2. 選取 Web ACL
  3. 選取 Web ACL,然後選取 Rules (規則) 索引標籤。
  4. 選取 Add rules (新增規則)。
  5. 選取 Add my own rules and rule groups (新增我自己的規則和規則群組)。
  6. 針對 Rule type (規則類型),選取 Rule builder (規則產生器)。
  7. 輸入 Name (名稱),然後選取 Rate-based rule (以速率為基礎的規則) 作為 Type (類型)。
  8. 針對 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 (僅考慮符合規則陳述式中條件的請求)。
  9. If a request (如果請求) 下拉式清單中,選取 Doesn’t match the statement (NOT) (不符合陳述式 (否))。
  10. 完成 Statement (陳述式) 詳細資訊區段中的下列欄位:
    **檢查:**源自其中的 IP 地址。
    **IP 集:**從下拉式清單中選取 IP 集。
    **用作來源地址的 IP 地址:**如果您想要根據用戶端 IP 欄位設定頻率限制,則選取 Source IP address (來源 IP 地址)。或者,如果您想要根據標頭中的 IP 地址設定頻率限制,請選取 IP address in header (標頭中的 IP 地址)。例如,X-Forwarder-for
  11. Action (動作) 區段中,選取 Block (封鎖)。
  12. 選取 Add rule (新增規則)。將規則移至您使用案例的正確優先順序,然後選取 Save (儲存)。

AWS 官方
AWS 官方已更新 2 年前