回避这种危险的最好办法是关闭RPC服务。在“控制面板”的“管理工具”中选择“服务”,在“服务”窗口中打开“Remote Procedure Call”属性。在属性窗口中将启动类型设置为“已禁用”,自下次起动开始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端口。
但是却有办法只将DCOM设置为无效。这就是利用Windows NT/2000/XP标准集成的“dcomcnfg.exe”工具。从DOS命令中运行该工具以后,打开分布式COM配置属性窗口,选择“默认属性”页标,取消“在这台计算机上启用分布式COM”选项即可。在公司内部不使用DCOM,并且不想让其他计算机操作自己电脑COM的时候,就应该采用这种设置。
如果是客户端,也有办法禁止远程登录电脑。依次选择“控制面板”、“管理工具”和“本地安全策略”,打开本地安全设置窗口,选择本地策略中的用户权利指派,然后利用该项下的“拒绝从网络访问这台计算机”,指定拒绝访问的对象。如果想拒绝所有的访问,最好指定为“Everyone”。
公开服务器应该关闭135端口 公开于因特网上的服务器基本上不使用RPC。如前所述,尽管危险性比公司内部环境低,但只要不运行使用DCOM的特定应用程序(只要不是必须的服务),就应该关闭135端口。比如只是作为Web服务器、邮件或DNS服务器来使用的话,即便关闭135端口,也不会出现任何问题。
不过需要通过因特网来使用DCOM应用程序时,就不能关闭该端口。但需要采取严格管理密码的措施。
具体而言,就是说通过137端口除了该机的计算机名和注册用户名以外,还可以得到该机是否为主域控制器和主浏览器、是否作为文件服务器使用、IIS和Samba是否正在运行以及Lotus Notes是否正在运行等信息。据SecurityFriday.com公司的Michiharu Arimoto介绍:“除了计算机名以外,还可以准确地了解IIS、主域控制器、主域浏览器以及文件服务器等相关信息。虽说不是百分之百,但有时还能够得到其他信息”。
也就是说,只要您想获得这些信息,只需向这台个人电脑的137端口发送一个请求即可。只要知道IP地址,就可以轻松做到这一点。不只是公司内部网络,还可以通过因特网得到这样的信息。
对于攻击者来说,这简直太方便了,可以很容易地了解目标电脑的作用及网络的结构。随意地泄漏这样的信息,就好象是很友好地告诉攻击者应该如何来攻击自己的电脑。比如,如果知道IIS服务正在运行,就可以轻松地了解这台电脑上已经起动的服务。攻击者根本不必特意地通过端口扫描来寻找可以下手入侵的端口。
另外,如果捕捉到正在利用137端口进行通信的信息包,还有可能得到目标主机的起动和关闭时间。这是因为Windows起动或关闭时会由137端口发送特定的信息包。如果掌握了目标主机的起动时间,就可以非常轻松地使用上一次所讲的IE`en等软件通过135端口操作对方的DCOM。
使用137端口,管理计算机名 137端口为什么会把这种信息包泄漏到网络上呢?这是因为,在Windows网络通信协议--“NetBIOS over TCP/IP(NBT)”的计算机名管理功能中使用的是137端口。
计算机名管理是指Windows网络中的电脑通过用于相互识别的名字--NetBIOS名,获取实际的IP地址的功能。可以用两种方法使用137端口。
一种方法是,位于同一组中的电脑之间利用广播功能进行计算机名管理。电脑在起动时或者连接网络时,会向位于同组中的所有电脑询问有没有正在使用与自己相同的NetBIOS名的电脑。每台收到询问的电脑如果使用了与自己相同的NetBIOS名,就会发送通知信息包。这些通信是利用137端口进行的。
另一种方法是利用WINS(Windows因特网名称服务)管理计算机名。被称为WINS服务器的电脑有一个IP地址和NetBIOS名的对照表。WINS客户端在系统起动时或连接网络时会将自己的NetBIOS名与IP地址发送给WINS服务器。与其他计算机通信时,会向WINS服务器发送NetBIOS名,询问IP地址。这种方法也使用137端口。