为什么要禁用或关闭Windows防火墙?
有许多原因可以禁用Windows防火墙。当然,并非所有的原因都是合理的,但确实存在一些合法的原因。
在本文中,您将了解到禁用Windows防火墙的多种方法。无论您是在单机设置、家庭网络还是企业环境中,本文都适用于您。
您将学会如何以几乎所有可能的方式关闭Windows中的软件防火墙!
- 使用Windows防火墙管理控制台
- 命令行(cmd.exe)
- PowerShell
- 组策略
- 甚至是Azure虚拟机上的Azure自定义脚本扩展
让我们开始吧!
先决条件
由于本文是一个操作指南,您需要遵循一些要求以按照说明进行操作。一些示例涉及域和非域环境。
对于非域环境
- 运行Windows 10的一个或多个计算机。您可以在一台计算机上执行这里的示例,但某些说明是特定于远程操作的。
- 并且您必须在这些Windows 10计算机上具有管理员权限。
对于域环境
- A Windows 2019 server that is also a domain controller. A Windows 2016 server should also work.
- 在同一网络中并加入域的一个或多个Windows 10计算机。
使用图形界面
可能是禁用防火墙的最快方式是使用Windows中包含的GUI工具。 对于家庭用户来说,使用GUI可能是关闭Windows防火墙的最简单的方法。
使用Windows安全应用程序
管理的第一个GUI工具是Windows安全应用程序。 Windows安全应用程序适用于Windows 10,版本1703及更高版本。
- 通过单击“开始”按钮并开始键入Windows安全来启动Windows安全应用程序。 搜索结果将显示Windows安全应用程序,单击打开。

2. 在Windows安全应用程序主页上,您将看到不同的菜单项。 找到防火墙和网络保护并单击打开。

3. 在防火墙和网络保护页面上,您应该看到列出了不同的网络配置文件。 这些网络配置文件是域网络,专用网络和公共网络。 您可以单独为每个这些网络连接位置关闭防火墙。 在此示例中,您需要选择专用网络配置文件。

4. 在此示例中,选择了专用网络配置文件。 进入专用网络设置后,单击开关以关闭Windows Defender防火墙。

如果您愿意,可以为其他网络配置文件重复相同步骤。
使用Windows Defender防火墙控制面板禁用Windows防火墙
另一个GUI工具是Windows Defender防火墙控制面板。与具有Windows 10应用程序现代界面的Windows Security App相反,Windows Defender防火墙控制面板采用了经典控制面板项目相同的外观。
以下是启动Windows Defender防火墙控制面板
的几种方法。方法1:转到Control Panel —> System and Security —> Windows Defender Firewall。

方法2:打开“开始”菜单,键入windows defender firewall。点击Windows Defender Firewall链接。

方法3:打开运行对话框,输入命令control firewall.cpl
并点击OK。

在Windows Defender防火墙控制面板中,您应该看到一个熟悉的网络配置文件列表;域网络,私人网络,和访客或公共网络。在左侧,点击打开或关闭Windows Defender链接。

在自定义设置页面上,您可以选择为每个网络配置文件禁用Windows防火墙的选项。在下面的示例中,Windows防火墙在所有网络配置文件上都已关闭。

使用命令行
正如您可能已经知道的那样,Windows中的大多数(如果不是全部)GUI操作都有一个命令行对应项。与使用GUI选项时需要转到不同的窗口位置相比,使用命令行有时更快。
此外,命令行选项使用户能够编写或自动执行任务。
关闭使用NETSH命令的Windows防火墙
一款老旧但实用的小工具,名为netsh
,可用于管理计算机的网络配置,或者在这种情况下,用于禁用Windows防火墙。
使用netsh advfirewall set
c命令,您可以在计算机的每个位置或所有网络配置文件上单独禁用Windows防火墙。
netsh advfirewall set currentprofile state off
– 此命令将禁用当前网络配置文件的防火墙,该配置文件是活动的或已连接的配置文件。例如,假设当前活动的网络配置文件是域网络,则此命令将关闭该网络配置文件的防火墙。netsh advfirewall set domainprofile state off
– 仅在域网络配置文件上禁用。netsh advfirewall set privateprofile state off
– 仅在私有网络配置文件上禁用。netsh advfirewall set publicprofile state off
– 此命令将仅在公共网络配置文件上禁用。netsh advfirewall set allprofiles state off
– 此命令将同时在所有网络配置文件上禁用。
下面的演示展示了上述每个命令的实际操作。

使用Set-NetFirewallProfile
PowerShell Cmdlet
NetSecurity PowerShell 模块是内置于 Windows 10、以及 Windows Server 2012 及以上版本的。该 NetSecurity PowerShell 模块 包含与网络和网络安全配置相关的 cmdlet。其中一个 cmdlet 是 Set-NetFirewallProfile
,可用于禁用 Windows 防火墙。
Set-NetFirewallProfile
语法如下。
以下命令将关闭 公共、私有 和 域 网络配置文件上的防火墙。
以下演示展示了如何使用上述命令通过 Set-NetFirewallProfile
禁用 Windows 防火墙。

在不指定任何配置文件名称的情况下,下面的示例显示了如何使用 -All
参数开关在所有网络配置文件上禁用 Windows 防火墙。

使用 PowerShell 远程关闭 Windows 防火墙
当您需要在许多计算机上禁用防火墙时,手动登录到每台计算机并运行命令将效率低下。特别是在网络环境中,您可以使用 PowerShell 远程禁用防火墙。
注意:此过程要求目标计算机已启用 WinRM。在大多数情况下,WinRM 已经为域加入计算机设置好,以进行远程管理。
了解更多:如何启用 Windows 远程 Shell
如果您计划逐个禁用远程计算机上的 Windows 防火墙,则可以使用 Enter-PsSession
cmdlet 向远程计算机发出命令。
在下面的示例中,命令将从名为 dc 的服务器发出,远程计算机的名称为 desktop1。将使用的命令如下所示。
在 PowerShell 中运行上述代码将产生类似于下面演示的输出。

上述过程仅适用于您在少量远程计算机上工作的情况。但是,如果您有大量计算机需要禁用它,您将需要更适合脚本编写的方法。为此,您可以使用 Invoke-Command
cmdlet。
如上面的代码所示,远程计算机的名称存储在 $computers
变量中作为数组。然后,PowerShell 循环遍历每个远程计算机,运行 Invoke-Command
cmdlet 并发出 Set-NetFirewallProfile -All -Enabled False
命令。有关预期结果,请参阅下面的演示。

使用组策略
通过部署 GPO,系统管理员可以关闭域中选定或所有计算机的 Windows 防火墙。一旦部署,禁用 Windows 防火墙将自动化,因为配置通过策略在所有相关计算机上执行。
创建 GPO
要创建 GPO,您需要在服务器上启动组策略管理控制台。为此,请在运行对话框中运行gpmc.msc
命令。

gpmc.msc
command in the Run dialog在组策略管理控制台中,展开森林,然后选择要创建 GPO 的域。在下图中,GPO 创建在xyz.int域中。右键单击域,然后单击在此域中创建 GPO,并将其链接到此处…

新建 GPO对话框将弹出。在名称框中输入禁用 Windows 防火墙,然后单击确定按钮。

接下来,右键单击新 GPO,然后单击编辑。GPO 将在组策略管理编辑器中打开。然后,展开这些文件夹计算机配置 —> 策略 —> 管理模板 —> 网络 —> 网络连接 —> Windows Defender —> 防火墙 —> 域配置文件。
在右窗格的设置列表中,双击Windows Defender 防火墙:保护所有网络连接以打开其属性。

一旦打开设置属性,通过选择禁用来更改值,然后单击确定。

重复并应用相同的选项到标准配置文件设置。然后,您现在可以退出组策略管理编辑器窗口。
部署 GPO 到所有域计算机
既然您已经创建了 GPO,现在您需要将 GPO 部署到域计算机上。
要应用 GPO,在组策略管理中,选择禁用 Windows 防火墙 GPO。然后,在范围选项卡中,点击添加按钮在安全过滤部分下。

在选择用户、计算机或组对话框中,搜索域计算机并点击确定。这样做将确保 GPO 应用到所有属于域计算机组的计算机。

就是这样!下次客户计算机接收到策略更新时,防火墙将在这些计算机上关闭。
现在 GPO 已经创建并部署,您可以通过强制执行策略更新来测试 GPO 是否有效。在客户计算机上运行gpupdate /force
来测试策略更新。

从上面的结果中可以看到,一旦策略应用在客户计算机上。禁用 Windows 防火墙的配置已经生效。另外,还有一个信息框显示设置由系统管理员管理。

注意:组策略的自动更新间隔对于普通用户和计算机是每90分钟一次。此外,当计算机启动或用户登录时,组策略也会进行更新。
使用自定义脚本扩展在Azure虚拟机上禁用Windows防火墙
如果您有一台Azure虚拟机突然无法访问,因为Windows防火墙阻止流量,包括RDP。也许您对Windows防火墙进行了更改,无意中将自己锁定在外面!
如果您已经尝试过本文中先前讨论的所有方法,但仍然没有运气,还有希望。您可以通过使用Azure自定义脚本扩展在Azure虚拟机的客户操作系统中禁用Windows防火墙。 Azure自定义脚本扩展通过执行存储在Azure存储或GitHub中的脚本来工作,针对您的Azure虚拟机的客户操作系统。
高级步骤包括:
- 创建包含禁用Windows防火墙命令的PowerShell脚本(*.PS1)。
- 使用Azure门户在Azure虚拟机上安装自定义脚本扩展。
- 将PowerShell脚本上传到Azure存储。
- 该脚本将在Azure虚拟机的客户操作系统上自动运行一次。
在此示例中,测试虚拟机命名为devmachine1,Windows防火墙处于已启用状态。
注意:在继续之前,请确保您在您的帐户中具有适当的Azure RBAC角色。
创建Disable-Windows-Firewall.ps1
脚本
在前面的部分中,您已经了解了可用于禁用Windows防火墙的命令。在此示例中,将使用netsh
实用程序。
使用您选择的代码或文本编辑器,创建一个名为Disable-Windows-Firewall.ps1的新文件。编辑脚本并添加此行代码:netsh advfirewall set allprofiles state off
。完成后保存脚本。以下是在PowerShell中快速执行此操作的方法。
安装自定义脚本扩展并上传PowerShell脚本
现在您的脚本已准备就绪,下一步是安装自定义脚本扩展并将脚本上传到Azure存储位置。一旦安装了扩展,脚本将自动针对Azure虚拟机运行。
- 首先,登录Azure门户,并找到Azure虚拟机资源并打开它。在此示例中,Azure虚拟机名称为devmachine1。然后,转到扩展选项卡,并单击添加按钮。
- 在新资源页面,找到并点击自定义脚本扩展。然后,点击创建。在安装扩展页面,点击浏览按钮,位于脚本文件(必填)框旁边。
- 从列表中选择存储帐户。在此示例中,存储帐户名称为storagexyz01。然后将显示容器列表;点击将上传脚本文件的容器。在此示例中,容器名称为cont1。
注意:如果您尚未拥有Azure存储帐户或容器,并且需要创建一个,请访问创建Azure存储帐户了解详情。
- 选择容器后,点击上传,并浏览您在计算机上创建的disable-windows-firewall.ps1文件。选择文件后,点击上传按钮。
- 您应该看到disable-windows-firewall.ps1文件现在在容器内可用。从列表中点击disable-windows-firewall.ps1,然后点击选择。您将被带回安装扩展页面,您必须点击确定最终开始安装扩展。
此时,您只需等待扩展部署完成,这将自动执行您上传的脚本。请参考以下演示,了解整个过程的操作。

摘要
在本文中,您学会了如何使用Windows内置的GUI工具禁用Windows防火墙。您还学会了如何使用netsh
和PowerShell命令在本地或远程禁用Windows防火墙。
此外,您还学会了如何创建和部署禁用域计算机Windows防火墙的组策略对象。最后,您学会了如何使用Azure自定义脚本扩展在Azure VM的客户操作系统中禁用Windows防火墙。
禁用Windows防火墙的方法确实有很多种。本文涵盖了其中一些方法。但是,仍然有其他方法可以自行探索,例如使用PsExec远程禁用它。
进一步阅读
Source:
https://adamtheautomator.com/disable-windows-firewall/