使用如下姿势预防阿里云 CDN 产生天价账单

前言

CDN 是一个可以帮助加速静态文件访问速度和降低流量成本的产品,但是CDN普遍以按流量或按带宽计费为主,很多用户使用CDN前有一个担忧那就是如果被黑客恶意刷流量产生天价账单了怎么办?


可见用户对CDN产品,天价账单、一夜之间倾家荡产的担忧还是有的,虽然这里表述的很夸张,但是CDN确实会存在遭遇恶意攻击时扣费,由于按量账单的延迟几遍出现了账户余额为零的情况,继续扣费的问题。

那我们如何解决这个问题呢?下面就是相关方案介绍:

方案介绍

账单检测

通过财务 API 自动检测账户余额,当余额低于某个设定值后通过 CDN API 自动停止CDN服务,以避免天价账单的产生。

  1. 通过 RAM(访问控制) 创建拥有 AliyunCDNFullAccess策略和AliyunBSSFullAccess策略的子账号,并生成 AccessKey ID Access Key Secret
  2. 下载 stopMyBills 脚本
  3. 通过 composer install 命令安装相关依赖。
  4. 创建 .env 文件声明相关变量:
#CDN服务提供商,目前支持Aliyun或TencentCloud
XYBILL_<name>=Aliyun 
#AccessKey ID
XYBILL_<name>_providerCreds_ak= 
#Access Key Secret
XYBILL_<name>_providerCreds_sk= 
#最小余额
XYBILL_<name>_minAmount=5 
#日志详细度
LOG_LEVEL=INFO
  1. 然后用 Cron 定时运行即可,比如说五分钟一次。
*/5 * * * * php /path/to/stopMyBills/index.php

这里只要有环境能运行 php 即可,可用 Docker、虚拟主机、函数计算都可以。

带宽封顶

一些不需要大量带宽的场景,比如说网站静态CSS、JS文件的加速完全不需要太大的带宽上限。刚好截止发稿,阿里云CDN刚好完成了 CDN 带宽封顶的改造。

需要注意的是: 开启带宽封顶功能后,您的业务会受到带宽封顶的限制而下线,为了不影响您的域名业务,建议您合理评估,谨慎设置您的带宽峰值。

操作步骤

  1. 进入CDN控制台

  2. 在左侧导航栏,单击域名管理

  3. 域名管理页面,单击目标域名对应的管理

  4. 在指定加速域名的左侧导航栏,点击 高级配置

  5. 带宽封顶区域框,点击 修改配置

  6. 打开带宽封顶开关,配置带宽上线值。

说明

  • 各个单位之间进制为1000。例如:1Tbps=1000Gbps,1Gbps=1000Mbps。
  • 您可以根据域名的实际使用情况,选择开启或者关闭带宽封顶功能。
  1. 单击确定

Refer 白名单

通过配置访问的 Referer 黑名单和白名单来实现对访客身份的识别和过滤,从而限制访问CDN缓存节点资源的用户,提升CDN的安全性。建议设置白名单。

例如我开启了 pics.mf8.biz 仅运行 *.mf8.biz域名的访问,那么其他域名如 bigkr.com 就无法加载 pics.mf8.biz 的图片。

URL 鉴权

通过防盗链方法添加Referer黑名单和白名单的方式可以解决一部分盗链问题,由于Referer内容可以伪造,所以Referer防盗链方式无法彻底保护站点资源。因此,您可以采用URL鉴权方式保护源站资源更为安全有效。

URL鉴权功能通过阿里云CDN加速节点与客户资源站点配合,形成了更为安全可靠的源站资源防盗方法。

  • CDN客户站点提供加密URL,URL中包含权限验证信息。
  • 用户使用加密后的URL向加速节点发起请求。
  • 加速节点对加密URL中的权限信息进行验证,判断请求的合法性。正常响应合法请求,拒绝非法请求。

不过由于 URL 鉴权更加安全,因此使用上也会更加复杂需要程序作出相应的配合,而不是简单的控制台设置即可了。

建议参考帮助文档:https://help.aliyun.com/document_detail/85117.html