ICMP
ICMP 是什么?
ICMP由 RFC 792(IPv4)和 RFC 4443(IPv6)定义的网络层控制与诊断协议,供主机和路由器报告错误并反馈路径状态。
互联网控制消息协议(Internet Control Message Protocol)是 IP 的不可或缺的组成部分,IPv4 由 RFC 792 定义,IPv6 由 RFC 4443 定义。路由器和终端主机用它发送错误消息(目标不可达、超时、需要分片)以及诊断查询(回显请求/应答,供 ping 和 traceroute 使用)。ICMP 直接承载在 IP 之上,协议号为 1(ICMPv6 为 58),不使用端口。
它对路径 MTU 发现(Path MTU Discovery,RFC 1191)和 IPv6 邻居发现(Neighbor Discovery)至关重要,因此一刀切地全面封禁 ICMP 常常会造成"PMTU 黑洞",大数据包会被无声丢弃。历史上的滥用案例有充分记录:Smurf attack(CERT 公告 CA-1998-01)将受害者地址伪造成发往广播地址的回显请求的源地址,从而放大洪水攻击;Ping of Death 用重组后超过 65,535 字节的回显数据包使上世纪 90 年代末的 TCP/IP 协议栈崩溃;Loki 工具(Phrack 第 49 和 51 期,1996-97 年)开创了 ICMP 隧道技术,将隐蔽 shell 藏在回显载荷中。ICMP 重定向消息也可被伪造以污染主机的路由表。
防御措施包括对 ICMP 进行限速而非直接丢弃,放行类型 3 和 4 以及所有强制性的 ICMPv6 邻居发现消息(参见 RFC 4890 的指导),在加固主机上忽略 ICMP 重定向,以及在 NDR/EDR 中检查回显载荷以发现隧道行为。
flowchart LR A[Host: ping] -->|Echo Request type 8| R[Router] R --> B[Target host] B -->|Echo Reply type 0| A R -.->|Time Exceeded type 11| A R -.->|Dest Unreachable type 3| A X[Attacker] -.->|Forged Redirect type 5| A
● 示例
- 01
ping example.com 发送 ICMP 回显请求,并测量收到回显应答所需的时间。
- 02
路由器返回 ICMP type 3 code 4,表示需要分片但 DF 标志已置位。
● 常见问题
ICMP 是什么?
由 RFC 792(IPv4)和 RFC 4443(IPv6)定义的网络层控制与诊断协议,供主机和路由器报告错误并反馈路径状态。 它属于网络安全的 网络安全 分类。
ICMP 是什么意思?
由 RFC 792(IPv4)和 RFC 4443(IPv6)定义的网络层控制与诊断协议,供主机和路由器报告错误并反馈路径状态。
如何防御 ICMP?
针对 ICMP 的防御通常结合技术控制与运营实践,详见上方完整定义。
ICMP 还有哪些其他名称?
常见的别称包括: 互联网控制消息协议。