DCOM(分布式组件对象模式)的增强安全
Microsoft DCOM 是一种多层应用的理想技术,它可以使ActiveX的组件在网络上工作,使开发人员很容易地跨越不同机器的界限建立系统。开发人员不必担忧网络程序和系统匹配就可以把用不同语言写成的组件集成到一起。DCOM有线通讯协议(DCOM wire protocol)在COM组件之间透明的提供了稳定,安全和高效的通讯。关于DCOM技术详细请参考MSDN文档和Technet文档(白皮书)。
大量的 COM 应用程序都包含了一些安全相关的代码,如 CoInitializeSecurity 等,当使用弱安全设定时,通常都允许未经认证的进程访问。在SP2之前的Windows中,管理员无法修改或覆盖这些设定来提高DCOM的安全等级,也无法了解计算机上的COM服务的安全级别,虽然可以对已注册的COM组件进行安全设定的系统检测,但安装Windows XP的计算机缺省有近150个COM组件服务器,作如此之多的检测显然是不现实的,而且,在缺少源代码的情况下,想要了解软件在服务器上的安全设定也几乎是不可能的。在COM体系中包含了RpcSs系统服务,这个服务通常在系统启动时开始加载,用于管理COM对象的激活,对象表的运行,远程DCOM helper服务的提供。他同时也暴露了RPC界面使其能被远程调用。由于某些COM服务器允许未经认证的远程访问,这些DCOM界面将允许包括未认证用户在内的所有用户的访问。从而,RpcSs服务很容易招来未认证的远程计算机的恶意攻击。
计算机范围限制策略(Computer-wide restrictions)
为了缓解这个问题,在WIndows XP SP2中引入了计算机范围限制策略(Computer-wide restrictions),在计算机的COM服务器上的任何访问,激活和运行,计算机范围限制策略都提供了对计算机范围ACL的附加权限审核,也就是一个附加的AccessCheck调用,如果权限审核失败,调用,激活或运行将被拒绝。而这些AccessCheck针对的是服务器原有的ACL之外的附加列表,因此也称之为计算机范围ACL(computerwide access control list)。计算机范围限制策略提供了访问任何COM服务器所必须通过的一个最小许可标准。在组件服务(Component Services)mmc中可以单独设定分别具有运行,激活或访问权限的作用域ACL。如图:
由此,应用程序通过CoInitializeSecurity或者其他的特定的安全设定造成的弱安全DCOM访问现在可以通过计算机范围ACL来得到较合理的解决。也就是说,不管服务器的特定设置是什么,这个最小许可标准必须审核通过。
这些限制缓和许多 COM 应用程序在设定上的弱点,让管理员对计算机上所有已登录之 COM 应用程序的安全性设定,可以有更深入的了解。它也让管理员有能力停用外来的 DCOM 启动,激活和访问。这些存取控制在每次访问、启动和激活计算机上任何 COM 服务器时,针对计算机范围ACL 执行额外的 AccessCheck 检查。如果 AccessCheck 失效,就会拒绝访问、启动和激活要求。这并不影响服务器专用 ACL 所做的任何 AccessCheck。事实上,它提供的是最基本的验证,一切都必须经过此验证才能存取计算机上的 COM 服务器。其中包括计算机范围启动和激活ACL,以及计算机范围访问权限的ACL 。这些可以透过组件服务MMC管理单元加以设定。
默认情况下,WIndows XP的限制设定如下: