服务器被 DDoS 攻击,用 CDN 防护的正确姿势

为什么普通服务器怕DDoS,而CDN能顶住

DDoS攻击就像无数台电脑同时访问你的服务器,把带宽打满、CPU打爆。
CDN(内容分发网络)相当于在服务器前面修了一堵“分布式墙”:它把静态资源缓存到全球节点,同时智能清洗恶意流量。只要配置正确,大部分攻击流量根本到不了你的源服务器。

准备工作:确认你有这些条件

  • 一个已备案的域名(国内CDN需要)
  • 一台有固定公网IP的服务器(腾讯云、阿里云等均可)
  • CDN服务商账号(推荐Cloudflare、腾讯云CDN、阿里云CDN,本文以Cloudflare为例)
  • 服务器管理权限(能修改DNS解析和服务器防火墙)

第一步:把域名接入CDN,开启代理

以Cloudflare为例,操作路径:

  1. 登录Cloudflare,添加你的网站域名(例如 example.com
  2. 系统自动扫描DNS记录,确认后点击“下一步”
  3. Cloudflare会分配两个NS地址(如 dahlia.ns.cloudflare.com),去你的域名注册商后台把DNS服务器改成这两个
  4. 等待DNS生效(通常几分钟到1小时)
  5. 在Cloudflare DNS面板中,找到你的网站记录(如 @www),确保橙色云朵图标是开启状态(表示代理已开启)
开启代理后,访客访问域名会先到CDN节点,再由CDN转发到你的服务器。这层转发就能过滤大量攻击。

第二步:配置安全规则,自动拦截恶意流量

接入CDN后,默认防护强度不够,需要手动优化:

开启“Under Attack”模式(紧急时用)

  • 在Cloudflare仪表盘 -> Overview -> Quick Actions -> 点击“Under Attack Mode”开启
  • 效果:所有访客必须通过JS质询才能访问,对CC攻击和DDoS非常有效
  • 注意:可能导致部分普通用户暂时无法访问,攻击结束后关闭

设置防火墙规则

  1. 进入 Security -> WAF -> Create Firewall Rule
  2. 示例规则:
  • 字段:(ip.geoip.country eq "CN" and not http.request.uri.path contains "/api")
  • 动作:Managed Challenge(正常用户通过验证,攻击会被拦截)
  1. 你也可以限制特定地区的IP访问(如只允许国内用户)

启用在“速率限制”(Rate Limiting)

  • 路径:Security -> Rate Limiting -> Create rate limit
  • 规则示例:任何IP在1分钟内请求超过100次,返回503错误
  • 这个对CC攻击(慢速DDoS)特别有效

第三步:隐藏源站IP,防止CDN被绕过

很多DDoS攻击会直接扫源站IP打,所以一定要隐藏。

  • 修改服务器防火墙,只允许CDN节点IP访问你的服务器80/443端口
  • Cloudflare节点IP列表:https://www.cloudflare.com/ips/
  • 示例iptables命令(在服务器上执行):
    iptables -A INPUT -p tcp -s 173.245.48.0/20 --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp -s 173.245.48.0/20 --dport 443 -j ACCEPT
    iptables -A INPUT -p tcp --dport 80 -j DROP
    iptables -A INPUT -p tcp --dport 443 -j DROP
  • 如果使用宝塔面板:登录后台 -> 安全 -> 添加防火墙规则,来源IP填CDN节点IP段,端口填80/443,动作放行
  • 禁用服务器上的直接IP访问:Nginx或Apache中配置只允许通过域名访问
  • 如果服务器本身还有公网IP,建议换一台只有内网IP+CDN转发的架构(较高阶,新手可先参考)

第四步:验证防护效果,查看攻击日志

部署完成后,可以这样检查:

  1. 在Cloudflare面板 -> Analytics -> Security Events,查看是否有攻击被拦截
  2. 使用在线DDoS压力测试工具(只测自己的服务器,且注意不要违法)如 https://www.check-host.net/ 测试网站是否正常
  3. 观察服务器CPU和带宽:如果CDN生效,服务器负载应该很低,即使CDN节点高负载

高频问题解答

Q:接入CDN后网站访问变慢了?

  • 可能原因:CDN节点未缓存资源,首次访问慢。建议开启静态资源缓存(Caching -> Configuration -> Standard)
  • 或者开启“Brotli”压缩

Q:攻击时CDN会收费很高吗?

  • 大部分CDN有免费防护额度(如Cloudflare免费版可抵御普通级别DDoS),但大流量攻击会产生带宽费用。建议在CDN后台设置“带宽上限”或“请求上限”

Q:用了CDN还需要其他防护吗?

  • 建议配合Web应用防火墙(WAF)、操作系统防火墙、定期更新补丁。CDN不是万能药,但能阻挡90%的DDoS攻击

避坑指南:新手最容易犯的错

  • 忘记隐藏源站IP:攻击者扫描到源站IP后直接从IP攻击,CDN等于没用。务必限制只允许CDN节点IP访问服务器
  • CDN代理模式未开启:DNS记录是灰色云朵(仅DNS)时,流量不经过CDN。检查橙色云朵
  • 防火墙规则过于激进:用IP地区限制时,不要误封正常用户。建议先用“Managed Challenge”而不是“Block”
  • 攻击结束后不关闭Under Attack:长期开启会影响访客体验,记得手动关闭
  • 忽略CDN控制台的报警通知:建议在CDN后台设置邮件或企业微信通知,攻击时能及时响应

最后总结

服务器被DDoS攻击,用CDN防护的正确姿势就是三步:接CDN -> 配安全规则 -> 隐藏源IP
对于零基础用户,推荐先使用Cloudflare免费版练手,验证效果后再考虑付费升级。
遇到异常时优先回看本文避坑和高频问题部分,大部分情况都能自己解决。
如果攻击量级超过CDN免费版上限,再考虑升级到高防IP或高防CDN。
牢记:防护的核心在于让攻击流量到不了你的服务器,而不是硬扛。

分享到:
上一篇
Docker 镜像拉取失败?教你更换镜像源
下一篇
用大模型写 Nginx 配置,导致网站被劫持
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意