tencent cloud

文档反馈

防盗刷指引

最后更新时间:2024-07-17 16:05:29

    前言

    近年来,越来越多的用户在搭建网站或图床时将图片视频等资源上传到对象存储 COS,提升了访问稳定性的同时减轻了服务器的存储空间压力,但随之而来的流量盗刷、图片盗链问题也困扰着不少开发者,一旦存储空间被恶意访问,会产生高额的流量费用,产生不必要的纠纷。这类问题实际上可以通过多种手段来防护,本文将主要介绍一些常见的防护手段,帮助开发者合理配置存储桶,建立安全机制,降低因类似问题带来的大额资金损失的风险。COS控制台支持盗刷风险检测,请参见 盗刷风险检测

    防护方案

    盗刷有很多防护方式,这里将按配置难易度和门槛来区分,开发者可根据实际情况和需求来选择。

    基础防护方案

    
    修改存储桶访问权限
    
    访问权限是存储桶最核心和敏感的配置之一,据不完全统计,绝大部分被盗刷的原因都是因为用户设置了公有读权限,由于公有读权限可不带签名直接匿名访问,这给了黑产和攻击者可乘之机。将存储桶改为私有读写可大大降低盗刷风险,拿不到密钥就无法计算签名,访问会被拒绝。
    如果业务没有特别需求,这里建议您平时尽量配置私有读写权限。COS 控制台目前有两个地方可以设置存储桶权限:
    创建存储桶弹窗
    
    存储桶详情页-权限管理
    
    
    开启存储桶防盗链
    
    防盗链也是最常见的防护手段之一,其原理是通过 HTTP 的 Referer 头部进行判断校验,用户可通过配置白名单或黑名单,来允许或者禁止某些访问来源。
    COS 控制台-存储桶详情页-安全管理可以找到防盗链设置:
    
    
    
    这里建议您空 referer 配置为拒绝,黑白名单可根据业务实际情况来选择,如果是固定在某些域名下访问可设置白名单,如已经发现有恶意访问并明确知道访问域名或 IP,可手动设置黑名单来拦截。如需了解更多防盗链的使用技巧,可参考 防盗链实践
    
    配置云监控告警
    
    配置日志管理能帮助定位和分析盗刷的来源,提供了丰富的字段可查询,但缺点是需要开发者主动去关注日志。如需更加及时的发现盗刷问题,可以配置云监控告警。目前 COS 控制台创建存储桶时,就支持同时配置告警:
    
    
    
    如果默认告警的策略不能满足要求,也可以手动去 腾讯云可观测平台 创建自定义的告警策略:
    
    
    
    进入告警配置-告警策略,点击新建策略,在云产品监控下找到对象存储,然后在告警对象的实例 ID 里找到需要配置的存储桶,就可以自己指定触发条件了,所有 COS 存储桶的数据监控页面里展示的指标,这里都支持配置。
    
    开启日志管理
    
    前面讲防盗链黑名单的时候提到过“如发现有恶意访问域名或 IP”,这里就需要我们开启存储桶的日志管理,访问日志里会记录每一次请求的各种字段,帮助我们快速定位到访问来源。
    COS 控制台-存储桶详情页-日志管理可以找到日志存储,开启后即可在存储桶指定的路径前缀下找到访问日志。
    
    
    
    日志文件里的字段可以参考 日志管理概述 文档,下面介绍一些常用的可分析字段:
    userSecretKeyId:可以确定请求是通过哪个密钥 KeyId 进行的访问,如确定不是业务自己发起的请求,则很可能是密钥已经泄漏了,可前往 腾讯云CAM控制台 禁用不安全的密钥。
    referer:即防盗链设置里用于判断的条件,如发现不认识的 referer,可能是被其他网站盗链,可配置防盗链-黑名单限制该 referer 访问,可参考1.2 开启存储桶防盗链。
    remoteIp:可以确定访问来源 IP,如发现是不可信任的 IP,可前往存储桶详情页-权限管理-Policy权限设置,点击添加策略,配置 Policy 禁止该 IP 访问存储桶,示例如下:
    

    进阶防护方案

    
    使用自定义 CDN 加速域名
    
    腾讯云 CDN 也提供了很多配置项来进行防护,也能有效抵御盗刷。
    如我们的业务使用了自定义 CDN 域名,可以前往 腾讯云CDN控制台 -域名详情-访问控制页面进行配置,主要常用到的一些配置有:
    防盗链配置:
    
    
    
    CDN鉴权配置:
    
    
    
    IP 黑白名单配置:
    
    
    
    UA 黑白名单配置:
    
    
    
    还有一些更为复杂的配置项,如 IP 访问限频配置、下行限速配置等,可查阅 CDN 控制台相关文档 来使用。
    
    SCF+云监控+COS API实现自动封堵
    
    在基础防护里,我们提到了可以配置云监控告警来及时发现流量异常情况,但有些时候可能会有信息遗漏或人在外不方便及时处理的情况,这里可以通过自动化脚本代码调用 API 来实现一个简单的自动化逻辑。
    从云监控获取到外网下行流量指标(InternetTraffic)异常 -> 自动调用 COS PutBucketAcl 修改存储桶权限为私有读写。主要涉及以下2个 API 接口,这里提供了在线调用示例供调试参考:
    云监控的 GetMonitorData - 调用示例
    COS 的 PutBucketAcl - 调用示例

    相关建议

    以上为本文提供的一些盗刷问题的常见防护手段,除此之外,我们在日常使用 COS 时也需要注意一些小细节,这里提供一些额外的使用建议,也能一定程度上降低盗刷风险:
    避免在对外开源的代码里使用明文的 API 访问密钥,避免密钥泄露引发安全风险,建议参考最小权限原则来使用。
    避免配置跨域规则时允许所有来源(即Origin: *)访问,尽量设置明确的来源。
    上传大量文件时,避免使用规律过于简单的顺序前缀(如数字序号,时间戳等),这样可能会导致攻击者更容易遍历到存储桶下的文件。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持