CDN 与 WAF 精讲教程 / 第01章 概述与网络架构
第01章 概述与网络架构
本章是整套教程的起点。我们将建立 CDN 和 WAF 的基本认知,理解它们在现代网络架构中的位置,并分析典型适用场景。
1.1 CDN 概述
1.1.1 什么是 CDN
CDN(Content Delivery Network,内容分发网络) 是一种分布式网络架构,通过在全球范围内部署大量边缘节点(Edge Node),将内容缓存到离用户最近的位置,从而加速内容分发。
核心问题: 当用户在北京访问部署在美国的服务器时,光速传播的理论延迟约为 60ms(单程),加上路由跳数、拥塞等因素,实际延迟可达 200-300ms。CDN 通过"就近访问"原则,将延迟降至 10-30ms。
无 CDN: 有 CDN:
┌──────┐ 200-300ms ┌──────┐ ┌──────┐ 10-30ms ┌──────────────┐ ┌──────┐
│ 用户 │ ──────────────→ │ 源站 │ │ 用户 │ ──────────→ │ CDN 边缘节点 │ ──│ 源站 │
│(北京)│ │(美国)│ │(北京)│ │ (北京 PoP) │ │(美国)│
└──────┘ └──────┘ └──────┘ └──────────────┘ └──────┘
1.1.2 CDN 的核心价值
| 价值维度 | 说明 | 量化指标 |
|---|---|---|
| 加速 | 减少用户到服务器的网络延迟 | TTFB 降低 60-80% |
| 可用性 | 分布式架构避免单点故障 | SLA 可达 99.99% |
| 节省带宽 | 边缘缓存拦截大部分请求 | 源站带宽降低 70-90% |
| 安全 | 隐藏源站 IP,集成 DDoS 防护 | 攻击面显著缩小 |
| 弹性 | 应对突发流量,自动扩容 | 可承受 10x 以上峰值 |
1.1.3 CDN 市场主流厂商
| 厂商 | 类型 | 特点 |
|---|---|---|
| Cloudflare | 全球 | 免费套餐丰富,Workers 生态 |
| AWS CloudFront | 云厂商 | 深度集成 AWS 生态 |
| 阿里云 CDN | 国内 | 国内节点覆盖最广 |
| 腾讯云 CDN | 国内 | 与腾讯生态深度集成 |
| Akamai | 企业级 | 全球最大 CDN 厂商 |
| Fastly | 开发者 | 实时配置推送,VCL 灵活 |
| jsDelivr | 开源 | 免费公共 CDN,适合开源库 |
1.2 WAF 概述
1.2.1 什么是 WAF
WAF(Web Application Firewall,Web 应用防火墙) 是一种专门针对 HTTP/HTTPS 流量的安全防护设备或服务。它工作在应用层(Layer 7),通过预定义规则和机器学习模型识别并拦截恶意请求。
核心问题: 传统防火墙(Firewall)工作在 L3/L4,只能基于 IP 和端口过滤,无法识别 SQL 注入、XSS 等应用层攻击。WAF 填补了这一空白。
传统防火墙 vs WAF:
┌─────────────────────────────────────────────────────────────┐
│ 网络流量 │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ 传统防火墙 (L3/L4) │
│ ✅ IP 白/黑名单 ✅ 端口过滤 ✅ 协议过滤 │
│ ❌ 无法识别 SQL 注入 ❌ 无法识别 XSS ❌ 无法识别 CC 攻击 │
└──────────────────────────┬───────────────────────────────────┘
│ 通过
▼
┌──────────────────────────────────────────────────────────────┐
│ WAF (L7) │
│ ✅ SQL 注入检测 ✅ XSS 过滤 ✅ CSRF 防护 │
│ ✅ 文件上传过滤 ✅ 命令注入 ✅ Bot 管理 │
└──────────────────────────┬───────────────────────────────────┘
│
▼
应用服务器
1.2.2 为什么需要 WAF
根据 OWASP Top 10 报告,Web 应用面临的主要威胁包括:
| 威胁 | 说明 | WAF 防护方式 |
|---|---|---|
| A01: Broken Access Control | 越权访问 | 路径遍历规则、权限校验 |
| A02: Cryptographic Failures | 加密失败 | 强制 HTTPS、弱密码套件检测 |
| A03: Injection | SQL/命令注入 | 注入特征匹配、参数化检测 |
| A04: Insecure Design | 不安全设计 | 速率限制、业务逻辑防护 |
| A05: Security Misconfiguration | 安全配置错误 | 默认配置加固、信息泄露防护 |
| A06: Vulnerable Components | 组件漏洞 | 虚拟补丁(Virtual Patching) |
| A07: Authentication Failures | 认证失败 | 暴力破解防护、凭证填充检测 |
| A08: Data Integrity Failures | 数据完整性 | 请求签名验证 |
| A09: Logging Failures | 日志不足 | 完整审计日志 |
| A10: SSRF | 服务端请求伪造 | 出站请求过滤 |
1.3 整体网络架构
1.3.1 现代 Web 架构中的 CDN + WAF 位置
┌─────────────────────────┐
│ 用户终端 │
│ (浏览器/移动 App) │
└────────────┬────────────┘
│
┌────────────▼────────────┐
│ DNS 解析 │
│ (GeoDNS / Anycast) │
└────────────┬────────────┘
│
┌───────────────────▼───────────────────┐
│ CDN 边缘层 (Edge) │
│ ┌──────────────────────────────────┐ │
│ │ WAF 过滤 → 缓存查找 → 响应压缩 │ │
│ └──────────────────────────────────┘ │
└───────────────────┬───────────────────┘
│ (Cache Miss)
┌───────────────────▼───────────────────┐
│ CDN 中间层 (Shield/Mid-Tier) │
│ ┌──────────────────────────────────┐ │
│ │ 二级缓存 → 减少回源次数 │ │
│ └──────────────────────────────────┘ │
└───────────────────┬───────────────────┘
│
┌───────────────────▼───────────────────┐
│ 源站 (Origin) │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ LB │ │ App │ │ DB │ │
│ └────────┘ └────────┘ └────────┘ │
└───────────────────────────────────────┘
1.3.2 请求处理流程
一个典型的用户请求经历以下阶段:
| 阶段 | 处理点 | 操作 | 典型耗时 |
|---|---|---|---|
| 1 | DNS | GeoDNS 就近解析到边缘节点 IP | 20-50ms |
| 2 | 边缘 WAF | 检查请求是否匹配恶意规则 | 1-5ms |
| 3 | 边缘缓存 | 查询是否命中缓存 | 1-2ms |
| 4 | 边缘压缩 | Brotli/Gzip 压缩响应体 | 5-15ms |
| 5 | 中间层 | 查询 Shield 节点缓存(如需回源) | 5-10ms |
| 6 | 源站 | 动态请求处理、数据库查询 | 50-500ms |
1.3.3 流量分类
总流量
├── 静态内容 (约 70-80%) → CDN 缓存直接响应
│ ├── 图片 (JPG/PNG/WebP/AVIF)
│ ├── 样式 (CSS)
│ ├── 脚本 (JS)
│ ├── 字体 (WOFF2)
│ └── 视频 (MP4/HLS)
│
├── 动态内容 (约 15-25%) → 回源处理(可做动态加速)
│ ├── API 接口
│ ├── 个性化页面
│ └── 数据库查询结果
│
└── 攻击流量 (变化大) → WAF 拦截
├── DDoS 流量
├── 漏洞扫描
├── Bot/爬虫
└── 应用层攻击
1.4 适用场景分析
1.4.1 必须使用 CDN + WAF 的场景
| 场景 | 痛点 | CDN + WAF 方案 |
|---|---|---|
| 电商大促 | 突发 10-100x 流量、CC 攻击 | CDN 缓存商品页 + WAF 限速防 CC |
| SaaS 平台 | 多租户数据隔离、API 滥用 | CDN 边缘计算 + WAF API 防护 |
| 游戏行业 | DDoS 峰值达数百 Gbps | CDN 全球加速 + DDoS 流量清洗 |
| 金融行业 | 合规要求严格、零容忍攻击 | 自建 WAF + 专属 CDN 节点 |
| 新闻媒体 | 突发热点事件流量暴增 | CDN 弹性扩容 + WAF 防爬 |
1.4.2 可以只用 CDN 的场景
| 场景 | 说明 |
|---|---|
| 静态博客 | 纯静态内容,攻击面小 |
| 开源项目文档 | 公共内容,使用免费 CDN 即可 |
| 内部工具 | 有 VPN/内网访问控制 |
1.4.3 可以只用 WAF 的场景
| 场景 | 说明 |
|---|---|
| 内网 API 网关 | 用户已在内网,无需 CDN 加速 |
| 小规模应用 | 用户地域集中,源站覆盖即可 |
1.5 关键概念速查
| 概念 | 说明 |
|---|---|
| PoP (Point of Presence) | CDN 厂商在各地部署的接入点 |
| Edge | 边缘节点,直接面向用户的最近接入点 |
| Origin | 源站,原始内容所在的应用服务器 |
| Shield | 回源盾,CDN 中间层缓存,减少源站压力 |
| Hotlink Protection | 防盗链,限制资源被第三方引用 |
| Origin Pull | 主动回源,Cache Miss 时向源站获取内容 |
| Origin Push | 主动推送,将内容预先分发到边缘 |
| Virtual Patching | 虚拟补丁,WAF 临时封堵已知漏洞 |
1.6 注意事项
⚠️ IP 暴露风险:部署 CDN 后务必确保源站 IP 不直接暴露于公网,否则攻击者可绕过 CDN 直达源站。
⚠️ SSL/TLS 证书:CDN 与源站之间应使用独立证书,并开启 Full (Strict) 模式,避免中间人攻击。
⚠️ 缓存中毒:如果缓存键(Cache Key)设计不当,可能导致敏感内容被错误缓存并分发给其他用户。
1.7 扩展阅读
- Cloudflare Learning Center — CDN 与安全的基础知识库
- OWASP Top 10 (2021) — Web 应用十大安全风险
- RFC 7234 - HTTP Caching — HTTP 缓存协议规范
- Akamai State of the Internet — 全球互联网流量与安全报告
- NIST SP 800-95 — Web 安全指南
本章小结
| 主题 | 核心要点 |
|---|---|
| CDN | 分布式缓存网络,加速内容分发,隐藏源站 |
| WAF | L7 安全防护,拦截应用层攻击 |
| 架构 | DNS → Edge (WAF + Cache) → Shield → Origin |
| 场景 | 公开 Web 服务应优先考虑 CDN + WAF 组合 |
下一章:第02章 CDN 基础原理 →