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