全新的ND机制下IPv6面临哪些安全威胁
ND是什么
NDP(Neighbor Discovery Protocol)邻居发现协议是IPv6重要的基础协议,它基于五种类型的ICMPv6消息,实现了地址解析,重复地址检测,路由器发现以及路由重定向等功能。
五种类型的ICMPv6报文分别是:路由器请求报文(RS)、路由器通告报文(RA)、邻居请求报文(NS)、邻居通告报文(NA)、重定向报文(Redirect)。
ND的功能
基于这五种类型的ICMPv6报文,ND协议实现了如下功能:
路由器发现/无状态地址自动配置
基于RS/RA报文实现,接入终端可以自动发现网络中的路由器,并自动获取IPv6前缀和其他配置参数,实现终端的无状态地址自动配置,从而简化终端的入网流程和配置。
重复地址检测
基于NS/NA报文实现,其原理与IPv4中的免费ARP类似,即发送目的地址为欲配置IPv6地址对应的多播地址的NS报文,若一定时间未收到回复,则该IPv6地址唯一且可用。
地址解析
基于NS/NA报文实现,工作原理与IPv4中的ARP解析类似。
邻居状态跟踪
在ND协议中定义了5种邻居状态,并通过NS/NA报文来维护邻居状态和更新邻居定时器,从而实现跟踪邻居的状态。
重定向
基于Redirect报文实现,当路由器在一定条件下将向源主机发送重定向报文,通知主机选择更好的下一跳进行后续报文发送,该原理与IPv4的ICMP重定向类似。
ND的安全威胁
ND协议的协议功能、实现原理均与IPv4中的ARP类似,同样,在IPv4中对ARP的某些攻击方式也适用于ND协议。在IPv6场景中,ND协议的主要安全威胁包括:NS/NA报文攻击、RS/RA报文攻击、重定向报文攻击。
NS/NA报文攻击
针对NS/NA报文的攻击手段包括:地址解析攻击、重复地址检测攻击、邻居状态跟踪攻击等。
地址解析场景中,攻击者向网络中发送包含非法源链路层地址的NS报文,或包含非法目标链路层地址的NA报文,使合法节点的报文发往非法的链路层地址,从而实现攻击。
重复地址检测场景中,攻击者对每个接入网络的主机所发送的重复地址检测都进行响应,宣称拥有重复地址检测的地址,使主机一直无法获得可用IPv6地址。
邻居状态跟踪场景中,攻击者不断发送伪造的NA报文来响应合法节点发送的邻居状态检测报文,使得合法节点无法探测到邻居节点不可达,从而导致流量黑洞。
RS/RA报文攻击
针针对RS/RA报文的攻击手段包括:虚假直连前缀攻击、恶意RA报文欺骗、地址配置攻击等。RS/RA报文攻击示意图如下:
三种RS/RA报文攻击的攻击方式和攻击原理如下:
重定向报文攻击
IPv6中的重定向报文攻击与IPv4中ICMP重定向攻击类似,攻击示意图如下:
重定向场景中,攻击者伪造当前网关的链路本地地址向合法主机发送重定向消息,使合法主机误认为重定向消息来自网关,从而接收该重定向消息,将流量发送至重定向的节点,导致流量被攻击者劫持。
解决方案
面对上述这些威胁,RFC3971 SEND(Secure Neighbor Discovery)对ND协议进行了扩展。定义了CGA地址、CGA选项和RSA选项,用来验证ND消息的发送者对消息源地址的合法拥有权。SEND还定义了时间戳选项和随机数选项用来防止重放攻击。
在某些不支持SEND的网络环境中,也可基于迈普设备的ND snooping功能,指定可信接口和非可信接口,同时建立动态绑定表,对接口报文的源IPv6地址、源MAC地址、所属VLAN和入接口等信息进行匹配检查,从而过滤非法的NA/NS/RS报文。
