安全性

Windows 防火墙探究

Steve Riley

 

概览:

  • 入站和出站保护
  • Windows 筛选平台
  • 高级安全界面
  • 网络配置文件

如果回到过去的计算时代,没有人会考虑在单独的计算机上安装防火墙。谁需要这么做呢?很少有人听说过 Internet,TCP/IP 并不存在,LAN 协议不会在您的房子或校园上方传送。重要的数据都保存在

大型机或文件服务器 — 人们保留在他们台式计算机上的信息很少会是关键性的,计算机自身的重量也一定程度上确保了相当的物理安全性。如果存在到 Internet 的连接,那么中间很可能有一些协议转换器,在网络边缘还可能有数据包筛选路由器(即“防火墙”),而且很可能配置了太多的规则和异常处理。

现代的计算环境和这样的过去年代差别很大。每个设备都连接到 Internet(而且现在都用 TCP/IP 通信),并且便携式设备是当前的标准。您的雇主很可能给您配了一台便携式计算机,这并不是因为他们关心您,而是因为他们希望您多做点贡献 — 他们非常希望您一旦有了五分钟的空闲,就可以随时随地通过 Wi-Fi 连接工作。便携式计算机也许比台式计算机昂贵,但是通过生产力的提高,这笔投资肯定得到了回报。您看,便携性是如此诱人 — 无论是对您还是对您的对手都是如此。

回想一下:在您的便携式计算机开机并连接到某个网络的总时间里,有多大比例是连接到您公司的网络?如果您的情况和我类似,也许最多是百分之二十。也就是说,只有百分之二十的时间里,我的便携式计算机安全地处在 Microsoft 的公司网络之内,受到网络外围防护的保护,以免遭到外部攻击。但是在百分之八十的时间里,我的便携式计算机因各种实际需要而直接连接到 Internet,这会怎么样?(而且,我相当频繁地连接到世界上最危险的网络:计算机安全会议所在旅馆的 LAN!)当我在那些场合连接到公司网络时,该环境内的其他计算机又会给我带来什么样的威胁?

安全控制不断发展以应对威胁,但有时候远远落在后面。病毒曾经是客户端的问题,原因是人们相互交换软盘,所以防病毒程序首先出现在客户端。此后,随着电子邮件得到广泛使用以及恶意软件逐渐演变为依靠电子邮件传播的蠕虫,反恶意软件的程序开始发展并出现在电子邮件网关上。随着 Web 的兴起,恶意软件逐渐演变为木马,反恶意软件工具随之出现在 Internet 访问代理服务器上。这是一个广为了解的发展过程,没有人对此有异议。

现在让我们把同样的逻辑用到防火墙上。虽然您网络边缘的防火墙足以抵御原先的威胁,但现在的威胁已不同以往,它们更加复杂,更加普遍。更不用说现在的设备和工作方式都与过去大相径庭。许多计算机在本地保存敏感的信息,而且在大量的时间里它们都处在公司网络之外(也就是说,在防护边缘之外)。因此,防火墙必须演化成单个客户端的保护机制。没错:客户端防火墙不再是可有可无的。为了在公司网络和 Internet 中保护您的计算机,客户端防火墙是必需的。

客户端防火墙和安全性表演

许多人没有意识到最初发布的 Windows® XP 包括一个客户端防火墙。这并不让人意外,因为默认情况下该防火墙是关闭的,而且需要很多操作才能打开。这个防火墙的登台多少有点遮遮掩掩,没有任何对真正用途的说明或者使用指导。但是它的确有效。如果您开启了该防火墙,它可能已经使您免受 Nimda 、Slammer、Blaster、Sasser 以及网络端口上未经请求的通信之害。在认识到保护客户端的重要性之后,Windows XP Service Pack 2 (SP2) 在默认情况下启动了防火墙,创建了两个配置文件(Internet 和公司网),并允许启用组策略。

遗憾的是,采用 Windows XP SP2 防火墙有两个障碍:关于应用程序的顾虑和安全性表演。许多人担心防火墙会使他们的应用程序无法正常工作。但这种情况很少出现,原因在于防火墙的设计。防火墙允许所有出站通信离开您的计算机,但是阻止所有不属于对先前出站请求进行应答的入站通信。此设计唯一给客户端应用程序造成麻烦的情形是,应用程序创建了一个侦听的套接字并期待接收入站请求。Windows XP 防火墙允许为程序或端口进行简单的异常情况配置(但遗憾的是,这不是通过组策略)。

更大的阻碍是其他客户端防火墙生产商所做的安全性表演。有些人相信 Windows XP 防火墙的设计(即允许所有的出站通信不受阻碍地离开)对于客户端防火墙来说功能上是不够的。这种观点认为,一个能够胜任的客户端防火墙应该阻止所有未经用户专门许可的通信,不论是入站还是出站。

现在,让我们认真考虑一下这种观点。现在出现了两种情形:

  • 如果您以本地管理员身份运行,而又感染了恶意软件,该恶意软件将直接使防火墙失效。您将彻底被打垮。
  • 如果您不是以本地管理员身份运行,而您感染了恶意软件,恶意软件将导致一个第三方防火墙引发一个对话框,其中充满了有关端口和 IP 地址的怪异文字,以及一个非常严肃的问题:“您要允许这些通过么?”当然,唯一的答案就是:“是的,您这个愚蠢的计算机,不要再骚扰我了!”一旦该对话框消失,您的安全性也就荡然无存。或者,更常见的情况是,恶意软件直接劫持了您已经授权的现有程序会话,您甚至都无法看到该对话框。您再次被彻底打垮。

您必须了解一个关于安全性的重要原则。保护措施针对的是您希望保护的资产,而不是您希望防备的东西。正确的方法是在您的企业内每台计算机上运行精益但有效的 Windows 防火墙,以保护每一台计算机免受世界上任何其他计算机的威胁。如果您试图阻止一台已经被攻击的计算机的出站连接,那么如何确保该计算机真的在按您的指示工作?答案是:您不能。出站保护是安全性表演 — 这是一个花招,只给您一个改善安全性的印象,但却不做任何提高安全性的实质工作。这就是为什么 Windows XP 防火墙中没有出站保护,也是它为什么不存在于 Windows Vista™ 防火墙中的原因。(稍后我将进一步探讨有关 Windows Vista 中的出站控制。)

Windows Vista 中有哪些新增功能?

Windows 筛选平台作为新网络堆栈的一部分,是 Windows Vista 防火墙的根基。与 Windows XP 类似,Windows Vista 在默认情况下阻止入站通信。根据您的计算机运行的配置文件的不同,有可能存在网络服务的默认异常情况(稍后我将讨论配置文件)。如果愿意,您可以编写允许入站连接的规则。仍然与 Windows XP 类似,Windows Vista 在默认情况下允许来自所有交互式进程的出站通信,但对参与服务限制的服务采取出站通信限制。同样,如果愿意,您可以编写阻止额外出站连接的规则。

Windows XP 和 Windows Vista 之间的最大区别是新的高级安全界面和对配置及规则的完全组策略支持(请参阅图 1)。原有的“控制面板”用户界面依然存在,除了登录和 Internet 控制消息协议 (ICMP) 设置之外(现在位于新用户界面中),它基本上没有变化。这个新的用户界面(高级安全 MMC 管理单元)提供了所有全新的功能和灵活性。netsh 命令有了新的环境,即 netsh advfirewall,通过它您可以编写添加和删除规则的脚本,设置和显示全局及逐个配置文件策略,以及显示防火墙的活动状态。对开发人员而言,用 FirewallAPI.dll 和 Netfw.h 可对防火墙的所有设置进行编程式控制。

图 1 具有高级安全性的 Windows 防火墙

图 1** 具有高级安全性的 Windows 防火墙 **(单击该图像获得较大视图)

高级安全 MMC 是向导驱动的。创建规则时,您可以选择四种类型之一:程序、端口、预定义或者自定义。图 2 提供了相关说明。

Figure 2 规则的四种类型

类型 用途
程序 用于允许或阻止特定程序的通信。
端口 用于允许或阻止在特定的 TCP 或 UDP 端口上通信。
预定义 使用预先存在的规则组启用网络上的 Windows 功能(例如文件和打印机共享或远程协助)。
自定义 公开所有细节,以便您尽可以具体地配置规则。

在编写规则时可以引用许多元素,它们都适用于本地规则和通过组策略应用的规则。其中包括:Active Directory® 用户和计算机帐户及组、源和目标 IP 地址、源和目标 TCP 及 UDP 端口、IP 协议号、程序和服务、接口类型(有线、无线和远程访问)以及 ICMP 类型和代码。

配置之后,防火墙将按如下顺序处理规则:

服务限制 Windows Vista 中的某些服务对自身进行限制,以降低受到另一个 Blaster 类型攻击的可能性。其中一项限制是服务需要的端口列表。防火墙将强制实施此限制,防止服务使用(或者被引导使用)任何其他端口。

连接安全性规则 高级安全 MMC 包括了 IPsec 以及防火墙。所有包括 IPsec 策略的规则都将随后得到处理。

身份验证绕行 允许通过指定身份验证的计算机绕过其他规则。

阻止规则 明确阻止指定的传入或传出通信。

允许规则 明确允许指定的传入或传出通信。

防火墙规则存储在注册表中,但是我不准备告诉您具体的位置。噢,好吧,您可以在以下位置找到它们:

  • HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\SharedAccess\Defaults\FirewallPolicy\FirewallRule
  • HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules
  • HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\Static\System

但请不要直接在注册表中编辑这些规则。如果您这么做,我们会找到您,然后把您的宠物拿到 eBay 上卖掉!好吧,也许不卖也行,不过唯一一种受到支持的规则编辑方法就是使用高级安全 MMC。

网络配置文件

Windows Vista 定义了三种网络配置文件:域、专用和公共。如果计算机已加入域并已成功登入域,计算机将自动应用域配置文件 — 您没有机会自己作选择。如果计算机连接到一个没有域的内部网络(例如一个家庭或小型办公室网络),您(或管理员)应当应用专用配置文件。最后,如果计算机直接连接到 Internet,您应当应用公共配置文件。

Windows Vista 如何决定在何处放置您的计算机呢?一旦出现网络变动时(例如,它收到了新的 IP 地址或发现了新的默认网关,或者得到了新的接口),一个名为网络位置感知 (NLA) 的服务将会检测到该变动。它构建一个网络配置文件(其中包括有关现有接口的信息、计算机是否已通过某域控制器的身份验证,网关的 MAC 地址等),并给它分配一个 GUID。NLA 随后通知防火墙,然后防火墙应用相应的策略(这三个配置文件都各自定义了策略)。

如果这是计算机以前从未见过的新接口,而且 NLA 也没有选择域配置文件,那么您将看到一个对话框,要求您指出将要连接到什么类型的网络。不可思议的是,这里有三种选择:“Home”(家庭)、“Work”(工作)和“Public”(公共)。您可能会认为“Work”(工作)意味着域配置文件,但实际上并不是这样。请记住,您永远不会看到域配置文件,因为在计算机登录到某个域时,NLA 会自动选择它。事实上,“Home”(家庭)和“Work”(工作)都对应于专用配置文件。功能上它们是等同的,只有图标不同。(注意:您必须是本地管理员,或能够提升到本地管理员,才能够选择该专用配置文件。)如您所料,公共对应于公共配置文件。

在 Windows Vista 中,网络配置文件应用于计算机中的所有接口。以下是一个 NLA 决策树的概况:

  1. 检查所有连接的网络。
  2. 有无任何接口连接到分类为公共的网络?如果有,将计算机的配置文件设置为公共,然后退出。
  3. 有无任何接口连接到分类为专用的网络?如果有,将计算机的配置文件设置为专用,然后退出。
  4. 是否所有接口都看到了域控制器,计算机是否已成功登录?如果是,将计算机的配置文件设置为域,然后退出。
  5. 否则,将计算机的配置文件设置为公共。

目标是尽可能选择最具限制性的配置文件。但是,这里有两个明显的副作用。首先,如果您计算机的以太网端口已连接到公司网,而无线 NIC 连接到楼下的星巴克,那么计算机将选用公共配置文件而非域配置文件。其次,如果您的计算机直接连接到 Internet(应用公共配置文件),或连接到您的家庭 LAN(应用专用配置文件),并且您通过 VPN 连接到您的公司网,那么您的计算机将继续应用公共或专用配置文件。

这可能意味着什么?防火墙的域配置文件策略包括有关远程协助、远程管理、文件和打印机共享等内容。如果您依靠这些规则连接远程客户端,而客户端又选择了其他配置文件,那么您将无法与客户端连接。不必绝望,您可以编写防火墙规则,允许您需要的任何入站连接,然后将规则仅应用于 VPN 连接。现在,即使您的客户端没有应用域配置文件,您仍然可以通过 VPN 管理它们。

控制出站连接

我曾说过,客户端防火墙中出站保护的典型形式仅仅是安全性表演。然而,有一种形式的出站控制却十分有用:以管理员身份对您不希望许可的通信类型进行控制。对于服务限制,Windows Vista 防火墙已经采取了这种措施。防火墙只允许服务与其声称需要的端口进行通信,而阻止服务试图进行的任何其他活动。在此基础上,为了符合您组织的安全策略,您可以编写其他规则来允许或阻止特定通信(请参阅图 3)。

图 3 新建入站规则向导

图 3** 新建入站规则向导 **(单击该图像获得较大视图)

例如,您希望禁止用户运行一种特定的即时消息客户端。您可以创建一个规则(当然是在“组策略”中),阻止该客户端连接到登录服务器。

不过,此方法有实际的局限性。例如,Windows Live™ Messenger(您可能仍然称之为 MSN® Messenger)有多个可以登录的服务器,而且服务器列表一直在变化。此外,如果默认端口 1863/tcp 被阻止,它会回退到端口 80/tcp。一个阻止 Windows Live Messenger 连接到登录服务器的规则将会过于复杂,而且处于不断变化之中。我提到这些是为了说明管理出站控制是有用的,但如果您需要对允许用户安装和运行的软件保持严格控制,它不能代替软件限制策略。

保护您的计算机

外围防护已经消失。现在每个计算机必须承担起自我保护的责任。正如同反恶意软件已从客户端移向边缘,防火墙必须从边缘移向客户端。您可以立即采取行动,即启用已经安装好的防火墙。

不管您的系统正在运行 Windows XP,还是已经转换到了 Windows Vista,Windows 防火墙可供您所有的客户端使用,并且提供在组织内提高安全性所需的保护,即使您的移动员工距办公室几千英里之遥也是如此。

更多详细内容

Steve Riley是 Microsoft Trustworthy Computing Group 高级安全策略规划师和*《TechNet 杂志》*的特邀编辑。他穿梭于全球各种会议发表演讲,并致力于帮助客户获得并保持安全性。他最新的著作是“Protect Your Windows Network”(保护您的 Windows 网络)(Addison-Wesley,2005)。您可以通过电子邮件 steve.riley@microsoft.com 与他联系。

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