通过日志区分流量型攻击与连接型攻击,核心看三个维度:数据包特征、连接状态变化、源IP分布规律。流量型攻击在日志中表现为带宽突增、大包洪泛、请求速率异常;连接型攻击则呈现半连接堆积、连接建立后无数据传输、频率慢而持续。
怎么从日志判断流量型攻击特征
流量型攻击的目标是耗尽带宽或服务器处理能力,运维人员在查看服务器日志、防火墙日志或高防产品报表时,通常会看到以下几种典型痕迹。
带宽与包量日志的异常曲线
流量型攻击最直接的证据是带宽统计日志出现断崖式或脉冲式飙升,比如某台服务器平时出口带宽稳定在200Mbps左右,攻击发生时日志记录瞬间冲到1.5Gbps,持续几分钟后又回落,同一时间段,每秒数据包数量可能从几万跳到上百万,但CPU和内存使用率不一定同步升高,因为大部分包在协议栈层面就被丢弃了。
典型特征:
- 带宽日志呈现“尖峰-回落-再尖峰”的周期性波动
- 单个IP或少量IP贡献了绝大多数流量
- 数据包大小比较统一,常见为512字节、1024字节或更大的UDP包
- 流量出入比严重失衡,入方向流量远大于出方向
攻击类型在日志中的具体表现
UDP Flood在防火墙日志中表现为大量目标端口为随机端口或固定端口(如DNS的53端口)的UDP报文,源IP分散且多数不可达,ICMP Flood则能看到大字节的ping包记录,通常超过正常MTU限制。
SYN Flood虽然是连接型攻击,但如果攻击速率极高,也会在流量日志中看到每秒新建连接数暴涨,需要结合连接状态来判断,这一点将在后文展开,较老的攻击工具会使用固定源IP段,在日志里容易被识别;近年来反射放大攻击(如memcached、NTP反射)使用伪造源IP,日志中会呈现出“源端口固定、源IP不重复”的规律。
日志时间窗口与流量峰值的关系
实际排查中,建议先把流量日志按5分钟粒度切片观察,攻击者为了绕过防护,往往选择业务高峰期前几分钟开始发起攻击,例如电商平台大促前夜、游戏版本更新时间点,业内专家指出,将攻击起始时间与业务活动对照,能大幅缩小排查范围。
用tcpdump或Wireshark抓包时,重点关注:
- 单个会话的持续时间是否极短(小于1秒)
- 源IP的地理分布是否与业务用户画像矛盾(比如国内业务出现大量海外IP)
- 协议分布是否异常(平时几乎没有的GRE、IGMP突然出现)
连接型攻击日志特征与排查思路
连接型攻击更隐蔽,它不追求瞬间打满带宽,而是通过耗尽服务器的连接表资源、CPU资源或应用层线程池,让正常用户无法访问。
TCP半连接与全连接日志差异
TCP连接建立需要三次握手,攻击者发送SYN包后不回应SYN-ACK,导致服务器上堆积大量SYN_RECV状态的半连接,在Linux服务器上执行netstat -ant | grep SYN_RECV | wc -l,正常情况下这个数字是个位数,攻击发生时可能膨胀到几万甚至十几万。
全连接攻击则是完成三次握手,但连接建立后不发送任何数据或只发送极少量数据,占用着服务器的accept队列和线程资源,日志中表现为大量ESTABLISHED状态的连接长时间空闲,超过业务正常keep-alive时间。
连接型攻击日志中的请求频率规律
与流量型攻击的“爆炸式”增长不同,连接型攻击的日志往往呈现“缓慢爬坡”状态,举个例子,某个Web服务器的访问日志中,出现大量来自同一C段IP的GET请求,每个IP的请求频率非常低(每隔5-10秒一次),但总连接数持续上升,最终导致nginx报出“too many open files”,这种低频、长连接的攻击模式,速率不高但累计效果显著。
判断连接型攻击的日志线索:
- access.log中出现大量User-Agent相同或缺失的请求
- 请求路径集中在某个固定URL,如
/index.php或/api/getinfo - 每个IP的请求间隔接近固定值,疑似脚本控制
- 服务器连接数统计(
ss -s)中,timewait和established数值同步攀升
内网防火墙会话表日志的分析方法
防火墙的会话表日志同样关键,连接型攻击会在会话表项中留下“老化时间被反复刷新”的记录,即某个源IP到目的IP的会话长期占用,但双向流量极不对称,正常业务会话的报文数至少是几十包,攻击会话可能只有2-3个包,且没有FIN或RST结束标志。
同样参考流量型攻击与连接型攻击的区别,可在运营商侧或IDC出口抓包对比:流量型攻击的抓包文件中,单位时间内的报文数巨大且规律性强;连接型攻击的抓包文件则能看出明显的重传率高居不下,大量连接尚未完成握手就超时。
日志分析实操:区分两类攻击的具体步骤
从实际运维角度出发,建议按以下步骤操作,这套流程同样适用于国内高防机房日志中存在哪些异常记录的判断场景,排查效率较高。
第一步:查看系统连接状态
watch -n 1 'netstat -ant | grep -E "SYN_RECV|ESTABLISHED" | head -30'
持续观察10秒以上,统计各状态数量变化趋势,SYN_RECV数值只增不减,优先怀疑SYN Flood;ESTABLISHED数量平稳增加但每条连接流量几乎为零,怀疑慢速连接攻击。
第二步:分析access.log或应用日志
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
如果排名前10的IP贡献了整体请求量的70%以上,且每个IP的总请求数在低频范围(如每分钟不超过30次),基本可以判定为连接型慢速攻击,流量型攻击在高频请求场景下,同样用这个命令,单个IP的请求数会秒级破百,甚至瞬间涌出上千条日志记录。
第三步:结合防火墙和负载均衡日志交叉定位
高防IP或负载均衡设备上通常有会话日志和流量日志两类,对比二者的时间线,如果流量日志中的带宽峰值出现在会话日志新建连接峰值之后,说明攻击者先建立大量连接,再在连接上传输大流量数据,属于混合型攻击中的流量主导场景,如果会话新建速率飙升而每会话流量未明显增加,则偏向连接型攻击。
两种攻击类型的日志特征对比
| 判断维度 | 流量型攻击 | 连接型攻击 |
|---|---|---|
| 带宽日志 | 短时间冲高,峰值明显 | 整体平稳,无明显峰值 |
| 包大小 | 大包为主(>512字节) | 小包或正常包 |
| 连接状态 | 多为新建后立即结束 | SYN_RECV半连接堆积 |
| 持续时间 | 分钟级冲击 | 可持续数小时或数天 |
| 源IP分布 | 高度集中或随机分散 | 通常是固定IP池 |
| 服务器负载 | CPU不一定高,丢包严重 | CPU升高,连接表溢出 |
Q&A:攻击日志判断常见问题
流量型攻击和连接型攻击日志中,哪个更容易被误判为正常访问?
连接型攻击更难识别,流量型攻击在带宽日志上的突变非常扎眼,监控系统大概率会自动告警;连接型攻击的请求速率与正常业务相近,只是连接生命周期异常,需要统计连接的平均存活时长,若多数连接存活超过10分钟且累计传输字节数不足1KB,应纳入可疑范围。
高防IP提供的攻击报表能直接区分这两类攻击吗?
大部分高防IP报表会分别列出攻击流量峰值、攻击包速率和攻击连接数三个指标,若连接数指标明显高于包速率和流量,就是连接型攻击;若带宽和包速率远高于连接数,则是流量型攻击,相对国内高防机房日志排查成本,使用报表定位更快捷,但最终以原始日志为判定依据。
日志中出现了大量ACK Flood记录,属于哪一类攻击?
ACK Flood属于流量型攻击的变种,但它同时影响连接状态,攻击者发送大量ACK报文,试图耗尽防火墙会话表并发能力,排查时既有带宽容量的上升,又有会话表项异常增多,归入混合型攻击更准确,处理优先级的判断标准不变:带宽先被打满则侧重流量清洗,会话表先耗尽则侧重连接限制。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/654364.html





