在默认设置条件下直接运行Windows,很多端口就会处于开放状态。由于多种服务会自动起动,因此不需进行复杂的设置就能够使用各种服务。但如果置之不理,就可能成为攻击者的攻击对象。安全对策的基础是严格区分必要和不需要的服务,然后关闭不需要的服务。为此就必须了解Windows在默认设置中处于开放状态的具有代表性的端口的作用及其危险性,并进行适当的设置。
通过因特网,服务器硬盘中的内容全部都可以看见。而且还能够非常轻松地篡改和删除其中的数据。也许读者会想:哪里有有设置如此笨拙的服务器?!很多人觉得只要不进行极端的设置、故意对外公开硬盘中的内容,就不会出现这种情况。
但实际上,在Windows中,即便管理员并非明确地起动某种服务、或者开放某个端口,也有可能发生这种情况。
图1●如果使用net命令,就能够分配到共享资源。“C$”是C盘的共享名
在默认设置下,Windows会开放提供文件共享服务的TCP的139号端口。因此,在默认条件下起动文件共享服务后,系统就进入等待状态。由此,机器就会始终处于被攻击者访问共享资源的危险境地。而共享资源则可以利用net命令轻松地进行分配(图1)。尽管C盘如果没有管理员权限就无法共享,但如果不经意地将Guest帐号设置为有效以后,就能够访问C盘,这样一来就非常轻松地破坏硬盘。而且,今后也有可能发现其它利用文件共享服务发动攻击的严重安全漏洞。
安全对策的基本原则是关闭不需要的服务。如果不起动服务,即便外部发来连接请求,机器也不会作出响应。要做到这一步,电脑管理员就必须充分了解哪些服务是必须的,以及目前实际上起动了哪些服务。
但是,在Windows中,在默认条件下会起动很多服务,而且很多时候各服务的作用也不容易搞清楚。而很多管理员不仅认识不到端口开放的危险性,而且在不了解服务的作用和必要性的情况下就会直接连接因特网。
应该注意的5个端口
那么,实际上在Windows默认条件下所开放的端口有哪些呢?笔者在安装了Windows系统后,对在默认条件下开放的端口进行了一次调查。调查中使用了免费端口扫描工具“Nmap”(http://www.insecure.org/nmap/)。
结果如表1和表2。在几乎所有的Windows中所开放的端口包括135、137、138和139。此外,在2000、XP和.NET Server中445端口也是开放的。Windows在默认条件下开放的众所周知的端口就是这5个。
表1●服务器Windows系统开放的主要端口
表2●客户端Windows系统开放的主要端口
这些到底是不是真正必要的服务呢?要想下结论,就必须充分了解这些端口各自的作用。虽说在默认条件下是开放的,但如果保持这种默认设置不变,就会在无意识的情况下受到非法访问。因此,应该尽可能关闭不需要的服务。无论如何也不能停止的服务必须使用过滤软件,确保能够防止外部访问。
下面对几乎所有的Windows在默认条件下开放的最具代表性的5个端口即135、137、138、139和445等各自的作用作一详细介绍。了解它们的作用后,就能够推测出开放端口后可能存在哪些危险,从而就可以方便地制定相应的对策。
利用工具验证到的135端口的危险性
虽说大家都说非常危险,但即难以了解其用途,又无法实际感受到其危险性的代表性端口就是135号。但是2002年7月能够让人认识到其危险性的工具亮相了,这就是“IE'en”。
该工具是由提供安全相关技术信息和工具类软件的“SecurityFriday.com”公司(http://www.securityfriday.com)在网上公开提供的。其目的是以简单明了的形式验证135端口的危险性,呼吁用户加强安全设置。不过,由于该工具的威力非常大,因此日本趋势科技已经将该工具的特征代码追加到了病毒定义库文件中。如果在安装了该公司的病毒扫描软件的电脑中安装IE'en,就有可能将其视为病毒。
可以看到SSL的内容
IE'en是一种远程操作IE浏览器的工具。不仅可以从连接到网络上的其他电脑上正在运行的IE浏览器中取得信息,而且还可以对浏览器本身进行操作。具体而言,就是可以得到正在运行的IE浏览器的窗口一览表、各窗口所显示的Web站点的URL及Cookie,以及在检索站点中输入的检索关键词等信息。
该工具所展示的最恐怖的情况是,在非加密状态下可以看到本应受到SSL保护的数据。所以可以由此获取加密前或者还原后的数据。如果使用IE'en,甚至能够直接看到比如在网络银行等输入的银行现金卡密码等信息。
IE'en使用的是Windows NT4.0/2000/XP标准集成的分布式对象技术DCOM(分布式组件对象模块)。使用DCOM可以远程操作其他电脑中的DCOM应用程序。该技术使用的是用于调用其他电脑所具有的函数的RPC(Remote Procedure Call,远程过程调用)功能。而这个RPC使用的就是135端口。
利用RPC功能进行通信时,就会向对方电脑的135端口询问可以使用哪个端口进行通信。这样,对方的电脑就会告知可以使用的端口号。实际的通信将使用这个端口来进行。135端口起的是动态地决定实际的RPC通信所使用的端口的端口映射作用。
如果是利用DCOM技术开发的应用程序,都可以像IE浏览器那样进行操作。比如,连接正在利用Excel工作的其他电脑,获取单元格中输入的值,或者对这个值本身进行编辑并非不可能的事情。
不过,要想利用该方法操纵他人的电脑,就必须知道该机的IP地址和注册名以及密码。因此,通过因特网而受到第三者的攻击的可能性非常低。而危险性最高的是公司内部环境。尤其是客户端更为危险。这是因为在大多情况下不仅可以轻而易举地得到他人的IP地址和注册名,而且密码的管理也不是很严格。学校以及网吧等多台电脑采用相同设置的场合也需加以注意。
在公司内部环境中务必将DCOM设置为无效
图2●停止RPC服务的方法。由于Windows不能正常起动的可能性非常高,因此必须多加注意
回避这种危险的最好办法是关闭RPC服务。在“控制面板”的“管理工具”中选择“服务”,在“服务”窗口中打开“Remote Procedure Call”属性(图2)。在属性窗口中将启动类型设置为“已禁用”,自下次起动开始RPC就将不再启动(要想将其设置为有效,在注册表编辑器中将“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs”的“Start”的值由0x04变成0x02后,重新起动机器即可)。不过,进行这种设置后,将会给Windows的运行带来很大的影响。比如Windows XP Professional,从登录到显示桌面画面,就要等待相当长的时间。这是因为Windows的很多服务都依赖于RPC,而这些服务在将RPC设置为无效后将无法正常起动。由于这样做弊端非常大,因此一般来说,不能关闭RPC服务。
那么接下来要考虑的对策是信息包过滤。但是这同样也会给Windows的运行带来各种影响。比如,如果在客户端关闭135端口,就无法使用Outlook连接Exchange Server。因为管理分布式处理的MSDTC、负责应用程序之间的信息交换的MSMQ以及动态地向连接网络的电脑分配地址的DHCP等服务也都使用这个端口。
精通Windows网络的高桥基信表示:“在Windows服务中,有很多服务需要使用RPC。另外,Windows网络并不是设想在客户端与服务器之间存在防火墙的状态而组建的。因此公司内部网络环境中使用过滤功能时,应该在充分验证后加以实施”。也就是说,在公司内部环境中不仅是客户端,即便是服务器也无法关闭135端口。服务器方面,为了使活动目录和主域实现同步,就要使用135端口。
图3●使用dcomcnfg.exe将DCOM设置为无效的方法。取消“在这台计算机上启用分布式COM”选项
但是却有办法只将DCOM设置为无效。这就是利用Windows NT/2000/XP标准集成的“dcomcnfg.exe”工具。从DOS命令中运行该工具以后,打开分布式COM配置属性窗口,选择“默认属性”页标,取消“在这台计算机上启用分布式COM”选项即可(图3)。在公司内部不使用DCOM,并且不想让其他计算机操作自己电脑COM的时候,就应该采用这种设置。
如果是客户端,也有办法禁止远程登录电脑。依次选择“控制面板”、“管理工具”和“本地安全策略”,打开本地安全设置窗口,选择本地策略中的用户权利指派,然后利用该项下的“拒绝从网络访问这台计算机”,指定拒绝访问的对象。如果想拒绝所有的访问,最好指定为“Everyone”。
公开服务器应该关闭135端口
公开于因特网上的服务器基本上不使用RPC。如前所述,尽管危险性比公司内部环境低,但只要不运行使用DCOM的特定应用程序(只要不是必须的服务),就应该关闭135端口。比如只是作为Web服务器、邮件或DNS服务器来使用的话,即便关闭135端口,也不会出现任何问题。
不过需要通过因特网来使用DCOM应用程序时,就不能关闭该端口。但需要采取严格管理密码的措施。(待续)