我们知道NDP中NA、NS技术主要负责将局域网中的IPv6地址跟48位物理地址对应起来形成IPv6 neighbor表项,类似于IPv4中的ARP。 按照 NA、NS的设计,为了减少网络上过多的NA、NS数据通信,一台主机,即使收到的NA应答并非自己请求得到的,它也会将其插入到自己的缓存表中,这样,就造成了IPv6 neighbor欺骗的可能。
如下图所示,假如攻击者想探听同一网络中两台主机之间的通信(即使是通过交换机相连),它会分别给这两台主机发送NA、NS报文,让两台主机都“误”认为对方的 MAC 地址是第三方即攻击者所在的主机,这样,双方看似“直接”的通信,实际上都是发给第三方攻击者了。攻击者一方面得到了想要的通信内容,另一方面,只需要更改数据包中的一些信息,这样造成了数据的冒充欺骗。
由上述中所知在NA、NS报文转发中的嗅探、监听及攻击行为首先是通过伪造合法IPv6地址进入正常的网络环境,向交换机发送大量的伪造的NA、NS报文,交换机在学习到这些报文后,可能会覆盖原来学习到的正确的IPv6 neighbor表项(IPv6地址和MAC地址的映射关系表项),将一些正确的IPv6 neighbor表项修改成攻击报文设置的对应关系,导致交换机在转发报文时出错,从而影响整个网络的运行。或者交换机被恶意攻击者利用,利用错误的IPv6 neighbor表项,截获交换机转发的报文或者对其它服务器、主机或者网络设备进行攻击。在网络中防止基于NA、NS的欺骗攻击,方法有两种:
一、关闭交换机的neighbor自动更新功能
关闭交换机的自动更新功能以后,当交换机收到NA、NS报文时,如果是新的NA、NS报文(交换机的IPv6 neighbor表中不存在该IPv6地址的表项),则正常学习,这样新的用户可以正常转发报文;但是如果该NA、NS报文对应的IPv6 neighbor表项中已经存在,则判断该报文中的MAC址、收到NA、NS报文的端口和交换机IPv6 neighbor表中记录的是否相同,不相同则认为是欺骗报予以丢弃,相同则正常接收,相应的IPv6 neighbor表项老化定时器被重置。通过该机制可以防止合法的IPv6 neighbor表项被欺骗报文篡改,从而可以避免交换机遭受IPv6 neighbor欺骗。
二、关闭交换机的neighbor自动学习功能
关闭交换机的自动学习功能以后,交换机不再接收NA、NS报文,适合静态配置IPv6 neighbor表的场合。一方面可以配置成静态IPv6 neighbor表项,另一方面可以将当前学习到的动态IPv6 neighbor表项换为静态表项(可以减轻一一配置IPv6 neighbor静态表项所带来的繁重工作量。关闭交换机的自学习功能时,如果动态表项不转换为静态表项,会正常老化掉)。在IPv6 neighbor表项均为静态置的情况下,可以有效地避免IPv6 neighbor欺骗。