嘉宾:Ed Skoudis,Interguardians公司的创始人和高级安全咨询师。该公司位于美国华盛顿特区,主要提供信息安全咨询服务。ED擅长于黑客攻击与防御、信息安全以及计算机隐私问题。他已经为财富500强诸多公司进行过无数的安全评估,设计信息安全治理和运行团队。同时,还为金融业、高科技企业、医疗行业以及其他行业的客户。
问:Teredo的漏洞是否会导致其在使用中出现安全隐患?
答:当Teredo应用在企业环境时,这使我感到害怕——仅仅是因为它所具备的功能。对不熟悉技术的人来说,由微软倡导的Teredo是在IPv4的端口上使用UDP数据报建立IPv6通信隧道的技术,正如RFC4380中所定义的那样。
Teredo允许内部网络过渡到IPv6, 通过它们的NAT设备互相连接并跨越IPv4的因特网。听起来很简单,不是吗?那么,在这里我将讨论一些企业需要重点关注的安全问题。
在Teredo之前,许多组织在因特网上实验过网络到网络的IPv6连接,而且是使用IPv6-to-IPv4网关来实现的。下面是常见的情景:
比方说,两个组织在他们的内部网络上部署了IPv6。 毫无疑问,在同一内网中,某一子网上的IPv6设备能够与其它IPv6设备通信。然而,在Teredo出现之前,通信会穿越庞大、通信状况糟糕的IPv4因特网,需要每个组织部署一个IPv6-to-IPv4网关,该网关将会对协议进行转换。在一个内部网络中,一台机器将会构造发往内网中另一系统的IPv6数据包,而网关会为IPv4数据包中的IPv6数据包建立隧道,并把它们发送到因特网上。 一旦被其它子网接收到,这些数据包将会被另一个网关解封,该网关从IPv4中提取IPv6数据包,并将其发送到IPv6的目的地。
在一个端主机(end-host)系统中,Teredo不需要IPv4-to-IPv6网关就能实现封装,IPv6数据包会被放入UDP数据包中,再通过IPv4发送到目的系统。Teredo被用于NAT间的通信,只要IPv4上的UDP数据包能够在两个需要进行IPv6通信的系统间发送就行。
这对企业来说意味着什么?如果没有Teredo,网络管理者将不得不安装和配置IPv6-to-IPv4 网关,这或许会增强他们对攻击的抵抗能力,但所有的隧道功能这时都交给了端系统,使得对于网络安全的保护变得更加困难。在内部网络中,任何具有Teredo功能的系统只要能够接收UDP数据包,就能成为IPv6隧道中的一个端点,此时任何绑定到系统IPv6地址上的应用程序便会暴露出来。
在你的网络内部,一个装有Teredo的系统甚至可以成为IPv6中的VPN端点,而这有可能会允许攻击者发送随机的IPv6数据包到目标机上,而且可以从该机器为路由到内部网络中的其它地方。赛门铁克的安全专家James Hoagland描述了这些攻击,并在近期的一篇文章中做了更详尽的描述。
如果Teredo默认是关闭的,那么它也不会带来什么问题。然而,Windows Vista绑定的IPv6和Teredo都是自动开启的,就我看来这明显是个无赖的行为。而Windows Server 2008支持IPv6, 但它的Teredo是关闭的。
为了避免遭受基于Teredo隧道或者其他相关的攻击,你首先需要在网络防火墙上阻止随机的UDP数据包,尤其是Teredo默认端口UDP 3544上的输入输出通信数据。请注意,只有Teredo服务会监听该端口。客户端发送通信数据到目的地使用的都是任意高编号的UDP端口, 所以你真正要考虑的是去封锁所有到达或来自UDP3544的通信,并阻止Teredo客户端和服务器使用它。当然,各种黑客也可以使通信流量从其他端口进来。接下来,你应该做的是确保Windows主机上的个人防火墙支持IPv6过滤并且已被开启。虽然自带的Windows个人防火墙提供了这种支持,但是其它许多产品则没有。最后,你可以在端系统中运行带有恰当选项的’netsh’命令来关闭Teredo,或者在Windows注册表进行设置,这两种方法在一篇微软的文章中都有介绍。不过,我建议你在不使用Teredo时还是关闭它为好。
【编辑推荐】