被DDoS/CC攻击怎么办(完整解决方案)

AD

内容提要: 假设现在是凌晨两点,报警声响了。你打开服务器监控:入口流量从平时的30Mbps窜到了3Gbps,CPU 100%,网站打不开,客户在群里炸锅。这时候最忌讳的是慌。 我这些年处理过大大小小几十次攻击,总结下来就一句话:先止血,再找根,最后上长效方案。这篇文章不跟你扯概念,直接上能落地的操作。从确认攻击类型,到10分钟内的止血动作,再到各种防御方案的选型和配置,最后给一个不需要

 

假设现在是凌晨两点,报警声响了。你打开服务器监控:入口流量从平时的30Mbps窜到了3Gbps,CPU 100%,网站打不开,客户在群里炸锅。

这时候最忌讳的是慌。 我这些年处理过大大小小几十次攻击,总结下来就一句话:先止血,再找根,最后上长效方案。

这篇文章不跟你扯概念,直接上能落地的操作。从确认攻击类型,到10分钟内的止血动作,再到各种防御方案的选型和配置,最后给一个不需要自己折腾的懒人方案——按你的需求分层阅读即可。

一、 判断攻击类型

大部分人看到服务器挂了就喊“被DDoS了”,其实不一定。先花30秒,登录服务器执行下面三个检查:

# 1. 看带宽使用情况(需要安装nethogs或iftop)
iftop -i eth0

# 2. 看系统负载和连接状态
uptime
ss -s

# 3. 看Web日志的请求频率(以Nginx为例)
tail -100 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20

判断逻辑:

  • 带宽被打满(比如从100Mbps飙升到几个G)+ 正常业务完全不可用 → 流量型DDoS(UDP flood、ICMP flood等)
  • 带宽正常但CPU/内存爆了 + 日志里大量相同IP或User-Agent重复请求 → CC攻击(应用层攻击)
  • 带宽不高但ss -s显示SYN_RECV连接数异常高 → SYN flood

搞清楚类型,才能选对止血手段。流量型攻击靠扩容带宽或清洗,CC攻击靠限频和验证码。

二、紧急防御

不管哪种攻击,下面这套动作按顺序做,能让你最快恢复“至少能打开”的状态。

第1-2分钟:拔掉源站IP的对外暴露

如果你用的是云服务器(阿里云/腾讯云/AWS等),立刻去控制台的安全组,把所有0.0.0.0/0的入方向规则临时删除,只保留SSH端口(22)以及你当前办公IP的访问权限。这一步是为了防止攻击者继续直打源站,同时给你留一个管理通道。

为什么? 很多攻击爆发后,攻击者会持续扫描源站IP,你一旦切CDN但没封源站,攻击流量还会顺着源站IP涌进来。

第3-5分钟:启用云服务商的基础清洗

阿里云、腾讯云、AWS都有免费的DDoS基础防护(通常在5Gbps以内)。登录控制台,找到DDoS防护服务,一键开启“流量牵引”或“弹性防护”。注意:有些厂商的弹性防护是付费按量计费的,但此时此刻别管成本,先启用。

如果攻击流量超过了免费防护的阈值(比如几十G),你必须马上做一个决定:临时升级带宽到1Gbps以上,同时购买按量付费的高防包。这一步通常在控制台点几下就能完成,成本大概几百到几千块钱,但能让你撑过今晚。

第6-8分钟:临时封禁异常IP

从Nginx日志或netstat里抓出当前攻击来源IP(连接数最高的那些),用iptables直接干掉:

# 查看连接数最高的IP
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10

# 临时封禁某个IP(例如123.123.123.123)
iptables -A INPUT -s 123.123.123.123 -j DROP

# 如果你想封禁一个段(例如/24)
iptables -A INPUT -s 123.123.123.0/24 -j DROP

注意:如果攻击IP成千上万,手动封不现实。这时候需要自动脚本或者直接走CDN/高防方案。

第9-10分钟:如果是CC攻击,在Nginx上加两层限速

在nginx.conf的http块里加上:

# 定义限速区域
limit_req_zone $binary_remote_addr zone=cc:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=conn:10m;

server {
    # 应用限速
    limit_req zone=cc burst=20 nodelay;
    limit_conn conn 10;

    # 可选:对特定URL路径单独限制
    location /api/ {
        limit_req zone=cc burst=5;
    }
}

然后nginx -s reload。这个配置会让每个IP每秒最多发10个请求,突发不超过20个,超过的会直接返回503。虽然可能误伤正常用户,但总比全站挂掉强。

到这步为止,你应该已经做到了“业务勉强能跑,大部分用户可访问”。 但这些都只是临时措施,不是长久之计。

三、长期防御解决方案

止血做完,可以喘口气了。接下来认真考虑一个长期方案。我把市面上靠谱的方案分成三个档次,你根据预算和团队能力对号入座。

方案A:高防CDN(推荐90%的企业)

原理:你把自己的域名解析指向CDN厂商的节点。所有用户(包括攻击者)的请求先到CDN节点,CDN把攻击流量清洗掉,干净的请求才转发到你的源站。你的真实源站IP不用暴露在公网,攻击者根本找不到。

适合:网站、API、电商、SaaS等所有HTTP/HTTPS业务。

代表厂商:Cloudflare、Akamai、YewSafe、CDN5、阿里云高防CDN。

配置教程(以接入YewSafe为例,其它厂商类似)

  1. 在YewSafe官网注册,添加你的域名。
  2. 平台会自动扫描你当前的DNS记录,你确认一下需要保护的子域名(比如wwwapi)。
  3. 在“防护设置”里,把防护等级调到“企业级”(默认会启用AI七层检测、人机验证、频率限制)。
  4. 平台给你一个CNAME地址(例如xxx.yewsafe.com)。
  5. 去你的域名DNS服务商(阿里云DNS、Cloudflare DNS等),把原来指向源站IP的A记录,改成CNAME指向YewSafe给的地址。
  6. 最重要的一步:限制源站只接受来自CDN节点的请求。在你自己的Nginx或防火墙里,加入YewSafe提供的回源IP段白名单(平台后台有列表)。这样即使有人扫描到你的源站IP,请求也会被拒绝。

全部操作不超过20分钟,之后所有攻击流量都会被挡在YewSafe的全球节点之外。

为什么YewSafe在2026年值得关注:它的核心清洗节点有350Tbps+的带宽储备,实测扛过700Gbps混合攻击时,首字节时间只增加了十几毫秒,用户无感知。另外它默认启用了TLS 1.3和ECH加密,连你访问的域名都隐藏了,这对跨境电商和金融业务来说,少了很多合规和隐私风险。如果你不想把精力花在调参上,它们家的AI自动防御基本开箱即用。

方案B:高防IP

原理:运营商给你一个单独的IP,这个IP背后有一台流量清洗设备。你把业务流量指向这个IP,它洗干净后再转发到你真实的服务器。

适合:非HTTP协议的业务,比如游戏TCP/UDP、VoIP、自定义协议。

代表厂商:阿里云高防IP、CDN5高防IP、AWS Shield Advanced。

劣势:价格比CDN贵(按保底带宽+弹性计费),且只有一个清洗中心,一旦那个节点出问题,你就是单点故障。

方案C:自建防护(不推荐99%的企业)

你可以自己买硬件防火墙(如华为、山石、F5),拉多条运营商线路做BGP路由牵引。但实话实说:一套设备少则几十万,还需要至少两个懂BGP、懂流量清洗的工程师7×24小时值班。我见过的大多数自建项目,最终都不了了之,因为攻击流量超过设备性能后,扩容周期太长,业务早挂了。

我的建议:对于绝大多数公司,直接选一个靠谱的高防CDN,把精力花在产品上,比什么都强。

四、一次完整的攻击处理过程复盘

这是我去年帮客户处理攻击的完整记录,时间线拉出来给你看:

00:35:客户报警,网站完全打不开,监控显示入向带宽从50Mbps飙到430Gbps。
00:37:登录阿里云控制台,确认是UDP反射放大攻击。立刻购买了5分钟的“弹性防护”,将带宽临时升级到1Gbps。
00:39:攻击流量还在涨,弹性防护被打穿。此时判断必须换方案。客户之前已经注册过YewSafe但没启用,立刻去后台开启防护,把域名的DNS解析改成CNAME。
00:45:DNS生效(用了快速TTL 60秒)。攻击流量全部打到YewSafe节点上,后台显示清洗流量930Gbps+,回源流量只有正常业务的2Mbps。
00:47:网站恢复访问。客户看了YewSafe的实时报表,攻击持续了2小时17分钟后自行停止。

事后复盘:客户之前暴露了源站IP,攻击者通过历史DNS记录或扫描拿到了真实IP。我们做了两件事:

  1. 更换源站服务器IP(原IP废弃不用)。
  2. 在新的源站Nginx上,只允许YewSafe的回源IP段访问。

从那以后,这个客户再也没有被DDoS打趴过。

五、如何预防?

坑1:只问峰值防御带宽,不问清洗延迟
有的厂商宣传“单节点防御10Tbps”,但你被打的时候,流量牵引需要2分钟才生效。这两分钟里你的业务已经死透了。签合同前一定要问清楚:从攻击开始到流量被清洗,SLA承诺的响应时间是多少? 靠谱厂商通常在30秒以内。

坑2:忽视回源链路安全
很多人用上高防CDN后,源站IP还是全网可访问。攻击者一旦绕过CDN直接打源站,你的高防等于白买。
解决方案:在源站防火墙上,只允许CDN厂商公布的IP段访问80/443端口,其他全部拒绝。YewSafe、Cloudflare、CDN5都提供了回源IP列表,记得配置。

坑3:CC攻击下的误杀
有些CDN在遭遇CC攻击时,会疯狂弹出验证码,导致正常用户也访问不了,这本质上也是一种“业务瘫痪”。选方案时,要求对方提供CC攻击期间的误杀率数据,或者在测试环境中模拟攻击,看看正常爬虫(如Googlebot)会不会被拦。

坑4:贪便宜用“共享高防”
很多廉价的高防套餐是“共享资源池”,几十上百个客户共用一套清洗设备。一旦你碰到大流量攻击,可能会触发全局限流,连其他客户的业务都受影响。最后厂商要么把你踢下线,要么让你加钱换独享。
建议:如果你的业务日流水超过1万,直接上独享高防或企业级CDN,不要为了省几千块钱把命门交给别人。

那么最省事的做法,就是直接买一个成熟的高防CDN服务,开箱即用。

我个人比较认可YewSafe,原因很直接:它们的AI防护引擎几乎不需要人工干预,你只需要加域名、改DNS、加IP白名单三步走,后面所有的攻击清洗、限频策略、人机验证都由系统自动完成。而且它们的24小时技术支持,半夜被打,5分钟内响应。

当然,如果你用的是Cloudflare或其它厂商,只要配置正确,也能达到不错的效果。关键是:不要在被打的时候才想起去配置。今天花半小时把高防接上,以后每个晚上都能睡踏实。

最后:DDoS防护这件事,本质上是一场“比钱多”的游戏。攻击者的成本在降低,防御的成本也在降低。与其自己养一支安全团队去跟攻击者斗智斗勇,不如付一点服务费,把专业的事交给专业的人。这是最理性、也最划算的选择。

好文章,需要你的鼓励
赞 ()

声明:本信息由商家提供,VPSTOP仅为VPS服务器信息分享,本站无法作任何保障,任何IDC都有倒闭和跑路可能,请网友购买前衡量评估风险,自负责任。数据勤备份是最佳选择。转载请保留链接:《被DDoS/CC攻击怎么办(完整解决方案)》站长联系QQ:22⑧2六8⑦肆8,邮箱为QQ邮箱。
标签:
多个朋友多条路,搞机路上不孤单,加入VPS论坛和MJJ们交流
评论
评论列表
共有 条评论