如何将 Amazon WAF 与 Amazon Global Accelerator 配合使用以保护我的应用程序免受恶意攻击?

2 分钟阅读
0

我想将 Amazon WAF 速率限制规则与 Global Accelerator 后的应用程序负载均衡器配合使用,以便保护我的应用程序免受第 7 层 DDoS 攻击。

简短描述

您可以利用 Amazon Global Accelerator、应用程序负载均衡器和 Amazon WAF 来防御应用程序层的分布式拒绝服务 (DDoS, Distributed Denial of Service) 攻击。

**注意:**通过应用程序负载均衡器和 WAF 来限制客户端速率要求您在加速器上将保留的源 IP 设置为 =TRUE。有关更多信息,请参阅在 Amazon Global Accelerator 中保留客户端 IP 地址

解决方法

Amazon WAF 速率限制规则让您能够自动阻止特定 IP 地址的客户端向您的应用程序发送大量请求。基于速率的规则会根据滑动时间窗口来跟踪每个 IP 地址发出的请求数。当请求超过速率限制时,该规则会立即阻止来自源 IP 地址的请求,直到该地址减少请求数。

**注意:**您还可以将规则配置为检查和阻止请求的许多组成部分,包括发出请求的国家/地区。

先决条件

  • 确保为 Global Accelerator、应用程序负载均衡器和 Amazon WAF 进行了以下流量配置:
    User --> Global Accelerator --> Application Load Balancer with WAF --> EC2 instance
    **注意:**在此设置中,用户通过向加速器发出请求来访问应用程序。加速器将用户流量路由到应用程序负载均衡器以及与之关联的 WAF。然后,WAF 会使用您创建的速率限制规则进行评估,确定是阻止还是允许用户请求。
  • 安装负载测试工具,例如 GitHub 中的 loadtest。或者,使用您选择的可提供所需可见性的负载测试工具。

创建基于规则的 Web ACL

在 Web ACL 中创建基于速率的规则,采用 100 作为激进的速率限制。然后,使用测试用例来检查您的规则是否有效。

  1. 导航到 Amazon WAF 控制台以创建 Web ACL 规则。
  2. 向您的 Web ACL 添加自定义规则。
  3. 为该规则命名,并将基于速率的规则设置为类型
  4. 将其速率限制设置为 100。
  5. 所有其他设置均保留原样。然后,单击添加规则
  6. 保存 Web ACL。

测试结果

该测试模拟 HTTP 大规模攻击。负载测试工具会显示收到的请求的进度。在某个阶段,请求开始失败,因为它会被您设置的速率限制规则阻止。

  1. 在计算机上运行 loadtest 工具。
    **注意:**或者,在控制台上打开 Amazon 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

    **注意:**将 your_Global_Accelerator_URL 替换为您的 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 年前