您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > IPv6解决方案ND防攻击技术白皮书
IPv6解决方案ND防攻击技术白皮书关键词:ND,ARP,ND攻击,ARP攻击,交换机,IPV6摘要:本文介绍了在IPv6网络中的ND攻击及防攻击的技术思路以及H3C公司的ND防攻击方案部署的典型方案以及技术特点。缩略语清单:缩略语英文全名中文解释NDPNeighborDiscoverProtocol邻居发现协议ARPAddressResolutionProtocol地址解析协议IPv6InternetProtocolVersion6因特网协议第六版1ND攻击概述邻居发现协议(NeighborDiscoveryProtocol,以下称ND协议)是IPv6的一个关键协议,可以说,ND协议是IPv4某些协议在IPv6中综合起来的升级和改进,如ARP、ICMP路由器发现和ICMP重定向等协议。当然,作为IPv6的基础性协议,ND还提供了其他功能,如前缀发现、邻居不可达检测、重复地址检测、地址自动配置等。在IPv4网络中,ARP攻击问题已经为广大的网络管理者,设备厂商所认识,ARP攻击能够造成大面积网络不能正常访问外网,使得正常用户深受其害。针对ARP攻击,大部分的网络设备厂商都推出了自己的ARP防攻击解决方案,在很大程度上解决了ARP攻击的问题。而伴随着IPv6网络的建设,在IPv6协议族中的NDP协议越来越被重视,而在ND协议的设计与ARP协议一样并未提供认证机制,导致网络中的主机是不可信的,从而使得针对ND协议的攻击非常容易。2ND协议介绍2.1ND报文类型ND协议定义的报文使用ICMP承载,其类型包括:路由器请求报文、路由器通告报文、邻居请求报文、邻居通告报文和重定向报文。由于ND报文中的可选字段及代码类型较多,下面描述的ND报文中的各个字段并不完全,主要描述了涉及到ND防攻击技术的选项。2.1.1路由器请求报文RSRouterSolicitationMessage主机启动后,通过RS消息向路由器发出请求,期望路由器立即发送RA消息响应。RS报文格式如图1。图1路由器请求报文Type类型字段,值133Code代码字段,值0Options选项字段源链路层地址选项仅用于已编址的链路层可用于RS报文的只有源链路层地址选项,表明该报文发送者的链路层地址。如果IPv6头的源地址为未指定地址,则不能包括该选项。同时,IPv6报文头中的字段要求如下:HopLimit值255,保证是本地链路上的报文SourceAddress发送接口的本地链路地址或未指定地址DestinationAddress本地链路中所有路由器的组播地址FF02::22.1.2路由器通告报文RARouterAdvertisementMessage路由器周期性的发布RA消息,其中包括前缀和一些标志位的信息,或者以RA报文响应路由器请求报文RS。RA的报文格式如图2。图2路由器通告报文Type类型字段,值134Code代码字段,值0M管理地址配置标识(Managedaddressconfiguration)0-无状态地址分配,客户端通过无状态协议(如ND)获得IPv6地址;1-有状态地址分配,客户端通过有状态协议(如DHCPv6)获得IPv6地址。O其它有状态配置标识(Otherstatefulconfiguration)0-客户端通过无状态协议(如ND)获取除地址外的其他配置信息;1-客户端通过有状态协议(如DHCPv6)获取除地址外的其他配置信息,如DNS、SIP服务器信息。协议规定,若M标记置为1,则O标记也应置为1,否则无意义。RouterLifetime缺省路由器的生命周期(单位:秒)表示发送该RA报文的路由器作为缺省路由器的生命周期。RouterLifetime最长9000秒小时,缺省值30分钟。如果该字段为0时,表示该路由器不能作为缺省路由器,但RA报文的其他信息仍然有效。ReachableTime可达时间(单位:毫秒)发送NS报文后,在得到邻居可达性确认后,认为邻居可达的时间,0表示不指定。路由器在接口上通过发送RA报文,让同一链路上的所有节点都使用相同的可达时间。若ReachableTime为0,表示路由器不指定该字段参数。该值可配置,RA报文中缺省值为0。RetransTimer重传定时器(单位:毫秒)重传NS报文的时间间隔,用于邻居不可达检测和地址解析。若该值为0,表示路由器不指定该字段参数。该值可配置,RA报文缺省值为0。Options选项字段源链路层地址选项仅用于已编址的链路层。当路由器正在多个链路层地址上进行负荷分担时,要忽略该选项。MTU选项链路的可变MTU前缀信息选项用于地址自动配置的前缀信息,可包含多个路由信息选项用于主机生成缺省路由,表明前缀通过该路由器是可达的同时,IPv6报文头中的字段要求如下:SourceAddress必须是发送接口的本地链路地址DestinationAddress组播地址FF02::1,或发送RS请求报文的主机的单播地址2.1.3邻居请求报文NSNeighborSolicitationMessage主机通过NS消息可以得到邻居的链路层地址、检查邻居是否可达、重复地址检测等。图3邻居请求报文Type类型字段,值135Code代码字段,值0TargetAddress目标地址,16bytes请求目标的IP地址,不能是组播地址,可以是本地链路、本地站点、全局地址。Options选项字段源链路层地址选项和RS报文的选项相同,可用于NS报文的只有源链路层地址选项。源链路层选项仅用于已编址的链路层,如果IPv6头的源地址为未指定地址,则不能包括该选项。同时,IPv6报文头中字段要求如下:SourceAddress发送接口的地址或未指定地址(DAD检测)DestinationAddress目的节点单播地址或目的节点地址对应的请求节点组播地址需要说明,如果源地址为未指定地址,则目的地址应为被请求节点的组播地址,并且没有源链路层地址选项。1.1邻居通告报文NANeighborAdvertisementMessageNA报文是主机对NS的响应报文,同时主机在链路层地址变化时也可以主动发送NA消息,以通知相邻节点自己的链路层地址或者角色发生改变。图4邻居通告报文Type类型字段,值136Code代码字段,值0R路由器标记(RouterFlag)表示NA报文发送者的角色。置位表示发送者是路由器,复位表示发送者为主机。S请求标记(SolicitedFlag)置位表示为响应单播NS发送的NA报文。在NUD探测中,S标记作为邻居可达性确认标记;在组播通告或非请求单播通告中,S标记必须清零,如DAD检测中NS报文用的是被请求节点的组播地址,当地址冲突时,回应的NA报文的S标记需要清零。O重载标记(OverrideFlag)1-表示需要用目标链路层地址选项中的链路层地址,来更新邻居缓存表。0-只有在链路层地址未知时,才能用目标链路层地址选项来更新邻居缓存表。TargetAddress目标地址,16bytes如果是针对NS而发送NA,该字段直接拷贝NS报文目标地址;如果不是针对NS发送的NA,该地址是链路层地址发生改变的网络节点的IP地址。目标地址不能是组播地址。Options选项字段,只能是目的链路层地址选项,通告发送者的链路层地址。同时,IPv6报文头中字段要求如下:SourceAddress必须是发送接口的单播地址DestinationAddress单播地址或者所有节点的组播地址(FF02::1)2.1.4重定向报文RedirectMessage路由器通过重定向报文通知主机到目的地有更好的下一跳地址,或者通知主机目的地址为本网段邻居。图5重定向报文Type类型字段,值137Code代码字段,值0TargetAddress目标地址,16bytes到达目的地址的下一跳地址。如果目标为路由器(本地链路外的报文),必须使用路由器的本地链路地址;如果是主机(本地链路报文),目标地址和目的地址必须一致。DestinationAddress目的地址,即IPv6头部的目的地址,16bytesOptions选项字段目标链路层地址选项:新下一跳的链路层地址。重定向头选项:触发报文尽可能多的部分,但不应使重定向报文超过1280bytes。同时,IPv6报文头中字段要求如下:SourceAddress发送接口的本地链路地址DestinationAddress触发重定向的数据报文的单播地址2.2ND协议主要功能介绍2.2.1路由器发现RouterDiscovery路由器发现是指主机怎样定位本地链路上路由器和确定其配置信息的过程,主要包含以下三方面的内容:路由器发现RouterDiscovery路由器发现是主机定位邻居路由器以及选择哪一个路由器作为缺省网关的过程。前缀发现PrefixDiscovery主机发现本地链路上的一组IPv6前缀的过程,用于主机的地址自动配置。参数发现ParameterDiscovery主机发现相关操作参数的过程,如链路最大传输单元(MTU)、输出报文的缺省跳数限制(HopLimit)、地址配置方式等信息。在路由器通告报文RA中承载着路由器的相关信息,ND协议通过RS和RA的报文交互完成路由器发现、前缀发现和参数发现三大功能。协议交互主要有两种情况:主机请求触发路由器通告和路由器定期发送路由器通告。(1)主机请求触发路由器通告当主机启动时,主机会向本地链路范围内所有的路由器发送RS报文,触发邻接路由器响应RA报文。主机发现本地链路上的路由器后,自动配置缺省路由器,建立缺省路由表、前缀列表和设置其它的配置参数。(2)路由器定期发送路由器通告路由器周期性的发送RA报文,使主机发现本地链路上的路由器及其配置信息,主机根据这些内容来维护缺省路由表、前缀列表和配置其它参数。1.2地址解析Addressresolution地址解析是指某节点在知道目的节点IP地址的情况下,确定目的链路层地址的过程。当一个节点需要得到同一本地链路上另外一个节点的链路层地址时,需要进行地址解析,该机制类似于IPv4中的ARP。ND协议用NS和NA报文完成IPv6地址到链路层地址的解析,解析后的链路层地址和IP地址等信息用来建立节点的一个邻居缓存表项。当一个节点A要传送数据包到另一个节点B时,如果不知道B的链路层地址,则需要完成以下协议交互过程:①A发送一个NS报文到网络上,目的地址为NodeB对应的被请求节点组播地址,选项字段中带上NodeA的链路层地址。②B侦听到该NS报文后,由于报文的目的地址属于自己被请求节点的组播地址,处理该报文;发送一个NA报文应答NS,同时在消息的目标链路层地址选项中带上自己的链路层地址。③A接收到NA报文后,获悉了B的链路层地址,创建一个目标节点的邻居缓存表项。这样通过交互后,A和B就知道了对方的链路层地址,建立其对方的邻居缓存表项(类似于IPv4的ARP表),可以相互通信了。此外,一个节点的链路层地址发生改变时,可以用所有节点的组播地址FF02::1发送NA报文,通知本地链路上的其他节点,使这些节点可以刷新自己的邻居缓存表。2.2.2邻居不可达检测NUDNeighborUnreachabilityDetection邻居不可达检测是节点怎样确定邻居不可达状态的过程。ND协议用NS和NA报文来验证邻居节点的可达性。节点在确定邻居的链路层地址后,跟踪邻居缓存表的状态,定时发送NS报文,如果邻居在规定的可达时间内(缺省值为30秒)不能接收或者发送返回的报文,则删除此邻居缓存表项。邻居的可达性并不能说明端到端的可达性。因为相邻节点可能是主机或者路由器,所以相邻节点并不一定就是数据包的最终目标。NUD检测仅仅验证了到目标路径上第一跳的可达性状态。1.3重复地址检测DADDuplicateAddressDetection重复地址检测是节点确定即将使用的地址是否被另一节点使用的过程。在节点自动配置某个接口的IPv6单播地址之前,必须在本地链路范围内验证要使用
本文标题:IPv6解决方案ND防攻击技术白皮书
链接地址:https://www.777doc.com/doc-4215561 .html