Windows

Windows 防火墙

认识 Windows 防火墙的三个管理控制台、三种网络配置文件,并学习在 WFAS 中创建入站规则、放行 ICMP,以及通过组策略统一下发防火墙规则。

· 6 分钟阅读 · 难度 中级 · 基于 Windows Server 2019

我们来玩一个词语联想游戏。我说一个词,您说出脑海中浮现的第一个词。

互联网安全。

您是不是说了防火 - 墙?我想我也会这样回答。当我们考虑在网络层面保护设备时,会想到边界。这些边界由防火墙来划定和保护,主要是硬件层面的防火墙,也就是专门为网络中这项特定任务而设计的网络设备。今天我们要谈的是另一层防火墙,您可以、也应该在自己的环境中使用它。是的,我们说的正是 Windows 防火墙。请不要笑,这是认真的。

根据它的历史来嘲笑 Windows 防火墙很容易。在 Windows XP 和 Server 2003 的年代,它相当无用,制造的麻烦远多于解决的问题。事实上,这种感受如此普遍,以至于今天我仍然见到许多企业默认在所有加入域的系统上完全关闭 Windows 防火墙。如果您问他们原因,通常并没有具体的理由——一直以来就是这样,或者我们书面的安全策略里就是这么写的,这些都是标准答案。这是个问题,因为今天 Windows 操作系统中的高级安全 Windows Defender 防火墙(WFAS)比以往任何时候都更加健壮和先进,完全可以用来改进您的安全架构。我甚至可以说,在当前的操作系统上关闭 WFAS 是相当荒谬的,除非您有非常充分且非常具体的理由。

Illustration 1 — Pare-feu Windows

Windows 防火墙的三个管理控制台

首先,重要的是要知道,有三个不同的控制台可以用来配置 Windows 防火墙的设置。其中两个控制台彼此重复,第三个则比其他两个强大得多。我们来看一看。

Windows Defender 防火墙(控制面板)

当您想在 Windows Server 2019 中启动某个应用程序或某项设置时,通常最有效的做法是直接点击「开始」按钮,然后输入与您要完成的任务相关的一个词。就我而言,我点击了「开始」并输入了「防火墙」这个词。搜索结果中排在第一位的最佳匹配项是 Windows Defender 防火墙,于是我点击了它。

值得注意的是,这个链接打开的是控制面板中的 Windows 防火墙配置控制台,也就是设置系统参数的传统方式。这个控制台仍然可用,并且完全能够操作防火墙的基本功能,例如启用或禁用 Windows 防火墙。但由于这个工具位于控制面板中,我们应当认为它其实并不是微软希望我们使用的工具。请记住,所有新的配置功能都已迁移到 Windows 设置界面,而不是旧的控制面板:

Illustration 2 — Pare-feu Windows

防火墙和网络保护(Windows 安全设置)

虽然在操作系统的早期版本中,基于控制面板的工具一直是进行这些修改的正确位置,但我们已经知道,Windows 设置中保存了许多 Windows Defender 选项。那么,Windows Defender 防火墙的配置项是否也保存在设置的 Windows 安全中心部分呢?

是的,确实有。打开 Windows 设置,点击「更新和安全」,再点击「Windows 安全中心」。您以前来过这里:这个界面简要汇总了 Windows Defender 的各个组件。果然,其中有一项叫做「防火墙和网络保护」。点击这个按钮,您会进入一个新的 Windows 防火墙功能配置平台,它在早期版本的 Windows Server 中并不存在:

Illustration 3 — Pare-feu Windows

点击这里提供的任意链接都会打开更多配置选项。例如,如果您想快速启用或禁用某些防火墙配置文件(稍后我们会进一步了解),可以点击您想配置的配置文件,例如「域网络」配置文件,然后从那里轻松地为该网络配置文件关闭防火墙。许多企业会在自己的计算机上关闭域网络配置文件,这样防火墙就不会保护企业局域网内部产生的流量。

虽然关闭防火墙通常是个坏主意,但有时为了适应您的业务模式,这也是必要的:

Illustration 4 — Pare-feu Windows

Windows 设置中提供的防火墙配置界面,是就 Windows Defender 防火墙做出简单补充决定的好地方,但这个界面的能力有限。若要真正使用防火墙的功能或进行配置……

高级安全 Windows Defender 防火墙(WFAS)

如果您和我有几分相像,就不会满足于这些信息,而会想看看引擎盖下面发生了什么,因此您需要的信息会比基础的 Windows 防火墙工具所能提供的更多一些。您可以点击前面截图中显示的任意一个「高级设置」链接,或者直接打开命令提示符,或者「开始」|「运行」提示框并输入 wf.msc。

这两种方式都会启动完整的 WFAS 管理控制台:

Illustration 5 — Pare-feu Windows

在这里,您可以看到关于 Windows 防火墙相关活动和规则的详细得多的信息,并对放行和阻止进行更精确的调整。这里还有一个监视部分,您可以在其中查看正在生效的规则,包括连接安全规则。这一部分很重要,因为它凸显了一个事实:WFAS 所做的远不止阻止网络流量。它不仅是一个防火墙,也是一个连接平台。如果您计划使用 IPsec 对网络流量进行加密,无论是网络内部的原生 IPsec,还是通过 DirectAccess 远程访问技术,您都会在这一部分看到填充的规则,它们就是这些 IPsec 隧道的定义。Windows 防火墙实际上负责建立这些加密的连接和隧道。这比过去的 Windows 防火墙先进得多。

三种不同的防火墙配置文件

当一台计算机或服务器上的网卡连接到某个网络时,Windows 防火墙会为该连接分配三种不同配置文件中的一种。您很可能已经在不知不觉中接触过这个决策过程。当您把笔记本电脑连接到本地咖啡馆的 Wi-Fi 时,Windows 是否问过您连接的是家庭网络、工作网络还是公用网络?那正是 Windows 防火墙在询问您希望为新的网络连接分配哪种配置文件。之所以可以把网卡和网络连接分配到不同的防火墙配置文件,是为了让您能够为这些不同的配置文件设置不同的访问规则和判断标准,规定哪些流量被允许、哪些不被允许。实际上,它是在问您:您对这个网络的信任程度有多高?例如,当您的笔记本电脑连接到企业网络时,您大概可以比这台笔记本电脑连接到全国另一端某家酒店时宽松一些。通过为在酒店时生效的配置文件分配更严格的防火墙规则,您就为在公共互联网上工作时的攻击者筑起了更高的墙。我们来看看可用的三种配置文件类型,并对每一种做简要说明:

  • 域配置文件:这是唯一一个您无法选择分配的配置文件。只有当您所在的计算机已加入域,并且当前连接的网络中可以访问到您所在域的域控制器时,域配置文件才会生效。因此,对于企业网络内部的任何企业计算机,您都可以预期域配置文件处于活动状态。
  • 专用配置文件:当您连接到一个新网络并被要求选择所连接的位置时,如果您选择家庭或工作,该连接就会被分配专用配置文件。
  • 公用配置文件:在收到提示时,如果您选择公用,那么理所当然会为您分配公用防火墙配置文件。此外,如果由于某种原因您没有收到提示,或者您根本没有做出选择,只是关闭了询问如何为新连接分配配置文件的窗口,那么公用配置文件就是所有尚未被分配其他配置文件的连接所获得的默认配置文件。在较新版本的 Windows 中(尤其是在 Win10 中),您通常不会收到询问这是哪种类型网络的提示;取而代之的是,您会收到一个提示,询问您是否希望允许您的计算机与新网络上的其他设备通信。实际上这仍然是同一个提示,您在该提示中做出的决定会把您的连接分配到公用或专用防火墙配置文件。

每个网络连接都会被分配各自的配置文件定义,因此在同一个系统上,您完全可以同时激活不止一个防火墙配置文件。例如,我的 Awoui-RA01 服务器同时连接到企业网络和公共互联网。在 WFAS 中,您可以看到域配置文件和公用配置文件都处于活动状态:

Illustration 6 — Pare-feu Windows

创建一条新的入站防火墙规则

现在我们知道,Windows 防火墙真正的精华部分位于 WFAS 控制台内,那么我们就用 WFAS 来创建一条新规则。在这台 Awoui-RA01 服务器上,我启用了 RDP 访问,以便能够从我的办公桌更方便地管理这台服务器。然而,启用 RDP 之后,我现在等于允许了来自所有网络对这台服务器的访问。这意味着我可以从网络内部 RDP 到 Awoui-RA01,但我也可以从互联网 RDP 到 Awoui-RA01,因为这是一台远程访问服务器,恰好直接连接到互联网。这是个大问题,因为现在互联网上任何一个无名之辈都有可能找到我的服务器,找到 RDP 登录提示框,并试图暴力破解进入 Awoui-RA01。

为了缓解这个问题,我希望在我的外部网卡上撤销 RDP。我希望它在内部保持可用,以便我能继续从办公桌访问这台服务器,但在 WFAS 内部是否有一种简单的方法,创建一条只阻止来自外部的 RDP 访问的防火墙规则呢?是的,确实有。

打开 wf.msc 以启动高级安全 Windows Defender 防火墙,进入「入站规则」部分,您会看到这台服务器上已有的全部入站防火墙规则(即使您以前从未访问过这个控制台,这里也会列出许多规则,这些规则是随操作系统一起安装的)。

右键点击「入站规则」并选择「新建规则…」。这会启动一个向导,我们将通过它创建新的防火墙规则。第一个界面用于确定我们要创建的规则类型。您可以创建一条修改特定程序流量的规则,也可以浏览一份预定义列表。不过,我喜欢确切地知道我的规则做了什么,是因为我自己定义了它,而不是因为某个已有的协议定义,而且我知道 RDP 运行在 TCP 端口 3389 上。因此,我会在这个界面上选择「端口」,点击「下一步」之后,我会把 3389 设为我想要修改的特定端口:

Illustration 7 — Pare-feu Windows

第三步是决定我们要允许还是阻止这个特定端口。这里还列出了第三个选项:仅在连接通过 IPsec 认证时才允许,这是一个强大的选项,但前提是网络中已经建立了 IPsec。由于这个前提条件,该选项并不适用于大多数人。在我们的例子中,RDP 已经在运行,但我们想在其中一块网卡上阻止它,因此我会选择「阻止连接」:

Illustration 8 — Pare-feu Windows

不过,我们并不想在所有网卡上都阻止 RDP,所以接下来这个界面非常重要。在这里,我们需要回到前面讨论过的防火墙配置文件知识。请记住,连接到我们域网络的内部网卡会被分配域配置文件。而所有未连接到有域控制器所在的内部网络的网卡,其活动配置文件将是公用或专用。

如果我们只想在外部网卡上禁用 RDP,就需要这条规则只对专用配置文件和公用配置文件生效。但为了以防将来我们给这台服务器添加更多网卡、并希望确保这些网卡上无法进行 RDP 访问,我们会同时勾选「公用」和「专用」,以便为将来提供更好的安全性。请务必取消勾选域配置文件!否则您会完全阻断 RDP 访问,如果您当前正在使用 RDP 连接这台服务器,您会把自己挡在门外,并且无法重新连接:

Illustration 9 — Pare-feu Windows

现在我们只需为新规则起一个名称,就完成了。我们从互联网 RDP 进入这台服务器的能力立即被禁用了,今晚我们可以睡得踏实得多。

创建一条允许 ping(ICMP)的规则

我经常需要为 ICMP 创建允许或阻止规则。换句话说,我常常不得不调整服务器上的防火墙,以启用或禁用它们响应 ping 请求的能力。您大概已经注意到,在较新的服务器操作系统上,防火墙开箱即自动阻止 ping(ICMP)是相当常见的。对于那些把 ping 作为测试某个 IP 地址是被占用还是可用的标准方法的环境来说,这是个问题。您也许在发笑,但请相信我,至今仍有许多 IT 管理员没有记录他们在网络中已经使用过的 IP 地址;当他们需要配置一台新服务器并决定给它分配哪个 IP 地址时,他们只是开始对网络中的各个 IP 地址执行 ping,直到找到一个超时的地址为止。这种情形我见过太多次了。虽然这显然不是管理 IP 地址的好办法,但它确实在发生。遗憾的是,这种方法会遇到很大的问题,因为大多数新安装的 Windows 都被设计为开箱即阻止 ICMP 响应,这意味着您可以 ping 一个 IP 地址并收到超时,而那个 IP 地址上实际可能正运行着一台服务器。

那么,回到正题。您可能需要在新服务器上启用 ICMP,以便当有人尝试 ping 它时它能够响应。当我们需要创建一条允许 ping 通过的新规则时,我们会像为 RDP 那样建立一条规则,但有一个大问题。在创建新规则时用于确定规则类型的第一个「规则类型」界面上,并没有针对 ICMP 的选项或预定义项。我觉得这很奇怪,因为这是一种非常常见的规则类型,但可惜的是,从下拉列表中选择 ICMP 未免太容易了。

相反,您需要做的是像为 RDP 那样创建一条新的入站规则,但在第一个规则类型界面上,务必选择「自定义」选项。

接着,保持所选选项,将这条规则应用于所有程序。再次点击「下一步」,现在您会看到一个名为「协议类型」的下拉列表。就是在这个菜单中,您可以选择让新规则处理 ICMP 流量。正如您在下面的截图中所看到的,您可以根据网络流量的实际情况选择 ICMPv4 或 ICMPv6。我的测试实验室仅使用 IPv4,因此我会选择 ICMPv4:

Illustration 10 — Pare-feu Windows

ICMP 规则创建的其余步骤,请按照创建 RDP 规则时所述的相同流程进行,选择允许还是阻止该流量,以及适用于哪些防火墙配置文件。完成后,您新的 ICMPv4 规则会立即生效;如果您配置的是「允许」规则,您的新服务器从此就会成功响应 ping 请求。

如果您需要修改某条规则,或者深入查看某条防火墙规则的更高级属性,回到「入站规则」界面,您可以右键点击任意一条防火墙规则并进入「属性」。

在这些选项卡中,您可以修改与该规则相关的所有条件。例如,您可以容纳额外的端口,可以修改它适用的防火墙配置文件,甚至可以通过作用域选项卡限制这条规则所适用的具体 IP 地址。

这样,您就可以让防火墙规则只作用于来自或发往网络中特定部分、或某一部分机器的流量。例如,这里我修改了作用域选项卡,以体现我只希望这条防火墙规则作用于来自 10.10.0.0/16 子网的流量:

Illustration 11 — Pare-feu Windows

使用组策略管理 WFAS

管理服务器和客户端上的防火墙规则,可以成为迈向更安全企业环境的重要一步。最好的地方在哪里?这项技术是企业级的,而且是免费的,因为它已经内置在您正在使用的操作系统中。在这一层面上做防火墙,您唯一的成本就是把所有这些规则配置到位所花的时间;如果您必须在每一台机器上逐一实施整份放行和阻止清单,那将是一场管理噩梦。

幸好有组策略对象(GPO)。与微软 Windows 平台上的大多数设置和功能一样,为所有人建立一套适用的防火墙策略,对于您已加入域的机器而言轻而易举。您甚至可以把它拆分成多套策略:创建一个把防火墙规则应用于客户端的组策略对象,再创建一个把防火墙规则应用于服务器的独立组策略对象,完全按您的需要来。关键在于,您可以把许多机器归入若干类别,为每一类创建一套 GPO 规则,并利用 GPO 强大的分发能力自动应用到每一台机器上。

您已经熟悉如何创建 GPO,那么现在就去创建一个,用来存放我们可以试验的防火墙设置。相应地链接并筛选该 GPO,使得只有您希望应用这些设置的机器才会真正获得它们。一个好的起点也许是一个测试组织单位,这样在把新策略部署到生产环境的用户之前,您可以确认即将放入组策略对象中的所有规则彼此之间、以及与您现有的其他所有策略之间都能良好配合。

新的组策略对象创建完成后,在组策略管理控制台中右键点击它,然后点击「编辑…」

Illustration 12 — Pare-feu Windows

现在我们查看这个新组策略对象的内部,只需确定创建新防火墙规则的正确位置在哪里。当您查看本地计算机自身内部的规则时,所有内容都列在「高级安全 Windows Defender 防火墙」这一标题之下,而它位于「计算机配置」|「策略」|「Windows 设置」|「安全设置」|「高级安全 Windows Defender 防火墙」|「高级安全 Windows Defender 防火墙」:

Illustration 13 — Pare-feu Windows

正如您所见,当您想确保某些防火墙配置文件、或整个 Windows 防火墙被明确启用或禁用时,也应该到这里来。因此,如果您想为所有人关闭 Windows 防火墙,去的也是同一个位置。点击「Windows Defender 防火墙属性」,您可以逐一确定每个防火墙配置文件的状态。

当您按需设置完各个配置文件后,点击「确定」,就会回到 GPO 中的 WFAS 部分。与本地 WFAS 控制台完全一样,这里有「入站规则」和「出站规则」两个类别。只需右键点击「入站规则」并点击「新建规则…」,就可以直接在这个 GPO 中开始创建规则。按照您在本地 WFAS 控制台中创建规则时已经熟悉的同一个向导操作,完成后,您新的入站防火墙规则就会显示在组策略对象中。

这条防火墙规则已经在进入 Active Directory,并会安装到您在策略的链接和筛选条件中所定义的计算机和服务器上。