背景:我正在使用 Amazon API Gateway、Amazon S3、AWS Lambda 等构建 Web 应用程序。
注意:如果您不了解 AWS,我们将非常感激您的任何建议。
在搜索如何保护 API 网关免受 DDoS 攻击时,我发现了一些关键字,如 AWS Shield、AWS WAF 等。无论如何,除了这些之外,我想到了一个主意。但在谷歌上搜索这个想法时,没有找到任何结果,所以我不能确定这个想法是否正确。
这个想法类似于以下内容。
经过身份验证的用户动态获取端点,这意味着有一个端点可以获取端点以访问资源。现在,一些端点由于 DDoS 攻击而瘫痪,用户收到 503 错误,但用户会通过“获取端点的端点”自动获取备份端点,因为我像这样编写了前端代码并在 Amazon API Gateway 中创建了一些复制的备份端点。
我想知道这是否可以正常工作。
答案1
如果您担心 API GW 后面的端点,则可以配置 GW 实例以添加每个用户限制,这样经过身份验证的用户就无法运行超过您允许的请求。您可以添加参数检查,这样格式错误的请求就不会到达您的后端。
此外,API GW 是一种容错且高可用性服务,因此您无法将其关闭(但可能会超出预算),因此 GW 端点(从世界各地可见,如 d123456.cloudfront.net)不会关闭。
答案2
听起来你描述的是 CDN(内容分发网络)。这本质上是静态站点的只读副本,可用作新前端。其中重要的一点是 CDN 前端不再包含任何服务器端代码,因为该前端是通过浏览器抓取生成的,然后在解释后重新呈现,因此可以托管在 S3 中,而以前需要带有 Web 服务器的 EC2 实例 - 这使你能够更好地扩展和控制 DDoS 攻击下的条件。这对静态站点很有效,但显然不适用于动态应用程序。
如果您正在运行动态应用程序并需要防止此类攻击,WAF 非常有效,并且具有足够灵活的规则来限制几乎任何类型的流量。当您看到这些攻击发生时,WAF 将允许您充分适应,而无需启动昂贵的解决方案(例如 F5 ASM)。虽然使用 API 网关为您的问题提供了高度容错和容量过大的解决方案,但攻击确实会搞砸账单。API 网关具有规则,可让您防止这种过度使用,并且与 WAF 结合将允许您锁定该业务。
最后,您可以考虑边缘网络缓存。边缘缓存服务器将允许您通过全球分布的前端缓存服务器拥有这种“端点的端点”。当您的原始服务器发生故障时,您的缓存将使您的网站和潜在的应用程序保持活动状态,就像在停机窗口之前一样。有几种产品可以做到这一点,最著名的是 CloudFront 或 Akamai。
通过所有这些解决方案,您应该能够抵抗大多数类型的 DOS 攻击,并且能够适应以后的新类型攻击。