teardrop攻击是一种利用ip分片偏移异常导致系统崩溃的udp畸形报文dos攻击,其核心特征是内核日志中出现“overlapping fragment”等重组异常提示,防御需结合防火墙过滤、内核升级与端口管控。

新手识别协议栈畸形报文攻击,关键不是找“攻击”二字,而是发现日志里那些违背网络协议基本逻辑的异常信号。内核日志不会直接说“这是Teardrop”,但它会如实记录下IP分片重组失败、校验异常、驱动拒绝处理等底层反应——这些就是最可靠的线索。
盯紧时间戳和子系统标识,别被错误词带偏
内核日志的时间戳是[ X.XXXXXX]格式,代表开机后秒数。协议栈问题往往表现为多个事件在极短时间内密集出现,比如:
- [ 45.123456] IP: fragment reassembly timeout —— 分片迟迟无法拼合,可能因偏移错乱导致重组卡死
- [ 45.123789] IPv4: frag: overlapping fragment received —— 明确提示收到重叠分片,这是Teardrop类攻击的典型特征
- [ 45.124012] kernel: drop oversized fragment —— 内核主动丢弃超长分片,说明已触发防护机制
注意:这些日志不一定带“error”或“attack”字样,但子系统标识如IPv4:、net:、ip_frag:后面跟着的异常动词(overlapping、timeout、drop、frozen)比任何关键词都更可信。
过滤只看真正要干预的日志
新手最容易犯的错是用grep -i "error"大海捞针。这会混入大量无害信息,比如固件自检提示“error correction enabled”。正确做法是强制按内核日志级别过滤:
-
dmesg -l err,warn—— 只保留ERR和WARN级日志,排除90%噪声 -
dmesg -l err,warn | grep -E "(frag|overlap|reasm|icmp|udp)"—— 在有效日志中聚焦协议栈关键词 - 搭配
-T加真实时间:dmesg -T -l err,warn,方便对照业务故障发生时刻
看到“overlapping fragment”就该警觉
这是识别Teardrop等IP分片攻击最直接的信号。它出现在内核网络子系统检测到第二片偏移量设置错误(例如应为36却设成24),导致与第一片数据区域重叠时。此时需立即检查:
- 是否运行老旧内核(如Linux 2.1.53之前版本)?升级是最根本的修复
- 防火墙是否启用了分片过滤?华为AR路由器可用
anti-attack fragment限速,其他厂商设备查对应分片防护策略 - 是否禁用非必要高危端口?如Windows环境下的139/445端口,可减少攻击面
结合硬件与驱动上下文交叉验证
单看一条“overlapping fragment”还不够。要确认是否真受攻击,得看它是否伴随底层异常:
- 如果同一时间点出现
irq X: nobody cared,说明网卡中断未被正确处理,可能是驱动在重载分片时崩溃 - 若
dmesg -l err,warn | grep "xhci\|igb\|ixgbe"爆出网卡驱动警告,说明硬件加速或DMA路径已被干扰 - 用
sudo lspci -vv -s $(ethtool -i eth0 | grep bus-info | awk '{print $2}')查网卡详细能力,确认是否支持分片卸载(LRO/GRO),有时关闭反而更稳定











