通过使用本指南前几章中讨论的方法和原则,本章介绍了规划更安全地运行服务时必须执行的任务。 要确保服务安全,您应该执行以下任务: | • | 审核所有服务器以确定基本服务属性。 | | • | 确定实际需要运行的服务。 | | • | 确定并消除服务的所有域管理员帐户。 | | • | 使用最小权限层次结构来部署服务。 | | • | 为域管理员特例创建高安全性服务器组。 | | • | 管理服务帐户密码更改。 | | • | 强制使用强密码。 | | • | 自动完成弱管理员密码的测试。 |
本页内容审核所有服务器以确定基本服务属性必须确定组织内存在的服务器的确切数目。尽管这项任务听起来很简单,但是大型组织可能会发现确定其拥有的每个服务器以及确定每台计算机上的服务需要的管理级别是极其复杂的。例如,在外围网络中运行的计算机需要非常高的服务管理级别,以减少这些计算机的受攻击面。 您应该审核每个服务器以列出所有运行的服务,并记录每个服务用于身份验证的登录凭据。可以使用以下工具来帮助完成此任务: | • | Microsoft® Windows Server™ 2003 中的“系统信息”。可以使用“系统信息”来查看本地计算机或其他远程计算机上所有服务的完整属性列表。但是,这种方法并不适用于需要审核大量服务器的情况。要访问该工具,请单击“开始”,指向“所有程序”,指向“附件”,指向“系统工具”,然后单击“系统信息”。 | | • | “服务”管理控制台。在“服务”管理控制台中,可以使用某个服务属性页的“登录”选项卡来查找该服务用来登录以进行身份验证的帐户。也可以使用“依存关系”选项卡来查看当前服务所依赖的服务以及依赖于当前服务的服务。依存关系数据是审核服务器时要收集的基本信息。但是,这种方法并不适用于需要审核大量服务器的情况。 | | • | Windows Management Instrumentation (WMI)。可以使用 WMI 来获取所有服务器上运行的服务的相关信息。可以将 WMI 与编程工具或脚本实用程序(如 Windows Scripting Host)结合使用,来检索有关计算机大多数方面的配置详细信息或对计算机进行更改。有些管理工具支持 WMI,如“系统属性”、“系统信息”以及“服务”的“依存关系”组件。服务依存关系用于确定当前服务所依赖的服务以及依赖于当前服务的服务。 | | • | Windows Management Instrumentation 命令行 (WMIC)。WMIC 提供了一个简单的 WMI 命令行工具界面,用于管理运行 Windows 操作系统的远程计算机。WMIC 与现有 shell 和实用程序命令交互操作,您可以使用脚本或其他面向管理的应用程序方便地对其进行扩展。 例如,可以使用“wmic service get”命令来获取指定服务的所有属性的相关信息,其中包括其以下内容: | • | Description | | • | DisplayName | | • | ErrorControl | | • | InstallDate | | • | PathName | | • | ProcessId | | • | StartMode | | • | StartName | | • | Status |
语法示例: 注意:以下代码片段中的某些部分已放在多个行中显示,这样做只是为了更便于阅读。应该将这些命令放在一行中输入。
SERVICE GET Name,DisplayName,ProcessId,Started, StartMode,StartName 可以使用“wmic service list brief”命令来检索安装的所有服务的基本属性列表,如下所示: | • | ExitCode | | • | Name | | • | ProcessId | | • | StartMode | | • | State | | • | Status |
可以在安装了 WMIC 的任何计算机上使用 WMIC 来管理运行 WMI 的任何远程计算机。要使用 WMIC 对目标计算机进行远程管理,目标计算机无需安装或运行 WMIC。要远程管理计算机,您需要使用“/node:<computername>”命令,该命令请求将计算机添加到要从中检索信息的节点列表中。 语法示例: 注意:以下代码片段中的某些部分已放在多个行中显示,这样做只是为了更便于阅读。应该将这些命令放在一行中输入。
WMIC /NODE:Server1,Server2,Server3 SERVICE GET Name,DisplayName,ProcessId,Started,StartMode, SystemName 还可以提供一个文本文件的位置,该文件列出了要使用 WMIC 在上面执行操作的远程计算机。 语法示例: WMIC /NODE:@"C:\MyServerList.txt" SERVICE LIST BRIEF 在以下典型的情况下,可以使用 WMIC 来简化任务: | • | 计算机的本地管理。您正在使用此计算机并使用 WMIC 命令来管理它。 | | • | 计算机的远程管理。您正在使用一台计算机,并使用 WMIC 来管理另一台计算机。 | | • | 多个计算机的远程管理。您正在使用一台计算机,并通过 WMIC 使用一个命令来管理多个计算机。 | | • | 使用远程会话进行的计算机远程管理。可以使用远程会话技术(如 Telnet 或终端服务)连接到远程计算机,并使用 WMIC 对其进行管理。 |
| | • | 使用管理脚本进行的自动管理。可以使用 WMIC 编写简单的管理脚本来自动完成计算机管理(本地、远程或多个计算机 - 按顺序或同时进行)。 有关 WMI 的详细信息,请参见 WMI:Windows Management Instrumentation 简介主题(网址为:www.microsoft.com/whdc/system/pnppwr/wmi/ WMI-intro.mspx)和 Windows Management Instrumentation 概述页面(网址为:www.microsoft.com/windows2000/en/server/ help/windows_WMI_overview.htm?id=751)。 | | • | 其他企业管理工具。可以使用几个其他管理工具来帮助审核,其中包括: | • | Microsoft Systems Management Server | | • | Tivoli | | • | OpenView | | • | Lieberman Software Service Account Manager |
|
通过创建服务器及其服务的主列表,可以帮助确定并消除与服务有关的安全风险。 您可以使用审核来创建使用以下帐户的所有服务的清单: | • | 具有域管理员权限的域用户帐户。 | | • | 在多个服务器上使用的单个域用户帐户。 |
确定实际需要运行的服务首次安装 Windows Server 2003 时,操作系统将创建几个默认服务,并将它们配置为在计算机启动时运行。威胁和对策指南中包含一个 Microsoft Excel 工作簿“Windows 默认安全和服务配置”,它介绍了所有系统服务的默认启动类型设置。 这些默认服务可以提供应用程序或客户机兼容性,或者便于进行系统管理。但是,您的组织环境中可能并不需要所有这些服务,您应该仔细评估所需的服务。 定义所需的服务和应该禁用的服务是一个很复杂的过程。有些服务显然应该关闭,而其他服务是否关闭却很难判断。您应该使用以下基本策略: | • | 如果没有使用某个特定服务的具体原因,请将其禁用。 | | • | 如果认为以后可能需要使用该服务,请将其禁用,直到需要时为止。 |
计算机上需要运行的服务在很大程度上取决于该计算机的角色。例如,只应在 Web 服务器或需要 Internet 信息服务 (IIS) 的计算机(如应用程序服务器)上安装 IIS。如果服务器未托管远程访问服务或 Telnet 会话,则应该禁用或删除这些服务。在某些情况下,软件(如系统管理工具)将其自己的服务添加到您的计算机上运行的服务中。了解这些服务、它们用来登录的帐户以及它们所需的访问级别至关重要。 Microsoft 已发布了很多有关如何基于计算机角色将其锁定的指南。这些指南介绍了特定角色(如域控制器、Web 服务器、Windows XP 客户机等)所需的服务,可以在以下位置找到这些指南: 在测试或生产前的准备环境中,如果要确定是否需要某个服务,可以先将其关闭,然后监视计算机一段时间,看其能否正常工作。不过,您应该知道,“服务”控制台不允许停止某些核心服务,甚至不允许修改其启动类型,如 Remote Procedure Call (RPC) 服务和 Plug and Play 服务。还有一些“服务”控制台不允许停止但允许更改启动类型的服务,如 Event Log 服务和 Security Accounts Manager 服务。 如果您不确定特定服务的功能,请使用以下一种或多种方法来获取详细信息: | • | 请参见威胁和对策指南第 7 章“系统服务”中更详细的服务说明,可以在以下网址下载该指南:http://go.microsoft.com/fwlink/?LinkId=15160。 | | • | 阅读服务说明。要访问此说明,请打开“服务”控制台,找到相关服务,右键单击服务名称,然后单击“属性”。 | | • | 使用安全配置向导来获取服务说明。 |
在分析需要运行的服务时,带有 Service Pack 1 (SP1) 的 Windows Server 2003 中提供的安全配置向导可能非常有用。 使用安全配置向导来减少受攻击面可以使用安全配置向导 (SCW) 基于功能要求快速且方便地配置运行 Microsoft Windows 的服务器(如 Web 服务器、域控制器或其他计算机),同时制订安全策略以最大程度地减少攻击漏洞。要安装 SCW,请打开“控制面板”,双击“添加或删除程序”,单击“添加/删除 Windows 组件”,在“Windows 组件”页面的“组件”下,选中“安全配置向导”复选框,然后单击“下一步”,向导完成时,请单击“完成”。该过程将安全配置向导快捷方式添加到“管理工具”文件夹中。 安全配置向导可以帮助您发现组织服务器当前运行的服务及其对其他服务的依赖性。在部署新的服务器并试图确定所需的服务时,该向导可能是一个非常有用的任务指导。可以使用组策略来部署 SCW 生成的策略,您可以通过组策略将特定服务器角色同时部署到组织单位 (OU) 或组织单位层次结构中的几个类似的计算机上。 “服务器角色”一词用于定义计算机在组织中执行的主要功能。服务器角色示例包括:文件服务器、域控制器和 Web 服务器角色。由于每个角色所需的服务、入站端口和设置各不相同,因此创建的 SCW 策略应该与您希望每个计算机所担当的角色相匹配。 可以使用 SCW 来帮助减少运行带有 SP1 的 Windows Server 2003 的计算机的受攻击面。该向导指导您完成基于特定服务器所担当的角色来创建安全策略的过程。创建策略后,可以将其应用于一个或多个配置类似的服务器。 SCW 包括以下部分: | • | 基于角色的服务配置 | | • | 网络安全 | | • | 注册表设置 | | • | 审核策略 | | • | Internet 信息服务(仅当选择了 Web 服务器角色时可见) |
就本指南而言,只有向导中的“基于角色的服务配置”部分与本文密切相关。可以使用向导的该部分,基于选定服务器的角色和其他功能来配置服务。 应该将选定服务器上安装的角色作为所创建的安全策略的基础。可以将选定服务器作为要应用策略的服务器,也可以通过选定服务器来创建策略,然后将策略应用于具有类似角色的一组服务器。 安全配置向导的工作方式SCW 通过向用户询问一系列旨在确定服务器功能要求的问题,来减少运行 Windows 的服务器的受攻击面。然后,它禁用服务器所担当的角色不需要的功能。除了作为基本的安全最佳做法外,受攻击面减少还会增加 Windows 环境的多样性,并且减少了出现漏洞时必须立即更新的计算机数。 SCW 回答了有关 Windows Server 2003 的最常见问题:您可以关闭哪些服务? 迄今为止,这个问题仍然很难回答,因为安装的技术有数千种可能的组合,每一种组合都带有一个依存关系层次结构,这些依存关系可能存在于任何基于 Windows 的计算机上。在添加其他服务器(如 Microsoft Exchange Server 或 SQL Server™)时,依存关系也会再次发生变化。SCW 解决了这个问题,并为管理员提供了一种方法,将服务器配置为只运行为服务器分配的角色所需的那些服务。通过访问一个包含有关 Windows Server 2003 及其上面运行的 Microsoft 产品所需数据的可扩展标记语言 (XML) 数据库,SCW 实现了该功能。 安全配置向导的优点使用 SCW 来选择功能角色时,可以自动完成以下操作: | • | 禁用不必要的服务。 | | • | 禁用不必要的 IIS Web 扩展。 | | • | 封堵未使用的端口。 |
安全配置向导的局限性尽管 SCW 没有锁定 LM 身份验证级别和服务器消息块 (SMB) 签名等安全设置,但是本节前面列出的 Windows Server 2003 和 Windows XP 安全指南还是讨论并提供了这些设置的建议。 确定并消除服务的所有域管理员帐户通过使用来自服务器审核的信息,可以确定并消除用于服务的所有可能的域管理员帐户。通过尽可能多地消除使用域管理员帐户的服务实例,就会朝着保证服务安全方向迈出重要的第一步。只要有可能,就应该使用“本地服务”、“网络服务”或“本地系统”帐户重新部署服务(如本章下一节中所述)。 组织应该尝试消除包括以下帐户的服务部署: | • | 具有管理员等效权限且作为服务登录的用户帐户。 | | • | 作为服务登录的内置管理员帐户。 | | • | 在低安全性服务器上作为服务登录的域管理员帐户。 |
使用最小权限层次结构来部署服务应该使用具有运行服务所需的最小权限的帐户。对于使用具有较高权限的帐户部署的服务,您应该使用具有较少权限的帐户重新进行部署。 最小权限层次结构应按以下顺序使用帐户: 1. | 本地服务。该帐户类似于“本地系统”,尽管后者在本地计算机上拥有最小权限。以“本地服务”登录的服务使用具有匿名凭据的空会话来访问网络资源。该帐户的权限必须仅限于成功运行服务所需的那些人员使用。 | 2. | 网络服务。该帐户类似于“本地系统”,尽管后者在本地计算机上拥有最小权限。以“网络服务”登录的服务使用计算机帐户的凭据(其中,将计算机引用为 <domain_name\computer_name>$)来访问网络资源。该帐户的权限必须仅限于成功运行服务所需的那些人员使用。 | 3. | 唯一用户帐户。仅当无法以“本地服务”或“网络服务”运行某个服务时,才应该以唯一用户帐户来运行该服务。应该使用唯一本地用户帐户来运行只需要本地计算机权限的服务,如 IIS 和 SQL Server。但是,必须在分布式计算机上运行的应用程序需要使用唯一域用户帐户,就像分布式应用程序(如 Systems Management Server 和 Microsoft Operations Manager)一样。需要访问网络资源的任何应用程序也需要唯一域用户帐户。对于需要唯一域用户帐户的每个应用程序,应该使用单独的唯一域用户帐户。例如,如果运行多个 ASP.NET 应用程序,则应该确保每个应用程序都使用其自己的唯一用户帐户。唯一用户帐户权限必须仅限于成功运行服务所需的那些人员使用。只有在必要时,才能将其他管理权限分配给为其配置该服务的唯一帐户。还应该将唯一帐户的组成员身份限制为所需的那些组。唯一用户帐户应该遵循组织制订的安全密码使用策略。如果多个计算机使用相同或相关的服务,则每个唯一用户帐户的密码也必须是唯一的。 | 4. | 本地系统。请记住,以“本地系统”登录的服务在本地计算机拥有大量权限并且在网络上提供计算机凭据(引用为 <domain_name\computer_name>$)。该帐户的权限必须仅限于成功运行服务所需的那些人员使用。 | 5. | 本地管理员帐户。仅当以“本地服务”、“网络服务”、唯一域用户帐户或“本地系统”帐户运行某个服务时,才应该以本地管理员帐户运行该服务。要降级以本地管理员运行的服务,有时可以使用本地用户帐户,并添加所需的特定权限或更改系统访问控制列表 (SACL) 项。如果使用这些方法之一,则远比使用具有未知漏洞且在计算机上以管理员运行的第三方服务要好得多。还应该让软件供应商成为评估和购买过程的核心部分,以使其了解您的环境中最小权限服务的重要性。再者,不应该让软件供应商对以管理员帐户运行其服务而掉以轻心。应该为供应商提供有关服务实际需要访问的资源和所需的权限级别的指导信息。只有在必要时,才应该为帐户分配配置了该服务的计算机的本地管理员权限。本地管理员帐户应该遵循组织制订的安全密码使用策略。如果多个计算机使用相同或相关的服务,则每个本地管理员帐户的密码也必须是唯一的。 | 6. | 域管理员帐户。使用域管理员帐户运行的服务是安全性最差的情况。组织应该努力避免所有此类情况。如果您使用这种方法,则必须将此情况中的所有计算机作为高安全性服务器进行管理,并使用与域控制器或其他高价值网络资产的相同保护方法加以保护。随后的几节更详细地讨论了高安全性服务器。 |
下图中的流程图显示了确定用来安全地运行服务的帐户类型时要考虑的事项。  图 3.1 服务部署的最小权限层次结构 查看大图 为域管理员特例创建高安全性服务器组如果您确定运行服务时必须进行域管理员级别的身份验证,则只应在高安全性服务器上托管该服务。高安全性服务器通常包括: | • | 域控制器。 | | • | 运行的服务被配置为以具有域管理员等效权限的帐户登录的服务器。 | | • | 受信任在林内进行委派的服务器。 | | • | 运行的服务受信任在林内进行委派(使用 Windows Server 2003 中的“约束委派”)的服务器。有关该功能的详细信息,请参见 Kerberos 协议转换和约束委派,网址为:www.microsoft.com/china/technet/prodtechnol/windowsserver2003/ technologies/security/constdel.mspx。 |
创建高安全性服务器组涉及到以下主要步骤: 1. | 确定要指定为高安全性服务器的服务器。 | 2. | 在企业的每个林中创建一个通用安全组,例如,将其命名为“High Security Servers”。 | 3. | 将指定的安全服务器的计算机帐户添加到新的通用组中。 | 4. | 在每个林的每个域中,创建一个域本地组(例如,将其命名为“All Domain Admin Accounts”),然后将域管理员等效用户帐户添加到该新组中。 | 5. | 在每个林的每个域中,创建一个域级组策略对象 (GPO),然后将策略设置为限制在所有计算机上使用域级管理员帐户来运行服务。将该策略设置为“拒绝作为服务登录”和“拒绝作为批处理作业登录”用户权限,然后将 GPO 上的“允许读取”和“允许应用”权限应用于刚创建的 All Domain Admin Accounts 域本地组。 | 6. | 在每个林的每个域中,在每个 GPO 上使用组策略筛选来筛选 High Security Servers 组,以便仍允许该组的成员使用域级管理员帐户来运行服务。可通过将 GPO 上的“允许读取”和“拒绝应用”权限仅应用于 High Security Servers 通用组来完成该操作。 |
要成功管理 High Security Servers 通用组的成员,请制订一个内部工作流程来请求为该组添加成员。如果将请求的服务器添加到组中,该流程应该包括验证请求和评估相关安全风险的步骤。工作流程可能就像将电子邮件发送到请求别名一样简单,但理想情况下,它应该是一个自动完成的过程。Solution Accelerator for Business Desktop Deployment Enterprise Edition 包含一个 Zero Touch Provisioning (ZTP) 组件,它提供了一个自动过程来完成此过程。 有关详细信息,请参见以下指南: 管理服务帐户密码更改为服务分配帐户时,服务控制管理器 (SCM) 要求在分配前输入该帐户的正确密码。如果提供的密码不正确,SCM 将拒绝该帐户。 如果将服务帐户配置为使用“本地系统”、“本地服务”或“网络服务”帐户,则无需管理服务帐户的密码,因为操作系统将对其进行管理。因此,这些服务帐户不需要进行密码管理。 对于其他服务帐户,SCM 将帐户密码存储在服务数据库中。在分配密码后,SCM 不会验证服务数据库中存储的密码和在 Active Directory® 目录服务中为用户帐户分配的密码是否继续匹配。因此,可能会出现类似于以下的情况: 1. | 将服务配置为以特定用户帐户运行。 | 2. | 服务以使用当前帐户密码的帐户启动。 | 3. | 您更改了用户帐户的密码。 | 4. | 服务继续运行。但是,如果服务停止,将无法重新启动它,因为 SCM 继续使用旧的无效密码。这是因为,Active Directory 中对密码所做的更改不会改变服务数据库中存储的密码。 |
如果以标准域或本地用户帐户运行服务,每次用户帐户密码更改时,必须更新这些服务密码。如果您不确定以该帐户运行的服务,或者不确定具有以该帐户运行的服务的计算机,该过程可能需要很长时间。您应该准确无误地记录这些类型的服务帐户及其密码的使用情况。对于大型组织来说,这可能意味着,他们需要将加密数据文件脱机,然后将其存储到安全的电子仓库中;但对于小型组织来说,将文档存放在加锁的抽屉或保险柜中可能会更合适。 要点:如果使用“Active Directory 用户和计算机”或“本地用户和组”控制台来更改应用程序(如 Exchange Server 或 SQL Server)的服务帐户密码,则还必须在应用程序界面中更改该密码。 注意:有关如何编写自动完成更新服务帐户密码任务的工具的详细信息,请参见更改服务的用户帐户密码,网址为:http://msdn.microsoft.com/library/default.asp?url=/library/ en-us/ad/ad/changing_the_password_on _a_serviceampaposs_user_account.asp。 强制使用强密码您应该要求组织的网络管理员强制使用强密码。他们应该使用组策略中的密码策略,提示用户在预定时间后更改他们的密码。强密码最少应该包括 10 个字符(最好是 15 个或更多),并且应该包括大写和小写字母、数字和符号的组合。在 Windows 2000 Server 和 Windows Server 2003 中,您可以使用组策略来强制使用强密码。有关详细信息,请参见帐户密码和策略(网址为:www.microsoft.com/technet/prodtechnol/windowsserver2003/ technologies/security/bpactlck.mspx)和 Windows Server 2003 安全指南(网址为:http://go.microsoft.com/fwlink/?linkid=14845)。 自动完成弱管理员密码的测试您应该要求组织的网络管理员定期使用自动测试工具,检测使用其本地管理员帐户的弱密码部署的服务器。测试应该尝试猜测每台基于 Windows 的计算机上存在的内置本地管理员帐户的密码。 弱密码代表了网络上最常见的漏洞之一,也是入侵者获取计算机的管理员访问权限并破坏任何存储的服务帐户凭据的最简便的方法之一。 使用 Microsoft 基准安全分析器可以使用 Microsoft 基准安全分析器 (MBSA) 工具扫描网络上的每台计算机并查找弱密码。有关 MBSA 的详细信息以及要下载工具,请参见 Microsoft 基准安全分析器 1.2.1 版站点,网址为:www.microsoft.com/china/technet/security/tools/mbsahome.mspx。 MBSA 工具枚举所有用户帐户并检查是否有下列密码漏洞: | • | 密码为空。 | | • | 密码与用户帐户名称相同。 | | • | 密码与计算机名相同。 | | • | 密码使用单词“password”。 | | • | 密码使用单词“admin”或“administrator”。 |
MBSA 检查还会通知您任何禁用的帐户或当前锁定的帐户。 MBSA 将使用每个列出的密码来尝试更改目标计算机上的密码。如果此操作成功,MBSA 将指明该帐户使用了那个密码。尽管 MBSA 不会重置或永久更改密码,但是如果密码太简单并产生了安全风险,它一定会报告这一情况。 您应该注意,尽管 MBSA 可以帮助查找正在使用的一些常见的不安全密码,但是它不能提供功能完备的密码审核和恢复功能,而某些第三方脱机扫描工具和市场上销售的某些应用程序则可以。 注意:MBSA 将重置在计算机上检测到的所有帐户锁定策略,这样,在此密码检查期间就不会锁定任何单个用户帐户。MBSA 不会在配置为域控制器的计算机上执行这些密码检查。
|