园区网技术发展了这么多年,想必大家对于IPv4场景下的接入安全问题已经烂熟于心。随着IPv6技术的发展和推广,未来园区网架构向IPv6演进已经成为不可阻挡的趋势,而我们对于IPv6架构下的接入安全问题了解多少?比如,终端可以获取到正确的IPv6地址吗?拿到地址就可以正确封装报文信息吗?报文封装正确就可以转发正常吗?等等。在IPv6环境下接入层还有哪些安全问题?我们又该如何解决?
上一篇文章(IPv6系列安全篇——SAVI技术解析)为大家介绍了SAVI(Source Address Validation Improvements,源址合法性检验) 的技术原理,本文将聚焦IPv6在园区网有线部署的场景,阐述如何应用SAVI技术解决接入安全问题。
IPv6园区网接入安全问题
众所周知,终端正常访问资源的前提是需要有一个可用的IP地址,那么如何获取正确的地址是我们要讨论的一个问题。
其次,为了正常访问网络资源进行流量转发,还需要正确解析对端的MAC地址或者网关的MAC地址(跨网段时),这样才能进行一个报文的完整封装。在IPv4的场景中是通过ARP协议来解析地址,对应到IPv6场景是通过ND协议中的NS/NA报文交互来解析。
除此之外,为了给所有终端分配地址资源,地址源可谓是“尽心竭力”,因此它的资源是有限的,也需要额外关注。
看似平淡无奇的过程中暗藏着很多安全问题,下面我们来详细分析一下这些问题是如何发生,以及有何威胁。
地址获取欺骗
在IPv6的场景中,地址获取的方式有多种:
1、DHCPv6:通过DHCPv6协议实现地址的获取,整个流程和IPv4下的DHCP协议类似,但协议报文有部分差异,具体可以参考DHCPv6的报文详解。
2、SLAAC(Stateless Address Auto Configuration,无状态地址自动配置):根据网关设备通告RA(Router Advertisement,路由器通告)报文中携带的网络前缀生成网络ID,根据EUI-64算法生成接口ID,通过两者结合生成一个IPv6地址。
3、手动配置:某些业务服务器需要固定IP,一般会手工静态配置。但由于IPv6地址很长,所以配置起来比较麻烦,普通终端的话一般不推荐。
地址获取欺骗就是让终端无法获取正确地址的攻击手段。 对应不同的地址获取方式,也有不同的欺骗方式:
1、DHCPv6方式:非法用户通过私设DHCPv6服务器,欺骗终端获取到错误的IPv6地址,这个问题在IPv4场景中也经常遇到。
2、SLAAC方式:非法用户私设网关设备,通过通告非法的RA报文来误导终端生成错误的地址,比如:
? ?
通告非法的网络前缀,导致终端获取到错误的网络前缀。
通告错误M比特位,导致终端本应通过SLAAC方式生成地址,却改成通过DHCPv6方式获取地址。结果因为DHCPv6服务器不存在或存在非法的DHCPv6服务器,造成终端无法获取到地址或获取到非法地址。
3、私设IP方式:用户通过手工配置IPv6地址的方式接入网络。比如:
? ?
当私设IP与现网IP存在冲突时,会导致私设IP的用户无法使用该地址进行通信。
当现网某个静态IP终端(比如某个服务器)暂时离线时,用户可以使用这个私设IP进行通信。但该服务器再次入网时会导致服务器无法访问网络,而修改服务器的IP会导致业务发生变更,影响范围较大。
? 当私设的IP在现网没有冲突时,也会导致网络工程师预先规划的地址被这些私设终端所占用,无法对其进行接入管控,造成非法用户的接入。
不管哪种方式,其核心结果都是使终端不能按照我们预期的方式拿到正确的地址, 导致终端无法正常访问网络,甚至是业务中断。
地址解析欺骗
上文也曾提到,IPv6的地址解析是通过NS/NA报文的交互来完成。在这个过程中也会出现类似IPv4中ARP欺骗的问题,导致终端流量转发异常。
攻击者通过发送非法NS/NA报文对合法终端发送的NS/NA报文进行错误应答,无论是DHCPv6还是SLAAC的场景都会使终端解析到错误的目标MAC地址。
这样会导致终端报文封装错误,流量转发异常,甚至可能被攻击者截获报文泄露发送的机密信息,安全性无法保障。
泛洪攻击
前面我们提到的两种安全问题都是针对终端,而地址分配源(DHCPv6 Server或者通告RA的网关)也是非法终端的攻击对象。
泛洪攻击是通过模拟大量的终端向地址源发送请求的攻击方式。
1、DHCPv6方式:攻击者可以模拟大量用户发送DHCPv6请求报文,占用服务器大量的地址资源,导致合法终端没有地址资源可以分配。
2、SLAAC方式:攻击者可以模拟大量用户发送的RS报文,被网关应答RA后生成地址。然后发送DAD报文检测地址是否有冲突,无冲突的话会生成ND表项。攻击者用这样的方式,占用网关设备大量的ND表项,这样就会使合法终端无法生成ND表项,进而导致流量转发异常。
备注:SLAAC场景,网关仅仅通告网络前缀,所以攻击者并不会消耗地址资源,但是攻击者会生成大量
的IPv6地址,当发送DAD检测发现地址可用后会在设备上生成很多的ND表项,从而实现对表项资源的非法占用。
总结看来两种泛洪攻击都会导致资源(地址资源或者表项资源)被攻击者占用,使得终端无法获取地址,也就无法正常访问网络。
小结
看到这里可能会有很多读者已经眉头紧皱了,IPv4场景里会发生的问题在IPv6里面还会再次出现,而且攻击方式更加多样,该如何解决呢?
下面将为大家介绍以SAVI技术为基础的安全策略部署是如何迎刃而解的。
以SAVI为基础的安全策略部署建议
SAVI技术的工作机制是通过监听控制类协议报文,为接入设备建立基于IPv6源地址、源MAC地址和接入设备端口的绑定关系。这个绑定关系通常是以DHCPv6 Snooping、ND Snooping或者两者的结合作为依据。设备根据绑定表对通过指定端口的IP报文进行校验,目前支持端口下基于源IPv6地址过滤以及基于源IPv6地址+MAC地址过滤。通过校验后才可以转发,这样就防止了恶意用户伪造报文进行攻击。下面我们来看一下SAVI的安全策略具体是如何部署的。
以一个简单的园区网场景举例。
▲图1 园区网逻辑拓扑图
如上图所示,核心交换机到接入交换机采取大二层部署模式,所有终端的网关都设置在两台堆叠的核心交换机上(逻辑上是一台)。核心到出口之间通过静态路由或动态路由实现互通。
目前市场上主流的PC终端对IPv6的支持情况参差不齐,特别是对于地址的获取能力,为了满足大部分PC都能获取到IPv6地址,建议分别采用DHCPv6和SLAAC两种方式部署。
1、DHCPv6分配实现:在核心交换机上开启DHCPv6 Server的功能,并且作为终端的网关设备。 2、SLAAC分配实现:在核心交换机上配置发送RA消息来通告网络前缀,让不支持DHCPv6的终端通过SLAAC进行地址获取,并且以核心交换机作为网关设备。
备注:如果在一个网段下同时部署DHCPv6和SLAAC,大部分终端会根据RA报文中的M比特位来选择一种方式进行地址获取,但实测win7的终端会同时生成两种地址,目前看来是终端的行为,网络设备厂家也暂无对策。另外,据了解安卓系统的终端目前是不支持DHCPv6的,所以也需要靠SLAAC的方式获取地址。
以上是基本功能的配置,下面我们看一下安全策略的部署: 1、接入交换机(DHCPv6):
? ? ? ? ?
全局开启SAVI源地址检查功能:开启源地址/源地址+MAC的校验功能;
上联接口开启DHCPv6 Snooping trust:放行信任的地址源报文,丢弃不可信的地址源报文; 全局开启DHCPv6 Snooping:基于DHCPv6协议交互嗅探生成绑定表项;
全局开启ND Snooping:基于ND表项学习的结果生成绑定表项,同时也是开启ND-Check的前提; 下联接口设置ND-Check:开启基于ND Snooping表项的校验机制,对端口接收的报文基于ND Snooping表项进行比对,合法放行,非法丢弃;
2、接入交换机(SLAAC):
? ? ?
全局开启SAVI源地址检查功能:进行源地址/源地址+MAC的校验机制;
上联接口开启ND Snooping trust:放行信任的地址源报文,丢弃不可信的地址源报文;
下联接口设置ND-Check :开启基于ND Snooping表项的校验机制,对端口接收的报文基于ND Snooping表项进行比对,合法放行,非法丢弃;
? ?
限制端口下的IP数量:设置每个端口下可以获取IP地址的数量;
端口保护绑定接口下的MAC数量:设置每个端口下可以绑定的MAC数量,对于有线场景,如果终端没有迁移的需求一般建议设置1个MAC;
3、核心交换机(作为网关):
核心交换机需要承载DHCPv6终端以及SLAAC终端的网关工作,所以属于混合场景;
需要同时开启上述接入交换机的安全功能,比如DHCPv6 Snooping、ND Snooping以及SAVI功能等;
那么这样的安全部署具体是如何工作的呢? 地址获取欺骗的解决之道
攻击者仿冒网关设备恶意发送的RA报文可以认为是非法报文,私自设置DHCPv6服务器的行为称作私
设DHCPv6 Server。
对于非法RA以及私设DHCPv6 Server的解决措施,其核心在于直接丢弃非法设备发送过来的报文,从根源上解决问题。
▲图2 地址获取防护
1、DHCPv6的场景:
针对私设服务器发送报文,由于在接入交换机上联端口开启了DHCPv6 Snooping trust,那么默认下联端口为非信任口untrust,所以会直接丢弃DHCPv6 ADVERTISE及REPLY报文,保证了终端可以获得正确的地址。
2、SLAAC的场景:
由于在接入交换机上联端口开启了ND Snooping trust,那么默认下联端口为非信任口untrust,从非信任口发送过来的RA报文被认为是非法RA报文
非法RA报文到达接入交换机后会被直接丢弃,防止了非法攻击源伪装网关发送RA,保证终端可以生成正确的地址。