01 · ICMPv6的职能全景:与ICMPv4的本质区别
在IPv4中,ICMP是辅助性诊断协议,"全部丢弃"虽不明智但网络尚可运转;在IPv6中这一前提不复存在——邻居发现(NDP)、组播侦听者发现(MLD)、路径MTU发现(PMTUD)全部由ICMPv6承载(RFC 4443定义消息本体,RFC 4861/2710/3810定义上层用途)。错误处理不当不仅是性能问题,而是正确性问题:阻断ICMPv6即阻断IPv6网络的运转。RFC 4890(2007年5月)存在的全部理由,就是为"哪些ICMPv6消息必须放行、哪些可以限速、哪些应当丢弃"给出权威分级基线。
1.1 ICMPv6消息族分类(按RFC 4443及上层规范)
| 消息族 | 类型值 | 代表消息 | 安全敏感点 |
|---|---|---|---|
| 错误消息 | 1—4 | 1目的不可达、2包过大(Packet Too Big)、3超时、4参数问题 | PTB伪造可操纵PMTUD;参数问题可被用于异常探测反射 |
| 信息消息 | 128/129 | Echo请求/应答(ping6) | 经典反射放大源,需限速;诊断必要性与滥用风险并存 |
| 邻居发现(NDP) | 133—137 | 133 RS、134 RA、135 NS、136 NA、137 Redirect | 本课题第5页专题:链路配置权威,伪造即劫持 |
| 组播侦听者发现(MLD) | 130—132、143 | 130查询、131报告、132完成、143 MLDv2报告(MLDv1:RFC 2710;MLDv2:RFC 3810) | 组播组成员关系管理;伪造可干扰组播分发与组播安全策略 |
| 实验/扩展 | 100—101等 | 实验性分配(RFC 4443 §2.1) | 非常规类型可用于实现指纹探测 |
02 · RFC 4890分级过滤基线
RFC 4890将ICMPv6消息按职能分为三档处理建议。下表为基线摘要(细节以RFC原文为准),任何组织在制定ICMPv6过滤策略时应以此起步而非从零设计:
| 档位 | 消息类别 | 处理建议 |
|---|---|---|
| 必须放行 | PTB(类型2);NDP消息(RS/RA/NS/NA/Redirect,限链路范围);部分目的不可达子码 | 在链路范围内放行并保障可达;阻断即破坏PMTUD/NDP基本运转。例外:对边界外进入的RA/Redirect按链路策略处理 |
| 建议限速放行 | Echo请求/应答(128/129);类型1部分子码(如地址不可达);MLD消息 | 保留诊断能力的同时限速防反射滥用;MLD按二层组播治理策略处理 |
| 应丢弃 | 路由重定向(来自非链路可信源的137);参数问题(入方向);实验类型 | 入方向按源认证过滤;出方向错误消息生成应限速(RFC 4443 §2.4要求实现限速) |
常见误配置模式:①"安全基线模板"一刀切丢弃全部ICMPv6——后果是间歇性TCP卡顿(PMTUD黑洞)且极难排查;②边界设备放行Echo但丢弃PTB——外部路径MTU变化时长连接静默中断;③对MLD不加治理——组播泛滥与伪组成员影响二层域。RFC 4890的价值在于把每类消息的处理决策从"经验猜"变为"查表执行"。
03 · PMTUD信任依赖与"Packet Too Big"伪造
3.1 机制
IPv6禁止中间节点分片,最小链路MTU规定为1280字节(RFC 8200 §5)。当报文超过路径某段MTU时,该段路由器必须回ICMPv6 Packet Too Big(类型2)并携带下一跳MTU,源节点据此缩小后续报文——这就是PMTUD(Path MTU Discovery)。整个机制的可靠性完全建立在"ICMPv6错误消息可信"之上。
3.2 两类典型攻击
- TCP黑洞:攻击者在路径上(或通过伪造源地址)阻断/丢弃PTB消息——源节点永远收不到"太大"信号,大包被静默丢弃,TCP表现为连接建立后数据阶段卡死。由于症状与丢包相似,此类故障的平均排查成本极高。
- MTU极化DoS:攻击者伪造PTB消息,将下一跳MTU压至1280字节下限——TCP会话被强制分片化,吞吐下降一到两个数量级;若伪造信号持续存在,连接长期劣化且难以归因。
3.3 缓解要点
- 入口方向按RFC 4890基线过滤伪造ICMPv6:来自外网的"PTB针对内网发起流量"等语义不一致消息应丢弃;
- 监测PMTUD黑洞特征:重传模式异常+大包失败小包成功;
- 应用层保底:长连接业务设置合理MSS/报文分块策略,降低对PMTUD瞬时故障的敏感度(工程兜底,非替代PMTUD)。
04 · 重定向(Redirect)消息:被低估的信任面
ICMPv6 Redirect(类型137)允许路由器告知主机"对某目的有更优下一跳"。RFC 4861 §8.1规定了主机接受重定向的严格条件(如必须与当前默认路由器同链路、目标必须与报文目的同链路等)——但条件判断的正确性完全依赖主机实现质量。实际风险表现为:
- 链路内伪造重定向:同链路攻击者发送伪造Redirect,诱导主机将特定流量先发往攻击者——与Rogue RA互补的精细化劫持手段(仅劫持选定目的,隐蔽性高于全局RA劫持);
- 边界重定向泄漏:误配置使重定向消息跨越不应到达的范围,破坏路由一致性;
- 缓解:主机侧核查RFC 4861 §8.1条件;网络侧在接入层识别"非路由设备发送Redirect"的异常;Windows等主流系统对重定向的学习有额外限制(具体行为以各系统文档为准,纳入核查问卷)。
05 · ICMPv6洪泛与反射面
- Echo反射:IPv6形态的smurf类攻击(THC-IPv6工具包中的smurf6即演示此向量)——以受害者为源地址发送Echo请求至组播地址,应答洪流涌向受害者。缓解:边界过滤"外网源地址的Echo请求进入内网组播域"、按RFC 4890限速。
- 错误消息风暴:触发目标产生大量参数问题/不可达消息(如向关闭端口高频发送),消耗目标与沿途的ICMPv6生成资源。RFC 4443 §2.4要求实现端对错误消息生成限速——核查设备与主机的该限速生效状态是低成本的防御验证项。
- NDP类洪泛:NS/NA洪泛撑爆邻居缓存表(RFC 6583分析的NDP耗尽),单列于第5页。
与"过滤一切"的边界:以上滥用面不构成"丢弃全部ICMPv6"的理由——正确路线是RFC 4890的"分级放行+限速+语义校验",使诊断可用性与抗滥用性同时成立。任何组织级防火墙模板应将ICMPv6策略单独成章评审,而非复用IPv4 ICMP模板。
06 · ICMPv6治理基线五步法
6.1 分场景基线摘要
| 场景 | 要点 |
|---|---|
| 边界(互联网侧) | 外网RA/Redirect不得入内;Echo限速;PTB语义校验;内部地址空间源过滤(uRPF/BCP 38思路对v6同适用) |
| 接入链路(内网段) | NDP消息必须放行但应受RA-Guard/SAVI治理(第5页、子课题02);MLD按二层组播策略治理 |
| 数据中心内部 | 除运维诊断所需外收紧Echo;服务器默认网关静态化,降低重定向学习面 |
本节参考来源(第3页)
IETF RFC 4443《Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification》(2006年3月,消息类型与错误消息限速要求见§2):rfc-editor.org/rfc/rfc4443。
IETF RFC 4890《Recommendations for Filtering ICMPv6 Messages in Firewalls》(2007年5月,消息分级基线):rfc-editor.org/rfc/rfc4890。
IETF RFC 4861《Neighbor Discovery for IP version 6 (IPv6)》(2007年9月,§8.1主机重定向接受条件):rfc-editor.org/rfc/rfc4861。
IETF RFC 2710《Multicast Listener Discovery (MLD) for IPv6》(1999年10月):rfc-editor.org/rfc/rfc2710;RFC 3810《Multicast Listener Discovery Version 2 (MLDv2) for IPv6》(2004年6月):rfc-editor.org/rfc/rfc3810。
IETF RFC 8200《Internet Protocol, Version 6 (IPv6) Specification》(2017年7月,§5最小MTU 1280字节与中间节点禁止分片):rfc-editor.org/rfc/rfc8200。
IETF RFC 9098《Operational Implications of IPv6 Packets with Extension Headers》(2021年8月,ICMPv6治理与扩展头处理章节):rfc-editor.org/rfc/rfc9098。
THC-IPv6攻击套件(smurf6等ICMPv6演示工具,2005年发布并持续开源维护):github.com/vanhauser-thc/thc-ipv6。