Windows

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

通过前一篇关于 Windows 防火墙历史与简介的文章,我们知道 Windows 防火墙的核心内容位于 WFAS 控制台中。本文以 Awoui-RA01 服务器为例,演示如何创建入站规则:在外部网卡上阻止 RDP 访问、放行 ICMP(ping),以及修改规则属性和作用范围。

· 3 分钟阅读 · 难度 中级

通过前一篇关于 Windows 防火墙历史与简介 的文章,我们现在知道 Windows 防火墙真正的核心内容位于 WFAS 控制台之中,那么就让我们使用 WFAS 来为自己建立一条新规则。在这台 Awoui-RA01 服务器上,我启用了 RDP 访问,以便能够更方便地从我的办公桌管理这台服务器。然而,通过启用 RDP,我现在允许了从所有网络对这台服务器的访问。这意味着我既可以从网络内部对 Awoui-RA01 进行 RDP,也可以从互联网对 Awoui-RA01 进行 RDP,因为它是一台远程访问服务器,恰好直接连接到互联网。这是个大问题,因为现在互联网上任何一个无名之辈都有可能找到我的服务器、找到 RDP 登录提示,并试图暴力破解进入 Awoui-RA01。

为缓解这个问题,我希望在我的外部网卡上撤销 RDP。我希望它在内部保持启用,以便我能继续从办公桌访问服务器,但在 WFAS 内部是否有一种简单的方法来创建一条防火墙规则,仅从外部阻止 RDP 访问?是的,肯定有,做法如下:

1. 启动 Windows 防火墙

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

2. 创建一条新规则

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

Illustration 1 — Comment créer une nouvelle règle de pare-feu entrant

3. 放行或阻止端口

我们的第三步是决定是要放行还是阻止这个特定端口。这里还列出了第三个选项:仅当连接经过 IPsec 认证时才放行——这是一个强大的选项,但需要在我们的网络中已经建立 IPsec。由于这一要求,该选项并不适用于大多数人。就我们的示例而言,RDP 已经在运行,但我们想在其中一块网卡上阻止它,因此我将选择「阻止连接」:

Illustration 2 — Comment créer une nouvelle règle de pare-feu entrant

然而,我们并不想在所有网卡上都阻止 RDP,因此接下来的这个界面非常重要。在这里,我们需要回到我们此前谈及的关于防火墙配置文件的知识。别忘了,连接到我们域网络的内部网卡将被分配「域」配置文件。而所有未连接到存在域控制器的内部网络的网卡,则会激活「公用」或「专用」配置文件。

4. 仅在外部网卡上禁用 RDP

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

Illustration 3 — Comment créer une nouvelle règle de pare-feu entrant

现在,我们只需为新规则创建一个名称,就完成了!我们从互联网对这台服务器进行 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 未免太容易了。

1. 创建一条新规则

相反,您需要做的是像为 RDP 所做的那样创建一条新的入站规则。

2. 选择正确的规则类型

但在最开始那个规则类型界面上,请务必选择「自定义」选项。然后,保持所选的选项,将此规则定义为适用于「所有程序」。

3. 协议类型

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

Illustration 4 — Comment créer une nouvelle règle de pare-feu entrant

4. 完成规则的创建

ICMP 规则创建的其余部分,请遵循创建 RDP 规则时所述的相同步骤,选择放行还是阻止这类流量,以及适用于哪些防火墙配置文件。完成后,您的新 ICMPv4 规则会立即生效,如果您配置了一条放行规则,您的新服务器现在便会成功响应 ping 请求。

5. 修改规则/查看其属性

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

在这些选项卡中,您可以修改与规则相关的所有条件。例如,您可以纳入更多端口,可以修改它所适用的防火墙配置文件,甚至可以借助「作用域」选项卡将此规则限制为仅适用于特定的 IP 地址。

这使您能够只将防火墙规则应用于来自或去往您网络中某一特定部分、或某一子集机器的流量。例如,这里我修改了我的「作用域」选项卡,以体现我只希望这条防火墙规则适用于来自 10.10.0.0/16 子网的流量:

Illustration 5 — Comment créer une nouvelle règle de pare-feu entrant

现在您对如何创建一条新规则已略知一二,我建议您趁势继续,去看一看那篇向您展示 GPO 如何部署规则 的文章。