ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。
ICMP防护措施介绍:
ICMP最初开发出来是为了"帮助"网络,经常被广域网管理员用作诊断工具。但今天各种各样的不充分的ICMP被滥用,没有遵守RFC 792原先制订的标准,要执行一定的策略可以让它变得安全一些。
入站的ICMP时间标记(Timestamp)和信息请求(Information Request)数据包会得到响应,带有非法或坏参数的伪造数据包也能产生ICMP参数问题数据包,从而允许另外一种形式的主机搜寻。这仍使得站点没有得到适当保护。
以秘密形式从主方到客户方发布命令的一种通用方法,就是使用ICMP Echo应答数据包作为载波。 回声应答本身不能回答,一般不会被防火墙阻塞。
首先,我们必须根据出站和入站处理整个的"ICMP限制"问题。ICMP回声很容易验证远程机器,但出站的ICMP回声应该被限制只支持个人或单个服务器/ICMP代理(首选)。
如果我们限制ICMP回声到一个外部IP地址(通过代理),则我们的ICMP回声应答只能进入我们网络中预先定义的主机。
重定向通常可以在路由器之间找到,而不是在主机之间。防火墙规则应该加以调整,使得这些类型的ICMP只被允许在需要信息的网际连接所涉及的路由器之间进行。
建议所有对外的传输都经过代理,对内的ICMP传输回到代理地址的时候要经过防火墙。这至少限制了ICMP超时数据包进入一个内部地址,但它可能阻塞超时数据包。
当ICMP数据包以不正确的参数发送时,会导致数据包被丢弃,这时就会发出ICMP参数出错数据包。主机或路由器丢弃发送的数据包,并向发送者回送参数ICMP出错数据包,指出坏的参数。
总的来说,只有公开地址的服务器(比如Web、电子邮件和FTP服务器)、防火墙、联入因特网的路由器有真正的理由使用ICMP与外面的世界对话。如果调整适当,实际上所有使用进站和出站ICMP的隐密通讯通道都会被中止。