CDN 边缘节点回源带宽突增,如何快速判断是攻击还是热点内容

解读

面试官想验证三件事:

  1. 能否在分钟级拿到可决策的数据,而不是“先拉日志慢慢分析”;
  2. 是否熟悉国内 CDN 厂商(阿里云 CDN、腾讯云 ECDN、百度云加速、网宿、白山等)提供的实时指标与 API;
  3. 能否把“攻击”与“热点”这两个看似都表现为“流量大”的场景,用可量化的维度拆成可落地的判断规则,并给出后续闭环动作。

回答必须体现“快速”——5 分钟内给出结论;“判断”——给出阈值与公式;“推动”——知道如何把结论同步给安全、运维、业务方并触发防护或扩容预案。

知识点

  1. 国内 CDN 回源日志字段:time、client_ip、uri、referer、user_agent、status、body_size、request_time、range、x_forwarded_for、edge_location、origin_ip。
  2. 实时指标:回源带宽 bps、回源 QPS、回源 4xx/5xx 比例、回源失败率、单 URI 回源流量占比、单 IP 回源流量占比、range 请求占比、UA 异常率、热点排行、cache 命中率跌落值。
  3. 攻击特征:
    • 单 IP 回源流量 > 5 Mbps 且 UA 为空或随机字符串;
    • range 请求占比 > 60% 且 range 起始字节随机;
    • referer 缺失或固定为同一垃圾域名;
    • 回源 206 状态码占比突增;
    • 地理分布异常——偏远小运营商 IP 突然涌入。
  4. 热点特征:
    • Top1 URI 回源流量占比 > 30% 且该 URI 在边缘节点命中率 < 20%;
    • 同一 URI 的 QPS 曲线与回源带宽曲线强相关(皮尔逊系数 > 0.9);
    • 来源 IP 分散,client_ip 去重后数量级与历史热点事件同一量级;
    • referer 为微博、抖音、微信、小红书等国内主流分享域;
    • 无异常 UA、无异常 range 模式。
  5. 阈值速算:
    攻击可能性指数 = (单 IP 最大回源流量 / 平均回源流量) × (range 占比) × (异常 UA 占比);
    指数 > 10 且 5 分钟持续增长 → 判定为攻击;
    指数 < 3 且 Top URI 集中 → 判定为热点。
  6. 国内 CDN 实时接口:阿里云 DescribeDomainRealTimeSrcBpsData、腾讯云 GetCdnOriginStat、网宿 OpenAPI /origin/bandwidth;均可 60 s 粒度订阅。
  7. 联动手段:
    • 攻击 → 调用 CDN 安全 API 一键开启“边缘 DDoS 清洗”+“UA 黑名单”+“referer 防盗链”+“IP 限速”;
    • 热点 → 立即推送资源预热接口,将 Top URI 主动推至全网边缘节点,并通知业务方评估是否追加静态化缓存时长(如 Cache-Control max-age 从 1 h 提到 6 h)。

答案

“我会在 3–5 分钟内跑完以下四步,给出可拍板的结论。

第一步,拉取实时指标。通过阿里云 CDN 的 DescribeDomainRealTimeSrcBpsData 接口拿到最近 5 分钟粒度回源带宽,同时 DescribeDomainRealTimeSrcHttpCode 拿到 2xx/4xx 分布,再用 DescribeDomainTopUrlVisit 拉出 Top10 URI 及其回源流量占比。整套调用耗时 <30 s。

第二步,计算攻击可能性指数。公式:
Index = (MaxIPBps / AvgIPBps) × RangeRatio × AbnormalUARatio
其中 MaxIPBps 取单 IP 回源带宽峰值,AvgIPBps 为平均值,RangeRatio 为 206 状态占比,AbnormalUARatio 为 UA 为空或随机字符串的占比。Index > 10 且曲线斜率 > 0 即判定攻击;否则进入第三步。

第三步,验证热点特征。若 Top1 URI 回源流量占比 > 30%,且该 URI 边缘命中率较昨日同时段跌落超过 20 个百分点,同时 client_ip 去重后数量 > 10 k,且 referer 域出现 weibo.com、douyin.com、qq.com 等国内大流量平台,则判定为热点。

第四步,触发对应预案。攻击场景立即调用 CDN 安全 API:开启边缘清洗、对 MaxIPBps 来源 IP 段限速 1 Mbps、UA 空值黑名单、referer 防盗链;热点场景则调用 PushObjectCache 接口把 Top URI 全量预热,并建议业务把缓存 TTL 从 1 h 提到 6 h,同步在群里@运维观察源站负载。

全程 5 分钟内输出结论并执行防护或扩容,后续再补 15 分钟详细日志关联分析,形成复盘报告。”

拓展思考

  1. 如果攻击者伪造热门 URI 并随机 UA、控制单 IP 速率低于 1 Mbps,指数会失效,此时可引入“回源字节熵值”——计算回源 URL 路径的 Shannon 熵,熵值突增 > 5 bit 即认为 URI 分布异常,叠加地理维度(国内小运营商 IP 占比 > 40%)即可二次判定。
  2. 大型活动(春晚、双 11)常伴随“先热点后攻击”的混合模式,可预置“滑动窗口双阈值”模型:窗口期 10 分钟,先按热点逻辑预热资源,若 10 分钟后 Index 仍上涨且源站 CPU 利用率 > 70%,则自动降级到攻击模式,启动人机验证(边缘 JS 挑战)。
  3. 回源带宽突增也可能由源站缓存失效策略误配引起,例如批量刷新正则写错导致全网回源,此时 Top URI 会呈现“均匀分布”而非集中,且命中率跌到个位数,但 Index 不高,需额外增加“缓存失效事件”维度做交叉验证。