
1) 确认需求:明确防DDoS等级(按QPS/带宽)、是否需要WAF、Web加速、SSL终端等。
2) 选择供应商:对比阿里云高防、腾讯云高防、Cloudflare Spectrum/Enterprise等,查看CDN出口IP段、SLAs和API支持。
1) 降低TTL:切换前把域名TTL降到60秒,便于回滚。
2) 在CDN后台添加域名并获取CNAME或A记录指向,完成验证后再切换解析。
3) 切换时先将解析生效于测试子域,确认无误再切换主域。
1) 操作系统更新:apt/ yum 更新内核与安全补丁。
2) 关闭不必要端口:使用ufw/iptables只保留HTTP(80)/HTTPS(443)与SSH(端口建议改为非22)。例如:ufw allow 443/tcp; ufw allow 2222/tcp; ufw enable。
3) SSH加固:禁用密码登录、使用密钥、限制登录用户并安装fail2ban。
1) 在CDN控制台下载其出口IP列表(通常为IPv4/IPv6段)。
2) 使用防火墙白名单:示例iptables命令:
iptables -F; iptables -P INPUT DROP; iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT; for ip in x.x.x.x/xx y.y.y.y/yy; do iptables -A INPUT -p tcp -s $ip --dport 80 -j ACCEPT; iptables -A INPUT -p tcp -s $ip --dport 443 -j ACCEPT; done; iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
3) Nginx校验真实IP:在nginx.conf添加 set_real_ip_from
1) 若CDN做SSL终端:在CDN上上传证书或使用其托管证书,同时在源站也配置自签或Let’s Encrypt用于CDN到源站的HTTPS。
2) TLS配置:禁用TLS1.0/1.1,启用TLS1.2/1.3;开启OCSP Stapling与HSTS(注意HSTS风险)。
1) 设置合适的Cache-Control、Expires,静态资源长期缓存,动态页面短缓存或不缓存。
2) 启用压缩(gzip/brotli)与HTTP/2或HTTP/3(QUIC)以提升传输效率。
3) 在CDN上配置分层缓存、回源预取与刷新机制,避免不必要回源。
1) 在CDN或Nginx层使用限流:Nginx示例:limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; 在location中limit_req zone=one burst=20 nodelay。
2) 启用WAF规则:拦截常见注入、XSS、文件上传攻击,并设置攻击IP自动封禁。
3) 使用机器人验证(Captcha/Challenge)对可疑流量做二次验证。
1) 打开CDN和源站访问日志、WAF拦截日志,定期导出并建立告警(带宽/错误率/响应时延)。
2) 做故障演练:模拟切换回原解析、黑名单误封回滚流程,确认TTL和回滚步骤。
3) 使用curl或在线工具检测X-Forwarded-For、X-Cache等Header确认流量经过CDN:curl -I -H "Host: example.com" https://example.com
问:如何验证源站IP已隐藏且只接受CDN回源?
答:先记录源站公网IP,直接访问源站URL应被防火墙阻断(返回连接超时或403);然后通过域名访问应正常并在响应Header看到CDN相关字段(如CF-Cache-Status或X-Cache),同时在源站access.log看到的客户端IP为CDN出口IP或X-Forwarded-For。
问:切换到CDN后发现大量误报或性能问题如何快速回滚?
答:步骤:1) 将DNS TTL保持低并在CDN后台暂停代理或恢复原始A记录;2) 使用DNS服务商的“立即生效/回滚”功能;3) 同时在CDN关闭WAF或规则回退并检查源站负载,完成后逐步恢复规则并提升TTL。
问:源站使用动态IP如何保证只允许CDN访问?
答:建议使用固定公网IP或使用云主机提供的内网加EIP方案;若IP频繁变动,可部署带有私有网络或BGP直连的CDN回源通道,或在源站部署轻量代理(如nginx只允许基于证书或预共享密钥的回源认证),结合定期同步CDN出口IP白名单脚本自动更新防火墙规则。