低本钱实现百 Gbps DDoS/CC 攻击防护
小刀网络 2023-08-07 07:55:03 0

背景介绍

年初启动的公司项目上线后陆续收到各种强度的 DDoS/CC 攻击,其中最大单次攻击流量达(只)到(有) 140Gbps+,这些攻击严重影响了用户的访问体验。

从技术角度来讲,150Gbps 的攻击流量业内有很多成熟的解决方案,典型如阿里云的 20Gbps 保底和 150Gbps 弹性防护,开通这项服务需要 21800 软妹币/月的基础费用,再加上当天遇到的超越部份,例如 100Gb<攻击峰值≤150Gb 范围的弹性防护费用为 16453 软妹币/天。如果一个月遇到 3 次 140Gbps 的攻击,那末这个月的总费用最少为 21800+16453*3=71159 软妹币。

问题是没那末多预算的情况下,亏本生意谁都不愿意做。为了下降被攻击带来的投放损失,提高服务质量,我们尝试了国内外几家公司的高防/流量清洗服务,最后扬长避短采取了海外高防和国内 CDN 相结合的攻击防护方案,以较低本钱实现攻击防护的同时保证了服务质量和用户体验。

相关名词解释

DDoS 和 CC 攻击

DDoS(Distributed denial-of-service attack)攻击全称散布式谢绝攻击,CC(Challenge collapsar)攻击是 DDoS 的一种,但和 DDoS 攻击区别的是,它发出了大量的正常要求给服务端使服务端资源耗尽。具体对二者的定义和攻击方式可见谢绝服务攻击 [注①]

高防服务和流量清洗

国内各大平台给出的基本都是高防服务,这和流量清洗其实不是同一个概念。高防服务一般针对各类攻击(包括 DDoS 和 CC)都具有一定的防护能力,而流量清洗主要针对异常流量进行清洗和防护,但对 CC 攻击这类 “看起来正常” 的攻击流量其实不能实现良好的防御。

举一个具体的栗子方便各位看官理解:

前段时间美罗城新开的喜茶人气爆棚,引来了无数顾客。这时候候隔壁丧茶老板发现自己的生意被抢了,因而雇了几十个大汉把喜茶的门给堵了,顾客根本没法进店排队。(和 DDoS 暴力占满服务端网络资源或服务资源的方式一样,大汉堵门致使喜茶没法正常接单) 然后喜茶老板报警,丧茶老板被请去局子里,大汉被警察叔叔赶走。(这样做类似于流量清洗,由专门的装备清洗不正常的网络要求,避免服务端直接收到大量非法要求而资源耗尽没法正常服务) 丧茶老板看着络绎不绝的喜茶顾客,看着自己冷清的门庭和付完大汉工钱以后干瘪的钱包,决定一不做二不休——雇几十个黄牛。黄牛轮番排队,点制作时间最长,最畅销的喜茶,再高价兜售还可以赚一波差价。(这和 CC 攻击如出一辙,攻击者发起了海量的正常要求,使服务端目不暇接终究或者没法正常为用户提供服务而瘫痪) 喜茶老板面对大量的黄牛,找来了人脸辨认系统,规定 6 小时内同一个人只能租赁一次喜茶(CC 防火墙会对记录其会话情况,对同一 IP 或其他特点进行记录,超过阈值即谢绝服务),买到的黄牛发现其他人都买到了喜茶,只能自己喝了……

业务:页面和访客

页面内容由常见的几个部份组成(好像网页基本都是这些):

  • 页面:HTML

  • 页面资源:CSS 、JS 等

  • 富媒体内容:图片、视频等

由于内容页面地域和受众来源非常具有地域性特点,访问者绝大部份来自于中国大陆,极少情况会有在东南亚出(旅)差(游)办(休)事(闲)的爱国人士来刷存在感。中国大陆地区的访问情况大致以下,可以看到访客绝大部份来自于中、东部各省、市、自治区:

图片来源: 本案后台运维系统

基础:分而治之

在项目最初的设计方案中,为了对区别资源实现优化访问(例如提高图片等较大文件的加载速度),同时避免 “蛋都放在一个篮子里” 的问题,方便地保护页面内容,所以把页面内容和页面资源、媒体内容在存储实现上做一个辨别:

资源类型 需求
页面内容 变化频繁,包括客户转化入口,易被攻击
图片、视频、页面资源 上传后基本不变

页面投放目的在于客户转化,让页面没法展现是下降转化最简单直接有效的方式,所以这也决定了攻防要点在于页面内容。由上面对资源类型的分析可以看到,由于页面内容和其他资源被隔离开,所以可以更加方便地对页面内容做特定的防护和优化。

分析:攻击特点

从各类访问日志来看,来自于中国大陆的攻击流量占比不到一半,来自于中国台湾、美国、欧洲和南美的流量非常很多,总结以下:

  • 国内外攻击占比

  • 中国大陆流量 ~40%

  • 大陆之外流量 ~60%

  • 攻击方式

  • DDoS

  • CC

根据以上的情况,我们可以得出一些结论:

  1. 大多数正常访问都是国内流量,可以租赁支持隔断海外访问的国内高防,减少国外攻击影响;

  2. 可使用智能 DNS 把海外流量引到海外高防或蜜罐机,就算海外挂了也对国内没有影响;

  3. 国内需要防护来保证服务的可靠运行;

调研:防护策略

攻击目标已明确的情况下,对页面内容的防护成为我们重要关心的问题,即:

  • 需要防护的使用高防解决方案

  • 需要大带宽和更快响应能力的使用 CDN 解决方案(本文不作讨论)

针对上面的需求做了一点微小的调研:

再回过头来看具体的防护需求:各位看(大)官(佬)可以发现,就算是防御有限的服务,都好贵啊……而且能做好通用高防也是不容易的一件事。

资源类型 需求
页面内容 易被攻击,需要防护
图片、视频、页面资源 不受攻击者重视,先放一放

由上表可以发现,需要防护的重点在页面内容上,这都是些小文件,聪明的同学可能要问提高服务的 QPS 行不行,例如:

  1. 提高 gzip 紧缩比,减少网络开消;

  2. 使用 nginx 集群,提高负载能力;

  3. 加入各类缓存服务,让性能更上一层楼;

但是单纯通过提高本身的 QPS 来应对攻击,实际是不行的,由于带宽容易被 DDoS 挤满,后端性能再强也会由于带宽不足没法提供正常服务,另外一方面,增加本身 QPS 性能带来的本钱比攻击者提高攻击并发产生的本钱大很多很多,对方少抽一包烟就可以让你辛苦搭建的集群分分钟负载跑满。所以寻觅一个低本钱的流量清洗数据中心变得非常重要。

实践:防护实现

项目起于年初,在 2 月上线后陆续遭到愈来愈大的攻击,为了稳定提供服务我们先使用了某云公司的通用高防服务,并启用了弹性防护。使用了一个多月后,账单消费约 15000 元(不含因公司本身事故致使的扣费),与此同时产生事故 3 次,业务因此中断十多小时。

由于高防防护的特殊性,我们调研并实现了一套防护体系,防护实现通过以下几个核心工具组合而成:

  1. 智能 DNS:国内经常使用 CloudXNS(https://www.cloudxns.net)、DNSPod(https://www.dnspod.cn)等;

  2. 海外流量清洗服务:本案例选择了 OVH(https://www.ovh.com),还有例如 Voxility(https://www.voxility.com)等提供商可以选择;

  3. 国内 CDN 服务:需要支持超越带宽峰值自动回源和单 IP QPS 限制;

  4. 金盾防火墙:提供 CC 攻击过滤和防护;

具体调度策略如上图所示,说明以下:

  • 页面内容

  • 同时放置在国内静态文件服务和海外高防的静态文件服务之上;

  • CDN 回源要求页面内容并提供访问服务;国内和海外静态文件服务有两个 DNS 记录进行解析;

  • 正常服务时:DNS 解析大陆访客到大陆 CDN 访问,国外访客到 OVH 进行访问;

  • 遇到攻击时:流量超越 CDN 预设的带宽峰值回源,直接回源到 OVH 地址进行流量清洗和防护;

以上策略实现了正常状态下的具有良好的访问体验,被攻击时保证页面可以正常浏览。 从国内高防服务完全迁移到海外前后使用了近一个月的时间,为了验证海外服务的可靠性和清洗能力,对迁移期间遭到的若干次攻击做了手动调度,即发现攻击后将流量全部迁移到海外,即时监控海外服务的清洗情况和服务质量并进行调剂优化。

在使用 OVH 进行 DDoS 防护的时候需要注意,OVH 对流量清洗的能力使人较为满意,但是面对 CC 攻击 OVH 其实不能良好地作出防御。所以需要手工对 OVH 进行 CC 攻击的加强防御。本案例使用了金盾防火墙来实现 CC 攻击的防御。如果遇到更大量级的 CC 攻击,则需要更多的主机实例或使用硬件混合云的架构实现更强的防护能力。

总结

我们终究采取的具体方案和支出情况以下:

上述方案每个月支出不到人民币 1000 元,远小于使用国内通用高防月均万元的支出。至今已稳定运行了 4 个月,业务不可用时间小于 1 小时/月,基本可以满足当前遇到的攻击防护需求,同时也具有一定要的扩大能力,可以在一周内实现防护能力和访问体验的提升:

  1. 对更大量级的 CC 攻击: 横向扩大更多的金盾实例,或使用混合云方式部署硬件清洗装备;

  2. 中国大陆访问优化: 欧洲中立数据中心结合混合私有云实现调剂回程路由或 BGP 接入中国运营商(实现欧洲到上海/北京 RTT 小于 200 ms,1‰ 之内丢包率)

标签: 防护流量
相关信息推荐