判断攻击规模不能靠“感觉好像被打了”,而是要看四个核心指标:攻击流量带宽、请求速率(QPS)、源IP数量、以及业务可用性下降幅度。只有把这些数字从监控里拉出来对比基线,才能区分是误报、小规模骚扰,还是真正需要应急响应的规模级攻击。
先看清攻击的“体积”:流量带宽和包速率
很多人一看到服务器响应慢,就直觉以为“被大流量打了”,但感觉会骗人,带宽和包速率才是攻击规模最直观的物理量,带宽单位是Gbps,代表每秒流过网卡的流量大小;包速率是pps,代表每秒转发的数据包个数,这两个指标要同时看,因为小包攻击(比如SYN Flood)即使带宽只有几百Mbps,也可能因为包速率过高打爆CPU。
实操上,登录防火墙或抗D设备,查看入方向总流量曲线,如果从平时平均2Gbps突然拉高到10Gbps以上,且持续超过3分钟,基本可以确认是规模级DDoS攻击,同时看pps,如果超过1Mpps(百万包每秒),即使带宽不大,也要警惕。
还有一个容易忽略的点:对比历史基线,攻击规模的定义是相对的,一个小网站被500Mbps打可能就是灾难,但一个IDC机房日常跑800Mbps,这连波动都算不上,所以把监控系统里最近30天的日均流量、峰值流量调出来,当前值超过基线3倍,才算“异常”。
攻击强度看QPS和并发连接数,别只看带宽
带宽大不等于业务一定挂,很多应用层攻击流量不大,但请求速率(QPS)极高,专门消耗数据库连接和计算资源,比如CC攻击,可能只有100Mbps流量,但每秒发起5万次HTTP请求,直接让Web服务器CPU满载。
判断方法:在Nginx或WAF日志里过滤出同一IP或同一User-Agent的请求频率,正常用户单IP的QPS一般低于5,如果某IP的QPS超过50,且持续上升,基本就是脚本在打,同时观察服务器并发连接数,用netstat -an | grep ESTABLISHED | wc -l这条命令统计,正常业务并发可能几百,攻击时能冲到几万甚至几十万,此时TCP连接表被占满,新用户无法建连。
行业共识认为,QPS和并发连接数比带宽更能反映攻击对业务的实际伤害,因为很多大带宽攻击被云清洗挡在门外,真正穿透进来的是应用层请求,所以判断攻击规模,至少要把四层和七层分开看,四层看带宽和pps,七层看QPS和并发。

攻击源数量决定是“单点骚扰”还是“分布式围殴”
攻击源IP的数量是判断规模等级的另一个关键维度。少量IP发起的高频请求与成千上万个分散IP发起的洪水,应对策略完全不同,前者可以用IP黑名单、封禁解决,后者则需要调度清洗节点或启用CDN分流。
通过SOC平台或防火墙日志,统计去重后的源IP总数,小于100个IP,属于低烈度攻击;1000到10000个IP,已经是中等规模僵尸网络;超过10万个独立IP,大概率是大型DDoS,这时单靠本地防护很难扛住,必须启用运营商级清洗,还有一个更精细的指标:源IP的地理分布和运营商分布,如果攻击IP集中在某几个C段或同一ASN(自治域),可能是被误伤的集中流量;如果遍布全球几十个国家、几百个运营商,说明是真实的分布式攻击。
实际操作中,抓取攻击数据包,用tcpdump -i eth0 -nn port 80 | awk '{print $3}' | cut -d. -f1-4 | sort | uniq -c | sort -nr统计出现频率最高的源IP,当top 10源IP的请求占比低于总请求的20%,意味着流量极度分散,攻击规模很大。
业务可用性:攻击规模最终要落到“用户感受到什么”
前面所有指标都是技术中间量,真正决定攻击规模等级的,是业务可用性下降的百分比,你可以在监控系统里设置探测任务,每30秒访问一次首页和登录接口,记录响应时间与失败状态码,当失败率超过5%,或者页面响应时间从200ms涨到3秒以上,说明攻击已经影响真实用户。
这里有一个容易踩的坑:只看服务器负载平均值,攻击往往有脉冲特性,比如每5分钟猛打1分钟,平均值看着不高,但峰值时刻用户已经打不开页面,所以要看峰值时段内的可用性,而不是5分钟或1分钟平均值,用一个简单公式:攻击期间成功请求数 ÷ 总请求数,如果低于99%,就要拉响警报。
同时对比不同业务模块的受影响程度,攻击规模大时,通常所有接口都变慢;攻击规模小时,可能只有某个特定API被打,用APM工具(如SkyWalking或SkyWalking或简米云ARMS)查看各接口的耗时明细,如果只有单一URL异常,那是精准打击;如果全站平均耗时翻倍,才是大范围攻击。

攻击规模判断指标对比:一张表看懂优先级
| 指标 | 查看位置 | 正常基线参考 | 攻击判定阈值 | 反映维度 |
|---|---|---|---|---|
| 入向带宽(Gbps) | 防火墙/交换机流量图 | 日均峰值×2倍 | 超过基线3倍 | 流量体积 |
| 包速率(pps) | 抗D设备 | 低于500kpps | 超过1Mpps | 小包攻击强度 |
| QPS(请求/秒) | WAF/Nginx日志 | 视业务而定 | 单IP超过50 | 应用层压力 |
| 并发连接数 | ss -s命令 |
不超过后台上限 | 接近上限的80% | 连接耗尽风险 |
| 源IP总数 | SOC平台/日志 | 日常少于100 | 超过1000且分散 | 分布式程度 |
| 可用性下降 | 拨测/APM | 成功率99.9% | 成功率低于99% | 用户真实影响 |
看这张表,你会发现没有单一指标能定全局。带宽高但QPS低,可能是SYN Flood;QPS高但带宽低,是CC攻击;源IP多但可用性不降,说明防护设备正在正常消化,规模还在可控范围,所以平时就要把监控体系搭全,至少包含流量、连接、请求、源IP、可用性这五类数据,再设置告警阈值。
攻击规模判断的常见误区和实操步骤
先讲两个最常见的误区,第一个是把机房整体流量当成攻击流量,有的业务做了CDN加速,源站收到的流量里混着正常回源请求,如果不提前把CDN节点IP加入白名单,一看到流量升高就误判攻击规模,容易做出错误封禁,第二个是只看当前峰值,不看持续时间,一个持续10分钟的1Gbps脉冲和一个持续2小时的1Gbps攻击,后者规模感完全不同,行业专家指出,攻击持续超过1小时,业务损失和防护成本都会指数级上升。
正确的判断步骤分四步走:
- 第一步:登录监控系统,截图当前流量、QPS、源IP数、可用性四个面板,记录精确数值。
- 第二步:调出前7天同一时段的平均值,算出当前值的倍数关系,超过3倍进入下一步。
- 第三步:用
tcpdump抓包30秒,分析协议类型,如果是TCP SYN包占比超80%,属于四层攻击;如果是HTTP GET/POST包占比高,属于七层攻击。 - 第四步:根据攻击类型和倍数关系,决定响应级别,带宽超基线5倍或源IP超1万,直接协调云清洗;QPS超基线10倍且可用性下跌,限流并封禁高频IP。

这四步走完,你对攻击规模的判断就从“感觉”变成了“数据”,后续复盘时,把这次判断的数值记录和最终防护效果留存下来,下次再有攻击,就能更快定位规模等级。
怎么看“攻击规模”这件事,直接决定你花多少钱
很多人在选择防护方案时,常问百度搜索关键词“DDoS攻击一般多大流量算大”或“游戏服务器被攻击多少G才需要高防”,这类问题本质上是想给“攻击规模”一个价格标签,但实际经验是:规模判断的最终目的,是决定你是否需要上高防IP、需要买多少G的防御峰值,如果你把攻击规模误判为小流量,可能买10G的防护,结果遭遇100G的洪水,服务瞬间瘫痪;反过来,把普通波动误判为大规模攻击,白白多花几万块买大带宽套餐。
所以云厂商的定价逻辑里,也把攻击规模分为三档:基础防御(5-10G)、企业防护(20-50G)、运营商级清洗(100G以上),你只有通过上述指标判断出攻击规模属于哪一档,才能做出性价比最高的决策。
Q&A:关于判断攻击规模,大家最常问的两个问题
问:没有专业监控工具,怎么用最朴素的方法判断攻击规模?
答:在服务器上执行ss -anp,看当前连接数,再用top查看CPU负载,如果CPU的sy(内核态)占比超过50%,同时/proc/net/stat里的SYN计数异常增大,基本可以判定存在规模级攻击,想要更准,下载一个免费的开源工具如ntopng,就能看到实时流量排名。
问:为什么有时候攻击流量很大但业务没受影响?
答:因为防护设备(如高防IP、云WAF)已经将大部分攻击流量过滤或分散,此时你看到的攻击规模是“防火墙入口数值”,而非“源站实际承受数值”,判断时,应以源站侧监控为主,入口数据作为参考,如果源站CPU和响应时间都正常,说明攻击规模超过防护能力之前仍属可控范围。