荣耀之链论坛

 找回密码
 立即注册
搜索
查看: 1932|回复: 1

理解IPv6的地址分类

[复制链接]

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
发表于 2019-9-9 21:53 | 显示全部楼层 |阅读模式
https://blog.csdn.net/weixin_33743661/article/details/90070955


原文链接:https://yq.aliyun.com/articles/407098

IPv4分为A、B、C、D、E五类,而IPv6突破了IPv4类别划分。IPv6被分为本地链路地址、IPv6本地站点地址、IPv6全球单播地址、IPv4过渡IPv6兼容地址、IPv6基于EUI-64接口标识符地址。下面分别对上述地址进行描述。



IPv6本地链路地址

IPv6本地链路地址,类似于IPv4中APIPA(Automatic Private IP Addressing,自动专用IP寻址)所定义的地址169.254.0.0/16。首先说明一下IPv4中APIPA(AutomaticPrivate IP Addressing,自动专用IP寻址)地址会在什么样的情况下产生和使用。比如:在企业网络中配置了DHCP服务器,为企业网络中的客户机提供IP地址分配,如果某天DHCP服务器故障,无法为企业网络中的客户机提供IP地址分配,此时客户主机会产生一个APIPA地址。该地址在一个子网内范围内可以保证主机之间的通信,但是APIPA地址是不可以完成路由通信。而IPv6本地链路地址的作用在于发现邻居节点和在无状态自动配置中链路本地上节点之间的通信。并且只能在连接到同一本地链路的节点之间通讯,不能跨路由器进行通讯和路由转发,具体如何理解IPv6的本地链路地址,首先要理解IPv6所定义的链路、站点、与全局的意义。如图12.26所示:IPv6的链路相当于企业网络中连接在一个二层交换机的主机链路,更明确的一种说法是链路处于同一个广播域,如果从IPv4的角度来理解可以理解成IPv6的链路就是在同一子网内的主机。所以IPv6的本地链路地址,只能在IPv6的本地链路中使用,如链路A与链路B中的IPv6主机使用本地链路地址在各自的链路上通信,但是不可以使用本地链路地址完成链路A与链路B之间的通信,这与IPv4中的APIPA(Automatic Private IP Addressing,自动专用IP寻址地址)类似。





注意:发现邻居节点:类似于CISCO的CDP。无状态自动配置:指不能通过DHCP获取地址,也没有手工的配置IPv6地址。



151807210.png

   对于IPv6本地链路地址的配置,当在一个节点上启动了IPv6协议栈,如在Cisco网络设备的接口下使用IPv6 enable命令,此时就会在该接口下自动配置一个本地链路地址, 如FE80::02D0:BCFF:FEA6:6C01。如图12.27所示,表示IPv6本地链路地址的前缀为固定的FE80::/10,而默认情况下从11bit到64bit设置为0,而剩下的64bit,就使用接口的MAC地址扩展为64位进行填充标识。而接口MAC地址原本是48位,如何将48位的MAC地址扩展为64位进行填充的原理在本小节的后面“IPv6基于EUI-64地址接口标识符的配置”有详细描述。

151910227.png

IPv6本地站点地址

    IPv6本地站点地址,只能在IPv6所定义的一个站点内使用,站点的概念如图12.26  IPv6的链路、站点、全局所示,链路A与链路B都处于同一个站点内,IPv6本地站点地址类似于IPv4环境RFC1918所定义的“私有IP地址”,如10.0.0.0/8.,172.16.0.0/16-172.31.255.255/16和192.168.0.0/16。所以IPv6本地站点地址是不能应用到了internet上,而只能使用在企业内部网络。既然此类IPv6的本地站点地址只能用在企业内部网络,难道是为了做NAT,代理企业内部上网?但是我们知道IPv6完全有足够的IP地址空间为每一个用户去分配一个用于internet的地址,并且IPv6环境中的NAT技术是用来解决IPv4与IPv6过渡兼容的问题,而不是代理私有专用网络IP访问Internet。那IPv6本地站点地址的作用是什么呢?如下所示的一些基本作用描述。

n用于企业内部打印机、共享文件等常见服务

n为企业内部服务器,客户机分配IP地址,限制访问internet。

n为企业内部交换机、网关、无线接入点分配IP地址

n用于远程管理企业内部服务器、路由器等相关网络设备

n没有获取全球可聚合单播地址的组织机构,可使用IPv6的本地站点地址进行网络建设



注意:IPv6的本地链路地址与本地站点地址的重大区别:本地链路地址只能在同一个二层链路中完成通信,不可被路由。而本地站点地址是可能路由的。





对于IPv6本地站点地址的配置,必须通过DHCPv6进行地址的分配、无状态的前缀公告、或者手工的进行输入,如FEC0:FECC:2::1/10。本地站点地址是由固定10bit地址前缀FEC0::/10、54bit子网标识以及64bit的扩展MAC地址组成。如图12.28所示。
152022573.png

注意:对于图12.28本地站点地址格式是按照二进制的方式进行划分的,切忌不要以十六进制的方式来进行分析。如FEC0::/10其实真正固定的部分按二进制计算是1111 1110 11,而不是十六进制FEC0。54bit子网标识指可提供2^54=65535个不同的子网。




IPv6全球单播地址

   IPv6全球单播地址指用于internet上的地址,类似于IPv4的“公有”IP地址,如202.202.1.1/30。而IPv6全球单播地址是IPv6寻址结构当中最重要的部分,该寻址结构使用了严格的路由前缀聚合,目的在于限制全球internet的路由表的规模。而一个IPv6地址是由提供商提供的48bit的路由前缀、组织机构使用16bit划分子网以及64bit接口标识符组成,如下图12.29 IPv6全球单播地址格式所示。



152142705.png

注意:接口标识符:指64bit的MAC地址(未来网络适配器的MAC地址),或者是基于48bit MAC地址扩展为64bit。在全球单播地址中,规定如2001:BCFF:FEA6::/48表示一个IPv6路由前缀,2001:BCFF:FEA6:6C01::/64表示一个IPv6子网前缀。

对于IPv6全球单播地址的配置,也有一定的规定和要求,其子网前缀必须为2000::/3,指的是在IPv6的前3bit,必须为二进制的001。而二进制换化为十六进制,需要4bit的二进制数,所以IPv6全球单播地址的从左到右的第一字段的变化范围为“0010”到“0011”,换化为十六进制变化范围就为2到3。那么如下图12.30所示,表示IPv6全球单播地址的范围。

152310474.png

IPv4过渡IPv6兼容地址

   IPv4兼容IPv6地址是一种IPv4与IPv6网络的兼容过渡机制,用于在主机或者路由器上,自动创建IPv4隧道保证在IPv4网络上能传递IPv6数据包,如下图12.31所示。而IPv4过渡IPv6兼容地址格式主要由前缀高位为96bit二进制0组成,其它32比特以十进制的IPv4地址组成。如IPv4地址202.202.1.1对应的IPv4过渡IPv6兼容地址就应该为0000:0000:0000:0000:0000:0000:202.202.1.1(压缩后为::202.202.1.1)。如下图12.32所示。

152418861.png



IPv6基于EUI-64接口标识符地址

   在前面的各种地址表示方法中多次提到64位扩展MAC填充地址、接口标识符等。在这里将详细讨论。IPv6地址中由于地址格式较长,且书写复杂,由于MAC本身就具备全球范围的唯一性,所以为了方便常常会利用接口的MAC地址来填充IPv6地址后64bit,但是现默认接口的MAC地址只有48bit,那么怎么去填充为64bit(EUI-64)的呢?如给出一个子网前缀为2001::/64,给出的MAC地址为ca00.02a8.0038,那么对应的IPv6地址应该是多少呢?请参考如下图12.33所示,怎么将48bit的MAC地址填充到IPv6的后64bit中的具体过程。

152513379.png

IPv6环回地址

IPv6环回地址类似于IPv4地址127.0.0.1,其作用在于测试本地设备的TCP/IP协议簇是否被正确安装,而通过该地址发出的数据是不会经过网络传输。而IPv6的环回地址全格式为0000:0000:0000:0000:0000:0000:0000:0001,压缩格式为::1。



IPv6未指定地址

IPv6未指定地址是指没有给任何接口分配单播地址,如当IPv6主机的IPv6地址是需要从DHCPv6获取,那么当IPv6主机向DHCPv6服务器发起地址请求或者由DAD(地址冲突检测)发出一个数据包时,所使用的源地址就为“IPv6未指定地址”。而该地址的全格式为0000:0000:0000:0000:0000:0000:0000:0000,压缩格式为::。



IPv6组播地址

IPv6组播地址类似于IPv4组播地址224.0.0.0/3,其作用是源节点发送单个数据包,而该数据包可以到达多个目标地址。



IPv6的任意播地址

任意播地址,也叫做泛播地址,是一个只能分配给路由的IPv6的地址。只能做通信的目标地址使用。而且严格的说,他是属于IPv6单播地址的一个集合,要非常明确的识别一个IPv6地址到底是单播地址还是任意播地址是不可能的。

对任意播地址的定义:指示从一个源节点发送数据包到任意播组中的最近节点的任意播地址,所以任意播也被称为最近点发现或最近路由发现。而最近点的发现则是通过如网络距离、路由选路等。最终到达最近目标地址。在IPv6中使用任意播地址的应用很少,移动IPV6技术的应用就必须使用任意播地址。但是这不是本书讨论的重点。




意注:在这里总结一下IPv6的地址分类:在IPv6的地址当中分为3种类型,即单播、任意播和组播,其中单播包含本地链路地址、本地站点地址、可聚合全球单播地址、环回地址、未指定地址和IPv4兼容地址。任意播地址包含可聚合全球单播地址、本地站点地址和本地链路地址,没有明确的概念去区分单播地址与任意播地址。
回复

使用道具 举报

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
 楼主| 发表于 2019-10-12 04:10 | 显示全部楼层
谁在扫描我家的 IPv6 地址

http://www.sohu.com/a/272500274_278960

2018-10-31 20:24
宋崟川先生是美国领英(LinkedIn)的工程师,也是“IPv6产业生态圈”和“IPv6头跳读者群”活跃的技术型群友之一。他维护的网站https://IPv6-CN.com向广大朋友提供原创和翻译的IPv6资料。

宋崟川先生的家庭网络已经接入了IPv6带宽。9月20日宋先生在微信群里通报:家中路由器的防火墙日志显示9月份有三次(截至本文发稿时有六次)来自AWS云主机对家庭内网主机IPv6地址80端口的精准扫描。

以下是事件发生的经过,以及宋崟川先生对攻击事件的深度分析。

谁在扫描我家的 IPv6 地址

首次发现对内网主机真实 IPv6 地址的

精准扫描

在IPv4环境下,对TCP和UDP的端口扫描非常常见,而且攻击者经常扫描整个网络的所有地址。这种肆无忌惮的扫描每分钟可能有几十或上百次。

到了IPv6的时代,IPv6一个子网的大小就是整个IPv4地址数量的232倍,非常不利于攻击者扫描目标网络。通常我们认为在IPv6上对网段的扫描不会发生,起码对于了解IPv6的攻击者来说不会选择这样浪费时间。

然而在本文的例子中,我们看到了针对家庭宽带用户的单个IPv6地址的单一端口扫描,为什么会发生这样的事情呢?我们作为网络的维护者又应该如何保护好自己,防止受到这种攻击呢?

网络环境

我家中接入互联网的运营商是AS7922美国Comcast公司。使用的路由器是思科ISR(集成业务路由器)。与一般企业网络边界部署的大型路由器相比,除了吞吐量不同,功能和操作方式上没有太大区别,运行Cisco IOS系统。

此路由器中防火墙功能的配置使用思科的传统CBAC(基于上下文的访问控制)模式,通过ACL与inspect命令跟踪返回的数据包相结合来实现包过滤防火墙和有状态防火墙。

Comcast使用DHCP给我的路由器分配了1个IPv4地址,使用DHCPv6-PD(前缀下发)分配了一个/60大小的前缀,这样我最多有16个/64(这是IPv6环境下通行的网络前缀长度,适合给一个VLAN分配)大小的IPv6子网。

我为家中的设备配置了可以通过IPv4和IPv6访问的DNS服务器,这些DNS服务器都可以正常返回一个域名的A以及AAAA记录。

攻击记录

2018年9月20日,在完善家中路由器的防火墙设置时,我发现了三条不寻常的日志(本文撰写时又发现三条)。以第一条日志为例,解释一下各个字段的含义(见表1):



注: 源地址和目的地址在不影响理解的前提下都做了适当简化。 第 1 条日志中的目的地址简化后保留最后的 1,表示这是一个手工分配的地址。 第 2-6 条日志中的源地址的 17-64 位被略去,因为与第 1 条重复。 所有日志条目中的目的地址第 17-64 位被改写,是出于隐私保护的考虑。

日志分析

时间

几次扫描分别发生在:下午1:51,凌晨1:00,下午1:28,凌晨4:47,下午4:44,凌晨4:19。这些时段我是不会活跃地使用家中网络的,可以排除与我的操作直接相关的实时在线扫描。即这种扫描不是request-response形式的,而是一种收集与扫描分开的形式。

源地址

这几次扫描都来自同一个/64前缀——2600:1F18:6058:A200::/64,此前缀属于AS14618亚马逊AWSEC2云主机。亚马逊云计算的IPv6分配策略如下:AWSVPC会被分配一个/56,其中有256个/64的子网可供分配。地址的来源是亚马逊自己的全球单播地址池。

根据以上分配策略,很容易得出结论,这六次扫描是同一个AWS账号所为。

从这几个源地址的接口标识符(IID,即后64位)来看,这些主机的角色并不是服务器,而是一些使用SLAAC获得前缀自行分配地址的客户机。因为服务器的地址通常是方便人类阅读和配置,最起码也是有一定规律的形式。

目的地址

除了第1条日志条目中的目的地址是手工分配的以外(没有使用SLAAC,并且此地址对应的设备并不是一直在线)。后面第2-6条日志的目的地址所在的子网均开启了路由器宣告(RA),所以主机会使用SLAAC及其隐私扩展生成自己的全球单播IPv6地址。

综上所述,可以排除一直开着的设备callhome触发扫描的可能性。

通常Windows和Mac都会生成两个地址,一个叫“临时IPv6地址(TemporaryIPv6address)”,默认用于对外发起连接,一个叫“公有IPv6地址(PublicIPv6address)”。

临时地址的接口标识符(即后64位)是随机生成的,会在较短的时间内过期,除非应用程序要求使用公有IPv6地址,否则系统默认优先使用临时地址对外发起连接。

公有IPv6地址的生命周期有两种,分别为有效期(ValidLifetime,30天),优选期(PreferredLifetime,7天)。应用程序可以向操作系统请求选择使用相对稳定的公有IPv6地址。地址选择的算法详见RFC6724。

临时地址的使用不仅能降低此类扫描的风险,还能在如今广告提供商无下限地跟踪用户的环境下尽可能在地址层面保护用户的隐私。

目的端口

目的端口都是80,这也是我一眼能识别出这是扫描而不是正常访问的依据,因为我没有在80端口上提供服务。攻击者试图连接TCP80端口(即HTTP服务使用的端口)的行为目前也没有合适的解释。由于我的防火墙对ICMPv6是放行且不写入日志的,所以攻击者是否先尝试ping几个地址无从得知。

以上对日志的分析,引出了一个新问题:我家内网的IPv6地址是如何被攻击者所知晓的?

前面已经讲到,针对IPv6的网络扫描,不可能是对一个/64内的所有地址进行扫描,一定是针对单独IPv6地址的扫描,地址的获得既可以通过猜测,也可以通过采集。

在这个案例中,通过日志中有限的几个条目,以及目的地址处在两个不同的/64子网,完全可以排除攻击者使用扫描整个网络这种愚蠢的方法。通过对目的地址的分析,可以排除攻击者猜测一些常见的诸如——“::”,“::1”,“::123”,“::abc”,“:192:168:1:1”形式作为接口标识(IID,后64位)的IPv6地址。

网络中一个使用过/使用中的GUAIPv6地址可能出现的位置有:

1.本机的网络接口配置

2.本地应用程序日志

3.本机在DNS中的动态条目

4.应用层协议的Payload中嵌入了IPv6地址

5.路由器/多层交换机和同网段其他机器的ND缓存

6.DNS服务器查询日志

·DNS提供商自身的日志

·网络中对DNS请求的嗅探和劫持

7.NetFlow导出日志

8.Web服务器和应用服务器访问日志

·所访问网站的日志泄露

a.一般网站

b.IPv6测试网站(志愿加入提供服务,不排除有恶意设置的服务器)

·CDN提供商的访问日志泄露

9.代理服务器访问日志

·未授权WPAD代理配置下发服务造成客户端使用攻击者设置的代理服务器

·透明代理和HTTP劫持代理的日志泄露

10.交换机端口镜像流量

·合法或非法嗅探用户流量(以上十条是我个人的总结,有疏忽和遗漏的地方欢迎大家指正。)

由于IPv6端到端的特性,任何一个数据包的地址在其整个生命流程中都不大可能被改变。即使有NPTv6这种无状态修改前缀的设备在使用,TCP、UDP、ICMP等不依赖IPv6地址进行认证的协议还是不会给攻击者造成任何不便。

所以上述任何一个位置如果被攻击者控制,均会造成客户端IPv6地址落入攻击者手中,使其可以为进一步内网渗透做准备。

目前分析较为可能的是某Web服务器上的日志被有意无意滥用,造成客户端IPv6地址落到攻击者手中,攻击者收集了一定量的数据后开始对这些地址进行了扫描。

发现基础设施的不足之处

1.设备的IPv6地址没有跟踪和溯源机制,事后无从追查当时使用某个目的地址的机器是哪一台。

2.访问控制列表中的放行策略也许还是不够严格,有没有漏网之鱼无从得知。

3.对每一个自内而外发起的连接/会话没有跟踪,网络上发生了什么,哪些前缀、哪些协议、哪些TCP/UDP端口比其他的要更活跃,流量都去哪里了……这些基础网络情报都没有收集,出现问题没有深入调查的条件。

4.设备(此案例中是路由器)的日志仅仅保存在设备内存当中,一旦断电重启,本文可能不会出现在读者面前。

如何防范此类攻击

第一,完善企业网络安全制度。如果IPv4的安全制度已经成熟可靠,则要尽快将其应用到IPv6环境下。如果IPv4下的安全制度缺失,那么在IPv6的推广部署过程中,企业没有历史包袱,就有机会站在更高的起点上,借鉴行业内领先的网络安全策略和实施方案,建立健全企业网络安全规范制度。

第二,理解并配置IPv6防火墙。理解IPv6包结构与IPv4包的本质不同,即IPv6包头是类似链表的结构,而IPv4包头是层层嵌套结构。使用白名单模式配置防火墙,只放行已知合法的流量及其返回的数据包。部署支持IPv6的IDS/IPS。

第三,主机的防火墙也应该打开,只放行本机对外必需的服务。万物互联的时代,应用和环境千差万别,仅依赖网络设备上的防护是远远不够的。安全是网络和应用共同协作的结果。

第四,企业环境中应使用有状态DHCPv6为客户端分配地址,但是不应该让客户端长时间采用同一个地址,而是应该设置较短的地址生命周期,并采用好的随机算法生成客户端后缀。要完成国家对IPv6地址溯源的需求,只需要保留好DHCPv6服务器日志,并定期从接入交换机、AP上采集MAC地址与IPv6地址的对应关系即可。切不可图省事,为客户端分配长久不变的地址。这种做法,为自己的网络带来安全隐患的同时,彻底毁掉了IPv6为终端客户带来的一点隐私保护措施。

观察

宋崟川先生遭遇对内网主机IP地址的精准扫描,虽然是“第一次发现”,但是绝对不能说这种情况是“第一次出现”,因为很可能以前出现了很多次,但是一直没有被发现。只是本次比较偶然被发现。

同时,这种情况不可能仅仅发生在美国的IPv6网络中,中国的IPv6网络有没有遭遇到这种精准扫描?在没有确凿证据的前提下,我们不敢轻易下结论。

两办《推进IPv6规模部署行动计划》文件的基本原则里明确要求“两并举、三同步:发展与安全并举,网络安全要同步规划、同步建设、同步运行”。因此各单位的IPv6升级工作,网络安全工作必须也要同步进行,不能只顾一头。

随着三大电信运营商和CNGICERNET2开通IPv6网络接入服务,现在一些企业、教育、IDC和ISP等单位的网络已经接入了IPv6。但是有几个问题必须引起足够的关注:

(1)已接入IPv6的单位,对IPv6网络安全管理是否给予了足够的重视?是否采取了针对IPv6网络安全的必要措施?

(2)升级后的IPv6网络是否已经妥善配置良好支持IPv6的防火墙、入侵检测等安全防护设备,可以抵御来自IPv6线路的网络攻击?

(3)运维人员的技术能力,是否能满足IPv6网络安全建设和突发事件应急处置的需要?

这几个问题,扪心自问,做到了吗?IPv6网络有很多新的特性,将会产生很多新的网络安全场景,这些场景与IPv4网络并不一样,所需的防护策略也会不一样。但是,无论IPv6还是IPv4,网络安全在本质上并没有根本变化,最关键的问题是网络管理者的安全意识、安全措施、应急方案和技术人员的应急处置能力,这些是一切网络安全运维的核心。(赵肃波)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

荣耀之链

GMT+8, 2025-6-18 06:05 , Processed in 0.013858 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表