网络通不通的ICMP协议 到底有多重要?
ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
在网络中经常会使用到ICMP协议,只不过察觉不到而已。比如经常使用的用于检查网络通不通的Ping命令,这个“ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令,如跟踪路由的Tracert命令也是基于ICMP协议的。
ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。例如,在1999年8月某公司“悬赏”50万元测试防火墙的过程中,其防火墙遭受到ICMP攻击达334050次之多,占整个攻击总数的90%以上。可见ICMP的重要性绝不可以忽视。
比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”(死亡之Ping)攻击。“Ping of Death”攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。
此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于死机。
ping.exe的原理是,向指定的IP地址发送一定长度的数据包,按照约定,若指定IP地址存在的话,会返回同样大小的数据包,当然,若在特定的时间内没有返回,就是“超时”,就认为指定的IP地址不存在。由于ping使用的是ICMP协议,有些防火墙软件会屏蔽ICMP协议所以有时候ping的结果只能做为参考,ping不通并不一定说明对方IP不存在。
ping命令是一个非常有用的网络命令,大家常用它来测试网络连通情况。但同时它也是一把双刃剑,别人使用ping命令能探测到你计算机上很多敏感的信息,造成不安全。为了安全,防止ping的方法很多,比如防火墙,又比如创建一个禁止所有计算机ping本机IP地址的安全策略。
由于ping使用的是ICMP协议,有些防火墙软件会屏蔽掉ICMP协议。IPSec安全策略是如何“防ping”的?其原理是通过新建一个IPSec策略过滤本机所有的ICMP数据包。这样确实可以有效地“防ping”,但同时也会留下后遗症。因为ping命令和ICMP协议有着密切的关系。
在ICMP协议应用中包含有11种报文格式,其中ping命令就是利用ICMP协议中的“Echo Request”报文进行工作的。但IPSec安全策略防ping时采用格杀勿论的方法,把所有的ICMP报文全部过滤了,特别是很所有用的其他格式的报文也同时被过滤了。因此在某些特殊应用的局域网环境中,容易出现数据包丢失现象,影响用户正常办公。因此建议使用防火墙。