1.
总体风险与架构简介
- 二级目录示例: https://example.com/app/ 或 https://example.com/docs/ 作为被CDN加速的目标。
- 风险点:原点信息泄漏、未授权访问、证书过期、CDN回源被绕过导致DDoS直击Origin。
- 防护目标:仅允许CDN回源、保护证书生命周期、对目录做精细化访问控制、保证可用性。
- 常见CDN功能:回源白名单、Token签名URL/Cookie、WAF规则、Rate Limiting、Origin Shield。
- 建议架构:CDN作为唯一公网入口,Origin限制仅允许CDN IP段访问,二级目录通过CDN规则控制缓存与认证。
2.
访问控制策略(目录级)
- 强制回源白名单:在Origin服务器防火墙上只允许CDN IP段(示例:Cloudflare段)访问:例如 173.245.48.0/20 等。
- 签名令牌或签名URL:对 /app/ 使用短时效 signed cookie,示例 TTL=600s,Cookie 名称:CDN-Signed。
- Header 验证:CDN回源时添加自定义头 X-CDN-Auth:
,Origin 仅接受带此头的请求。
- 基于路径的缓存规则:对 /app/static/ 设置长缓存,对 /app/api/ 强制回源且限制速率。
- 认证代理层:对需要登录的二级目录,在Origin或Edge增加JWT 验证或OAuth代理,避免纯凭URL保护。
3.
实践示例:Nginx 原点配置片段
- 样例 Nginx server 块(回源受限且校验 CDN 头):
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include snippets/ssl-params.conf;
location /app/ {
if ($http_x_cdn_auth != "expected-token") {
return 403;
}
proxy_pass http://upstream_app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
- 防火墙示例(iptables):只允许CDN IP访问 443:iptables -A INPUT -p tcp -s 173.245.48.0/20 --dport 443 -j ACCEPT。
- 设置真实IP:使用 set_real_ip_from 指令接收CDN转发的客户端IP(示例Cloudflare段)。
- 日志区分:在日志中标记回源请求与直连请求,便于检测绕过行为。
- 停机策略:当检测到异常流量时,CDN切换到“仅允许白名单/维护页面”模式。
4.
证书管理与TLS策略
- 使用自动化证书(Let's Encrypt)并设置 cron 每日检查:certbot renew --post-hook "systemctl reload nginx"。
- 推荐证书类型:优先 ECDSA(secp256r1),兼容性不足时补 RSA。证书有效期 90 天,务必自动续期。
- TLS 配置建议:只启用 TLS1.2+1.3,禁用 TLS1.0/1.1;优先链:ECDHE-ECDSA-AES128-GCM-SHA256。
- OCSP Stapling 与 HSTS:开启 OCSP stapling,HSTS max-age=31536000; includeSubDomains; preload 可选。
- Edge 与 Origin 的证书:Edge(CDN)可使用托管证书,Origin 建议用自签或私有ACME并配合 CDN 验证回源证书绑定。
5.
真实案例:公司A 的攻防与教训
- 背景:公司A 将 /portal/ 目录通过 Cloudflare 加速,Origin 为 AWS EC2 (203.0.113.27)。
- 攻击事件:一次 DDoS 峰值 8 Gbps / 120k PPS,若无CDN每天可能触达 Origin 带宽 100 Mbps 上限。
- 问题:初期未限制 Origin,只依赖 CDN;攻击者直接探测并切换至原始IP,导致 EC2 被拖垮。
- 解决方案:将 EC2 安全组限制为仅允许 Cloudflare IP 段,启用 Cloudflare Spectrum 和 WAF,采用 signed URL 并在 CDN 边缘缓存登录态。
- 结果:经调整后,CDN 吸收全部攻击流量,Origin 带宽稳定在正常 20 Mbps 峰值,服务可用性恢复为 99.99%。
6.
性能与容量数据示例表
- 下表展示一个典型 Origin 与 CDN 组合的参数与证书状态(仅示例数据)。
| 组件 | 值 | 说明 |
| Origin(VPS)CPU | 2 vCPU | 轻量级后端实例 |
| 内存 | 4 GB | 中等并发 |
| 公网带宽 | 100 Mbps | 未加CDN时瓶颈 |
| CDN 缓存命中率 | 85% | 目录静态资源高命中 |
| 最近DDoS峰值 | 8 Gbps / 120k PPS | 由CDN完全吸收 |
| 证书到期天数 | 60天(示例) | 自动续期策略中 |
7.
运维与应急建议
- 定期演练:做证书续期故障演练与CDN回退演习,模拟证书失效与DDoS恢复流程。
- 监控告警:监控证书剩余有效天数、Origin 直连流量比、CDN缓存命中率与异常流量阈值。
- 自动化配置:使用 IaC(Terraform)管理CDN回源白名单、WAF规则与Origin防火墙规则。
- 日志审计:将Edge与Origin日志集中化,建立绕过检测(出现非CDN User-Agent 或无 X-CDN-Auth)。
- 文档与权限:保存证书私钥位置、ACME账号信息、CDN API key,分配最小权限并定期轮换。