如何利用 AWS WAF 降低 DDoS 攻擊風險?

上次更新日期:2022-07-27

如何利用 AWS WAF 協助預防分散式阻斷服務 (DDoS) 攻擊?

簡短描述

DDoS 攻擊是攻擊者試圖破壞目標系統的可用性。

對於基礎結構層的攻擊,您可使用 Amazon CloudFront 及 Elastic Load Balancing (ELB) 等 AWS 服務來提供自動 DDoS 保護。如需詳細資訊,請參閱 AWS DDoS 復原最佳實務

對於應用程式層的攻擊,您可使用 AWS WAF 作為降低風險的主要措施。AWS WAF 網路存取控制清單 (web ACL) 可將應用程式層 DDoS 攻擊的影響降至最低,並執行以下動作:

  • 使用速率規則。
  • 檢閱現有速率規則,考慮降低速率限制臨界值以封鎖惡意請求。
  • 查詢 AWS WAF 日誌針對未經授權活動收集特定資訊。
  • 建立地理比對規則,封鎖來自非業務預期國家的惡意請求。
  • 建立 IP 集比對規則,根據 IP 地址封鎖惡意請求。
  • 建立 Regex 比對規則來封鎖惡意請求。

解決方式

使用速率規則

您可建立適用於所有情況或 URI 特定的速率規則,保護您的網路應用程式免於 DDoS 攻擊。如需詳細資訊,請參閱三個最重要的 AWS WAF 速率規則

從 AWS WAF 主控台建立總括速率規則

總括速率規則可讓您針對 IP 向網路應用程式發出請求的數量設定臨界值。

  1. 開啟 AWS WAF 主控台
  2. 選取未定義 RBR 的 Web ACL,然後選取速率規則
  3. 輸入規則的名稱
  4. 輸入速率限制。速率限制是指在任何五分鐘內允許來自任何同一 IP 地址的最大請求數量。達到此限制後,速率規則動作將會套用於此 IP 地址。當來自 IP 地址的請求低於限制時,動作隨即停止。
    注意:速率限制臨界值表示來自同一 IP 地址的請求數量視為過多且可能具有惡意。否則,您可能會封鎖正常請求。如果您不確定要設定哪些限制,最佳做法是將規則動作設定為計數及監視您的請求模式。
  5. 套用速率限制的 IP 地址部分,請選取來源 IP 地址標頭 IP 地址

    標頭 IP 地址:當請求來自 CDN 或其他 Proxy 網路時,來源 IP 地址會識別 Proxy,並在標頭傳送原始 IP 地址。當在標頭選項使用 IP 地址時請特別小心,因為 Proxy 處理標頭的方式可能不盡相同。並且,可以修改標頭以繞過檢查。

    來源 IP 地址:根據速率限制計入請求的條件部分,請選擇計算符合規則陳述式條件的請求
  6. 設定規則動作以在 IP 地址的請求計數超過限制時計算或封鎖來自 IP 地址的請求。套用及移除規則動作可能會在 IP 地址請求速率變更之後一兩分鐘生效。
  7. 選取新增規則
  8. 選取下一步

如需建立速率規則陳述式的資訊,請參閱速率規則陳述式

從 AWS WAF 主控台建立特定 URI 的速率規則

  1. 開啟 AWS WAF 主控台
  2. 選取未定義速率規則的 Web ACL,然後選取速率規則
  3. 輸入規則的名稱
  4. 輸入速率限制
  5. 套用速率限制的 IP 地址部分,請選取來源 IP 地址頭 IP 地址
  6. 根據速率限制計入請求的條件部分,選擇僅考慮符合規則陳述式條件的請求
  7. 利用下列變數建立陳述式
    檢查部分,請選取 URI 路徑。
    比對類型部分,請選取完全與字串相符
    要比對的字串請輸入 /login。您可以選取應用程式特定的 URI。
    文字轉換部分,請保留為
  8. 設定規則動作以在 IP 地址的請求計數超過限制時計算或封鎖來自 IP 地址的請求。
  9. 選擇新增規則
  10. 選擇下一步

檢閱現有速率規則,並考慮降低速率限制臨界值以封鎖惡意請求

在主控台修改現有速率規則:

  1. 開啟 AWS WAF 主控台
  2. 選取 Web ACL,然後選取現有的速率規則。
  3. 視需要降低速率限制臨界值
  4. 規則動作設定為封鎖
  5. 選擇儲存規則
  6. 選擇下一步

如需詳細資訊,請參閱速率規則陳述式

考慮根據速率規則降低追蹤及計算的請求範圍

若要降低 AWS WAF 追蹤及計數的請求範圍,請在速率陳述式使用縮小範圍陳述式。然後,AWS WAF 會計算符合縮小範圍陳述式的請求。

範例

根據美國攻擊者近期最新動向,讓您可利用以下縮小範圍陳述式來建立速率規則:

  1. 地區比對陳述式,指定來自美國的請求。
  2. 字串比對陳述式在使用者代理程式標頭搜尋 Badbot 字串。

假設您將速率限制設定為 1,000。對於個別 IP 地址,AWS WAF 會計算同時符合兩個巢狀陳述式條件的請求。未同時符合這兩個陳述式的請求不會計入。如果某個 IP 地址的計數在任何 5 分鐘的時間範圍內超過 1,000 個請求,則會有對 IP 地址觸發規則動作。

若要在主控台利用這個範例的縮小範圍陳述式來加入速率規則,請繼續下列動作:

  1. 開啟 AWS WAF 主控台
  2. 選取 Web ACL,然後選取現有的速率規則。
  3. 根據速率限制計入請求的條件部分,選擇僅符合規則陳述式條件的請求
  4. 僅計算符合下列陳述式的請求:
    如果請求符合所有陳述式 (AND)
    陳述式 1
    檢查:選取來源國家
    國碼:選取美國 - US
    用於速率限制的 IP 地址:選取來源 IP 地址標頭 IP 地址

    - 及 -

    陳述式 2
    檢查:選取單一標頭
    標頭欄位名稱:輸入使用者代理程式
    相應類型:選取完全相應的字串
    要比對的字串:輸入 Badbot
  5. 選擇儲存規則
  6. 選擇下一步

查詢 AWS WAF 日誌針對未經授權活動收集特定資訊

如果您尚未開啟 AWS WAF 日誌功能,請確定開啟 AWS WAF 日誌功能。

在開啟 Web ACL 日誌功能分析流量之後,請查詢 AWS WAF 日誌來調查 DDoS 案例。您可利用以下方法查詢 AWS WAF 日誌:

利用 Amazon Athena 日誌剖析器或 AWS Lambda 日誌剖析器

速率規則可讓您,在接下來持續更新的五分鐘期間,指定任何單一 IP 地址可允許的最大 Web 請求數量。如果 IP 地址違反設定的限制,在請求率降至低於設定的門檻之前,新請求會遭到封鎖。速率規則的速率值最低容許極限為 100。

若案例因最低門檻限制而無法使用速率規則,請考慮利用 AWS WAF 自動化提供的 Athena 日誌剖析器或 Lambda 日誌剖析器功能。速率規則的預設期間區塊為 240 秒。Athena 及 Lambda 日誌剖析器都可讓您選取期間 (以分鐘為單位) 封鎖適用的 IP 地址。

Athena 及 Lambda 日誌剖析器的執行包含以下參數:

  • 請求臨界值:個別 IP 地址每五分鐘可允許的最大請求量。
  • 封鎖期間:封鎖適用 IP 地址的期間 (以分鐘為單位)。

這兩種解決方案都可讓您在佈建或更新 AWS CloudFormation 堆疊時定義參數。

當速率規則或 Athena 日誌剖析器無法使用時,請利用 Lambda 日誌剖析器。如需詳細資訊,請參閱 AWS Lambda 日誌剖析器

當利用 Athena Log 日誌剖析器時,請注意增加的成本。當利用這個選項進行 HTTP 占用保護時,您需支付 Athena 使用費。根據預設,每筆 Athena 查詢每五分鐘執行一次,並掃描過去四小時的資料。在日誌與 Athena 查詢套用資料分割來降低成本。您可變更 WAF 區塊期間範本參數值,設定查詢掃描的資料小時數。然而,增加掃描的資料量可能會增加 Athena 成本。

如需詳細資訊,請參閱 Amazon Athena 預估成本

建立地理比對規則,封鎖來自非業務預期國家的惡意請求

建立一或多個地理比對規則陳述式,根據來源國家允許或封鎖 Web 請求。

若要在 AWS WAF 主控台建立地理比對規則:

  1. 開啟 AWS WAF 主控台
  2. 選取 Web ACL,選取一般規則,然後建立地理比對規則。
  3. 要求選項部分,選擇來源國家,然後從下拉式清單選取一個或多個國碼
  4. 設定規則動作封鎖
  5. 選取新增規則

建立 IP 集比對規則,根據 IP 地址封鎖惡意請求

建立 IP 集比對規則陳述式,根據來源 IP 地址允許或封鎖 Web 請求。IP 比對條件會列出最多 10,000 個請求的來源 IP 地址或 IP 地址範圍。稍後在流程之中,當您建立 Web ACL 時,您可指定允許或封鎖每一個 IP 地址的請求。

若要在 AWS WAF 主控台建立 IP 比對規則:

  1. 開啟 AWS WAF 主控台
  2. 建立 IP 集並將 IP 地址加入清單。
  3. 選取 Web ACL,然後選取一般規則建立 IP 比對規則
  4. 請求選項,選擇來源 IP 地址,然後選取在步驟 2 建立的 IP 集。
  5. 設定規則動作為封鎖
  6. 選取新增規則

如需詳細資訊,請參閱建立並管理 IP 集

建立字串比對規則來封鎖惡意請求

在 DDoS 攻擊期間,通常不會僅有一個來源 IP,使得難以根據一個或多個 IP 地址加以過濾。在這些案例之中,請務必評估請求的所有部分,以便識別正常請求和惡意請求之間的任何特別模式。建立字串比對規則Regex 比對規則是封鎖惡意請求的有效方法。

例如,如果惡意請求來自使用者代理程式:BadBot,您可根據標頭詳細資訊來建立字串比對規則。

若要在 AWS WAF 主控台建立字串比對規則:

  1. 開啟 AWS WAF 主控台
  2. 選取 Web ACL,然後選取一般規則建立字串比對規則
  3. 在請求選項之下,選取下列選項:
    檢查部分,請選取標頭
    標頭欄位名稱,請輸入使用者代理程式
    比對類型部分,請選取完全與字串相符。
    要比對的字串部分,請輸入 BadBot
  4. 設定規則動作封鎖
  5. 選取新增規則

建立 Regex 比對規則來封鎖惡意請求

Regex 比對規則陳述式指示 AWS WAF 比對請求元素與單一規則運算式 (regex)。如果請求元素符合您指定的 Regex,則 Web 請求符合陳述式。

若要在 AWS WAF 主控台建立 Regex 比對規則:

  1. 開啟 AWS WAF 主控台
  2. 選取 Web ACL,然後選取一般規則建立字串比對規則
  3. 在請求選項之下,選取下列選項:
    檢查部分,請選取 URI 路徑
    比對類型部分,請選取比對規則運算式
    要比對的字串部分,輸入規則運算式。
  4. 設定規則動作封鎖
  5. 選取新增規則

此文章是否有幫助?


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