正如 2019 年每个 Windows 系统管理员都应该知道的那样,“Windows 防火墙”服务是 Windows 网络堆栈的关键组件,它永远不应该被停止或禁用;让任何流量流入/流出 Windows 服务器的正确方法是配置防火墙以允许任何内容通过,但实际上并不停止 Windows 防火墙服务;事实上,这不仅不受 Microsoft 支持,而且还会导致任何类型的奇怪的网络问题。
这甚至(在某种程度上)在文档:
不要通过停止服务来禁用 Windows 防火墙。相反,请使用上述步骤之一(或等效的组策略设置)关闭防火墙。[...] Microsoft 不支持停止与高级安全 Windows 防火墙关联的服务。
现在,我有一堆服务器,以前的系统管理员认为禁用 Windows 防火墙服务是个好主意,他们也确实这么做了。我需要重新激活它,但一旦我这样做,我就会立即失去与系统的网络连接(因为当然没有人费心去实际配置 Windows 防火墙以允许 RDP 之类的东西进入);在重新启动服务之前,我也无法手动更改 Windows 防火墙配置,无论是通过 GUI 还是通过netsh
,因为这两个工具都抱怨 Windows 防火墙服务已停止,因此不允许我配置任何内容。
到目前为止,唯一可行的方法是使用这些服务器的物理(虚拟)控制台重新启用 Windows 防火墙服务,然后设置适当的防火墙例外(或完全允许所有流量);但是,对于大量系统或如果您实际上没有控制台访问权限,这是不可行的。
如何配置Windows防火墙以接受所有(或部分)传入连接当服务关闭时,在重新启动之前?
答案1
这可能是一个非常愚蠢的想法,但是,如果您知道重新启动服务后需要通过 netsh 创建什么规则,为什么不编写脚本呢?编写一个启动 Windows 防火墙服务的脚本,然后下一个命令将是允许所有内容进入的 netsh(或至少是 RDP,以便您可以远程进入并在之后进行调整)
答案2
另一种方法是使用组策略提前配置必要的防火墙设置。即使服务器不是域成员,您仍然可以使用本地组策略。
但是,我不确定在这种情况下这些设置是否会立即生效。它们可能只会在下一次组策略刷新时生效。当然,您可以编写一个脚本来启动防火墙,然后刷新组策略。
答案3
每当我远程操控防火墙时,我都会确保设置后门。我曾多次遇到这种情况,所以我总是先这样做。
您可以通过在服务器上安装 hamachi(或您最喜欢的 vpn 软件)并在服务器和您进行所有工作的工作站上安装 tightvnc(或您最喜欢的远程管理软件)来实现此目的。Hamachi 的设置非常简单,免费帐户最多允许 5 个节点。
在你做之前任何更改您的防火墙,确保您可以通过新创建的后门访问服务器。
完成防火墙规则调整后,您可以删除 hamachi 和 tightvnc,或者之前安装的任何程序。
另一个选择是查看您是否可以通过同一网络中的另一台计算机访问相关服务器的服务小程序(例如远程连接到另一台计算机并查看您是否可以从其执行管理工作)。因此,即使 hamachi 被 Windows 防火墙阻止,您也可以通过工作站停止它。
说了这么多,我思考您可以在关闭防火墙的情况下设置防火墙规则,然后启用它。但“事情”总是会发生,因此如果出现您预期之外的情况,我仍可以选择与服务器交互的方式。
亚历克斯