1. 方案背景
近年来随着互联网行业的发展,我们很多开发者小伙伴会使用云服务器、轻量应用服务器等云产品来搭建图床、博客等站点,但是传统iass层产品的外网带宽费用较贵,以至于外网带宽非常小就导致单一站点的访问压力非常大,几个人同时访问网站时,网站就经常出现图片加载失败等情况。所以像宝塔、WordPress、开源图床等软件商,也都推出了对接对象存储、内容分发与网络等云产品的内置插件,来减轻源站的压力并且加速网站的访问速度,并且对象存储产品,还可以有效的减少网站存储空间压力。但是云产品也是一把双刃剑,给用户们带来高速体验的同时,也同时带来了潜在风险,例如存储桶内的文件被恶意高频次的访问,产生了高额的流量账单费用,同时云厂商也为此付出了高昂的流量费用成本,所以因恶意攻击或流量盗刷产生的高额账单云厂商也是受害者,无法为用户免除费用。因此,为尽量避免此类潜在风险,本文为您介绍这一类情况的应对办法。
俗话说:知己知彼,百战不殆。我们先来看下常见的盗刷场景,以制造对应的“盾”,来抵制攻击的“矛”
2. 方案概述
针对上面的常见盗刷场景,防盗刷方案将从以下两个方面作为切入点,整体方案如下图
- 刷请求型:使用攻击者的唯一特征来拒绝访问
- 刷流量型:累计达到一定量级后熔断服务
3. 相关案例
3.1 盗刷案例
一天早晨,小明收到一条腾讯云扣费短信通知,小明点开短信一看,猛的从床上跳了起来,因为短信通知里面写到:“您的账号已欠费15,657.57元,最新一笔扣费为COS对象存储 结算扣费,扣费金额15,657.57元;对象存储、内容分发与网络等产品即将停服”。
后来与小明联系后,才了解到该事情的前因后果:小明购买了一台轻量应用服务器,用于搭建图床网站,并且将图床的注册链接发送给了朋友,随着朋友使用图床的次数增多,轻量服务器本身的磁盘存储空间也捉襟见肘,同时也有较多朋友反馈高峰期时间段图片经常访问失败,或者图床首页无法打开,此时小明急需要一个低成本且易用的方案来优化访问速度和减轻存储压力。
有一天小明在开发交流群内看到了一篇帖子,帖子里面讲述到上传的图片文件可以不存储在轻量应用服务器中,而是存储在腾讯云对象存储里,并且腾讯云对象存储可以做到海量无上限存储且无需提前购买及扩容存储设备,同时提供高速率的带宽并且采用累积流量的方式来计费,随即小明就按照帖子里的教程将图床后台存储的数据迁移到了腾讯云对象存储中,并在迁移完成后进行访问测试。小明测试发现此时网站的访问速度以及图片文件的加载速度都非常之快,于是将这个简单易用的方案告诉了好朋友们,小明的朋友们见此消息,纷纷在小明的朋友圈下方点赞留言。
小明的图床站点平稳运行长达半年之久后的一天早晨,小明突然收到了一条腾讯云欠费停服短信通知,通知内容就是本文上方所讲述的扣费明细,随即小明打开了电脑,登陆腾讯云官网控制台进行查看扣费详情,发现是平常用来存储图床图片文件的公有读私有写
存储桶在一夜之间产生了高达30TB
的外网下行流量费用,于是将桶内存储的全部数据进行了删除,并且告知其朋友不再维护免费的图床以及永久关闭图床站点。同时,小明为了追溯高额流量的访问来源,小明也提交了工单以寻求腾讯云工程师的协助,在腾讯云工程师的协助下,小明拿到了访问来源IP的日志,但是分析日志发现存储桶内都是同一个图片文件被大量访问,同时请求者没有携带Referer请求头部,且因为都是境外的IP地址,无法继续往下溯源。
3.2 防盗刷方案细节
3.2.1 对象存储COS 防盗刷方案
从上述盗刷案例来看,是属于典型的刷流量型
,在对象存储产品这里,我们的应对措施有
- 将存储桶改为私有读写,并且将存储桶域名接入内容分发与网络(需在CDN侧开启回源鉴权),使用CDN作为网站接入点,不暴露对象存储源站地址。
- 配置存储桶防盗链,勾选
拒绝空referer
- IP黑名单限制
通过存储桶Policy策略功能,可以对匿名请求方的 IP 来配置访问控制策略,此方法可以十分有效的阻拦恶意 IP 请求,以达到防盗刷、防攻击的效益。
- 流量阈值封顶&熔断策略
因为目前COS产品暂未推出类似CDN的流量封顶功能,所以这里推荐云函数SCF
云监控
方案来实现此功能,具体实现方案如下
注:经咨询腾讯云工程师,此功能后续会推出
相关接口如下
接口名 | 功能说明 |
---|---|
查询存储桶列表 | 查询出账号下的全部存储桶列表 |
拉取指标监控数据 | 使用 |
修改存储桶访问权限 | 监控到达到设定的峰值、累积阈值后,调用此接口将存储桶的权限修改为私有读以达到紧急止损的目的 |
3.2.2 内容分发与网络CDN 防盗刷方案
对于内容分发与网络产品,我们可能会同时遇到刷请求数型
和刷流量型
的场景,那么我们的应对措施有
- 配置加速域名的防盗链,不要勾选
允许空referer访问
- IP 黑白名单配置 通过对匿名请求方的 IP 来配置访问控制策略,此方法可以十分有效的阻拦恶意 IP 请求,以达到防盗刷、防攻击的效益。
- 单IP 访问限频配置 通过对匿名请求方的 IP 来配置访问控制策略,此方法可以十分有效的阻拦恶意 IP 的大量请求,以达到防盗刷、防攻击的效益。
- UA 黑白名单配置
通过对用户请求头中的
User-Agent
字段设置相应的判断规则,按需放行或拒绝访问。 常见盗刷场景UA头部 - 空 - curl/xx.xx - Wget/xx.xx - ApacheBench/xx.xx
注意:关闭状态下仍可修改配置,但不会发布至现网,仅当开启此开关时,进行现网配置下发
- 下行限速配置 腾讯云 CDN 提供了下行限速配置,可对服务端单链接的下行最大吞吐速度进行设置,降低单链接单位时间内盗刷的流量 注:下行限速配置成功后,将会对访问此域名的全网用户生效,一定程度上会影响用户访问体验及 CDN 加速效果,请谨慎使用。
注意:关闭状态下仍可修改配置,但不会发布至现网,仅当开启此开关时,进行现网配置下发
- 区域访问控制
区域访问控制通过 Client IP 识别终端用户所在地,允许客户针对全部内容或者指定目录,设置各区域终端用户的访问权限。如开启
白名单
模式且只允许中国境内地区
访问,针对上面小明的盗刷场景,可以非常有效的产生防护效果。
- 用量封顶配置
此方案即累积达量后的自动熔断服务方案,强烈建议配置此策略!
用量封顶策略可以配置
5分钟级别
的带宽峰值或累积流量阈值,也可以配置小时级别/天级别
的流量累积阈值,并且支持"自动解封"