我已注册Amazon Web Services并通过Amazon S3服务创建了一个静态网站(创建了一个Bucket并将域映射到该Bucket)。
这项服务看起来很棒,但我有一个问题 - 我不知道如何阻止坏机器人,并防止它们浪费我的带宽(你们都知道亚马逊对带宽收费)
Amazon Web Services不支持.htaccess,我不知道如何阻止它们。
我需要的是通过两种方式阻止坏机器人:
你能帮我做一下吗?
答案 0 :(得分:2)
您的S3存储桶策略肯定会允许您阻止指定的IP地址,但存储桶策略大小存在大小限制(约20 kb),这可能会导致尝试维护限制声名狼借的IP地址的策略不可行。
AWS的WAF & Shield
服务,由Cloudfront提供,是AWS为阻止IP提供的最强大的方式,您可以轻松地将其与S3源集成。 Cloudfront允许您插入Waf & Shield
ACL,该ACL由允许或禁止您定义的IP集的规则组成。
AWS有一些示例Lambda函数here,您可以将其用作起点。您可能希望Lambda函数按计划运行,获取要阻止的IP列表,解析该列表,并添加找到的WAF IP集的新IP(或删除列表中不再存在的IP)。上述链接中的waf-tor-blocking
和waf-reputation-lists
函数提供了有关如何执行此操作的良好示例。
我不确定您通过检测Bot名称的确切含义,但标准Waf & Shield
方法目前正在解析发送到s3存储桶的Cloudfront日志。只要收到新的gzip压缩日志文件,您的s3存储桶就会直接触发SNS或Lambda函数。然后,Lambda函数将下载该文件,对其进行解析以查找恶意请求,并阻止关联的IP地址。我链接的repo中的waf-block-bad-behaving
和waf-reactive-blacklist
函数提供了如何处理此问题的示例。有时,您会在请求的用户代理字符串中看到错误机器人的签名。 Cloudfront日志将显示用户代理字符串,因此您可以对此进行解析并相应地阻止关联的IP。