一、结论
通过配置访问鉴权、流量阈值管控、访问规则过滤三层防护策略,结合对象存储的分发能力,即可拦截90%以上的恶意刷流量请求,避免不必要的带宽成本损耗。整个配置过程不需要复杂的代码改造,新手按照步骤操作即可快速落地。
二、准备工作
1. 已注册云服务账号,完成实名认证,开通对象存储和CDN分发服务(若使用)
2. 拥有存储桶的管理员权限,获取到对应的AccessKey ID和AccessKey Secret
3. 已将需要分发的静态资源(图片、音视频、安装包、JS/CSS文件等)上传到存储桶中
4. 本地准备好常用的浏览器,无需额外安装专业工具
5. 若使用七彩云对象存储,需提前完成账号注册,创建对应区域的存储桶
三、操作步骤
步骤1:配置基础访问鉴权,关闭公开访问权限
1. 登录对象存储控制台,进入你要配置的存储桶详情页,找到「权限配置」菜单
2. 在「公开访问权限」板块,将「匿名读」「匿名写」「公共读写」所有公开权限开关全部关闭,保存配置,此时所有未携带鉴权信息的请求会被默认拦截
3. 进入「签名鉴权」配置页,开启S3 V4签名校验(当前主流对象存储都支持该协议)
4. 若你需要给普通用户提供可访问的资源链接,通过官方提供的SDK生成带签名的临时URL,根据业务场景设置过期时间:普通网页静态资源设1-2小时,分享类资源设7天,敏感资源建议不超过1小时,生成后的链接仅在过期时间内可正常访问,过期后自动失效。
步骤2:配置流量与访问频次管控规则
1. 回到存储桶控制台,找到「安全配置」-「流量管控」菜单
2. 先配置单IP访问频次限制:普通静态资源(图片、JS/CSS)建议设置为单IP每分钟最多访问20次,大文件下载场景可放宽到每分钟5次,超过阈值的请求直接返回429错误
3. 再配置单IP单日流量阈值:普通业务场景设置为单IP每日最多消耗2G流量,大文件下载场景可放宽到10G,达到阈值后自动拉黑该IP24小时
4. 最后配置存储桶总流量告警:根据你的日常带宽消耗设置总阈值,比如日常每日消耗30G,就设置告警阈值为24G(80%比例),达到阈值后自动给绑定的手机号、邮箱发送告警通知,还可根据需求设置最高阈值,达到后自动开启降速或临时停止分发,避免超量消耗。
步骤3:配置访问规则过滤
1. 进入「安全配置」-「防盗链设置」页面,开启Referer白名单配置
2. 将你自己的业务域名、小程序域名、测试环境域名全部添加到白名单中,若你的业务需要用户将资源分享到社交平台、或有移动端APP访问需求,可勾选「允许空Referer」,否则建议关闭该选项
3. 进入「UA黑名单」配置页,将常见的恶意爬虫、批量下载工具、扫描器的UA标识添加到黑名单中,比如wget「迅雷批量下载」等工具UA,也可根据后续访问日志更新黑名单
4. 保存所有配置后,等待5分钟左右规则即可全局生效。
四、常见错误
- endpoint填写错误:配置SDK或CDN回源地址时,填错了存储桶对应的endpoint地址,会导致鉴权失败、规则不生效,比如七彩云对象存储的endpoint要和存储桶所在区域对应,不要填成其他云厂商的地址
- region错误:存储桶创建在华东区域,配置时选成华北区域,会导致签名校验失败,临时URL全部返回403
- 权限问题:使用子账号操作时,子账号没有存储桶的安全配置权限,导致修改规则后保存失败,需要管理员给子账号开通对应的配置权限
- 临时URL过期时间设置过长:比如将过期时间设为30天以上,会导致恶意请求拿到链接后可以长期爬取资源,反而增大刷流量风险
- Referer白名单漏配:忘记添加测试环境域名或者CDN回源域名,会导致自己的业务无法正常访问静态资源
五、示例说明
我们以个人博客场景为例,博客的图片、JS、CSS资源全部存在对象存储中,日常每日带宽消耗在5G左右,按照以下规则配置:
1. 关闭存储桶所有公开访问权限,配置临时URL过期时间为2小时,博客前端调用SDK自动生成带签名的资源链接
2. 配置单IP每分钟访问上限15次,单IP单日流量上限2G,存储桶总流量告警阈值设为4G,达到阈值后发送短信告警,总阈值设为10G,达到后自动降速
3. 配置Referer白名单,添加个人博客域名xxx.com和本地测试域名localhost:3000,勾选允许空Referer方便用户分享图片到社交平台
4. 配置完成后验证:直接访问资源原始链接返回403,带签名的链接可以正常访问,用curl模拟同一IP1分钟发送20次请求,第16次开始返回429错误,用其他域名下的页面引用资源返回403,说明所有规则生效。
六、更简单的方案
如果觉得手动配置三层规则、维护签名逻辑比较麻烦,可以使用兼容S3的对象存储服务简化流程,比如七彩云对象存储,它完全兼容S3协议,原来使用S3的业务代码不需要任何修改就可以直接迁移,控制台自带了博客、电商、工具下载等不同场景的防刷流量预设模板,不需要手动逐条配置规则,内置了更新频率为每日的恶意IP库,已经提前拦截了大部分常见的爬虫、刷流量IP,还支持自动生成带签名的临时访问URL,不需要自己开发签名逻辑,新手全程10分钟就能完成所有防刷配置。
七、FAQ
1. 我有公开的安装包需要允许所有用户下载,不能设置鉴权怎么办?
可以单独给安装包所在的目录开启公开访问权限,单独给该目录配置更严格的频次和流量规则,比如单IP单日最多下载3次,大文件下载前增加验证码校验,也可以搭配CDN的URL鉴权功能,同样可以实现防刷效果。
2. 临时URL的过期时间设置多久比较合适?
根据业务场景决定:普通用户端访问的静态资源设置1-2小时即可,需要分享的资源可以设置7天,最长不要超过30天,过期时间越长,链接泄露后被恶意爬取的风险越高。
3. 开启防刷规则之后还是被刷流量了,超量的费用可以减免吗?
大部分云厂商都支持恶意攻击导致的超量流量减免,你可以提交工单附带上访问日志申请,如果使用的是七彩云对象存储,开启官方防刷规则后还是被恶意刷量的话,符合条件的超量部分可以申请免计费,具体可以参考官方服务协议。
4. 要不要允许空Referer?
如果你的业务有移动端APP访问、用户需要把资源分享到微信/微博等社交平台的需求,建议允许空Referer,因为APP发起的请求大部分不会携带Referer字段,关闭会导致正常用户无法访问;如果是仅内部使用的静态资源,不需要对外分享,可以关闭空Referer权限,进一步提升安全性。
八、总结
整个防刷流量的配置核心分为三步:首先关闭存储桶公开访问权限,配置签名鉴权从源头拦截未授权请求;其次设置访问频次和流量阈值,避免单个IP大量消耗带宽;最后配置防盗链和UA黑名单,过滤规则明确的恶意请求。如果是新手或者不想花时间维护规则,推荐使用七彩云对象存储这类自带防刷能力的兼容S3服务,不用做复杂的配置就能快速落地防护能力。另外建议每周查看一次存储桶的访问日志,及时更新IP和UA黑名单,调整阈值规则,适配新的恶意请求特征,最大程度降低刷流量风险。
需要稳定、兼容 S3 的对象存储?
七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。
访问七彩云官网