什麼是 ICMP?
ICMP (Internet Control Message Protocol,網際網路控制訊息協定) 是 TCP/IP 協議族核心子協議,工作於網路層 (L3),封裝於 IP 封包中 (Protocol=1)。不攜帶用戶資料,專責傳遞錯誤報告、查詢/回應、路由資訊等控制訊息,保障資料順利送達。
常見 ICMP 訊息類型
| 類型 | 代碼 | 用途 | 典型應用 |
| Echo Request | 8/0 | 請求回應 | Ping |
| Echo Reply | 0/0 | 回應請求 | Ping 回應 |
| Destination Unreachable | 3/0-15 | 不可達原因(網路/主機/埠/協議/片段/路由) | Tracert、PMTUD |
| Time Exceeded | 11/0-1 | TTL=0/重組逾時 | Tracert 逐跳顯示 |
| Redirect | 5/0-3 | 路由器建議更佳下一跳 | 主機路由表更新 |
| Parameter Problem | 12/0-1 | IP 標頭參數錯誤 | 錯誤診斷 |
| Timestamp Request/Reply | 13/14 | 時間同步/延遲測量 | 舊式時間同步 |
ICMP 濫用風險與攻擊向量
- 主機掃描/存活探測: 掃描器發送 Echo Request,收到 Reply 確認主機在線 (Ping Sweep)。
- 資訊洩露: Timestamp/Information Request 回應洩露系統運行時間、時鐘精度。
- 隱蔽通道: 利用 Echo Reply 承載指令/數據 (ICMP Tunneling,如 PingTunnel、Hans),繞過只檢查 TCP/UDP 的防火牆。
- DoS/DDoS: ICMP Flood (Smurf 攻擊利用廣播位址放大)、大封包 Ping of Death (歷史漏洞)。
- 路由操縱: 偽造 Redirect 訊息誘導流量經攻擊者節點 (中間人)。
防火牆防護策略(最佳實踐)
- 邊界防火牆:
- 入站:僅允許 Destination Unreachable (Type 3 Code 3/4 片段需求)、Time Exceeded (Type 11)、Packet Too Big (IPv6 Type 2) — 維持 PMTUD/路由發現。
- 入站:拒絕 Echo Request (Type 8)、Timestamp/Info Request — 防掃描/洩露。
- 出站:允許 Echo Request (供內部 Ping)、上述錯誤訊息;拒絕 Echo Reply 向外 (防隧道外洩),或僅允許特定管理主機/代理。
- 內部區段: 允許完整 ICMP 利於診斷,關鍵段 (DMZ、核心) 同邊界策略。
- 主機端 (Windows/Linux):
- Windows 防火牆預設阻擋入站 Echo Request,啟用「檔案與印表機共用 (回應要求 - ICMPv4-In)」規則可選擇性開放。
- Linux:
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP / sysctl net.ipv4.icmp_echo_ignore_all=1。
- 代理/檢測: 部署 ICMP 代理/檢測器 (如 ICMPWatch) 記錄異常流量、隧道特徵 (固定間隔、固定大小、高熵載荷)。
總結
ICMP 是網路診斷利器,也是攻擊面。原則:內部暢通、邊界精準放行必要錯誤類型、嚴禁 Echo Request/Reply 任意穿越邊界、部署異常流量檢測。唯有公開服務 (Web/郵件/DNS) 伺服器、邊界防火牆、邊界路由器才需與外部進行受控 ICMP 交互。
copyright ©
萬盛學電腦網 all rights reserved