ipv6转换成ipv4_IPv6协议及其安全浅析

声明:由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,知微安全以及文章作者不为此承担任何责任。知微安全拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经知微安全允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
IPv6(Internet Protocol version 6),意为“互联网协议第6版”,不仅解决了IPv4地址空间不够的问题,还优化了网络层的通信机制,提高了报文处理过程的性能与安全性。然而IPv6依旧面临着不少安全问题,例如NDP的中间人攻击、Smurf攻击、重复地址检测(DAD)攻击等网络攻击,因此本文介绍了IPv6的基础概念及相关技术,并对IPv6存在的安全问题进行简要分析。

0x00  IPv6基础概念 


1、IPv6的地址表示

(1)用十六进制表示,如:FE80:….   (2)4个十六进制数一组,共8组,中间用“:”隔开,如:2001:12FC:…. (3)地址前缀长度用“/xx”来表示,如:1::1/64 (4)简写规则:省略每组最前的0,全0的组可以用“::”表示,但“::”只能出现一次!

2、IPv6地址分类

单播地址

(a) 全局单播地址(Global unicast address,GUA),2000::/3,第一组取值从2000到3fff;典型的GUA结构如下: 26a3def00eac2c4a6912dc2b9d6c2d53.png (b)链路本地地址(Link-Local Address),前缀范围为fe80::/10,最后的64bit通常为Interface-ID(EUI-64,随机或手动配置)。   单播地址作用: (1)在获取到GUA之前,可使用LLA作为源地址与本地路由器通信,或从DHCPv6获取地址。 (2)ICMPv6 RA通告的默认网关为LLA。 (3)IGP for IPv6使用LLA作为源地址与对端建立邻接关系,发送路由更新。

(4)来自动态路由协议的路由表项的下一跳使用LLA。

多播地址 IPv6已经去除了广播,仅剩下多播地址,采用ff00::/8作为前缀。 (所谓多播,即一对多的数据包)

(a)ff00:/8,为IPv6多播保留前缀;

(b)标志位,前三个bit皆为0,最后一个bit为T flag,用于标记两种类型的多播。

   永久的(0),也被称为预定义多播,包括已知著名多播和请求节点多播。

     临时的(1),也叫动态分配的多播,通常由多播程序分配使用。

(c)范围,定义了多播包所能转发的范围

(d)组ID,代表了不同的多播组

24db5a97ea060d509a5fdd3fe786777f.png

3、IPv6邻居发现协议NDP

NDP邻居发现协议是ICMPv6新增的功能,用于在相同子网内(或链路上)进行设备发现和消息控制。

NDP包含5种消息类型:

(1)邻居请求(NS)(2)邻居通告(NA):用于链路上两台设备的通信,常见的功能是完成ARP解析。

833b9ef950592f6037e6f14022e47c83.png

(3)路由器请求(RS)(4)路由器通告(RA):用于链路上设备和路由器之间的通信,常见的功能是IPv6地址的无状态自动配置。

bb0a30581fbaa7dfd00e9a4cf3cc0cc9.png

(5) 重定向

4、IPv6的动态地址分配

(1)NDP中的RA消息包含了如下地址相关信息:

(a)网络前缀及前缀长度,以及关于本链路的其它一些信息;

(b)默认网关地址(链路上路由器接口的LLA,即RA消息的IPv6源地址)

(c)3个标志位,用于建议设备如何获取IPv6地址信息,分别为A(自主地址配置)、O(其它配置)和M(手动配置)

(d)可选的信息,如域名,DNS服务器列表。(2)与IPv4不一样的是,IPv6设备能够在无DHCP服务的情况下,动态的确定自己的编址。

如下图所示,使用路由器通告(RA)消息的情况下,可以选择以下三种方式的一种确定编址:

c9b0cc117e7ca2014e34cab7b69f85b9.png

方法一:无状态地址自动配置(LAAC),设备仅使用RA消息确认自己的所有地址需求,即使用前缀生产自己的GUA,使用RA的源地址作为默认网关地址。 方法二:SLAAC和无状态HCPv6务器,与方法一一样,通过RA消息确认自己的IPv6 GUA,使用RA源地址作为默认网关,但是通过无状态DHCPv6获取其它信息,如DNS服务器地址。此时DHCPv6服务器不提供和维护IPv6 GUA信息。 方法三:有状态DHCPv6务器,与IPv4的DHCP一样,通过DHCPv6获取GUA,但是默认网关依然采用RA的源地址。 5、IPv6与IPv4比较

45433c199967f00f4c623dafd28794ef.png

不同点:

(1)名称相同的字段:

版本(version):IPv4的值为4,IPv6的值为6;

源地址与目的地址:IPv4的长度为32bit,IPv6的长度为128bit;

(2)名称已更变的字段,以及名称相同但一些情景下功能不同的字段:

ToS字段更变为Traffic Class,IPv4可以选择使用IP优先级(3bit)或DSCP,IPv6只使用DSCP方法;

总长度字段更变为Payload Length,IPv4总长度字段包含了IPv4头部和数据,而IPv6的长度字段仅为净荷长度(包含扩展头部);

TTL字段更变为Hop Limit,作用相同,仅名称发生变化;

协议字段更变为Next Header,协议字段用于指示数据包净荷所承载的数据类型,IPv6的下一头部功能相似,但还可以指示下一扩展头部;

(3)以下IPv4字段已经从IPv6中移除:

Header Length:由于IPv6的头部为固定长度(40字节),因此不再需要该字段;

Identification,Flags,Fragment Offset:这些字段用于IPv4的报文分片,而IPv6仅在数据源执行分片,且分片通过分片扩展包头实现;

Header Checksum:由于TCP、UDP都拥有自己的校验和,因此无需在L3再加入本字段

Option:已被IPv6扩展头部替代。

Padding:由于IPv6头部长度为固定的40字节,因此无需进行填充。

(4)以下字段为IPv6新增: Flow Label:可以对数据包进行流标记,被定义用于“real-time”服务;(5)以下头部为IPv6新增: Extension Header:扩展头部用于为IPv6提供功能扩展性。其它特性:L2帧头中EtherType字段为0x86dd;分片由分片扩展头部实现。 0x02 IPv6过渡技术
1、双栈技术

所谓双栈设备,是指该设备既安装IPv4又安装IPv6的协议栈,从而实现分别与IPv4或IPv6节点间的信息互通。双栈设备可以是主机、打印机、服务器、路由器或其它配置支持两个协议的设备。

4abac1719cfd22a9eb2deaba6e15a402.png

2、翻译技术

由于IPv4与IPv6共存必然存在很长时间,除了通过双栈的逐步演进,成熟可靠的过渡技术也能更好地支持网络平滑迁移至IPv6。早期的过渡技术NAT-PT,在实际网络应用中存在各种缺陷,IETF已不推荐使用,被RFC4966废除。当前较为主流的过渡技术为IETF设计的新的解决方案:NAT64和DNS64。

NAT64与DNS64协同,主要实现IPv6-Only的客户向IPv4-Only的服务端发起通信的场景。当然,NAT64也能够使用静态或手动绑定实现IPv4-Only的客户端向IPv6-Only的服务端发起通信的场景。

NAT64主要工作在有状态的形式(与IPv4的NAT相似),它将维护IPv6与IPv4之间的绑定(binding),具体操作如下:

(a)在两个协议之间执行IP头部转换

(b)在两个协议之间执行IP地址转换

55bb006362d2c6964b86763d08ee4fd5.png

如图:来看一个IPv6-Only的客户端向IPv4-Only发起通信的实例:

步骤1:客户端A想要访问www.example.com,于是向LDNS(DNS64)请求AAAA解析。

步骤2-5:DNS64本地无相关缓存,向IPv6 DNS权威服务器请求解析,依然无记录(error),转而向IPv4 DNS权威请求解析,得到该域名的A记录,10.10.10.10。

步骤6-7:DNS64服务器接收到域名的A记录,然后使用DNS64前缀2001:db8:cafe:aaaa::/96,及IPv4 地址10.10.10.10,生成IPv6AAAA解析,即2001:db8:cafe:aaaa::0a0a:0a0a/96。

步骤8:客户端A使用自己的IPv6地址作为源地址,获得的IPv6AAAA解析作为目的地址,发出通信报文。

源地址为:2001:db8:cafe:1::100

目的地址为:2001:db8:cafe:aaaa::0a0a:0a0a

步骤9:NAT64路由器接收到该数据包,执行如下行为:

(a)将IPv6头部转换为IPv4头部

(b)IPv6目标地址移除NAT64前缀,将低位32bit的0a0a:0a0a转换为10.10.10.10。

(c)IPv6源地址使用地址池进行转换,可以是1:1或PAT。这里源地址被转换成192.168.99.9。

(d)完成上述动作,NAT64路由器生成一条包含源目的地址的有状态转换条目,当数据包返回时,执行反向转换。

3、隧道技术

隧道技术允许处于孤岛的IPv6设备通过IPv4网络环境相互通信。隧道拥有两种类型的协议,即传输(Transport)协议和被运载(Passenger)协议。在IPv6过渡技术中,传输协议为IPv4,而被运载协议为IPv6。

隧道涉及两台设备,隧道的端点及管理协议,因此拥有三个组件:隧道进入点,隧道离去点,隧道管理协议。按照隧道端点设备的类型,可以分为:主机到主机,主机到路由器,路由器到路由器所谓隧道,即双层报文头部,具体如图:

2e1033a2b191103bcd2579c88ff73404.png

0x03 IPv6面临的网络攻击


1、NDP的中间人攻击

IPv4中的ARP协议正是由于其默认子网内节点可信而导致其易受Spoofing、DoS等攻击,而且在IPv6中节点除需要利用 NDP进行地址解析之外,还需利用其进行网络配置,如获取地址前缀、MTU等网络参数和进行路由器发现等,所以当 IPv6 被部署在一个非可信网络中,或当可信网络中某节点被入侵而成为恶意节点时,网络中的节点就可能遭受恶意节点利用NDP的安全缺陷进行中间人攻击。

a76e4daa16dff3ac6a72ae38688b9f5e.png

2、Smurf攻击

在IPv4网络中,Smurf攻击可以通过发送伪造的ICMP回应请求到广播地址。请求的源地址是攻击的目标。IPv6没有广播地址,但是它具有一个多播地址,可以到达网络中的所有节点,从而达到完成Smurf攻击。

34de748d05510e82457004bc921f6b07.png

3、重复地址检测(DAD)攻击

在无状态地址自动配置中,新IP地址在使用前需要进行重复地址检测。在检测过程中,一旦有攻击节点声称解析地址已经被占用,将导致节点地址配置失败,从而形成重复地址检测攻击。

b33b18715da328758da9f9fd3f8bd794.png

4、其他攻击

  • 由于分段过程是由源设备和目标设备执行的,因此IPv6分段攻击可用于绕过入侵检测系统。

  • 为了帮助IPv4到IPv6机制,有一些已知的隧道技术容易受到拒绝服务攻击。

  • 在IPv4网络中使用Teredo隧道的计算机可以用来绕过防火墙和IDS作为网络外围防御。

  • 对TCP的ICMP攻击仍然有效

0x04 IPv6防护思路


目前正处在IPv4和IPv6共存的时期,对于过渡时期的安全防护可以从以下几个方面着手。

  • 将传统不支持IPv6地址的安全设备,更换为支持IPv6的安全设备进行日常防护;

  • 为了防护IPv6的扩展头攻击,防火墙设备需要支持检查IPv6扩展头合法性的功能;

  • 在防火墙设备和边界设备上实施入口过滤机制,来缓解网络间的源地址伪造攻击;

  • 过渡技术中采用隧道技术时,要尽量使用静态配置隧道,来降低动态隧道的伪造和非法接入的安全风险;

  • 做好IPv6的安全隔离,缩减暴露面,减小被攻击的风险。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值