SP2系统网络安全技术探秘
来源:天新网 更新时间:2007-12-16

 
  Windows XP SP2在网络安全技术方面做了很强力度的加强,还加入了兰牙技术,细化了权限等。下面我们就来看看这些变化的具体细节。

  Alerter 服务和 Messenger 服务修正

  Alerter 服务作用是是通知所选用户和计算机有关系统管理级警报。如果服务停止,使用管理警报的程序将不会受到它们。如果此服务被禁用,任何直接依赖它的服务都将不能启动。

  Messenger服务作用是传输客户端和服务器之间的 NET SEND 和 Alerter 服务消息。此服务与 Windows Messenger 无关。如果服务停止,Alerter 消息不会被传输。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。

  在Windows XP SP2中, 对于这两个服务的唯一也是重要的修正是: 这两个服务默认的启动类型均改为了禁止. 而在SP2之前的版本中, Alerter 服务启动类型为手动, Messenger服务启动类型为自动.

  Microsoft 这次修改这两个服务的默认启动状态的原因是这些服务在一定程度上允许了外来的网络连接,侵入和攻击. 另外, 一个次要的原因, 这两个服务目前已经很少使用. 禁用这两个服务, 将一定程度上提高了系统的安全级别. 因此, 对于那些经常使用这些服务和用户通讯的网络管理员, 还有在程序开发中使用这些服务进行网络通讯和广播的开发人员应该注意到这个重要的更正. 使用其他的更安全的通讯方式是我们推荐的方法. (当然, 你可以强制在管理工具中打开这两个服务, 虽然这不明智) 也许, Microsoft将要抛弃这两个服务了.. 确实, 它们带来的麻烦远远多于好处.

  蓝牙技术支持

  蓝牙技术作为在大量移动设备之间的一种廉价,短距离的连接和通讯方式, 目前已经得到越来越广泛的应用. 而用户也开始要求Microsoft在Windows中内置支持对蓝牙的支持, 在这次的Windows XP SP2更新中, 加入了对蓝牙无线技术的直接支持.

  主要的功能列表:

  蓝牙设备的计算机连接
  使用蓝牙键盘和鼠标建立无线桌面
  蓝牙设备间的文件传输
  蓝牙打印机的输出
  通过蓝牙移动电话连接到计算机网络或者Internet
  通过蓝牙移动电话设置到Internet的IP连接

  如果安装了第3方(当然也包括Microsoft)的相关程序, 系统将支持一些附加功能如:

  蓝牙手机或PDA设备和计算机之间的通讯录和日程的同步

  从GPS接受设备上读取坐标

  在Windows XP SP2中支持如下的蓝牙通讯协议样板(bluetooth profiles):

  Personal Area Networking (PAN), 允许基于蓝牙无线技术的IP连接;
  Hard Copy Replacement Profile (HCRP), 允许打印;
  Host Interface Device (HID), 允许蓝牙键盘, 鼠标和游戏操纵杆;
  Dial-Up Networking (DUN), 允许蓝牙移动电话按调制解调器的方式工作;
  Object Push Profile (OPP), 允许文件传输;
  Virtual COM ports (SPP), 允许使用旧技术的应用程序与蓝牙设备之间的通讯

  另外, SP2中还支持以下两个蓝牙技术特性:

  选择性挂起(Selective suspend), 这项特性可以降低通过USB连接到计算机上的蓝牙设备的电源消耗;
  启动模式键盘(Boot-mode keyboards), 这项特性可以使特殊配置的蓝牙键盘和BIOS协同工作;

  只有当系统中的蓝牙接收设备通过了WHQL(Windows Hardware Quality Labs)审核, 系统蓝牙支持才会打开. 你可以在以下地方找到系统内置的支持:

  控制面板 - 网络连接
  控制面板 - 蓝牙设备(Bluetooth Devices)
  系统任务托盘 - 蓝牙图标 - 右键点击 - 蓝牙任务菜单
  开始 - 附件 - 通讯 - 蓝牙文件传输向导(Bluetooth File Transfer Wizard)

  如果在升级SP2之前已经安装了第3方的蓝牙设备驱动, 升级SP2不会覆盖原有的驱动, 你可以之后再手工升级或者取代原有的第3方驱动。

客户端管理工具

  客户端管理工具是一套用来在本地和远程计算机上管理用户,计算机,服务和其他系统组件的MMC管理插件。在这些管理插件中的两套用于管理的系统对话框分别为:

  选择用户,计算机和组(Select Users, Computers, or Groups)
  通常用于共享目录的ACL(权限控制列表, access control lists),mmc管理插件中的远程计算机的重新指定,管理本地用户和用户组。
  查找用户,联系人和组(Find Users, Contacts, and Groups)
  通常用于在网上邻居中搜索活动目录,在添加打印机向导中查找打印机,在活动目录的用户和计算机管理单元中查找目录中的对象。

  这两个对话框都用于查找和选择本地计算机和活动目录中的对象,如用户,计算机,打印机和其他具有安全特性的对象。SP2中对客户端管理工具的修正只影响到远程管理计算机(或者活动目录)的那一部分工具。本地管理中虽然也有这两类对话框的应用,但并未受到SP2的影响。

  受到影响的MMC插件列表如下:

  认证(Certificates)
  计算机管理(Computer Management)
  设备管理器(Device Manager)
  磁盘管理器(Disk Management)
  时间查看器(Event VIEwer)
  组策略(Group Policy)
  索引服务(Indexing Service)
  IP安全监视(IP Security Monitor)
  IP安全策略(IP Security Policy)
  本地用户和组(Local Users & Groups)
  可移动存储(Removable Storage Management)
  组合策略(Resultant Set of Policy)
  服务(Services)
  共享文件夹(Shared Folders)
  WMI控件(WMI Control)

  受影响的对话框和管理工具:

  选择用户,计算机和组(Select Users, Computers, or Groups)
  查找用户,联系人和组(Find Users, Contacts, and Groups)
  net.exe

  以上列出的mmc管理单元在连接远程计算机时,远程计算机必须允许使用TCP445端口的入站才能建立通讯。然而Windows XP SP2的Windows Firewall 默认设置下阻止TCP445端口的入站通讯,从而管理的客户端将收到以下的错误信息:

Unable to access the computer Computer_Name. The error was Access is denied.
Unable to access the computer Computer_Name. The error was The network path was not found.
Failed to open Group Policy object on Computer_Name. You might not have appropriate rights.
Details: The network path was not found.
An object (Computer) with the following name cannot be found: “Computer_Name.” Check the selected object types and location for accuracy and ensure that you have typed the object name correctly, or remove this object from the selection.
Computer Computer_Name cannot be managed. The network path was not found. To manage a different computer, on the Action menu, click Connect to another computer.
System error 53 has occurred. The network path was not found.

  如果想正常使用这些管理单元,则必须在WIndows Firewall中打开TCP445端口的入站许可。进入命令行,输入命令:

  netsh firewall set portopening TCP 445 ENABLE

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的限制设定如下:

 

权限类别
Permission
管理员组
Administrators
所有用户
Everyone
匿名用户
Anonymous
启动

本地启动
本地激活
远程启动
远程激活

*只有管理员用户可以执行远程的启动和激活,而禁止了非管理员的远程激活也就达到了禁止了非管理员用户远程安装COM服务器的目的

本地启动
本地激活

*所有用户均应该能在任何情况下有权限执行本地的操作。

 
访问  

本地访问
远程访问

*允许远程访问也就允许了大部分的COM客户端操作情况, 包括COM客户端通过本地引用到达远程服务器的方式。在这种情况下应该禁止需要认证的远程访问。

本地访问

  这些变更可能会影响一些应用程序。尤其是如果应用程序需会仰赖以往所有人都具备远程访问权限的预设状况,因为 SP2 可能会停用未经验证的远程访问。SP2 应该会启用大多数COM 客户端案例,包括COM 客户端传送本机参考至远程服务器的常见状况,使客户端转换成服务器。SP2应该会启用所有的本机案例,而不必修改软件或操作系统

  如果用作COM 服务器,且会需要支持由非管理性COM 客户端执行远程启用功能,则您就应该考虑那是否为最佳状态。这种情况下就必须变更此功能的预设状态。如果需要支持未验证的远程呼叫,也应该考虑那是否为最佳状态。同样这种情况下必须变更此功能的预设状态。

  注意以下注册表键,它们包含了在这种情况下的ACL:

HKEY_LOCAL_MacHINESOFTWAREMicrosoftOle
MachineAccessRestriction= ACL
HKEY_LOCAL_MACHINESOFTWAREMicrosoftOle
MachineLaunchRestriction= ACL

  ACL的键值类型为REG_BINARY,它记录了访问计算机上的COM类和对象的权限信息,以下是权限数据代表的值的具体列表:

COM_RIGHTS_EXECUTE 1
COM_RIGHTS_EXECUTE_LOCAL 2
COM_RIGHTS_EXECUTE_REMOTE 4
COM_RIGHTS_ACTIVATE_LOCAL 8
COM_RIGHTS_ACTIVATE_REMOTE 16

  这些ACL权限值均可由通常的安全进程所建立。需要注意的是,COM_RIGHTS_EXECUTE权限必须设定,否则COM对象的ACL权限将因为缺少这个基本执行权限而处于无效状态。

 细化COM权限

  COM服务器应用程序有两类权限,启动权限访问权限。启动权限是在激活COM服务时授权审核的控制,它在注册表中定义为安全描述。访问权限是在访问COM服务时的授权审核的控制,它定义为由COM体系通过CoInitializeSecurity API提供或在注册表中定义的安全描述。COM访问权限的另一个区别是距离。在SP2之前的Windows XP系统中,当用户存取COM 应用程序时,他们有权在本机或远程使用。但COM应用程序无法提供更细化的控制。SP2 细化了COM 权限,让管理员可根据距离的观念,弹性控制计算机的COM权限原则。也就是分为本地远程。本地的COM消息通过Local Remote Procedure Call(LRPC)协议传输,远程COM消息则通过Remote Procedure Call (RPC)协议,如TCP。因此,当了解了COM访问的来源,有限制的授权远程的访问,可以一定程度上缓和受到网络攻击的风险。

  COM激活是指在客户端通过调用CoCreateInstance或其变体得到COM委托界面的行为。激活权限的一个不利方面是,有时为了满足客户端的请求,COM服务必须在启动状态。启动权限声明了被允许启动COM服务器的用户列表,访问权限则声明了被允许激活COM对象或者当COM服务运行时被允许访问的用户列表。

  SP2的另一个改变是访问权限和激活权限的分离以反映两个不同的操作,激活权限从以前的访问类权限ACL移到了启动类权限ACL中。当一个COM界面指针同时相关了激活和启动过程,则激活权限和启动权限逻辑上将属于同一个ACL。这样改变的另一个原因是由于我们通常都在程序中队COM对象的访问权限作代码级的控制,而启动类权限可以在管理单元中方便的设置,把激活权限放在启动类权限ACL中将更有利于管理员对COM对象激活的控制。

  权限控制入口(Access Control Entry, ACE)中启动类权限分为4种具体的权限:

  • 本地启动(LL)
  • 远程启动(RL)
  • 本地激活(LA)
  • 远程激活(RA) 

  访问类权限分为2种具体的权限:

  • 本地访问(LC)
  • 远程访问(RC)

  这种COM的安全状态定义可以允许管理员进行更详细的配置。比如可以设置一个COM服务允许本地的所有用户访问,但只有管理员才能远程访问,而只需要对这个COM的安全声明进行配置即可。

  兼容性

  为了向前的兼容,现有的安全声明项定义为同时允许或拒绝本地和远程访问。也就是说ACE将同时允许本地和远程访问或者同时拒绝本地和远程访问。

  对于访问和启动权限,不存在向前的兼容性,只是在激活权限上有一个要注意的地方,在COM服务器的现有的安全声明中如果已设定的启动权限比访问权限有更多限制,而且比客户端启用案例所需的最低需求的限制还多,此时必须修改启动权限ACL,使授权客户端得到合适的权限。

  对于使用默认的安全设定的COM应用程序,不存在向前的兼容性问题。对使用COM激活来动态启动的COM应用程序,也不存在向前的兼容性问题,因为启动权限ACL中已经包含了可以激活这个对象的所有用户。如果这些权限没有正确的设置,当COM服务器没有运行,没有激活权限的用户在试图激活这个COM对象时可能会激活失败。

  面临最多的兼容性问题将是那些已经通过其他机制启动了的COM应用程序,例如使用资源管理器,服务控制管理启动的COM应用程序。可以通过使用缺省的访问和启动权限覆盖来激活并启动COM服务,或者使用比访问权限更多限制的启动权限来激活并启动。使用缺省的安全覆盖覆盖时,必须核对应用程序特定的启动权限ACL是否给了适当的用户激活权限的授权。如果没有,则必须修改应用程序特定的启动权限,以提供给适当的用户所需的激活授权以保证这些应用程序和Windows组件能够正常的使用COM服务。这些应用程序特定的启动权限储存在注册表中。

  如果将升级至Windows XP SP2的系统还原到以前的Service Pack,则经过编辑以允许本地访问,远程访问或两者都允许的ACE都将被解译为同时允许本地和远程访问。经过编辑以拒绝本地存取,远程访问或两者都拒绝的ACE将被解译为同时拒绝本地和远程访问。因此,在卸载Service Pack 2时,必须先验证所有的ACE。

 Windows XP SP2中DCOM设定的新增和更改

设置项 位置 旧缺省值 新缺省值 可能的值
MachineLaunch Restriction HKEY_LOCAL_ MACHINE SOFTWARE MicrosoftOle

Everyone = LL,LA,RL,RA

Anonymous =LL,LA,RL,RA

(新注册表键)

Everyone = LL,LA,RL,RA

Anonymous =LL,LA

ACL

MachineAccess Restriction HKEY_LOCAL_ MACHINE SOFTWARE MicrosoftOle

Everyone = LC,RC

Anonymous =LC,RC

(新注册表键)

Everyone = Local, Remote

Anonymous =Local

ACL

CallFailure LoggingLevel HKEY_LOCAL_ MACHINE SOFTWARE MicrosoftOle

n/a

此键缺省不存在,缺省值为2

在缺省状态下不记录事件日志,此值设置为1时,开始记录,协助分析故障原因。

注意:在记录启用设置下,注意监视事件日志的大小,因为COM事件的日志可能很大。

1: 访问COM服务器进程时总是记录失败日志;

2: 访问COM服务器进程时从不记录失败日志;

InvalidSecurity
Descriptor
LoggingLevel
HKEY_LOCAL_ MACHINE SOFTWARE MicrosoftOle

n/a

此键缺省不存在,缺省值为1

在缺省状态下不记录无效安全描述事件,此事件极少发生。

1: COM服务发现无效安全描述时总是记录;

2: COM服务发现无效安全描述时从不记录;

DCOM:Machine Launch Restrictions in Security Descriptor Definition Language (SDDL) Syntax (GPO)
Computer Configuration Windows Settings
Local PolicIEs Security Options

n/a

未定义 SDDL(Security Descriptor Definition Language)格式的ACL, 此策略值覆盖上面的 MachineLaunch Restriction 注册表值
DCOM:Machine Access Restrictions in Security Descriptor Definition Language (SDDL) Syntax (GPO)
Computer Configuration Windows Settings
Local Policies Security Options

n/a

未定义 SDDL(Security Descriptor Definition Language)格式的ACL, 此策略值覆盖上面的 MachineAccess Restriction 注册表值