主页 > 网络知识 > IPv6协议及安全浅谈

IPv6协议及安全浅谈

 1、前言

在我国,IPv6一直在稳步发展,早已不是多年前只在实验环境中存在的场景了,很多互联网大厂、高校都用上了IPv6,部分地址宽带用户也使用了IPv6。就在前些日子,安全研究员Dirk-jan Mollema发表基于委派攻击并结合NTLM Relaying,实现对同网段的在域主机进行攻击文章详情,其中就使用了基于IPv6的mitm6工具,通过IPv6网络实现攻击。

尽管IPv6发展了很多年,但相对很多人而言,它还是一个陌生的对象,需要我们逐步去了解和认识,以备后续的工作和生活需要。IPv6内容很多,由于篇幅有限,无法详细描述,本文仅介绍IPv6相对关键的组成部分及其相关安全性。

2、IPv6协议

2.1、从一个包结构认识IPv6

(图片来源:https://pcedu.pconline.com.cn/1038/10387664.html)

IPv6在RFC2460中描述,相比IPv4,IPv6具有以下特征:

  1. 固定的报文结构,更高效的封装和性能。
  2. Source/Destination Address:128位bit的地址空间,号称地球上每个沙子都能分配到独立的IP地址。
  3. Flow Label:流标签能力,实现流量标记区分。
  4. 可扩展头部:在固定头部后面,可以链式附加许多扩展头部,实现更多功能支持。

2.2、看懂IPv6地址

和IPv4不同,IPv6采用16进制来表示,将整个地址分为8个段,每段之间用冒号隔开,每段的长度为16位,表示如下: XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX/X,并且IPv6有地址简化的写法,通过下图可以了解简化写法。

(图片来源:https://baijiahao.baidu.com/s?id=1611121709439510290&wfr=spider&for=pc)

2.3、不同地址作用大不相同

在RFC2373定义了IPv6的地址类型,我们需要了解的主要类型如下:

  1. 全局单播地址:IPv6公网地址,所有以2或3开头的地址属于该类地址,掩码是64位。
  2. 链路本地地址:链路本地地址非常重要,用于邻居发现、地址配置、路由协议的协商等。顾名思义,它仅用于本地链路通讯,在本地链路有效,无法跨下一跳。所有以 FE80开头的地址属于该类地址。通常情况下,启用IPv6协议的接口会根据MAC地址,自动生成一个链路本地地址,这个机制称为EUI-64。
  3. 站点本地地址:站点本地地址类似IPv4中的私网地址,这些地址无法在互联网上进行路由。所有以 FEC0开头的地址属于该类地址。
  4. 组播地址:组播地址用来表示一组设备或接口,所有以 FF开头的地址属于该类地址。其中 FF02::1表示本地链路上的所有主机, FF02::2表示本地链路上的所有路由器。

3、邻居发现协议(NDP)

3.1、NDP是什么

在IPv6网络中,采用NDP协议取代ARP来学习MAC地址,NDP的数据封装在ICMP v6包中,它主要实现了以下功能:

  1. 链路地址管理:维护一个IP地址和MAC的关系状态表
  2. 无状态地址自动配置(SLAAC):能够在没有DHCP服务器的情况下实现主机自动学习配置IPv6地址
  3. 路由器重定向:与IPv4一样

3.2.1、主机之间如何通信

链路地址管理既然是替代ARP的功能,它所实现的就是帮助主机找到目标IP的MAC地址,并且维护这些IP地址和MAC的对应关系,在必要的时候进行删除和更新。在IPv6网络中,为了学习一个MAC地址,一个简单的NDP交互过程大致如下:

(图片来源:https://blog.csdn.net/qq_38265137/article/details/80466128)

  1. 当一个主机第一次与对方通信时,它会在网络中发送一个邻居请求(NS)包,这个NS包携带了发送者的IP和MAC地址,以及发送者需要请求MAC地址的目标IP,这个NS包被发送到一个“被请求节点多播地址”;
  2. 拥有目标IP的主机会侦听“被请求节点多播地址”,当它收到这个NS数据包后,就知道谁要找它,然后这个主机会用一个邻居通告(NA)单播回应NS请求,告诉对方自己的MAC地址信息。

通过这样一个简单的过程,双方就能够学习并创建一条IP-MAC对应记录。NDP有复杂的状态机制,这里不做详细介绍。想了解的可查看H3C IPv6邻居发现经典讲义。

这里需要解释一个名词,那就是“被请求节点组播地址”,这是一种特殊的组播地址,每一个主机配置好单播IPv6地址后,都会根据这个IP地址自动生成一个对应的“被请求节点组播地址”,这个“被请求节点组播地址”只在本地链路上有效,且在链路上唯一。这个“被请求节点组播地址”的前缀是:FF02::1:FFxx:xxxx/104,后24位是接口IPv6地址的后24位。

3.2.2、无感知的IP地址自动配置

在IPv6网络中,我们可以不需要DHCP实现主机自动获取网络的前缀信息、链路环境信息、并检测地址冲突等,完成节点无感知接入网络。一个简单的地址配置交互过程如下:

(图片来源:https://blog.csdn.net/qq_38265137/article/details/80466128)

  1. 在IPv6网络中,网关会周期性发送RA数据包到多播地址 fe02::1以宣布自己的存在。这个时候,网络上的主机会接收到RA包,通过RA包携带的信息,主机可以学习到接入网络所需要配置的地址信息,从而自动进行IP地址的配置。
  2. 反过来,当主机接入到一个IPv6网络中时,主机会自动发起一个RS包请求地址配置,目的地址为标识所有路由器的多播地址( fe02::2)。路由器收到RS包后,需要马上发送一个RA包以回应该主机,以便主机进行地址配置。

3.2.3、DAD-地址冲突检测机制

主机获取到IPv6地址后,并非马上就能使用该地址进行通信,需要做一个重复地址的检测,确保网络上没有相同地址的主机存在。为了检测地址冲突,主机会在网络上发送一个该IP生成的被请求组播地址,源地址为::,如果有节点应答,即收到一个邻居通告(NA)包,说明该地址已被使用,如果在重传时间内未检测出重复地址,则认为地址可以使用。

(图片来源:https://blog.csdn.net/qq_38265137/article/details/80466128)

4、IPv6过渡技术

目前IPv6仍处于发展阶段,虽然运营商、互联网公司及高校都在逐步建设,但是互联网基础设施和应用大部分还在使用IPv4。由于IPv4和IPv6本身的不兼容性,为了适应这种情况,把各自的网络孤岛进行连接,出现了几种过渡解决方法,分别是:

  • 双栈技术:在网络节点中同时启用IPv4和IPv6两种协议,使得网络可以同时支持两种协议。
  • 隧道技术:采用数据包封装技术,将IPv6数据封装到IPv4数据包中,利用IPv4的网络中进行通信。
  • 翻译技术:采用类似NAT的方式进行的转换。

双栈技术相对比较好理解,节点主要根据应用的通讯的地址,选择相应的网络进行传输即可。

而关于IPv6隧道技术,本质上是数据包的二次封装,借助IPv4网络,来实现IPv6节点的互联。隧道技术有多种实现,如ipv6 in ipv4、6to4、GRE、ISATAP、Teredo隧道等。

4.1、6to4隧道

当孤立IPv6站点之间需要通信时,通过在IPv4网络中创建隧道,实现两个孤立站点之间的互联。6to4隧道将IPv6数据包封装在IPv4数据包中,通过IPv4网络进行通信。6to4借助特殊的配置和条件,实现了隧道自动建立。如下图:

(图片来源:http://blog.sina.com.cn/s/blog_5ec353710101e45y.html)

隧道的建立是由双栈主机触发,IPv6 6to4隧道具有以下特点:

  1. 自动隧道建立:路由器通过提取ipv6数据包目标地址后32位来作为隧道封装的目的地址,以此来自动建立隧道。
  2. 自动前缀分配:使用6to4隧道互联的IPv6网络,其前缀都必须基于IANA分配的2002::/16地址空间,每个6to4站点必须在6to4路由器上配置固定的公网IPv4地址,这个IPv4结合IANA前缀,最终形成本站点的IPv6前缀(2002:ipv4-address::/48)。以此,6to4路由器的IPv4地址决定了整个IPv6站点的地址前缀,如果后期6to4路由器的IPv4地址做了变更,对整个站点的影响是全局的。
  3. 6to4中继 :为了帮助那些6to4站点与非6to4的IPv6网络进行通信,6to4隧道技术定义了6to4中继路由器,这些中继路由器一方面能和6to4路由器建立隧道,同时也接入了IPv6骨干网,通过这些中继路由器,6to4站点就能访问IPv6互联网了。如下图:

(图片来源:http://blog.sina.com.cn/s/blog_5ec353710101e45y.html)

RFC 3068中为中继路由器定义了一个任意播前缀,这样6to4站点路由器就能找到离自己最近的中继。另外,IANA为中继分配了一个任意播前缀192.88.99.0/24,转换为IPv6前缀就是: 2002:c058:6301::/48,6to4边界路由器配置一个默认路由到这个地址就可以。

注:单独的双栈主机也可以与其他6to4路由器建立隧道。

4.2、ISATAP隧道

站内自动隧道寻址协议(ISATAP: IntraSite Automatic Tunnel Addressing Protocol) 采用了双栈和隧道技术,能实现主机与主机、主机与路由器之间的通信。ISATAP隧道不仅能实现隧道功能,还可以通过IPv4网络承载IPv6网络的ND协议,从而使跨IPv4网络的设备仍然可以进行IPv6设备的自动配置。

在内部网络中,一个简单的ISATAP隧道示例如下:

(图片来源:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc781672(v=ws.10)#isatap)

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!