怎么判断是不是慢速CC攻击:别只看access.log

2026-09-03 2 0

检查连接状态层是第一步,不要先翻访问日志。当运维发现服务器响应变慢、连接数堆积但带宽和QPS都不高时,慢速CC攻击的判定入口必须从日志层换到连接状态层。这是因为攻击者在请求头或Body发完之前,Web服务器根本不会生成访问日志记录,基于QPS阈值的检测在此场景下整体失效。本文围绕怎么判断是不是慢速CC攻击,给出可直接执行的观测指标与场景化处置路径。

ss命令连接状态排查示意图

慢速CC为什么在access.log里查不到

慢速攻击的隐蔽性源于Web服务器的日志写入时机。以Slowloris为例,攻击者建立大量TCP连接后,周期性发送不完整的HTTP请求头并维持Keep-Alive,使连接长期存活但请求始终处于“未完成”状态。由于请求头未结束,Nginx或Apache不会触发日志记录动作,access.log自然看不到这些恶意请求。这直接解释了为什么“查CC就翻access.log找高频IP”是主流误区:慢速攻击的流量特征不在请求速率,而在连接占用时长。判定必须转向连接状态层,观察长期ESTABLISHED、未完成请求以及worker连接与文件描述符的增长曲线。

连接数堆积但带宽QPS不高先排掉哪些非攻击原因

在下判定前,需先排除业务自身或网络环境导致的连接堆积,避免误判。不同原因在连接分布上有可辨识差异:

非攻击原因连接分布特征辨识要点
应用连接池未释放源IP集中在内网应用服务器连接状态多为ESTABLISHED但Recv-Q/Send-Q为空
后端依赖响应变慢连接等待集中在特定接口路径数据库或第三方接口监控同步出现延迟
Keep-Alive参数过长空闲连接数高但无数据交换连接超时后正常关闭,无持续数据写入
健康检查与爬虫长连接源IP为固定监控或爬虫网段UA可识别,请求最终会完成
内网弱网客户端连接建立慢但最终成功仅影响特定办公网段,非公网分散IP

若排除上述场景后连接仍持续堆积且无业务对应关系,才进入慢速CC判定流程。

判据一:ss -tan 里长期ESTABLISHED与未完成请求怎么读

使用 ss -tan 统计各状态连接数是核心观测动作。重点关注三个维度:按源IP聚合的ESTABLISHED数量、连接建立时长、Recv-Q/Send-Q队列分布。慢速CC的核心指纹是“连接长期存活但请求始终未完成”,表现为大量ESTABLISHED连接的Recv-Q持续有少量数据写入但无完整请求,Send-Q保持非零等待响应。需连续多次采样看趋势,单次快照可能受瞬时波动干扰。若发现少量IP撑起大量长期ESTABLISHED连接且队列数据缓慢增长,即指向慢速攻击。这一排查方法直接回应了 ss -tan 大量ESTABLISHED连接怎么排查 的实操疑问。

worker连接占用与文件描述符增长曲线

第二组判据聚焦进程资源消耗形态。Nginx的active connections与reading状态计数、Apache worker占用率、进程FD数量是核心指标。慢速攻击下,这些指标呈阶梯式持续上升且不回落,因为连接位被占死后不会主动释放;而正常业务峰值表现为随流量涨落的平滑曲线。若worker占用率持续接近上限但QPS无对应增长,说明线程被不完整请求阻塞。文件描述符增长若与ESTABLISHED连接数同步线性上升且无关闭事件,进一步佐证连接耗尽型攻击。需将资源曲线与连接状态采样时间对齐,避免将内存泄漏误判为攻击。

单IP连接数与请求头到达速率的分界

灰区处理是判定难点。真实弱网用户也会连接慢,但表现为连接数少、请求最终会完成、UA与路径分散;慢速攻击则是少量IP撑起大量并发连接,请求头以固定节律缓慢续写且始终不结束。区分维度包括:单IP连接数阈值(需结合业务基线)、请求头到达速率的规律性、连接存活时长分布。不要单凭连接数拉黑,需交叉验证请求是否最终完成。若连接在超时前始终无法完成请求且速率呈机械规律,攻击概率远高于弱网。

慢速CC攻击监控曲线对比图

慢速CC、HTTP Flood、SYN Flood与连接池泄漏对照

攻击/故障类型带宽QPS连接状态分布access.log可见性CPU/内存表现恢复方式
慢速CC大量长期ESTABLISHED不可见连接耗尽但CPU不高收紧超时+边缘缓冲
HTTP Flood正常ESTABLISHED+TIME_WAIT可见高频IPCPU随QPS飙升限流+验证码
SYN Flood大量SYN_RECV不可见内存耗尽四层清洗
连接池泄漏内网IP ESTABLISHED不可见内存缓慢增长重启应用

需注意指标组合的交叉验证:慢速CC与连接池泄漏在连接状态上相似,但源IP分布与请求完成度是区分关键;HTTP Flood与慢速CC的QPS差异是首要分流依据。

源站超时收紧与limit_req限流的延缓边界

源站侧处置只能延缓线程耗尽,无法根除攻击。收紧请求头/请求体读取超时、限制单IP并发连接、使用 ngx_http_limit_req_module 基于漏桶按 $binary_remote_addr 控制处理速率并配合burst/nodelay平滑合法突发,超限返回429或503,是标准手段。但这些措施的能力上限在于:攻击者仍可通过调整发送速率绕过超时,或通过分布式源IP规避单IP限流。真正的断点在于连接能否被完整缓冲后再回源,源站侧无法实现这一点。

按场景选做法:自建源站、动态API与已挂CDN

场景优先动作判定复核信号持续观测指标
单机自建Nginx/Apache收紧超时+limit_req+单IP并发限制ESTABLISHED连接数下降worker占用率、FD数量
动态API业务接口级限流+请求体大小限制+超时收紧未完成请求队列清空接口P99延迟、连接池使用率
已挂CDN仍被直连源站IP白名单+防火墙限制+CDN回源鉴权公网直连连接归零源站入站连接数、CDN回源错误率
非HTTP自有协议四层高防IP+协议合规校验异常连接终止率上升四层连接数、协议解析失败率

针对已挂CDN仍被直连的场景,需优先排查源站真实IP是否泄露,可参考 如何防止源站真实IP暴露 中的隐藏方案。对于WebSocket长连接业务,慢速攻击特征与HTTP不同,需结合 WebSocket长连接DDoS攻击防护方案 中的连接状态判据进行交叉验证。

常见问题

网站很卡但带宽和QPS都不高是什么原因

优先排查慢速连接耗尽。慢速CC攻击通过不完整请求霸占连接线程,导致带宽QPS低但连接数堆积。需检查ss -tan中长期ESTABLISHED连接与worker占用曲线,排除连接池泄漏与后端依赖慢响应后,若连接呈阶梯上升且不回落,基本可判定为慢速攻击。

access.log看不到请求但连接数很高怎么回事

这是慢速CC的典型特征。请求头未结束前Web服务器不写日志,导致access.log“隐身”。需转向连接状态层,用ss -tan统计ESTABLISHED连接时长与Recv-Q数据速率。若大量连接长期存活但请求未完成,且源IP分布异常,即可确认日志层检测失效。

ss -tan 大量ESTABLISHED连接怎么排查

连续采样3次以上,按源IP聚合统计连接数与建立时长。重点关注Recv-Q持续有数据但无完整请求、Send-Q非零等待响应的连接。区分弱网用户:攻击连接速率呈固定节律且始终不完成,弱网连接最终会成功。不要单凭连接数拉黑,需交叉验证请求完成度。

慢速CC攻击和HTTP Flood有什么区别

核心差异在请求完成度与日志可见性。HTTP Flood发送完整高频请求,QPS飙升且access.log可见;慢速CC发送不完整请求,QPS低且日志不可见。连接状态上,HTTP Flood正常ESTABLISHED+TIME_WAIT,慢速CC为长期ESTABLISHED+未完成队列。处置上,限流对HTTP Flood有效,对慢速CC需收紧超时+边缘缓冲。

高防CDN能防慢速CC攻击吗

能,但前提是请求在边缘被完整缓冲。慢速攻击的断点在于连接是否被完整缓冲后才回源,RockCloud 高防CDN 的边缘清洗层可将完整请求缓冲、连接终止与慢速回收前移,源站仅保留回源收口。但若源站仍开放公网端口,攻击者可绕过CDN直连,此时需配合 CDN安全加速 中的源站隐藏策略,否则边缘防护会被穿透。

建议先按文中的连接状态判据完成一次现场判定,确认是慢速连接耗尽后再决定处置层级;若源站超时与并发限制已收紧但连接仍被占满,可评估把请求缓冲与连接终止前移到边缘,并联系 RockCloud 技术支持核对回源收口配置。

相关文章

怎么判断是不是慢速CC攻击:别只看access.log
CDN安全加速怎么选?三层判定分工与核对要点
源站IP泄露后的应急处理与修复步骤:5步止血顺序
高防CDN缓存策略优化以降低源站压力怎么做?5步配置
WebSocket长连接DDoS攻击防护方案:四道闸配置
无感接入高防CDN配置流程:6步零中断切换

评论(0)

暂无评论

发布评论