三、 防御方法

出于系统安全性的考虑,在ICMP中有八条配置命令,可以分别用来禁止或使能四种类型的ICMP报文的发送。

ICMP echo enable ,ICMP echo disable,利用上面两条命令可以使能或禁止ICMP的echo reply报文的发送。一旦禁止该类型的报文,从其他机器利用ping命令搜索该路由器时,路由器将不作出反应。

ICMP mask enable,ICMP mask disable,利用上面两条命令可以使能或禁止ICMP的Mask Reply报文的发送。当在路由器上禁止该类型的报文时,路由器对于来自其他机器的mask reguest请求不作反应。

ICMP unreach enable,ICMP unreach disable,利用上面两条命令可以使能或禁止Destination Unreachable报文的发送。当在路由器上禁止该类型的报文时,路由器对于其无法转发的ip报文将不再向其源地址发送Destination Unreachable的报文。利用show ICMP命令可以观察当前ICMP以上各项的设置。

ICMP redirect enable,ICMP redirect disable,利用上面两条命令可以使能或禁止ICMP的重定向redirect)报文的发送。当在路由器上禁止该类型的报文时,路由器对于可能的路由错误不作反应。避免ICMP重定向欺骗的最简单方法是将主机配置成不处理ICMP重定向消息,在Linux下可以利用firewall明确指定屏蔽ICMP重定向包。

另一种方法是验证ICMP的重定向消息。例如检查ICMP重定向消息是否来自当前正在使用的路由器。这要检查重定向消息发送者的IP地址并效验该IP地址与ARP高速缓存中保留的硬件地址是否匹配。ICMP重定向消息应包含转发IP数据报的头信息。报头虽然可用于检验其有效性,但也有可能被窥探仪加以伪造。无论如何,这种检查可增加你对重定向消息有效性的信心,并且由于无须查阅路由表及ARP高速缓存,所以做起来比其他检查容易一些。

一台4.4BSD主机接收到ICMP重定向报文,为了防止失常的路由、主机或者恶意的入侵者不正确的修改系统路由表,做了如下检查:

1. 新路由必须是直达的

2. 重定向包必须来自去往目标的当前路由

3. 重定向包不能通知主机用自己做路由Pwin98不是这样的)

4. 被改变的路由必须是一条间接路由

因此若A和B在同一子网,A不可能利用ICMP重定向使B发往子网内IP的包流向自己。但可以使B发往子网外IP的包流向自己。

结束语:

在本文撰写之初,我以为只要掌握ICMP的知识就够了,随着文章探讨问题的深入,我发现"ICMP的隐蔽攻击技术"同IP地址欺骗,ARP欺骗,以及网络窃听分析sniffing),还有拒绝服务、系统漏洞、防火墙保护、入侵反跟踪等问题是密不可分的。ICMP作为IP协议的一个辅助部分,它的隐蔽技术其实就是IP的隐蔽技术,这一点我在文中已经提及,在此不再赘述,涉及其他同志课题的具体问题,我在此也没有过多的展开。在这短短几千字的文章内,我不可能讲到ICMP攻击技术的方方面面,很多问题也分析得不够透彻,有很多不足的地方,还请老师和同学指正。在此文的撰写过程中,我参考了大量的书籍以及internet上的资料,书籍主要有:机械工业版的《INTERNET网络安全专业参考手册》、《INTERNET防火墙与网络安全》、清华影印版的《TCP/IP网络互连技术II 设计与实现》网上的资料多半来自于BBS:"白云黄鹤"、"水木清华"和"华南木棉"并感谢以上三个大学的很多不知名的朋友给予我指点和帮助。


相关内容