通过同时分析连接数与响应时间的变化曲线,可以快速区分DDoS攻击、慢速攻击和CC攻击:连接数陡增且响应时间同步拉长多为流量型DDoS,连接数缓慢爬升而响应时间持续恶化则指向慢速攻击,连接数正常但响应时间异常波动常常是CC攻击的特征。
连接数与响应时间:攻击识别的两个核心指标
每个服务器管理员都遇到过这样的场景:业务告警响了,登录后台一看,连接数爆表,响应时间已经飙到十几秒,这时候最怕的就是误判把CC攻击当成普通流量高峰,或者把慢速攻击当作DDoS硬扛,判断攻击类型,不需要多高深的算法,盯住连接数和响应时间这两个基础指标就够了。
连接数反映的是服务器当前处理的TCP会话数量,响应时间则是从请求发出到收到首个字节的耗时,两者组合起来,能形成四种典型的攻击画像,行业共识认为,超过80%的恶意流量攻击都能通过这两个指标的联动关系完成初步分类。
连接数陡增+响应时间拉长:典型的流量型DDoS
这类攻击最容易识别,攻击者用僵尸网络向目标IP发送海量数据包,每秒钟建立成千上万个连接,服务器CPU和带宽被瞬间占满,连接数曲线呈90度垂直拉升,响应时间从几十毫秒暴跌到秒级,业内专家指出,这类攻击的响应时间恶化速度往往比连接数增长滞后3到5秒,因为内核协议栈需要先消耗资源处理握手包。
实操验证方法很简单:登录服务器执行ss -s查看TCP连接统计,如果TIME_WAIT和SYN_RECV状态占比超过50%,基本可以锁定SYN Flood,再配合top命令观察CPU的si(软中断)占比,如果持续超过30%,攻击特征就更明确了。
连接数温和上升+响应时间恶化:慢速攻击的典型表现
慢速攻击狡猾得多,它不追求高并发,而是用极慢的速度发送数据,把服务器的连接池一点点占满,连接数曲线呈现30度到45度的缓慢爬坡,响应时间却会随着连接池耗尽而出现台阶式下跌每占满一批worker线程,响应时间就跳一个档次。

识别这种攻击需要看时间维度,正常业务的高峰期曲线是有波动的,有起有伏;慢速攻击则是只增不减的锯齿形上升,用netstat -an | grep :80 | wc -l持续监控,如果连接数在半小时内单调递增且回落幅度小于10%,大概率就是Slowloris或SlowPOST。
四象限法:用连接数和响应时间给攻击分类
把两个指标各自分成高低两档,可以构建一个简单的四象限矩阵,这个方法不需要额外工具,直接在监控面板里拖动时间轴就能肉眼判断。
| 连接数变化 | 响应时间变化 | 攻击类型 | 优先级 |
|---|---|---|---|
| 陡增 | 同步恶化 | 流量型DDoS | 高 |
| 缓增 | 持续恶化 | 慢速攻击 | 高 |
| 正常 | 波动剧烈 | CC攻击 | 中 |
| 正常 | 稳定 | 正常业务或低强度扫描 | 低 |
连接数正常但响应时间波动:CC攻击的隐蔽性
CC攻击针对的是应用层,它模拟真实用户请求,连接数看起来完全正常,但攻击者会持续发送消耗资源的查询请求,比如复杂的数据库搜索、频繁的API调用,导致每个请求的处理时间被拉长,响应时间曲线出现密集的毛刺。
判断CC攻击,不能只看实时数据,要对比历史基线,比如平时响应时间p99是200毫秒,现在同样是200毫秒,但CPU使用率从20%涨到80%,那就说明请求的复杂度变了,另一个观察点是UA头和请求路径的分布CC攻击通常集中打两三个接口,而正常流量分散在几十个路径上。
连接数正常+响应时间逐步上升:慢速Loris变种
还有一类更隐蔽的慢速攻击,它会控制连接数上限,让服务器看起来没有异常增多,但每个连接都在极低速率下发送数据,keep-alive超时时间被无限拉长,这类攻击的响应时间曲线是平缓上升的,不像DDoS那样垂直坠落。
要挖出这种攻击,需要调整监控粒度看单个IP的连接持续时间,正常用户平均连接时长是10到30秒,攻击连接往往持续5分钟以上,用

ss -o state established '( sport = :80 )'配合脚本统计,连接时长超过300秒的IP如果集中来自同一个网段,基本就是慢速攻击的变种。
实战排查步骤:从发现攻击到确认类型
拿到告警后,按以下顺序操作,十分钟内就能出结论。
- 第一步:查看监控面板,记录当前连接数、响应时间、带宽和CPU使用率,和前一天同一时段对比。
- 第二步:执行
ss -tan | awk '{print $1}' | sort | uniq -c统计TCP状态分布,SYN_RECV占比高是DDoS,ESTABLISHED占比高且长时间不释放是慢速攻击。 - 第三步:用
iftop -i eth0观察带宽占用,流量超过500Mbps基本是流量型攻击。 - 第四步:抽查访问日志,重点看请求路径和UA分布,大量集中请求同一URL属于CC攻击,请求不完整或超时属于慢速攻击。
- 第五步:根据判断结果选择处置策略DDoS走带宽清洗,慢速攻击调低keep-alive超时,CC攻击做频率限制。
如何用响应时间确认攻击是否已被拦截
很多运维同学有个误区:连接数恢复了就以为攻击结束了,攻击流量被清洗后,连接数会先回落到正常水平,但响应时间可能还要过几分钟才能恢复,这是因为服务器需要释放残留的半开连接,堆栈缓冲区里的垃圾数据还在占用资源。
确认攻击是否真的结束,要同时满足三个条件:连接数回落到基线值、响应时间连续5分钟保持稳定、CPU和带宽使用率恢复正常范围,如果只有连接数回落而响应时间还在抖动,说明清洗规则可能误杀了正常流量,或者攻击源换了IP继续打。
响应时间质量:判断攻击强度的辅助信号
除了判断攻击类型,响应时间的变化形态还能帮我们估计攻击强度,TCP握手时长的分布非常有用正常情况下TCP握手是几十毫秒到一百毫秒,攻击时会出现大量超过1秒的握手,用ping -f

测试丢包率,丢包率超过5%说明带宽层面的压力已经很大。
响应时间的标准差也是重要参考,正常业务的响应时间呈现长尾分布,大多集中在均值附近;攻击混入后,分布会变成双峰要么极快要么极慢,出现这种双峰分布时,即使连接数没有暴增,也建议检查一下是否有慢速攻击正在试探。
Q&A:关于连接数和响应时间判断攻击的常见问题
问:连接数和响应时间的数据在哪里查看最准?
答:首选服务器本地监控,用vmstat和ss命令直接读取内核数据,准确性最高,云厂商控制台的监控面板有1分钟到5分钟的采样延迟,适合看趋势,不适合作为快速判断依据,如果条件允许,部署一套Prometheus+Grafana,采集粒度调到10秒,能捕捉到攻击启动瞬间的波动。
问:同时遭遇流量型DDoS和CC攻击时,这两个指标会有什么表现?
答:两种攻击叠加时,连接数首先出现陡增,响应时间同步恶化到不可用状态,此时CC攻击的特征被DDoS掩盖,无法直接观察应用层指标,处理顺序是先用流量清洗解决带宽层面的DDoS,待连接数回落后再观察响应时间是否仍有异常波动,若有则继续排查应用层的CC攻击。
问:响应时间和连接数正常,但网页打开还是慢,这种情况怎么排查?
答:这说明瓶颈不在服务器端,可能出在DNS解析、CDN回源、数据库查询或外部API调用上,逐段排查:先curl -w测量总耗时和TTFB,再用dig检查DNS解析时间,最后看数据库慢查询日志,如果所有环节都正常,则可能是客户端网络环境的问题,需要另用第三方拨测工具从不同地域发起访问测试。
判断攻击类型的本质,是观察两个指标在时间轴上的相对变化关系,连接数管量,响应时间管质,攻击类型不同,两者的联动模式就不同,下次遇到服务器告警,别急着上高防,先花几分钟把曲线图调出来,看清连接数是真陡增还是缓爬坡,响应时间是垂直坠落还是台阶式下跌,答案就藏在曲线的形态里。