停用 Windows 防火牆:全面指南

「為什麼要禁用或關閉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計算機。

使用圖形用戶界面(GUI)

可能是最快的方法是使用Windows中提供的GUI工具来禁用防火墙。对于家庭用户来说,使用GUI可能是关闭Windows防火墙最简单的方法。

使用Windows安全应用

第一个GUI工具是Windows安全应用。Windows安全应用适用于Windows 10版本1703及更高版本。

  1. 通过单击开始按钮并开始键入Windows安全来启动Windows安全应用。搜索结果将显示Windows安全应用,点击打开
Launching the Windows Security App in Windows 10

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

The Windows Security App home

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

List of Network Profiles in the Windows Security app

4.在本示例中,选择了私有网络配置文件。进入私有网络设置后,点击开关以关闭Windows Defender防火墙。

Disable Windows Firewall for the network profile

如果需要,可以为其他网络配置文件重复相同的步骤。

使用Windows Defender防火墙控制面板禁用Windows防火墙

另一个GUI工具是Windows Defender防火墙控制面板。与具有Windows 10应用程序现代界面的Windows Security应用程序相反,Windows Defender防火墙控制面板采用了经典控制面板项目的外观。

以下是启动Windows Defender防火墙控制面板

的几种方法。方法1:转到“控制面板 -> 系统和安全 -> Windows Defender防火墙”。

Open Windows Defender Firewall from Control Panel

方法2:打开开始菜单,键入windows defender firewall。单击Windows Defender防火墙链接。

Open Windows Defender Firewall the Start Menu Search

方法3:打开运行对话框,键入命令control firewall.cpl,然后单击确定

Open Windows Defender Firewall the Run Dialog

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

The network profiles list in Windows Defender Firewall

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

Disable Windows Firewall on each network profile

使用命令行

正如您可能已经了解的那样,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 – 此命令将同时禁用所有网络配置文件。

以下演示显示了上述每个命令的操作。

Disable Windows Firewall using netsh

了解更多关于Netsh命令语法、上下文和格式设置

使用Set-NetFirewallProfile PowerShell Cmdlet

NetSecurity PowerShell模組內建於Windows 10,以及Windows Server 2012及以上版本。這個NetSecurity PowerShell模組包含與網路和網路安全配置相關的cmdlets。其中一個cmdlet是Set-NetFirewallProfile,可用於禁用Windows防火牆。

以下是Set-NetFirewallProfile的語法。

# 對每個指定的網路配置禁用Windows防火牆
Set-NetFirewallProfile -Profile <PROFILE NAME> -Enabled False

# 對所有網路配置禁用Windows防火牆
Set-NetFirewallProfile -All -Enabled False

下面的指令將關閉公用私人網域網路配置的防火牆。

Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled False

以下示範顯示了如何使用上述指令Set-NetFirewallProfile來禁用Windows防火牆。

Disable Windows Firewall on selected network profiles

如果不指定任何配置名稱,以下示例顯示了如何使用-All參數開關在所有網路配置上禁用Windows防火牆。

Disable Windows Firewall on all network profiles

使用PowerShell遠程關閉Windows防火牆

當您需要在多台計算機上禁用防火牆時,手動登錄每台計算機並運行指令將非常低效。特別是在網路環境中,您可以使用PowerShell遠程禁用防火牆。

注意:此程序要求目标计算机上已经启用了WinRM。在大多数情况下,域加入计算机已经设置好了WinRM以进行远程管理。

了解更多: 如何启用Windows远程Shell

如果您计划逐个禁用一个远程计算机上的Windows防火墙,您可以使用Enter-PsSession cmdlet向远程计算机发出命令。

在下面的示例中,命令将从名为dc的服务器发出,远程计算机名称为desktop1。将使用的命令如下所示。

Enter-PsSession -ComputerName desktop1
Set-NetFirewallProfile -All -Enabled False

在PowerShell中运行上述代码将产生类似的输出,如下面的演示所示。

Disable Windows Firewall remotely using PowerShell (Enter-PsSession)

上述过程仅适用于少量远程计算机。但是,如果您需要禁用多个计算机上的防火墙,您将需要一种更适合脚本编写的方法。为此,您可以使用Invoke-Command cmdlet。

$computers = @('desktop1')
$computers | ForEach-Object {
	Invoke-Command -ComputerName $_ {
		Set-NetFirewallProfile -All -Enabled False
	}
}

从上面的代码中可以看出,远程计算机的名称存储在$computers变量中作为一个数组。然后,PowerShell循环遍历每个远程计算机,运行Invoke-Command cmdlet并发出Set-NetFirewallProfile -All -Enabled False命令。请参考下面的演示以了解预期结果。

Disable Windows Firewall remotely using PowerShell (Invoke-Command)

使用组策略

透過部署群組原則 (GPO),系統管理員可以關閉域中選定或所有電腦的 Windows 防火牆。一旦部署完成,禁用 Windows 防火牆將自動進行配置,通過原則對所有涵蓋範圍內的電腦進行強制執行。

創建 GPO

要創建 GPO,您需要在伺服器上啟動「群組原則管理」控制台。為此,在執行對話框中執行「gpmc.msc」命令。

gpmc.msc command in the Run dialog

在「群組原則管理」控制台中,展開森林,然後選擇要創建 GPO 的域。在下面的圖像中,GPO 是在「xyz.int」域中創建的。右鍵單擊域,然後點擊「在此域中創建 GPO 並連結」。

Create a GPO in this domain, and Link it here…

將彈出「新 GPO」對話框。在「名稱」框中輸入「關閉 Windows 防火牆」,然後點擊「確定」按鈕。

Enter the name of the new GPO

接下來,右鍵單擊新 GPO,然後點擊「編輯」。GPO 將在「群組原則管理編輯器」中打開。然後,展開這些文件夾「電腦配置 -> 原則 -> 管理範本 -> 網絡 -> 網絡連接 -> Windows Defender -> 防火牆 -> 域配置文件」。

在右窗格的設置清單中,雙擊「Windows Defender 防火牆:保護所有網絡連接」以打開其屬性。

Group Policy Management Editor

一旦設置屬性打開,通過選擇「禁用」來更改值,然後點擊「確定」。

Set Windows Firewall setting to Disabled

重複並將相同的選項應用於標準配置文件設定。然後,您現在可以退出群組策略管理編輯器窗口。

將GPO部署到所有域計算機

現在,您已經創建了GPO,現在需要將GPO部署到域計算機。

要應用GPO,在群組策略管理中,選擇禁用Windows防火牆 GPO。然後,在範圍選項卡中,在安全篩選部分下,點擊添加按鈕。

Add Security Filtering

選擇用戶、計算機或組對話框中,搜索域計算機並點擊確定。這樣可以確保GPO應用於屬於域計算機組的所有計算機。

Search and choose Domain Computers

就是這樣!下次客戶計算機收到策略更新時,防火牆將在這些計算機上關閉。

現在GPO已經創建並部署,您可以通過強制執行策略更新來測試GPO是否正常工作。在客戶計算機上運行gpupdate /force以測試策略更新。

Force update the policy

從上面的結果可以看出,一旦策略應用在客戶計算機上,禁用Windows防火牆的配置就會應用。此外,還有一個信息框顯示設定由系統管理員管理。

Information box

注意:普通用户和计算机的组策略自动更新间隔为每90分钟。此外,当计算机启动或用户登录时,组策略也会更新。

使用自定义脚本扩展在Azure虚拟机上禁用Windows防火墙

如果您有一台Azure虚拟机,由于Windows防火墙阻止流量(包括RDP),您突然无法访问该虚拟机。也许您对Windows防火墙进行了更改,无意中将自己锁在外面!

如果您已经尝试过之前在本文中讨论的所有方式,但仍然没有运气,还是有希望的。您可以通过使用Azure自定义脚本扩展在Azure虚拟机的Guest OS中禁用Windows防火墙。

高级步骤包括:

  • 创建一个包含禁用Windows防火墙命令的PowerShell脚本(*.PS1)。
  • 使用Azure门户在Azure虚拟机上安装自定义脚本扩展。
    • 将PowerShell脚本上传到Azure存储。
    • 脚本将自动在Azure虚拟机的Guest OS上运行一次。

在這個例子中,測試虛擬機的名稱為devmachine1,並且Windows防火牆處於啟用狀態。

注意:在繼續之前,請確保您的帳戶具有適當的Azure RBAC角色。

創建Disable-Windows-Firewall.ps1腳本

在前幾節中,您已經學會了如何禁用Windows防火牆的命令。在這個例子中,將使用netsh工具。

使用您選擇的程式碼或文本編輯器,創建一個名為Disable-Windows-Firewall.ps1的新檔案。編輯腳本,並添加以下程式碼:netsh advfirewall set allprofiles state off。完成後保存腳本。以下是在PowerShell中快速完成此操作的方法。

'netsh advfirewall set allprofiles state off' | Out-File .\\Disable-Windows-Firewall.ps1

安裝自訂腳本擴展並上傳PowerShell腳本

現在,您的腳本已經準備就緒,下一步是安裝自訂腳本擴展並將腳本上傳到Azure Storage位置。一旦安裝了擴展,腳本將自動運行在Azure虛擬機上。

  • 首先,登錄到Azure Portal,找到Azure虛擬機資源並打開它。在這個例子中,Azure虛擬機的名稱是devmachine1。然後,前往擴展選項卡並點擊新增按鈕。
  • 新資源頁面上,找到並點擊自訂指令擴展。然後,點擊建立。在安裝擴展頁面上,點擊瀏覽按鈕旁邊的指令檔案(必填)方塊。
  • 從列表中選擇儲存體帳戶。在此示例中,儲存體帳戶名稱為storagexyz01。然後會顯示一個容器列表;點擊要上傳指令檔案的容器。在此示例中,容器名稱為cont1

注意: 如果您還沒有 Azure 儲存體帳戶或容器,並且需要創建一個,請訪問創建 Azure 儲存體帳戶以了解如何創建。

  • 選擇容器後,點擊上傳並瀏覽您在計算機上創建的disable-windows-firewall.ps1 檔案。選擇檔案後,點擊上傳按鈕。
  • 您應該可以看到disable-windows-firewall.ps1檔案現在在容器內可用。從列表中點擊disable-windows-firewall.ps1,然後點擊選擇。您將返回到安裝擴展頁面,並且必須點擊確定以最終開始安裝擴展。

此時,您只需要等待擴展部署,它還會自動執行您上傳的指令檔案。請參考下面的示範,看整個過程的實際操作。

Disable Windows Firewall in Azure VM using the Custom Script Extension

總結

在本文中,您學習了如何使用Windows內建的GUI工具來禁用Windows防火牆。您還學習了如何使用netsh和PowerShell命令在本地或遠程禁用Windows防火牆。

此外,您還學習了如何創建和部署一個群組策略對象,以禁用域計算機上的Windows防火牆。最後,您還學習了如何使用Azure自定義腳本擴展在Azure虛擬機的客戶操作系統中禁用Windows防火牆。

當然,禁用Windows防火牆還有很多不同的方法。本文介紹了其中一些方法。然而,您仍然可以自行探索其他方法,例如使用PsExec遠程禁用它。

進一步閱讀

Source:
https://adamtheautomator.com/disable-windows-firewall/