6. ICMP 处理
本节描述 IPsec 对 ICMP 流量的处理。ICMP 流量分为两类:错误消息(例如类型 = 目的不可达)和非错误消息(例如类型 = 回显)。本节仅适用于错误消息。非错误的 ICMP 消息(且不是以 IPsec 实现本身为目的地的消息)的处置方式,必须(MUST)通过 SPD 条目明确加以说明。
本节中的讨论同时适用于 ICMPv6 和 ICMPv4。此外,应该(SHOULD)提供一种机制,允许管理员将 ICMP 错误消息(选定的、全部的或不记录)记录到日志中,以辅助问题诊断。
6.1. 处理发往 IPsec 实现的 ICMP 错误消息
6.1.1. 在不受保护一侧收到的 ICMP 错误消息
在不受保护一侧收到的 ICMP 消息未经认证,对其处理可能导致服务被拒绝或服务降级。这表明,一般而言,忽略此类消息是较为理想的。然而,主机或安全网关会从未经认证的源(例如公共互联网中的路由器)收到许多 ICMP 消息。忽略这些 ICMP 消息可能会降低服务质量,例如因为未能处理 PMTU 消息和重定向消息。
关键考虑:
- 安全风险:未经认证的 ICMP 消息可用于拒绝服务攻击
- 运维需求:某些 ICMP 消息(PMTU、重定向)是网络正常运行所必需的
- 权衡:在安全性与功能性之间取得平衡
6.1.2. 在受保护一侧收到的 ICMP 错误消息
在边界受保护一侧收到的 ICMP 错误消息已经过认证,可以更放心地处理。
ICMP 消息类别
错误消息
- 目的不可达(Destination Unreachable)
- 超时(Time Exceeded)
- 参数问题(Parameter Problem)
- 包过大(Packet Too Big,ICMPv6)
非错误消息(需要显式 SPD 条目)
- 回显请求/应答(Echo Request/Reply)
- 路由器通告/ solicitation(Router Advertisement/Solicitation)
- 邻居发现(Neighbor Discovery,ICMPv6)