1.
概述与目标
说明:目标是把CDN当作反向代理+缓存层,与WAF协同,从而在边缘阻断篡改请求、保证内容完整性并提升响应速度与可用性。小分段:列出三大目标:阻止篡改(防XSS/CSRF/注入)、提升速度(静态缓存/压缩/边缘计算)、提高可用性(origin shielding,熔断降级)。
2.
准备工作与前提
列表:确认你能修改CDN配置、部署WAF规则、控制源站(修改响应头/证书/签名)、获取访问日志。检查证书、DNS记录、CDN支持的功能(Edge WAF、自定义规则、缓存策略、边缘函数/Lambda@Edge)。
3.
总体架构设计
步骤:1) 将域名指向CDN,启用HTTPS;2) 在CDN或边缘启用WAF(或把WAF放在CDN前端);3) 设置CDN到源站的安全通道(mTLS或签名头);4) 启用origin shielding/二级缓存。说明为什么每一步能减少篡改风险和提高可用性。
4.
WAF策略配置(详细操作)
操作清单:1) 启用厂商管理规则集(例如OWASP CRS);2) 增加自定义规则:阻止危险方法(PUT/DELETE只限管理IP)、阻断含可疑脚本/SQL关键字的请求体;3) 配置速率限制(每IP每分钟请求阈值)、IP信誉分挡;4) 白名单CDN边缘IP并验证真实客户端IP(配置X-Forwarded-For/True-Client-IP);5) 设置响应动作为阻断或挑战(Captcha)并记录日志。
5.
缓存策略与响应加速(详细操作)
步骤:1) 将静态资源(js/css/img)设置长TTL并开启Brotli/Gzip压缩;2) 动态HTML可用短TTL并启用stale-while-revalidate或stale-if-error以提升可用性;3) 定义Cache Key(建议:host + path + 只保留对缓存有影响的query参数),避免把用户会话Cookie纳入Cache Key;4) 启用Origin Shield减少源站请求;5) 配置边缘平台或Workers做部分SSR或Edge rendering以降低origin负载。
6.
防止页面篡改的具体措施
步骤:1) 在HTML响应中加入Content-Security-Policy(CSP)限制外部脚本来源;2) 对第三方脚本使用Subresource Integrity(SRI);3) 启用HTTP Strict Transport Security(HSTS);4) 对敏感页面使用签名URL或短期Token(CDN支持的Signed URLs);5) 在CDN和源站之间使用验证头(Origin-Verify-Token)并在源站校验。
7.
CDN与WAF之间的身份校验(操作示例)
步骤:1) 在CDN边缘为每个到源站的请求添加自定义头X-Edge-Signature,内容为时间戳+HMAC(secret, path+ts);2) 源站实现中间件校验签名并拒绝无效请求;3) 定期轮换secret并记录签名失败日志;4) 如果使用CloudFront,可用Lambda@Edge生成签名;Cloudflare可用Origin CA证书或自定义header。
8.
实际厂商示例(CloudFront+WAF)
具体步骤:1) 在AWS WAF中创建WebACL并加入ManagedRules、RateLimit、自定义SQLi/XSS阻断规则;2) 将WebACL关联到CloudFront分配;3) 在CloudFront行为中设置CachePolicy(缓存静态)、OriginRequestPolicy(转发需要的头);4) 配置S3为私有并使用Origin Access Identity或OAC;5) 启用CloudWatch Logs与WAF日志并设置报警。
9.
监控、告警与应急演练
操作:1) 打开CDN和WAF访问日志(边缘日志、请求体样例);2) 为异常命中率、错误率、缓存命中率设置报警(例如命中率骤降或WAF阻断率突增);3) 准备应急Playbook:切换到只读缓存页面、临时提升缓存TTL、封禁可疑IP、回滚规则变更;4) 定期演练并保存变更记录。
10.
验证与测试步骤
工具与操作:1) 使用curl检测响应头(检查缓存命中、CSP、SRI、HSTS、X-Edge-Signature);示例:curl -I -H "User-Agent: test" https://yourdomain;2) 使用webpagetest/lighthouse测量性能;3) 使用渗透测试工具(Burp/OWASP ZAP)验证WAF规则效果;4) 检查日志确认篡改尝试被阻断且正常用户不受影响。
11.
常见误区与注意事项
提示:1) 不要缓存个性化敏感页面;2) CSP要逐步严格,避免破坏正常脚本;3) 白名单CDN IP时注意更新厂商IP列表;4) 规则过严会误伤,使用日志模式观察一周再放行阻断策略。
12.
运维与长期优化建议
建议:1) 定期回顾WAF日志、调整规则优先级;2) 优化Cache Key与TTL以提高命中率同时保证内容新鲜度;3) 对供应商功能(边缘计算、图片优化、自动压缩)持续评估;4) 建立安全事件后溯机制与备份页面。
13.
问:启用WAF会否影响CDN性能?
答:启用WAF会增加边缘处理时间但通常在毫秒级;通过在边缘部署规则并合理使用Managed Rules+速率限制、把复杂检查放到源站或边缘函数,能把性能影响降到最低,同时大幅降低恶意流量对origin的冲击。
14.
问:如何在不影响SEO的情况下缓存HTML?
答:对HTML采用短TTL并使用stale-while-revalidate,确保搜索引擎抓取带有正确的Cache-Control与Vary头;对重要页面使用Cache-Control: noindex或在robots管理;对动态用户内容通过Cookie或鉴权分离,避免缓存个性化内容。
15.
问:检测到页面被篡改该如何快速回滚并排查源头?
答:立即:1) 启用WAF阻断并临时强制缓存静态备份页面;2) 将域名切换到维护页面或回源到只读副本;3) 拉取边缘与源站日志定位篡改时间线(查User-Agent、IP、Referer、签名失败);4) 更换签名密钥/证书、检查CI/CD流水线和第三方脚本供应链,完成补丁后逐步恢复流量。