您的位置: 新闻资讯 > 行业动态 > 正文

ICMP Unreachable Attack 详解|隐蔽的协议层DOS攻击,抓包识别+完整防护方案(图文)


来源:mozhe 2026-10-19

 

前言

很多运维、安全工程师遇到过一个诡异故障:服务器端口监听正常、防火墙策略没有改动,但用户访问网站、TCP业务连接频繁断开,抓包一看大量ICMP Destination Unreachable(ICMP Unreachable)报文。
这很有可能不是网络故障,而是ICMP Unreachable Attack(ICMP不可达攻击)。它利用ICMP协议原生报错机制进行伪造报文攻击,隐蔽性强,属于典型的协议层拒绝服务攻击,很多防火墙默认对这类ICMP错误报文放行,极易被忽略。

一、什么是 ICMP Unreachable Attack?

ICMP Type=3,代表目的不可达(Destination Unreachable),本身是正常网络反馈报文。
正常场景:路由器/主机无法交付数据包时,向源IP返回不可达提示,细分常用Code:
  • Code 0:网络不可达
  • Code 1:主机不可达
  • Code 3:端口不可达(Port Unreachable,最常见)
ICMP Unreachable攻击原理:
攻击者伪造源IP,发送大量虚假ICMP Type3不可达报文发给通信两端。操作系统TCP/IP协议栈默认信任ICMP错误报文,收到后会判定:目标端口/主机无法访问,主动直接断开已建立的TCP会话,造成业务中断、用户连接掉线。
关键点:攻击者不需要在通信链路中间,属于旁路攻击(Off-Path),只需要猜测/获取通信五元组,直接注入伪造ICMP报文,攻击成本很低,很难溯源。
对UDP业务杀伤力更强,UDP无连接状态,很难校验ICMP报错报文是否真实匹配当前流量。

二、攻击带来哪些危害

  1. 在线业务TCP连接强制断开,网站、API、远程业务频繁掉线;
  2. UDP业务(DNS、视频、游戏)大面积丢包、通信中断;
  3. 大量虚假ICMP报文占用防火墙、服务器CPU资源;
  4. 混淆故障排查,运维容易误以为路由、端口配置故障,找不到攻击源头。

三、Wireshark抓包识别ICMP不可达攻击

过滤语句,直接复制使用


 
icmp.type ==3

攻击流量特征:

  1. 短时间内爆发大量ICMP Type3报文,Code多为3(端口不可达);
  2. ICMP报文内部携带的原始IP+端口五元组,对应服务器正在正常工作的业务端口(80/443/53等);
  3. 报文源IP杂乱,大量伪造源IP,并非真实路由设备IP;
  4. 业务本身没有宕机,但是只要收到这个伪造报文,客户端/服务器直接断连。
区分【正常不可达】vs【攻击报文】
  • 正常:零星报文,源IP为中间路由器,对应真实访问失败的探测包;
  • 攻击:海量突发,五元组都是正在活跃的业务连接,报文源IP伪造。

四、分步排查流程

  1. 服务器/防火墙开启流量镜像,Wireshark抓包,使用icmp.type==3过滤;
  2. 统计ICMP不可达报文的数量、源IP分布;
  3. 核对ICMP内封装的原始流量五元组,确认业务端口是正常监听状态;
  4. 检查防火墙日志,确认大量ICMP不可达报文入站;
  5. 确认路由正常、无真实网络中断,即可判定ICMP Unreachable攻击。

五、防护方案(防火墙+系统双层面)

方案1:防火墙/安全设备配置(推荐,优先部署)

  1. 限制ICMP Type3报文的速率,做流量限速,抑制批量伪造报文;
  2. 开启ICMP报文合法性校验:校验ICMP错误报文内封装的原始流量,必须匹配本机近期真实发出的数据包,不匹配直接丢弃;
  3. 策略控制:外网方向按需放行ICMP不可达,非必要场景直接丢弃外网进来的ICMP Type3报文;
注意:完全封禁会影响PMTU发现,导致部分大分片业务异常,建议做校验而不是一刀切全封。

方案2:操作系统内核加固

Linux系统可以调整内核参数,降低对伪造ICMP不可达报文的信任:

 
# 不响应外部伪造的ICMP错误报文,按需调整
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1


Windows:修改注册表,收紧TCP栈对外部ICMP不可达错误的处理逻辑。

方案3:DDoS高防清洗

如果是互联网业务,建议接入DDoS高防,清洗伪造ICMP控制类报文,抵御大规模ICMP不可达攻击。

六、常见踩坑误区

误区1:ICMP不可达都是网络故障。
大量突发、针对活跃业务连接的Type3报文,优先怀疑伪造攻击。
误区2:直接全部封禁ICMP,一劳永逸。
全部阻断会导致PMTU失效,大数据包分片失败,业务出现莫名其妙丢包。推荐做报文合法性校验,而不是直接全部丢弃。
误区3:这种攻击只能断UDP业务。
TCP协议栈同样会响应ICMP不可达,会直接终止已经建立好的TCP连接,Web、远程桌面都会受影响。

结尾总结

ICMP Unreachable Attack是利用协议信任缺陷的隐蔽DOS攻击,它不是洪水式大流量,而是靠伪造协议报错,欺骗操作系统主动断开连接,属于低流量、高杀伤的攻击。
运维排查业务频繁断连故障时,记得优先抓包查看是否存在大量ICMP Type3不可达报文,通过防火墙校验+系统内核加固组合方案进行防护。
参考协议标准:RFC792、RFC5927

适配不同平台微调建议

  • 知乎:可以在开头增加一句话提问:服务器端口正常,但业务频繁断连?有可能是ICMP Unreachable不可达攻击
  • 头条:精简到800字内,小标题简短,重点突出抓包过滤命令+防护配置
  • 公众号:可增加拓扑图文字描述,适合配图排版
关于墨者安全
墨者安全致力于安全防护、服务器高防、网络高防、ddos防护、cc防护、dns防护、防劫持、高防服务器、高防dns、网站防护等方面的服务,全网第一款指纹识别技术防火墙,自研的WAF指纹识别架构,提供任意CC和DDoS攻击防御

热门文章

X

7x24 小时

免费技术支持

15625276999


-->