安全观察安全配置向导

John Morello

本专栏所包含的关于 Windows Server "Longhorn" 的预发布信息可能会有所变动。

维护服务器的安全稳定与快捷高效是很多 IT 组织都要面临的一个挑战,而对于那些拥有大量服务器,并且这些服务器跨不同地域及组织界限的组织来说更是如此。加强一台服务器对有经验的管理员而言是一项相当简单的工作,但面对数十台、数百台甚至

数千台服务器就完全是另一个概念了。多年以来,许多组织都在为保障服务器安全献计献策,他们贡献出自己的内部检查清单或标准,亦或是将 Microsoft、美国国家标准与技术研究院或其他外部各方提供的指南汇集在一起。尽管这种文档有相当的价值,但是孤立的文档资料却不足以让各个组织将这些最佳实践在其网络应用中付诸实施。因此,很多组织要么选择保留默认安装设置,要么投入大量的时间与精力创建他们自己的脚本或策略来强化系统。

随着安全配置向导 (SCW) 在 Win­dows Server® 2003 Service Pack 1 (SP1) 中的出现,如今 Microsoft 可以根据不同角色的服务器,提供一种简便且易支持的方式来加强服务器,减少服务器的受攻击面。通过将 SCW 的优点与组策略的集中部署和管理功能相结合,SCW 便可扩展至最大型的 IT 企业。我将在本月专栏中加以概述,IT 组织如何使用更为安全稳定的 SCW 和组策略方式来管理他们的服务器,并同时降低部署和运营成本。

SCW 是什么?

SCW 是一个可选组件,通过“添加/删除 Windows® 组件”控制面板进行安装,Windows Server 2003 SP1 系列产品和 Windows Server 2003 R2 皆包含该组件。管理员针对目标服务器运行 SCW 可以确定服务器的角色。此时管理员就可以在 SCW 帮助下创建安全策略,进而使用最低权限方案加强服务器。也就是说,SCW 帮助确保只有服务器功能角色中要求的那些服务、应用程序功能和端口才可以使用;而服务器角色特定需要范围之外的一切都将禁用。这一方法还可以减少目标服务器的受攻击面。假使您运行了服务器角色范围之外的服务,将会增加服务器的网络风险,而且在性能与功能方面也不会有任何提高。禁用这些服务可以降低风险并改进服务器的性能。

Microsoft 针对 Windows Server 2003 进行了多项安全改进,相对于之前的 Windows Server 版本,Windows Server 2003 的整体受攻击面大大减少,而且与 Windows Vista™ 和即将推出的代码名为 "Longhorn" 的 Windows Server 版本不同之处在于,它并非建立在同样高度组件化的核心之上。因此,在 Windows Ser­ver 2003 的默认安装下,一些服务器角色配置中并非必需的服务也会启用并运行。例如,后台打印程序服务在默认情况下是启用的,但对于一台仅作为数据库应用的服务器来说,这项服务并不是必需的。

实现基于角色的安全性

在过去数年间,Microsoft 已经发布了众多专注于安全性的文档,这些文档帮助管理员了解不同的服务器角色都需要哪些服务,同时为像 Web 服务器这样众所周知的角色提供预建模板。然而,在大型环境中执行那些 Windows Server 2003 安全指南中的操作指导是极具挑战性的,当这些环境中运行了比 IIS 或 SQL Server 安装还要复杂的应用程序时尤其如此。更为复杂的是,在企业所使用的数量庞大的第三方应用程序中,很多都依赖于多服务器角色,但其应用与服务要求却经常没有很好地定义。

SCW 将指南中所有的相关知识和最佳实践封装至一个由管理员运行的向导,一举解决了所有问题。比方说,一个管理员当前正在部署同时需要 SQL Server™ 和 IIS 的新型行业 (LOB) 应用程序,但他不再需要花费大量的时间详查安全指南,也不用开发自定义依赖项清单。相反,他只需在服务器上安装应用程序并启动 SCW 即可。SCW 会自行检测当前运行的服务,然后提交一份清单以供管理员选择服务器的角色。SCW 会根据管理员做出的选择生成一个策略,并根据角色依赖矩阵禁用所有不需要的服务。此外,SCW 还会提供加强注册表项的选项,阻止不需要的网络通信并应用有效的审核策略。运行 SCW 之后,管理员可以将 SCW 策略另存为一个 XML 文件,并且可在运行相同 LOB 应用程序的其他服务器上应用此策略。

因此,相比传统方式而言,运行 SCW 拥有三个强大的优势,并可提供更多手动方式来维护 Windows Server 的安全。首先,在为特定工作负荷明确所需的服务和设置时,即便不能完全消除,也可以大幅降低管理员查阅产品文档的频繁程度。所有知识都会内置于 SCW,问题驱动的界面则简化了管理员提供所需细节的工作量。其次,SCW 将不同领域的指南结合在一起,这些指南包括服务强化、减少网络受攻击面、LDAP 与 SMB 服务强化以及锁定 IIS 等众多方面。而在此之前,完成这些配置任务需要用到多个实用工具,并且这些工具都有其各自的界面与方法。最后,由于 SCW 能够将设置另存为一个 XML 策略文件,所以“一劳永逸”是其最好的写照。无论您部署一台或是一百台服务器来支持特定的 LOB 应用程序,可以轻松地将相同的 SCW 策略应用到每一台服务器。这能够让我们保持完全一致的安全设置,从而降低运营成本。同时也使 SCW 策略的回滚操作更为简便。

SCW 组件

相比所提供的功能与优点而言,SCW 是一个非常简易的工具,共包括三个主要组成部分:向导界面、命令行界面和安全配置数据库 (SCD)。中小型企业的管理员也许只用向导界面就可以完成所有任务。但在大型甚至更为复杂的环境下,管理员就需要用到命令行界面来协助自己实现 SCW 任务的自动化,例如将一个 SCW 策略转换为组策略对象 (GPO)。通常,只有高级管理员在创建自定义 SCW 角色时才会修改 SCD。

图 1 所示,向导界面允许管理员针对目标服务器进行创建、编辑、应用和安全设置回滚操作。这就为管理员在稳定的工作流程里提供了多种选择,首先是检查服务与设置,其次是网络连接,然后是安全审核策略,最后为 IIS 设置。

图 1 SCW 界面

图 1** SCW 界面 **(单击该图像获得较大视图)

SCW 命令行界面有三项基本功能:允许管理员分析并配置多台服务器(本地或远程均可),以及执行策略回滚操作;将 XML 格式的 SCW 策略自动转换为可供标准 GPO 管理工具(如组策略管理控制台)本身使用的 GPO;图 2 中所示的 SCW 命令行工具可用于注册任意的新安全配置数据库扩展组件。

图 2 SCW 命令行工具

图 2** SCW 命令行工具 **(单击该图像获得较大视图)

SCD 仅是一个 XML 文件集,详述了每一个 SCW 角色所需的特定服务和设置。这些文件的路径为 %win­dir%\security\msscw\kbs。默认情况下,SCW 附带了大量的核心 Windows Server 角色,以及十二个预定义应用程序角色,其中包括:BizTalk®、Commerce Server、Exchange Server、Host Integration Server、Internet Security and Acceleration Server、Microsoft Identity Integration Server、Microsoft Operations Manager、Small Business Server、SharePoint® Portal Server、SharePoint Team Services、SQL Server 和 Systems Management Server。每个角色都有各自的 XML 文件(见图 3)。任何时候只要创建一个新的角色定义,就会将其相应的 XML 文件放置在此目录中。这些都是标准的 XML 文件,可以使用任何支持 XML 的文本查看器或应用程序读取(见图 4)。

图 3 预定义角色

图 3** 预定义角色 **(单击该图像获得较大视图)

图 4 角色配置文件

图 4** 角色配置文件 **(单击该图像获得较大视图)

SCW 与组策略的结合

SCW 本身就是个极好地工具,但是只有在与组策略相结合时才会显示出最为强大的一面。自从 Windows® 2000 发布以来,Microsoft 对于维护 Windows 服务器安全的建议一直集中在使用组策略来提供一致、稳定以及集中管理的策略应用程序方面。根据服务器的不同角色将其归入相应的组织单位,管理员可以在整个企业范围内部署标准的安全配置,而无需逐台服务器进行重复作业。基于标准的组策略累积和应用程序逻辑,组织可以设计分层的服务器角色层次结构,如此一来,只需运用少量的主策略即可确保数百以至数千台单个服务器的安全。当单一服务器角色要求主策略进行变化时,将会在 OU 层次结构中“更加靠近”服务器本身的位置创建更小的、基于角色的增量策略。这也就是说可以进行小的改动来启用特定于角色的功能,而无需复制全部的组策略,使得大型企业在享有集中管理策略优势的同时具备一定的灵活性,以适应特定的应用程序。

这种方法最大的困难在于如何实现。要知道大型企业拥有许多不同的应用程序和服务器角色,创建一组正确的策略不但困难而且费时,而这在 SCW 出现之前事实如此。通过使用 SCW 生成策略并将那些策略附加至相应的 OU,那么无论是按照现有的工作负荷还是未来调整之后,您都可以大幅缩减部署主机目录和基于角色安全策略所需的时间。为了更好的描述如何进行这项工作,我们先大概了解一下大型企业中 SCW 和 基于角色的 GPO 的实施过程。

企业中的 SCW

在这个例子中,我将引入虚构的 Contoso 网络。Contoso 是一家巨大、复杂并且地理位置分散的 IT 企业。为了降低运营成本并提升服务器的安全性,Contoso 依照 Microsoft 的指南创建了一个基于角色的 OU 层次结构,该层次结构根据工作负荷来分拆与组织服务器。此外,Contoso 还应用 SCW 创建了可附加至这些 OU 的策略。

由于 SCW 并非默认安装,因此 Contoso 需要在其无人参与安装映像下单独启用 SCW 组件。要进行此操作,需要在 Unattend.txt 的 [Components] 部分添加新命令行:SCW=On。因此,所有利用该映像构建的新系统在设置期间都会自动安装 SCW 组件。要注意的是,如果仅仅配置 SCW 以进行安装的话,在构建时不会针对服务器应用任何的策略。

要在设置期间应用默认的策略,Contoso 需要根据下列选项在调用 scwcmd 的映像中编辑 cmdlines.txt 文件的 [Commands] 部分。

scwcmd configure /p:ContosoBaselinePolicy.xml 

文本文件与 XML 文件都应位于映像的 $OEM$ 目录内。为什么 Contoso 在构建时要应用基准策略,而不仅是依赖附加在目录中顶级 OU 的策略呢?通过在构建时应用策略,Contoso 可以确保一致的基准,而无需考虑某台服务器是否已加入 Active Directory®。举例来说,假设以测试为目的构建一台服务器,那么在构建过程中应用基准策略的话,即使服务器始终没有加入产品 Active Directory,至少也可以保证其会遵循组织的标准安全策略。如果服务器之后又加入 Active Directory,组策略应用程序与优先级算法将会用域或 OU 级设置的策略覆盖本地设置(切记策略应用程序的优先顺序依次为本地、站点、域、OU)。

安装 SCW 之后,Contoso 就可以开始创建自有基准策略。基准策略应该部署在基于角色安全性 OU 层次结构的顶层,并且应该是层次结构中限制性最强的策略。这一设想以尽可能保证默认安全为目的,然后只开启那些服务器角色针对相应工作负荷而要求的服务和端口。因此,基准策略应该在新构建的空白服务器上进行创建,添加标准的 Contoso 管理工具和实用程序堆栈,然后运行 SCW。例如,基本的 Windows 安装完成之后,Contoso 就可以在服务器上安装(手动或使用 cmdlines.txt 文件)标准的反病毒、备份、管理及监控工具。由于这些工具中的每一个都可能创建自身的 Windows 服务,因此在创建基准策略前将其置于服务器内,然后使用 SCW 在服务锁定阶段对其提高警惕。

一旦服务器构建成功,Contoso 便可以运行 SCW。SCW 即可以本地运行,也可以远程运行,但是只有该服务器的本地管理员组成员才有运行权限。如果 SCW 正在远程运行,会提供一个选项用于指定远程主机下拥有运行权限的用户帐户;如果 SCW 正在本地运行,则可以使用 runas.exe 来完成相同的操作。SCW 执行的第一项任务是对本地服务器上运行的服务进行评估,然后显示哪些角色当前业已安装(见图 5)。

图 5 选择并查看服务器角色

图 5** 选择并查看服务器角色 **(单击该图像获得较大视图)

由于 Contoso 的基准服务器专门设计用于高度受限状态,因此不应选择任何角色。服务器承担的角色选定之后,下一步便是确定所需的客户端功能以便启用自动更新、Active Directory 或 FTP 客户端等功能。对于大部分组织而言,接受 SCW 默认设置(如图 6 所示)可以提供重要的功能(例如加入域的能力),同时禁止不太重要的功能(如 FTP 客户端)。

图 6 安装功能

图 6** 安装功能 **(单击该图像获得较大视图)

接下来 SCW 提示您选择哪些特定管理工具和非默认服务。这些非默认服务选项就是安装标准的 Contoso 服务器管理堆栈之后运行 SCW 的原因所在。当防病毒、备份以及相关应用程序安装好之后,SCW 便可以加载这些服务的知识,进而将其包含在生成的策略设置之中。

服务加强部分的最后一个问题是如何处理未指定的服务。即使未指定服务并没有运行在最初创建策略的计算机上,我们在应用了 SCW 策略的其他计算机上还可能会遇到这些服务。例如,假设在一台安装有若干新款第三方应用程序的新建服务器上应用基准策略,那么此应用程序安装的任何服务都将依照管理员所做的决定进行处理。SCW 既允许管理员不改变服务的启动模式,也允许管理员将其禁用。选择禁用是更为安全的选择,但在应用时要小心谨慎,因为这样的话,任何未明确允许运行的服务都将禁用。因此,对于高安全性、组织良好的环境,这是最合适不过的选项。而对于组织的其他部分,建议选择不改变启动模式。因此在 Contoso 示例中,选取此选项。在该任务的服务器加强部分完成之前,SCW 会向管理员提交一份服务将被更改的报告。

在服务加强结束之后,SCW 则会给出限制入站网络访问的选项。与特定角色要求的服务列表一样,特定工作负荷要求的端口列表包含在 SCW 的 XML 数据库中。

管理员可以根据需要配置其他端口,并制定每一服务端口的准则,如图 7 所示。对于 Contoso 基准服务器来说,只允许诸如远程桌面这种最基本的服务。除此以外,所有服务都将在 OU 层次结构之下基于角色的策略中进行配置。

图 7 查看和允许端口

图 7** 查看和允许端口 **(单击该图像获得较大视图)

SCW 允许管理员选择注册表选项,例如签署文件和打印通信。在基准配置中,我再次向您推荐选择最安全的默认设置作为最佳实践。

下面一组选择会涉及系统审核策略。在大多系统下,最好选择审核成功活动选项;审核所有活动会占用大量的处理器能力并在审核日志中生成大量数据。当怀疑遭到攻击或急需更加详细的分析结果时,就会在特定的服务器上启用失败审核。

最后,SCW 将会向管理员提供加强 IIS 的选项。这些选项与 IIS Lockdown tool 中可用的选项非常相似,而现在则直接集成到 SCW 策略之中。

在所有步骤完成之后,SCW 会提示管理员保存 XML 文件。保存后的文件被转换成组策略本身可以理解的格式。Scwcmd.exe 会将 XML 文件保存到一个 GPO 之中。需要输入的命令如下:

scwcmd transform /p:ContosoPolicy.xml /g:ContosoBaselineSecurityPolicy 

在 Active Directory 下自动创建该策略,并附加至 Contoso 基于角色的强化 OU 层次结构的顶层。

而只要此策略应用到层次结构的顶层,则任何加入到该 OU 层次结构中的机器都将继承其设置。当新添加机器后需要对此策略进行修改时(像加入 IIS 服务器要求运行 W3SVC 服务),Contoso 管理员会针对新的服务器角色重新运行 SCW,并把此新策略转换为 GPO,然后将此 GPO 附加到包含该服务器中的子 OU 结构下。由于距离服务器最近的 GPO 拥有优先权,因此最终会导致全部的基准设置都将沿用,但那些要求修改以启用 OU 所需角色功能的设置除外(见图 8)。

图 8 Contoso 的策略应用程序

图 8** Contoso 的策略应用程序 **(单击该图像获得较大视图)

越是大型组织或是部署众多服务器,越能够体现这种方法的真正价值。一旦创建初始 SCW 策略并附加至 OU,那么只需要将后续服务器添加到该 OU 就可以自动继承合适的安全策略。因此,只要创建初始的一组策略并加入到 Active Directory,那么之后部署新服务器或替换现有服务器的过程将会变得简单而且快捷。

预先准备

在下一版本的 Windows Server "Longhorn" 中,Microsoft 操作系统已经极大程度地实现了组件化,与现在相比,最终只会产生简化与有限的受攻击面。管理员再也不必将精力浪费在最低限度的默认安装方面,而是使用服务器管理器工具在每台服务器上添加其所需的角色和工作负荷。服务器管理器的工作方式与 SCW 很相似,其内部依赖关系数据库允许安装程序只添加那些要求的功能,以得到所需要的角色服务。更为重要的是,本文所讨论的应用组策略集中管理并基于角色的安全性,可通过大幅扩展的 GPO 控制功能集而得到进一步的加强。简而言之,拥有更高灵活性与更强大安全性的 Windows Server "Longhorn",已将独有的 SCW 概念引领一个新的高度。

SCW 资源

下列网页会为您提供一些使用 SCW 的入门提示:

John Morello毕业于 LSU,在 Microsoft 的六年工作期间担任过许多不同的职务。作为高级顾问,他曾经为财富 100 强企业以及联邦民用和国防客户设计安全性解决方案。目前,他是 Windows Server 组的高级项目经理,负责安全性和远程访问技术方面的工作。

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.