安全观察在 Windows Server 2008 中使用 SCW

Jesper M. Johansson

这篇文章基于 Windows Server 2008 的预发布版。文中的所有信息均可能发生变更。

在 2005 年,Microsoft 发布了 Windows Server 2003 SP1。该 service pack 在 Windows 中引入了第一款基于角色的安全管理工具:安全配置向导 (SCW)。Microsoft 首先希望将 SCW 设计成为一款能够减少受攻击面的工具。其目的是分析

您在用计算机实际做些什么,然后自动配置计算机来支持您需要的角色,同时禁用那些没有用到的角色和服务。

Windows Server® 2008 保留了 SCW,其中使用新角色进行了更新并集成了新的 Windows® 防火墙。但是,它仍像过去一样,是一款高级的管理工具。

Windows Server 2008 还包括新的基于角色的“服务器管理器”工具及其系列:“添加角色”和“添加功能向导”。在 Windows Server 2008 中,不是采用老式的“添加/删除 Windows 组件”控制面板来添加单个组件,现在您可以使用角色管理工具来配置服务器。Byron Hynes 在“使用服务器管理器配置角色”一文中介绍了这些工具,该文章也可在本期*《TechNet 杂志》*中找到。

“添加角色”和“添加功能向导”被设计用来使用正确的组件配置服务器,以支持所选择的角色。这同时也会对内置的防火墙进行配置,以确保这些角色正常工作。有鉴于此,您可能想知道是否仍有必要使用 SCW。当然,许多管理员将不再需要 SCW。但是,仍有两个群体将 SCW 视为无法替代的工具。第一个群体是偏执的安全人员。他们很欣赏 SCW 能够将安全性提高到一个新水平。

您可以把“添加角色”和“添加功能向导”看作是能够选择默认服务器并加以配置以可靠支持所需角色和功能的工具。另一方面,SCW 也是对您的服务器加以配置以仅支持所需角色和功能的工具。SCW 还具有教学效果,可帮助您了解有关如何配置服务器的更多信息。因此,我强烈建议您在使用服务器的补充角色和功能对服务器进行配置后运行 SCW。

第二个群体由那些希望了解各种组件之间关系的用户组成。SCW 包含一组 XML 文件,其中记录了角色和功能、服务以及网络端口之间的关系。如果您想了解各种组件的需要,则 SCW 是一个非常有价值的工具。

在本专栏中,我将介绍 SCW 的工作原理以及如何用它来保护您的服务器。此外,我还会对 SCW 和“服务器管理器”工具进行比较。请注意,本专栏系根据我的 Windows Server 2008 Security Resource Kit (Microsoft Press®, 2008) 一书改编而成。

安全配置向导概述

为了设置此阶段,我想展示一些有关 Windows Server 2008 攻击面的统计信息。在通过添加角色和功能的个人选择来配置服务器之前,它仍具有相当重要的服务空间。默认情况下,Windows Server 2008 有 105 个服务,其中 42 个设置为自动启动、55 个设置为手动启动、8 个被禁用。而在全新安装的 Windows Server 2003 R2 SP2 中,默认情况下会安装 86 个服务,其中 34 个设置为自动启动、32 个设置为按需启动、20 个被禁用。

即使在角色隐喻和支持的默认角色减少的情况下,Windows Server 2008 仍有较大的空间,并需要您在强化服务器时特别加以注意。利用 SCW,您可以逐步为特定服务器创建自定义的安全配置。

SCW 采用与现有工具完全不同的方法来对服务器进行强化。它通过角色隐喻来配置系统以支持那些角色和少量其他项(如果有的话)。虽然 SCW 可帮助配置防火墙(类似于“添加角色”和“添加功能向导”),但是 SCW 同时还会禁用不必要的服务并配置一些附加的安全设置。最后,“添加角色”和“添加功能向导”只能安装和配置 Windows 中内置的角色,但 SCW 却是可扩展的。开发人员或管理员可编写自定义的角色或功能配置文件,然后使用 SCW 来配置任何产品。

SCW 设计用于在安装了服务器中应具有的所有角色和功能后使用。如果服务器中还有第三方应用程序,则也应该在运行 SCW 前安装它们。

为了演示它的工作原理,我已经配置了一个具有三个角色(应用程序服务器、DNS 服务器和 Web 服务器)和两个功能(Microsoft® .NET Framework 3.0 功能和 Windows Process Activation Service)的服务器。这不是一组特别符合逻辑的角色和功能,但却是用来说明本讨论的一个非常好的示例。

要启动 SCW,请从“Administrative Tools”(管理工具)菜单中运行 SCW。您将看到如图 1 所示的对话框。

图 1 SCW 首先会询问您要执行什么操作

图 1** SCW 首先会询问您要执行什么操作 **(单击该图像获得较大视图)

第一步要选择是创建一个新的安全策略、编辑或应用现有策略还是回滚策略以使系统恢复到原始设置。各个选择项都非常容易理解。

如果选择创建新安全策略,SCW 会创建一个新策略(使用某个计算机作为策略必须支持的模板)。它分析计算机并确定所支持的角色和功能,还会确保它们能够工作但不启用许多不必要的功能。

SCW 在原型模型上运行。它使用 XML 文件指定角色和功能的外观,包括安装了哪些文件、配置了哪些服务等。这就是需要在要制定策略的计算机上安装所有程序的原因。如果有第三方程序在安装时安装了 SCW 定义,则它们将被无缝集成。但是,如果第三方程序没有安装 SCW 定义,则需要手动配置它们。

正如您所见,您可以在一个系统上创建一个策略,然后将其应用到许多系统。如果您正在构建具有许多系统的网络,应首先定义全部单独配置的主机类。然后可使用其中一个作为原型来创建策略,接下来可以很容易地将策略应用到所有其他系统,只需进行少量修改甚至不必进行任何修改。

单击“Next”(下一步)时(在图 1 所示的对话框中),向导会询问您要使用哪个计算机作为新策略的基准(或原型)。通常选择本地计算机,但也可选择使用远程计算机作为原型。

指定要使用的系统后,即进入分析阶段。此时,SCW 将枚举您已安装的角色和功能,并将其与角色和功能数据库相匹配。数据库包含的信息包括每个角色和功能使用了哪些服务、它们需要哪些网络端口以及其他一些重要信息。分析完成后,可单击“View Configuration Database”(查看配置数据库)来查看“Security Configuration Wizard”(安全配置向导)找到的内容。请注意,这是一个只读视图,它显示了有关计算机配置的全面信息。实际上,如果您想真正了解计算机中的内容,则可以花费足够的时间来研究此信息。

使用 SCW 配置服务器

单击“Next”(下一步)后,将进入 SCW 的四部分中的第一部分:基于角色的服务配置。您可能会注意到您在 SCW 中发现的角色(如图 2 所示)与在“添加角色向导”中发现的角色不属于同一组。“添加角色向导”中可用的大部分角色都包括在其中,此外 SCW 还提供了一些未包括在“添加角色向导”中的角色。例如,我所选择的“应用程序服务器”角色就不包括在其中。这是因为 SCW 使用略有不同的角色隐喻。我将稍后对此进行详细讨论。

图 2 使用 SCW 选择希望服务器支持的角色

图 2** 使用 SCW 选择希望服务器支持的角色 **(单击该图像获得较大视图)

通常情况下,在此对话框中已经为您选择了一组正确的角色。因此您只需验证分析结果中已经包含了您所要的内容即可。如果出现问题,请检查角色是否已安装,如果缺失则安装它,然后再重新运行 SCW。如果犯了错误也不要紧。SCW 中的回滚功能可撤销对策略所做的任何更改,使您重新回到开始处。

您在此部分中给出的回答非常重要,因为它们将决定您稍后在网络部分中看到的内容。幸运的是,检测逻辑非常不错,通常所选的角色都是正确无误的。

还要注意,默认情况下您会看到“安装的角色”,它们是服务器能够使用磁盘数据支持的角色。所选的角色是当前支持的角色。您还可以选择查看数据库中的所有角色。为此,您只需从下拉列表中选择“All Roles”(所有角色)即可。当您必须使用尚未安装全部必需角色的原型服务器来构建策略时,这会非常有用。

在配置了角色后,您需要选择要支持的客户端功能。此功能集类似但不等同于“添加功能向导”中的功能集,其中包含的功能相对较少。同样,隐喻也不完全相同,SCW 可加以扩展,因此您将看到的内容不同于“添加功能向导”中的内容。

当您在 SCW 的“Client Features”(客户端功能)页面上单击“Next”(下一步)时,将转到“Select Administration”(选择管理)和“Other Options”(其他选项)对话框,如图 3 所示。SCW 中的“Option”(选项)与角色或功能并不是完全对应的。它可能提供管理支持,或可能只提供一个服务(如“交互服务检测”)。同样,大多数所需的选项都要在此处选择。下拉菜单也有必要专门加以指出。这将由与先前所选角色和功能的相关选项进行填充,并且会随着计算机的不同而异。

图 3 在 SCW 中选择其他服务和功能

图 3** 在 SCW 中选择其他服务和功能 **(单击该图像获得较大视图)

接下来是“Select Additional Services”(选择其他服务)对话框。尽管 SCW 附带了一个非常大的服务数据库,但它也并非无所不包。对于那些 SCW 在计算机中找到但在数据库中不存在的服务,都被显示在“Additional Services”(其他服务)页面中。所有内置服务都有所描述,您应该不会看到此对话框,除非安装了一些第三方服务。

向导然后让您选择如何处理没有配置的服务。当计划采用所创建的策略并将其应用到不同计算机时,可使用此选项。如果该计算机上的服务不同于您在其中创建策略的计算机上的服务,则 SCW 需要知道应如何处理它们。一种选择是不理会它们,这是默认值。另一种选择是禁用它们,这虽然更安全,但可能会中断一些事情。但是如果您按照要求操作,只将策略应用到从中创建策略的服务器,则您在此页选择哪个选项都无关紧要。

现在您已完成了 SCW 的“角色配置”部分,并且通过向导回顾了您所做的工作。如您在图 4 中所见,即使只是点击进入,也将明显影响计算机的攻击面。例如,由于此计算机不是“打印服务器”,没有安装打印机,因此没有必要运行后台打印程序服务。SCW 将禁用所有不需要的服务。在我们的测试服务器上,SCW 禁用了 17 个被设置为自动启动的服务,并将 42 个手动启动的服务设置为禁用。当然,您的结果会有所变化,具体取决于您的服务器配置,但是您会看到 SCW 能让您很容易地量身定制针对特定服务器的策略,从而显著减少其攻击面。

图 4 SCW 总结了您所做的变更

图 4** SCW 总结了您所做的变更 **(单击该图像获得较大视图)

现在要转入的内容可能是 SCW 最重要的一部分:联网。在最初的欢迎页面之后,您会看到“Network Security Rules”(网络安全规则)对话框,如图 5 所示。它包含 SCW 提议的所有防火墙规则的列表,这些提议均基于您在前几部分中所选的角色支持。

图 5 SCW 将列出它认为您会需要的所有规则

图 5** SCW 将列出它认为您会需要的所有规则 **(单击该图像获得较大视图)

如果在“网络”部分没有做进一步的配置,SCW 将构建防火墙规则来锁定网络接口,以便仅支持这些角色和功能而所有客户端都可以访问它们。但是要在服务器上真正优化安全性,应将 SCW 作为构建“服务器隔离”策略不可缺少的一部分。要了解有关服务器隔离(及其亲密成员、域隔离)的详细信息,请访问 technet.microsoft.com/network/bb545651

在 Windows Server 2008 Security Resource Kit 一书中,有一章介绍了如何使用服务器和域隔离来确保网络安全。它还讨论了如何使用网络威胁建模来分析网络,以帮助轻松部署服务器隔离。在此过程中,SCW 是一个非常有用的工具。

通过选择规则并单击“Edit”(编辑),您可对提议的规则配置限制。这会将您带入图 6 所示的对话框。这是四个页面中的一个,这些页面可让您对联网规则设置更多的限制。例如,可以要求 IPsec 验证。如果选择此项,您还可以将端口只关联到特定的端点。例如,您可以对其进行配置,以便只允许从特定主机进行远程管理。正如您所见,这是优于“添加角色”和“添加功能向导”的主要优点。

图 6 SCW 允许您构建防火墙和 IPsec 规则

图 6** SCW 允许您构建防火墙和 IPsec 规则 **(单击该图像获得较大视图)

这种基于所选角色构建连接安全规则的能力有两个重要作用。首先,它为了解服务器都执行哪些任务提供了绝佳的学习机会。您甚至不需要扩建服务器。您只需运行向导,进行不同的选择,然后看一看它们如何影响后续页面上的选项即可。其次,它允许您将非常抽象的端口概念与有关服务的较强逻辑概念联系起来,并完全基于系统实际执行的任务来配置网络限制。

正确操作后,这将允许您为服务器设置非常紧凑的配置。在为服务器构建安全策略时,SCW 的“联网”部分毫无疑问是应该花费大部分时间的环节。

SCW 的其余部分允许您配置审核和一些注册表设置。这些参数的默认设置对大多数组织而言已经足够,除非您有特殊要求,否则无需做太多改动。

创建了策略后,您可以将其保存下来并应用到所使用的计算机中。或者,您也可以将其应用到其他计算机。您还可以使用 scwcmd.exe /transform 命令将您的策略转换为“组策略对象”(GPO)。

但是,如果您在策略中包括了计算机特定的设置,这可能会不成功,或者会得到非常奇怪的结果。例如,如果在联网部分中创建包括本地适配器的端点限制,策略将被视为特定于计算机的,将无法成功转换。这是由于这些适配器必须使用 GUID 来指定。一台计算机上的适配器 GUID 换到其他计算机上将变得毫无意义。

因此,SCW 通常更适合于在服务器对服务器的基础上作为一种学习工具。对于大的服务器场,可以使用 SCW 作为了解计算机知识和制定基本策略的方法。然后,您可以采用该策略并使用您用来配置服务器的任何工具,如“组策略”或“企业管理系统”(如 Microsoft Systems Center)重新创建它以便进行批量部署。

SCW 与服务器管理器

到目前为止,您所看到的一件事情就是用于角色和功能的隐喻是不同的。SCW 中的“功能”是计算机作为客户端所做的事情。而“角色”是计算机作为服务器所做的事情。

这不同于在“服务器管理器”工具中使用的隐喻,在那里角色是服务的集合,而功能可以被看作是一个单元,功能在某种程度上支持角色。本质上,“服务器管理器”将角色视为您购买服务器后要做的事情。功能很重要,但它并不是您购买服务器的主要目的。同一术语的两种隐喻和两种不同的用法可能会容易使人混淆。在这两种工具之间进行切换之前,需要停下来认真考虑一下。

此外,“服务器管理器”工具不是可扩展的。它们设计用于仅管理 Windows 附带的组件。相比之下,您安装的第三方程序可以向 SCW 中添加角色和功能。您甚至可以编写自己的角色和功能。白皮书《扩展安全配置向导》(可从 go.microsoft.com/fwlink/?LinkId=107397 获得)介绍了如何实现此目标。

SCW 还可以禁用不需要的组件。另一方面,“服务器管理器”工具仅部署您要求的组件,它们不触及计算机中的任何其他组件。如果您需要帮助确定可能不需要的组件,SCW 就是可借助的工具。

此外,虽然“服务器管理器”工具和 SCW 都配置您的网络,但是 SCW 在这一点上功能要强得多。如果要构建服务器隔离策略,SCW 将是信息的金矿和部署的好帮手。这很明显是一个高级安全管理主题,而 SCW 就是一款高级安全工具。

最后,SCW 也会配置一些“服务器管理器”工具不配置的其他安全设置。但是,其中的大部分已经被更有效的控件所取代,或在 Windows Server 2008 中已成为默认设置。

Jesper M. Johansson 是解决软件安全问题的安全工程师,以及《TechNet 杂志》的特约编辑。他拥有 MIS 博士学历,并且具有 20 多年安全方面的经验。

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