如何將 AWS WAF 與 AWS Global Accelerator 搭配使用,以保護我的應用程式免遭惡意攻擊?

2 分的閱讀內容
0

我想要將 AWS WAF 速率限制規則與 Global Accelerator 之後的 Application Load Balancer 搭配使用,保護我的應用程式免遭 Layer 7 DDoS 攻擊。

簡短說明

您可以善用 AWS Global Accelerator、Application Load Balancer 和 AWS WAF,來抵禦應用程式層分散式拒絕服務 (DDoS) 攻擊。

**注意:**透過 Application Load Balancer 和 WAF 設定用戶端速率限制時,您必須在加速器上將來源保留 IP 設定為 True。如需詳細資訊,請參閱在 AWS Global Accelerator 中保留用戶端 IP

解決方法

AWS WAF 速率限制規則可讓您從特定 IP 地址自動封鎖用戶端,這些 IP 地址會向您的應用程式傳送大量請求。以速率為基礎的規則會依據滑動時間範圍,追蹤每個 IP 地址傳送的請求數目。若請求超出速率限制,則規則會立即封鎖來源 IP 地址的請求,直至該地址降低請求數目。

**注意:**您還可以設定規則來檢查和封鎖請求的許多元件,包括發起請求的國家/地區。

先決條件

  • 請確定您具有 Global Accelerator、Application Load Balancer 和 AWS WAF 的下列流量組態:
    User --> Global Accelerator --> Application Load Balancer with WAF --> EC2 instance
    **注意:**在此設定中,使用者向加速器發出請求,藉此來存取應用程式。加速器會將使用者流量路由至與之關聯的 Application Load Balancer 和 WAF。WAF 會使用您建立的速率限制規則進行評估,然後會封鎖或允許使用者請求。
  • 安裝負載測試工具,例如 GitHub 中的 loadtest。或者,使用您選擇的負載測試工具,這可為您提供必要的可見性。

建立以規則為基礎的 Web ACL

在 Web ACL 中建立以速率為基礎的規則,強制性速率限制為 100。然後,使用測試案例檢查您的規則是否在運作。

  1. 導覽至 AWS WAF 主控台,以建立 Web ACL 規則。
  2. 將自訂規則新增至您的 Web ACL。
  3. 為規則命名,並將類型設定為以速率為基礎的規則。
  4. 將規則的速率限制設定為 100。
  5. 將所有其他設定均保留為原狀。然後,按一下新增規則
  6. 儲存 Web ACL。

測試結果

該測試會模擬 HTTP 洪水攻擊。負載測試工具會顯示接收請求的進度。在某些階段,由於您設定的速率限制規則會封鎖請求,請求開始出現失敗。

  1. 在您的電腦上執行負載測試工具。
    **注意:**或者,在主控台上開啟 AWS CloudShell (您可能會收到切換至受支援區域的提示)。

    # Install globally as root:
    npm install -g loadtest
    # On AWS CloudShell, Ubuntu or Mac OS X systems install using sudo:
    sudo npm install -g loadtest
  2. 如下所示輸入 Global Accelerator 的 URL:

    # Global Accelerator url
    GA_URL=http://your_Global_Acclerator_URL

    **注意:**使用您的 Global Accelerator URL 取代 your_Global_Accelerator_URL

  3. 在終端執行命令,以啟動請求泛濫負載測試模擬。

    **注意:**執行此命令應當需要 45 秒鐘,因此請留意流量。

    loadtest -n 1000 -c 1 --rps 25 $GA_URL

    該命令共計會傳送 1000 個請求,每秒並行傳送 1 至 25 個請求。以此每秒請求速率傳送時,您會在第四秒達到設定的限制。

  4. 分析輸出流程。請注意,在某些階段,請求會開始出現失敗。錯誤指示,WAF 規則已封鎖您的來源 IP 地址的所有請求。

    [Fri Apr 21 2023 20:26:45 GMT+0000 ] INFO Requests: 0 (0%), requests per second: 0, mean latency: 0 ms
    [Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Requests: 106 (11%), requests per second: 21, mean latency: 22.9 ms
    [Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Errors: 106, accumulated errors: 106, 100% of total requests
AWS 官方
AWS 官方已更新 1 年前