CDN 日志的价值与坑
CDN 边缘节点记录每一次请求,是最接近攻击者的一手数据:包含客户端地址、请求方法、URI、状态码、缓存命中情况、回源耗时与 User-Agent。调查中的典型用途是统计攻击来源分布、识别探测型流量(大量 404 与非常规路径)以及核对回源压力。坑主要在字段:不同厂商与不同日志版本的字段名称、顺序与可用性差异很大,客户端地址还可能是上游代理或 CDN 的中间地址,引用前必须先确认日志版本与字段含义。
基本信息
| 适用平台 | 阿里云/腾讯云 CDN、Cloudflare 等各类 CDN 与边缘防护服务 |
|---|---|
| 获取方式 | 控制台日志下载、日志投递到对象存储或日志服务、API 导出 |
| 典型字段 | 客户端 IP、时间、方法、URI、状态码、缓存状态、回源耗时、UA、字节数 |
| 真实来源 | 需确认服务商提供的真实客户端地址字段(可能不在默认字段集中) |
| 注意 | 日志字段可配置,版本升级会调整字段集合 |
典型使用场景
- 统计攻击请求的来源分布,识别集中的攻击源与代理池特征
- 从状态码与 URI 分布识别探测与扫描行为
- 核对回源情况:缓存未命中导致的回源压力与后端异常
- 分析被抓取的资源范围,评估内容泄露面
- 与 WAF 告警、后端访问日志对齐,确认拦截与放行的对应关系
统计与判读
统计与判读
# 客户端地址分布(列为示意,按实际日志格式调整)
awk '{print $1}' cdn.log | sort | uniq -c | sort -rn | head
# 探测型流量占比参考
grep -c ' 404 ' cdn.log
# 统计访问最多的 URI 路径,识别被扫描的目标
awk '{print $7}' cdn.log | sort | uniq -c | sort -rn | head -15
# 区分缓存命中与回源条目(缓存状态列按实际字段名调整)
grep -c 'MISS' cdn.log; grep -c 'HIT' cdn.log
# 关注异常 UA 与自动化工具特征
awk -F'"' '{print $6}' cdn.log | sort | uniq -c | sort -rn | head -15字段读法
| 字段 | 含义 | 判读要点 |
|---|---|---|
| 客户端 IP | 请求来源地址 | 可能是上游代理或中间节点,需确认是否为真实客户端地址 |
| URI | 请求路径与参数 | 含敏感参数时先脱敏再引用 |
| 状态码 | 边缘返回结果 | 404 集中说明探测,5xx 需结合回源日志判断 |
| 缓存状态 | 命中或回源 | 把命中条目当后端行为会导致结论错误 |
| 回源耗时 | 边缘到后端的耗时 | 异常升高提示后端异常或攻击压测 |
| 字节数 | 响应体积 | 大体积下载需关注是否涉及数据外带 |
缓存命中与回源条目必须分开统计,否则同一资源的访问量会被重复计算,攻击规模评估会明显偏高;引用时同时给出统计口径。
攻击流量巨大时抽样不可避免,但抽样规则要固定并写入记录(例如按固定时间间隔或固定来源段抽取),否则结论会带有选择偏差。