什么是邻居发现协议
邻居发现协议是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP路由器发现和ICMP重定向等协议,并对它们作了改进。作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不可达检测、重复地址监测、地址自动配置等功能。邻居发现协议主要包括两种格式的ICMP6报文:邻居请求NS(NeighborSolicitation)和邻居宣告NA(NeighborAdvertisement)。
邻居发现协议的工作原理
当局域网中的两台主机A与B之问通信前,A必须首先获取B的MAC地址,主要步骤如下:
(1)A以广播的方式向FE02::1发送一个ICMPv6NS消息,询问B的MAC地址。f21局域网中每个节点都能接收到该Ns请求,当一个节点接收到该Ns请求后,将目标MAC地址与自身MAC地址进行比较,如果不一致,则不应答;反之,如果所请求的MAC地址与自身MAC地址相等,则回应一个邻居宣告消息NA,表明自己就是所要请求的节点。本例中,在正常情况下,只有B回应NS请求,应答包中包含B的MAC地址。
2.邻居宣告报文的选项
需要特别注意的是NA有3个特殊的标志位,R表示是否是路由,s表示是否是target本机做出的宣告,O表示是否覆盖原有的缓仔。设旨这几个标志位的主要目的原本是为了提高提高局域网节点1二作的效率。
邻居发现协议安全隐患分析
通过以上的分析我们吖以看出,IPv6下的邻居发现协议与IPv4下的ARP协议相比,在安全方面,并没有改进。主要体现在以下几个方面:
第一,对于NS的ICMP6报文,局域网中的任意节点,只要在局域网中监听到,就能回复,缺乏认证过程。所以IPv4下的ARP欺骗,在IPv6下可以利用NA欺骗代替,其原理是一样的,此处不再重复。
第二,相对于IPv4下的ARP应答包,NA作为IPv6下的应答包多了上述所说的3个标志位,不可否认,在所有局域网内节点部正常工作的情况下,这3个标志位无疑可以提高局域网节点工作的效率,但是一旦存在某个恶意节点,这3个标志位,无疑将成为恶意节点的有力丁具首先通过R标志位,恶意节点可以伪装成路由,通过s标志位,恶意节点可以伪装成本机,对恶意攻击最有利的要数O标志位,恶意节点可以向被攻击者路由表中植入虚假路由信息。因为在IPv4下,邻居缓存表足每隔一定的时间刷新一次,恶意节点要覆盖正确地缓存可能要发送大量的虚假应答,容易被检测出,而在IPv6下利用0标志覆盖正确的缓存则只需要发送少量的虚假NA包,非常难检测。