摘要 从IPv4向IPv6过渡有双栈、翻译和隧道三种过渡机制,每种过渡机制中又都分别含有几种技术。本文试图对这些技术的安全问题进行了分析,并据此为运营商和企业在IPv4向IPv6过渡技术发展策略方面提出建议。
一、引言
由于IPv6技术具有诸多优点,人们希望在不久的将来使用它来进行网络的主要部分的设计。然而,由于IPv4网络如此庞大,以至于
人们不得不需要一段时间逐步从IPv4向IPv6过渡。为此,人们正在通过各种各样的方法寻找从IPv4向IPv6过渡合理方案,而且到目前为止已经出现了许多的解决方案。这些解决方案大致可以分成三类:一是双栈机制,二是翻译机制,三是隧道机制。有些技术只使用了其中一种机制,有些则同时使用了其中两种机制。
网络安全问题一直是网络运营者和网络使用者关注的焦点,在从IPv4向IPv6过渡过程中也是如此。本文试图在安全方面对目前出现的过渡技术加以分析,并据此为运营商和企业在IPv4向IPv6过渡技术发展策略方面提出建议。
二、双栈机制安全分析
1双栈技术安全
双栈技术是大家熟知的做法,就是在同一台设备上同时激活IPv4和IPv6两种协议。双栈技术一般都是与其他技术结合使用。
在IPv4网络安全方面,我们已经有很多的办法加以保护,这一点自不必说。需要注意的是,在IPv6网络安全方面也要达到现有IPv4过滤水平。因为系统管理员往往喜欢分给它一个以该地址所属的类前缀为开头的地址(通常比::ff低),这就使得需要扫描的IPv6地址范围小许多,所以一个外部用户发现一个重要服务器的IPv6地址并不困难。在这种情况下,如果某些基本过滤功能没有加载,恶意用户就有可能很轻易地把IPv6作为一个入口点,从入口机器上使用IPv4或IPv6去访问私有网络,并进一步危及网络内的设备。另外,偶尔也有黑客在侵入IPv4设备后,激活IPv6-in-IPv4隧道,这样就可以成功地绕过过滤和入侵检测系统(IDS)了。
2 DSTM技术安全
DSTM技术目前还处于IETF草案阶段,它的基本思想是:在纯IPv6域内,当支持双协议栈的DSTM节点需要IPv4地址时,可以通过与DSTM服务器进行基于IPv6的通信得到一个临时IPv4地址,然后使用这个IPv4地址通过IPv4-over-IPv6隧道与网关TEP通信,TEP再利用IPv4直接与IPv4网络通信。
DSTM技术可以使用所有已经定义的安全规范。第一,有关DNS安全的扩展和升级都可以使用;第二,如果Intranet DSTM中布署了DHCPv6,则可以使用DHCPv6认证消息,同时可以把TEP都置于Intranet中而不把它们作为中继开放,以避免受到直接的攻击;第三,对于DSTM节点的IPv4通信,一旦节点具有IPv4地址,IPsec就能被使用,因此DSTM不会破坏在任何点的端到端的通信安全。
尽管如此,由于DSTM技术要求DSTM节点需要通过向DSTM服务器请求临时地址来动态配置IPv4栈,这直接为DSTM在地址分配方面带来一个重大缺陷——容易受到DoS攻击,虽然DSTM网络要求是一个Intranet环境,DoS攻击对地址池的威胁有限,但这个问题仍然不容忽视。
下面我们看一个实际例子。如果TEP与DSTM服务器在物理上不是安装在同一台主机上,则当TEP收到携带IPv4包的IPv6数据包时,它就自动使用包内携带的信息(IPv6和IPv4源和目的地址)通过动态隧道接口(DTI)创建一个IPv4-in-IPv6隧道。有一点必须注意,这种情况下没有方法检查TEP所建立的隧道与DSTM服务器的分配的对应关系,所以一个主机(A)被分给一个IPv4地址后,在用这个地址通过使用DTI创建的IPv4-over-IPv6隧道与一个IPv4网络通信时,如果另一个主机(B)使用与A相同的IPv4源地址发了一个IPv4 in IPv6的包,TEP和A之间的隧道就会被破坏掉了,并且被TEP和B之间的隧道所代替。这就是所谓的DTI问题,这种情况在欺骗攻击时比较常见。解决此问题的一个办法就是加入认证机制,但是目前的应用都是基于远程程序调用(RPC)的,而基于RPC的应用却不支持认证,所以目前还不能克服这个缺陷,只能寄希望于以后使用TSP(隧道配置协议,它可以使对消息发送者的鉴别成为可能)和DHCPv6来解决了。
3 BIS技术安全
BIS技术在IPv4协议栈中插入三个特殊的扩展模块:域名解析模块、地址映射模块和报头翻译模块。当IPv4应用程序与纯IPv6节点通信时,将节点的IPv6地址映射成一个备用IPv4地址池中的IPv4地址。
采用BIS技术的双栈主机上的IPv4应用和其他IPv4主机通信时,可以实施所有层面上的安全策略。同时,运行IPv6应用的主机通过完整的IPv6协议栈和其他IPv6的主机通信时,象其他普通的IPv6间通信一样,也可以在所有层面上实施安全策略。然而,当主机上的IPv4应用利用BIS机制和其他的IPv6主机通信时,不能实施网络层以上的安全策略。因为,当加密携带有IP地址的协议数据时,或者以IP地址做为主键对协议数据进行加密后,这种机制不能在IPv4和IPv6的数据之间进行转换。因此如果需要采用安全机制与其他IPv6主机进行通信,首先需要把现有的应用升级为IPv6的应用。
4 SOCKS64技术安全
SOCKS64技术通过在IPv4主机端增加了一个功能部件*Socks Lib*、在网关处增加了一个功能部件*Gateway*,提供了IPv4主机通过双栈网关与IPv6主机通信的解决方案。
由于SOCKS64是直接建立在SOCKSv5协议基础上的,其安全方面的特点与SOCKSv5相一致。它不提供从原始源节点到最终目的节点的整体端到端的安全保证,但是由于它建立了应用层两个“分开的”连接的中继,所以端到端的安全就由这两个被中继的链接来提供保证。
三、翻译机制安全分析
1 SIIT技术安全
SIIT技术实际上是一种无状态的IP协议和ICMP协议转换算法。它定义了IPv6和IPv4的分组报头进行转换的方法,对每个分组都进行翻译。SIIT可以和其它机制(如NAT-PT)结合实现纯IPv6节点和纯IPv4节点间的通信。
SIIT技术不会引入新的安全问题。但是由于认证头部(AH)涉及到IPv4标识域,而翻译函数不能够总是保留这个标识域,IPv6端点对于收到的经过IPv4-to-IPv6翻译的数据包不能计算AH值,所以AH不能通过翻译器。
2 NAT-PT技术安全
NAT-PT技术利用网络地址转换(NAT)技术,达到使纯IPv4和纯IPv6节点之间能够透明通信的目的。它将IPv4地址和IPv6地址分别看作NAT技术中的内部地址和全局地址,在IPv4分组和IPv6分组之间进行基于会话的报头和语义翻译。对于一些内嵌地址信息的高层协议(如FTP),NAT-PT需要和应用层网关(ALG)协作来完成翻译。
NAT路由器可以与防火墙一起来做流量过滤。许多人把传统的NAT路由器看作是单向的流量过滤器,可以严格限制外部主机对内部网络的访问。而且,当NAT路由器内进行动态地址分配时,也增加了攻击者侵入NAT域内特定主机的难度。
由于NAT设备并不检查或修改传输载荷,所以在许多情况下都是对应用透明的,与IP地址无关的应用层安全技术在有NAT时可以正常工作(如TLS、SSL和ssh)。可是,在应用载荷包含IP地址或需要端到端的安全等情况下,NAT设备就不能正常工作了,所以对于传输层安全技术(如IPSec传输模式或TCP MD5签名选项)就无能为力了。
在NAT-PT和ALG协作时,可以解决涉及IP地址的应用问题,但此时安全DNS就无法使用了,而且如果NAT设备和ALG不是在同一个信任范围内,而ALG又不能检查终端用户的流量载荷,这时就会对网络安全造成严重威胁。而对于NAT路由器来说,只有在作为隧道端点时才可以使用隧道模式IPsec。由于UDP应用本来就是不安全的,加上基于UDP的多播进程也是一个安全弱点,所以需要对NAT路由器加载额外的保护措施。
3 TRT技术安全
TRT技术同NAT-PT类似,在纯IPv6主机和纯IPv4主机之间加入一个传输中继转换器,只不过它是在传输层实现IPv4的TCP或UDP与IPv6的TCP或UDP数据的对译。
同NAT-PT类似,IPsec数据包也不能通过TRT中继,TRT中继也无法使用安全DNS。
由于传输中继转换器的存在,恶意的攻击者可能会像利用SMTP一样利用TRT,公开将数据中继到一个特定的IPv4目的地。因此,TRT应当实现一些访问控制机制来预防这类事情。
4 BIA技术安全
BIA技术在双栈主机的Socket API模块与TCP/IP模块之间加入一个API翻译器,API翻译器包含域名解析器、地址映射器和函数映射器三个模块,双栈主机通过这三个模块完成与IPv6主机之间相互通信。
BIA的安全性与NAT-PT的安全性类似。差别在于BIA的地址翻译发生在API层而不是在网络层。由于这种翻译机制发生在socket API层,所以采用这种机制运行IPv4应用的主机和其他IPv6主机通信时,可以利用网络层的安全策略(例如IPsec)。因为不存在NAT-PT中的DNS-ALG,所以也不会和安全DNS产生冲突。
四、隧道机制安全分析
隧道是使用IPv6和向IPv6过渡的最有效的方法。通过在IPv4内打IPv6隧道,可以通过一个纯IPv4网络发送一个包到双栈路由器或主机,由它们去掉IPv4头并向通常一样转发或接收IPv6包。
一般情况下,都需要使用防火墙或边界路由器过滤掉一些流量。如果防火墙或边界路由器不支持IPv6,就需要通过从站点内部的一个路由器到站点外部的某个路由器建立一个隧道来获得IPv6连接了,这样这个内部路由器对于IPv6来说就变成了一个边界路由器,所以对这个路由器也需要加载过滤策略。需要注意的是,当站点内的IPv6使用一个与IPv4不同的边界路由器时,如果使用直接IPv6封装,需要保证两个IPv6隧道端点之间的路径上IP协议类型为41的包不要被滤掉;如果使用GRE封装,需要保证隧道端点之间IP协议类型为47的包不要被滤掉。
1 隧道代理技术安全
隧道代理(TB)技术提供了一种简化的隧道配置方法,它要求隧道的双方都支持双栈。通过TB,用户可以很方便地和IPv6 ISP建立隧道连接,从而访问外部可用的IPv6资源;ISP通过专用的隧道服务器提供了一种非常简捷的接入方式,并自动管理用户发出的隧道请求。
在隧道代理体系中,所有功能单元之间(包括客户和TB之间、TB和隧道服务器之间以及TB和DNS之间)都需要使用安全机制保护。在客户与TB之间,有很多的安全机制可供选择(如可以使用SSL在WEB服务器上对发送和下载进行加密,还可以使用简单的用户名/密码程序来实现访问控制,等等)。在TB与隧道服务器之间可以采用SNMP。在TB与DNS之间,如果使用动态DNS更新程序,安全性与SNMP完全相同;如果使用基于RSH命令的简便方法,也可以使用标准的IPsec。
使用隧道代理也会产生如下一些问题:
·认证问题
如果客户端的配置是通过TB提供的脚本实现的话,在执行这些脚本时就需要实现对一些接口的配置管理,所以必须给这些脚本很高的权限,这种做法显然存在安全漏洞。另外,如果隧道代理是由安装有目录型结构的组织来运作(例如大学为学生运作),就可以使用用户名/口令或组织中已经在别的业务中采用的其他认证方式;如果以前与用户没有关系,典型的做法就是让人们使用名字、e-mail地址等注册,然后用e-mail接收认证口令。这种方法有最终用户真实身份不确定的问题。
·隧道自动切断问题
如果用户使用不是静态IPv4地址的连接(如拨号),就要谨慎地自动切断隧道以防不必要地使用资源。因为用户的连接如果非正常中断了,隧道服务器会继续发送IPv6的隧道包到用户原来的IPv4地址,而这个地址可能已经被分配给另一个主机使用,这样就发生了数据泄露问题。这个问题可以通过用户端发送某类keep-alive消息来解决,但是这样可能需要在用户操作系统中安装专门的软件,用起来比较困难。另外还可以通过使用TSP,使得隧道代理能够检查隧道请求是否来自于正确的主机和路由器,并使得TEP和客户机能够检查隧道数据是否来自于公认的隧道代理,只是TSP技术目前还不完善,需要等待。
·过滤和统计问题
使用隧道代理技术时,还应该对某些IPv6包进行过滤,以防止恶意用户同时申请大量的隧道连接耗尽隧道服务器的资源,但是如果远端是多穴主机时还没有合适的过滤策略。另外还需要统计每个隧道的带宽使用情况等数据,以尽快发现是否遭到DoS攻击。
2 ISATAP技术安全
ISATAP技术使用一个内嵌IPv4地址的IPv6地址通过IPv6-in-IPv4自动隧道为IPv4站点内的双栈节点提供到IPv6路由器的接入,它允许与IPv6路由器不共享同一物理链路的双栈节点通过IPv4自动隧道将数据包送达IPv6下一跳。
由于ISATAP使用隧道,所以一般的隧道问题在这里也适用。IPv6邻居发现信任模型也适用于ISATAP。使用ISATAP技术时必须要考虑过滤问题,站点边界路由器和防火墙必须执行IPv6入口过滤、IPv4入口过滤和协议类型为41的包过滤。
另外,由于站点内的所有ISATAP主机都在同一个IPv6链接上,尽管可以像通常一样在ISATAP路由器处监控流量,但是ISATAP链路上主机之间的包并不经过该路由器,因此没有办法监控和排除出现内部攻击的可能性。所以,路由器需要在ISATAP接口上启用缓解欺诈攻击的安全机制,防止发自ISATAP站点内的源IPv6地址欺诈攻击,至少ISATAP站点的边界网关必须记录欺诈源地址的来源还是有好处的。
3 BGP隧道技术安全
BGP隧道技术通过采用三层技术构筑VPN并用BGP协议在MPLS核心交换路由信息,提供了一种IPv6孤岛互连的方法。
BGP隧道技术采用三层技术构筑的VPN具有采用二层技术构筑的VPN的所有安全特性,可以提供安全的隧道,从而防止DoS攻击以及入侵攻击。BGP隧道技术可以使用BGP中的安全特性,以及ISP域中的各种安全策略,不会引入任何新的安全问题。
4 6to4隧道技术安全
6to4技术是一种自动隧道技术,可以使不支持纯IPv6的IPv4网络上的IPv6子网或IPv6站点与其它同类站点在不能获得纯IPv6连接时,IPv6的分组被封装到IPv4的分组中来实现相互之间的通信。
6to4技术使用自动隧道,具有隧道技术所具有的弱点。如果IPv4地址被欺骗,任何人都可以向隧道内想注入多少流量就注入多少流量。
另外,如果已经使用了6to4路由器或中继,还需要注意以下危险的存在:
·对6to4伪接口的攻击。伪接口与实际接口具有同样的属性,必须加以保护。一般需要在伪接口上加载对隧道包的过滤策略,保证不受从外网发来的具有站点本地地址的包的攻击和从站点本地发出到外网的具有错误源地址的包的攻击。
·本地定向广播攻击(只针对中继)。看这样一个例子:假设中继路由器有一个地址为1.1.1.1/24的接口,现在发给中继一个包,中继将它翻译成一个广播地址发送出去,这里是1.1.1.255,这就构成了一个“本地定向广播攻击”。这个问题也可以通过访问列表控制来解决。
·业务盗用。通常情况下,如果提供严格的6to4中继业务,这不是一个大问题,可以通过小心处理路由策略来解决,如果有必要的话,还可以通过访问列表来解决。
5 6over4隧道技术安全
6over4技术把IPv4组播域作为虚拟链路层,通过把组播目的地址映射到相应的IPv4组播地址,使得没有直接与IPv6路由器相连的孤立的IPv6主机形成IPv6互联。使用6over4技术互联的主机并不需要IPv4兼容地址或者是配置的隧道。通过这种机制,IPv6可以独立于底层的链路而且可以跨越IPv4的子网。
对于6over4技术,除了需要考虑可能有IPv6攻击之外,还应该考虑对IPv4攻击的安全防范。出于效率原因方面的考虑,应该避免同时在IPv4和IPv6两个方面使用IP安全。例如,如果IPv6使用了加密,除非是通过流量分析察觉到有威胁存在,否则IPv4加密就是多余的了。如果IPv6要经过认证,IPv4的认证就很少需要了。反过来则不然,一旦IPv6流量离开了IPv6-over-IPv4域,IPv4安全并不再保护它了。因此,即使是有IPv4安全保证,仍然需要有IPv6安全保证。
6over4还有可能受到地址欺骗攻击,外部伪造的6over4包有可能侵入6over4域内。这样,边界路由器必须要丢弃组织本地范围内的源和目的多播地址的IPv4包(如果它们到达这个范围以外的物理接口的话)。为了防止单播6over4包的地址欺骗攻击,边界路由器还必须要丢弃来自于未知源的协议类型为41的IPv4包,也就是IPv6-in-IPv4 隧道必须只接受可信任来源的数据。除非是IPsec认证可用,否则最好将边界路由器配置成只接受来自于可信任范围内的源地址的协议类型为41的包。
五、技术选择策略
在所有这些过渡技术中,几乎每种技术都有自己的侧重点。其中双栈、NAT-PT、TRT、隧道代理、BGP隧道、6to4隧道、6over4隧道等技术可用于运营商网络过渡,而双栈、DSTM、SIIT、BIS、SOCKS64、BIA、ISATAP等技术可用于企业网络和主机过渡。但是,如果考虑到网络安全问题,就需要慎重选择使用那些技术了。
对于运营商网络来讲,
·双栈:不论是用于运营商的骨干网还是接入网,路由器和接入服务器一般都需要具有双栈能力。但需要注意的是,双栈技术不能独立使用,必须与其他技术相结合,而且在使用时还要注意一定在IPv4 和IPv6两个方面都要加载基本过滤功能。
·NAT-PT:对于IPv4/IPv6网络互通是一个较完整的解决方案,可用于接入网络以及纯IPv6网络与IPv4网络之间的互通。它可以严格限制外部主机对内部网络的访问,而且当NAT路由器内进行动态地址分配时,也增加了攻击者侵入NAT域内特定主机的难度,可以使用。但需要注意的是,NAT-PT在采用网络层加密和数据完整性保护的环境下将不能工作,而且在应用层就包含了IP地址的传输层和应用层的安全也同样无法实现。
·TRT:技术特点与NAT-PT类似,可以使用。但由于存在数据被恶意的攻击者中继到一个特定的IPv4目的地的危险,因此需要加载一些访问控制策略。
·隧道代理:虽然可用于独立的小型IPv6站点接入,但是由于隧道自动切断等问题还没有较好的解决方案,使用率呈下降的趋势,所以建议暂时不要使用。
·BGP隧道:采用了三层技术构筑的VPN,具有采用二层技术构筑的VPN的所有安全特性,可以提供安全的隧道,可以使用BGP中的安全特性,以及ISP域中的各种安全策略,不会引入任何新的安全问题,适合用于运营商的骨干网络,推荐使用。
·6to4隧道:虽然在实现IPv4网络中的IPv6网络互联时消耗的IPv4地址很少,但是,由于存在对6to4伪接口的攻击、本地定向广播攻击和业务盗用的危险,在使用时需要加载一系列的安全策略。如果能够进行手工配置隧道或者本地IPv6,建议还是避免使用。
·6over4隧道:6over4隧道可以采用一定的策略来保证网络安全,但是该技术要求IPv4网络支持组播,应用范围有限,建议尽量不要使用。
对于企业网络和主机来讲,
·双栈:不管是企业网络还是主机,都需要与其他技术相结合使用。
·DSTM:虽然DSTM技术可以节省大量的IPv4地址,也不会破坏端到端的网络安全,但是由于它目前还处于IETF草案阶段,而且存在有严重的DTI问题,容易受到DoS攻击,建议在没有引入TSP之前,建议尽量不要使用。
·SIIT:仅是一种翻译算法,而且AH不能通过翻译器,在采用网络层加密和数据完整性保护的环境下不可用,建议尽量不要使用。
·BIS:同种协议之间的通信可以在所有层面上实施安全策略,但是在异种协议之间的通信不能实施网络层的安全,建议尽量不要使用。
·SOCKS64:安全方面的特点与SOCKSv5相一致,可以使用。
·BIA:运行IPv4应用的主机和其他IPv6主机通信时,可以利用网络层的安全策略(例如IPsec),可以使用。
·ISATAP:站点内的所有ISATAP主机都在同一个IPv6链接上,又没有办法监控和排除出现内部攻击的可能性,建议不要使用。
阅读(562) | 评论(0) | 转发(0) |