use*_*535 5 rate-limiting amazon-web-services amazon-waf
我有一条路径(例如,mysite.com / myapiendpoint)既要占用大量资源进行服务,又很容易被机器人滥用。我需要将对特定路径的访问速率进行限制,例如每个客户端IP地址每分钟10个请求。如何才能做到这一点?
我托管了一个EC2实例,其中包括CloudFront和AWS WAF。我启用了标准的“基于费率的规则”,但是对于我的应用程序来说,每个IP地址最低每分钟2,000个请求绝对不可用。
我正在考虑为此使用API网关,并且在过去使用过它,但是据我了解,它的速率限制不是基于IP地址,因此漫游器会简单地用尽限制,并且经常会拒绝合法用户使用端点。
我的网站不使用任何类型的会话,因此我认为我无法对服务器本身进行任何类型的速率限制。另外请记住,我的网站是单人操作,对AWS来说我是新手
如何将每个IP的使用限制为每分钟10个请求,最好是在WAF中?
经过更多研究,我想知道是否可以启用将标头转发到源(运行节点/ express)并使用速率限制程序包。这是可行的解决方案吗?
小智 6
我不知道这是否对您仍然有用-但我只是从AWS支持中获得了提示。如果多次添加速率限制规则,则可以有效地减少每次请求的数量。基本上,每次添加规则都会发生一次,它会为每个IP计算一个额外的请求。所以说IP发出一个请求。如果您应用了2个速率限制规则,则请求将被计数两次。因此,基本上,IP不需要2000个请求,而只需阻塞1000个即可。如果添加3条规则,它将对每个请求计数3次-因此IP将在667个请求时被阻止。
他们澄清的另一件事是,“窗口”是5分钟,但是如果总数在该窗口中的任何地方被破坏,它将被阻止。我认为WAF仅会在5分钟后评估请求。例如。假设您对5分钟内的2000个请求有一条规则。假设IP在第一分钟发出2000个请求,然后在接下来的4分钟内仅发出10个请求。我最初了解到,该IP仅在第5分钟后才会被阻止(因为WAF评估为5分钟的窗口)。但是很明显,如果IP超出该窗口中任何地方的限制,它将立即被锁定。因此,如果该IP在第1分钟发出2000个请求,则实际上将在第2、3、4和5分钟被阻止,但是从第6分钟起将再次被允许。这为我澄清了很多。话虽如此,我还没有测试过。
AWS 现在终于发布了更新,允许速率限制低至每 5 分钟 100 个请求。
公告帖子:https://aws.amazon.com/about-aws/whats-new/2019/08/lower-threshold-for-aws-waf-rate-based-rules/
归档时间: |
|
查看次数: |
1133 次 |
最近记录: |