腾讯云 CDN 防刷经验分享
通过 CDN 部署静态网站可以让网站加载速度如德芙般丝滑。CDN 和云服务器不同,云服务器大多是按带宽计费,CDN 则是按流量计费,如果设置不当,遇到流量洪峰时,会产生高额账单。最近不少使用 CDN 的博客遭遇了恶意刷流量攻击(近期部分加速域名晚间遭遇恶意流量事件说明),本站也是受害站之一,但基本没啥损失,分享一下防刷经验。
DNS 设置
虽然接入 Cloudflare 提供的 DNS 可以防御 DDoS,但 Cloudflare 在国内访问太慢了,暂时没套,如果未来受到比较严重的攻击,再考虑套 Cloudflare。
多准备几个源站,可以在受到攻击时灵活切换。我准备了三套源站,GitHub Pages、Netlify、腾讯云 CDN。
用腾讯云的 DNSPod,可以设置两条线路,默认线路解析到 Netlify,国内线路解析到腾讯云 CDN,GitHub Pages 不解析,留作备用。
Netlify 每月有 100G 免费流量,用于国外访问本站。
腾讯云以前每个月送 10G,现在不送了,买的话是 19 元 100G,有效期一年,不算贵。
受到攻击时,手机收到告警,我会立即在腾讯云小程序上暂停国内线路,保证 CDN 的安全,这时国内流量也会走默认的 Netlify,保证网站仍能正常访问,如果 Netlify 也不幸被刷满,就关闭网站。
CDN 设置
腾讯云提供了丰富的选项来防止被刷,这点还是值得称赞的
IP 黑名单,拦截异常的 IP 段
想要查询攻击者的 IP,可以到数据分析中看
IP 访问限频,可以缓解被刷的速度,但不能太低,会影响网站正常加载
下行限速,也可以缓解被刷的速度,静态网站都是小文件,不需要太高的下行速度
用量封顶,当瞬时流量超过设置的大小时,立即停用 CDN,网站会 404,避免产生高额账单
告警设置
告警可以让你知道自己被攻击,腾讯云可观测平台 可以配置 CDN 的告警,微信提醒完全免费,可以参考下图我的配置,根据你的网站规模,适当修改指标
告警触发时,会通过微信提醒
腾讯云 CDN 防刷经验分享