前言
很多运维、安全工程师遇到过一个诡异故障:服务器端口监听正常、防火墙策略没有改动,但用户访问网站、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报错报文是否真实匹配当前流量。
二、攻击带来哪些危害
- 在线业务TCP连接强制断开,网站、API、远程业务频繁掉线;
- UDP业务(DNS、视频、游戏)大面积丢包、通信中断;
- 大量虚假ICMP报文占用防火墙、服务器CPU资源;
- 混淆故障排查,运维容易误以为路由、端口配置故障,找不到攻击源头。
三、Wireshark抓包识别ICMP不可达攻击
过滤语句,直接复制使用
icmp.type ==3
攻击流量特征:
- 短时间内爆发大量ICMP Type3报文,Code多为3(端口不可达);
- ICMP报文内部携带的原始IP+端口五元组,对应服务器正在正常工作的业务端口(80/443/53等);
- 报文源IP杂乱,大量伪造源IP,并非真实路由设备IP;
- 业务本身没有宕机,但是只要收到这个伪造报文,客户端/服务器直接断连。
区分【正常不可达】vs【攻击报文】
- 正常:零星报文,源IP为中间路由器,对应真实访问失败的探测包;
- 攻击:海量突发,五元组都是正在活跃的业务连接,报文源IP伪造。
四、分步排查流程
- 服务器/防火墙开启流量镜像,Wireshark抓包,使用
icmp.type==3过滤;
- 统计ICMP不可达报文的数量、源IP分布;
- 核对ICMP内封装的原始流量五元组,确认业务端口是正常监听状态;
- 检查防火墙日志,确认大量ICMP不可达报文入站;
- 确认路由正常、无真实网络中断,即可判定ICMP Unreachable攻击。
五、防护方案(防火墙+系统双层面)
方案1:防火墙/安全设备配置(推荐,优先部署)
- 限制ICMP Type3报文的速率,做流量限速,抑制批量伪造报文;
- 开启ICMP报文合法性校验:校验ICMP错误报文内封装的原始流量,必须匹配本机近期真实发出的数据包,不匹配直接丢弃;
- 策略控制:外网方向按需放行ICMP不可达,非必要场景直接丢弃外网进来的ICMP Type3报文;
注意:完全封禁会影响PMTU发现,导致部分大分片业务异常,建议做校验而不是一刀切全封。
方案2:操作系统内核加固
Linux系统可以调整内核参数,降低对伪造ICMP不可达报文的信任:
# 不响应外部伪造的ICMP错误报文,按需调整
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1Windows:修改注册表,收紧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攻击防御