用命令列管理 Windows 防火牆

本文提供如何使用 PowerShell 和 netsh.exe來自動化管理 Windows 防火牆的範例。

設定設定檔全域預設值

全域預設值是根據每個設定檔設定裝置行為。 Windows 防火牆支援網域、私人及公開設定檔。

Windows 防火牆會丟棄不符合允許的非請求流量,或是回應裝置請求而發送的流量。 如果你發現自己建立的規則沒有被強制執行,可能需要啟用 Windows 防火牆。 以下是如何在本地裝置啟用 Windows 防火牆的方法:

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

控制 Windows 防火牆行為

全域預設設定可透過命令列介面定義。 這些修改也可透過 Windows 防火牆主控台使用。 以下腳本小程式設定預設的入站與出站動作,指定受保護的網路連線,並禁止在程式被阻擋接收入站連線時向使用者顯示通知。 它允許單播回應多播或廣播網路流量,並指定日誌設定以便排除故障。

Set-NetFirewallProfile -DefaultInboundAction Block -DefaultOutboundAction Allow -NotifyOnListen False -AllowUnicastResponseToMulticast True -LogFileName %SystemRoot%\System32\LogFiles\Firewall\pfirewall.log

停用 Windows 防火牆

Microsoft 建議不要停用 Windows 防火牆,因為你會失去其他好處,例如使用網際協定安全 (IPsec) 連線安全規則、防範使用網路指紋攻擊的網路防護、Windows 服務強化,以及 開機時間過濾器。 非 Microsoft 防火牆軟體只能程式化地停用 Windows 防火牆中為了相容性而必須停用的 規則類型 。 你不應該為了這個目的自己關閉防火牆。 如果需要停用 Windows 防火牆,請不要透過在服務 snap-in 中停止 Windows 防火牆服務 (來停用它,顯示名稱為 Windows Defender 防火牆,服務名稱為 MpsSvc) 。 Microsoft 不支援停止 Windows 防火牆服務,可能會引發問題,包括:

  • 開始選單可能會停止運作
  • 現代應用程式可能會無法安裝或更新
  • 透過手機啟動 Windows 失敗
  • 依賴 Windows 防火牆的應用程式或作業系統不相容性

正確關閉 Windows 防火牆的方法是關閉 Windows 防火牆設定檔,並讓服務繼續運作。 請使用以下步驟關閉防火牆,或停用群組原則設定 電腦設定|行政範本|網路|網絡連結|Windows 防火牆|網域設定檔|Windows 防火牆:保護所有網路連線。 欲了解更多資訊,請參閱 Windows 防火牆部署指南。 以下範例將所有設定檔禁用 Windows 防火牆。

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

部署基本防火牆規則

本節提供建立、修改及刪除防火牆規則的scriptlet範例。

建立防火牆規則

在 Windows PowerShell 中新增防火牆規則看起來很像 Netsh,但參數和數值的指定方式不同。 這裡有一個讓 Telnet 應用程式在網路上監聽的範例。 此防火牆規則透過關鍵字而非 IP 位址,將範圍限定至本地子網。 就像 Netsh 一樣,規則是在本地裝置上建立的,並且立即生效。

New-NetFirewallRule -DisplayName "Allow Inbound Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow

以下腳本說明如何新增一條基本防火牆規則,阻擋特定應用程式及本地埠的外出流量至Active Directory中的群組原則物件 (GPO) 。 在 Windows PowerShell 中,policystore 是 New-NetFirewall 指令程式中的參數。 在 Netsh 中,你必須先指定 Netsh 會話中指令應該修改的 GPO。 你輸入的指令會針對 GPO 的內容執行,執行會持續有效直到 Netsh 工作結束或執行另一個儲存指令。 這裡,domain.contoso.com 是你Active Directory 網域服務 (AD DS) 的名稱,gpo_name 是你想修改的 GPO 名稱。 若 GPO 名稱中有空格,則需加上引號。

New-NetFirewallRule -DisplayName "Block Outbound Telnet" -Direction Outbound -Program %SystemRoot%\System32\tlntsvr.exe -Protocol TCP -LocalPort 23 -Action Block -PolicyStore domain.contoso.com\gpo_name

GPO 快取

為了減輕繁忙域控制器的負擔,Windows PowerShell 允許你將 GPO 載入到本地會話,並在該會話中完成所有變更,然後一次性儲存回去。 以下指令執行與前述範例相同的動作 (透過在 GPO) 中加入 Telnet 規則,但我們透過在 PowerShell 中套用 GPO 快取來達成。 Netsh 不支援將 GPO 載入本地工作階段並使用 -GPOSession 參數來更改

$gpo = Open-NetGPO -PolicyStore domain.contoso.com\gpo_name
New-NetFirewallRule -DisplayName "Block Outbound Telnet" -Direction Outbound -Program %SystemRoot%\System32\telnet.exe -Protocol TCP -LocalPort 23 -Action Block -GPOSession $gpo
Save-NetGPO -GPOSession $gpo

這個指令不會批次處理你的個別變更,而是一次載入並儲存整個 GPO。 所以如果其他管理員或在其他 Windows PowerShell 視窗做了其他變更,儲存 GPO 會覆蓋那些變更。

修改現有防火牆規則

當規則建立時,Netsh 和 Windows PowerShell 允許你更改規則屬性和影響力,但規則會保留其唯一識別碼 (,Windows PowerShell 中,這個識別碼會以 -Name 參數) 來指定。 舉例來說,你可以設定一條 規則「允許 Web 80 」,讓 TCP 埠 80 能接收非請求的入站流量。 你可以將規則更改為與網頁伺服器不同遠端 IP 位址相符,該伺服器的流量將被允許,方法是指定該規則的人類可讀且在地化的名稱。

Set-NetFirewallRule -DisplayName "Allow Web 80" -RemoteAddress 192.168.0.2

Netsh 要求你提供規則名稱才能更改,而我們沒有其他方法可以取得防火牆規則。 在 Windows PowerShell 中,你可以利用規則的已知屬性查詢該規則。 當你執行 Get-NetFirewallRule時,你可能會注意到常見的條件如地址和埠號都不顯示。 這些條件以稱為過濾器的獨立物件表示。 如前所述,你可以在 New-NetFirewallRule 和 Set-NetFirewallRule 中設定所有條件。 如果你想根據這些欄位查詢防火牆規則, (埠、位址、安全性、介面、服務) ,你需要取得過濾器物件本身。 你可以像之前一樣更改 Allow Web 80 規則的遠端端點 () 使用過濾物件。 使用 Windows PowerShell,你用埠口過濾器逐埠查詢,然後假設本地埠有其他規則影響,再用更多查詢來建立,直到找到你想要的規則。 以下範例假設查詢回傳單一防火牆規則,然後利用 Windows PowerShell 的管線輸入能力,將該規則送達Set-NetFirewallRule指令碼。

Get-NetFirewallPortFilter | ?{$_.LocalPort -eq 80} | Get-NetFirewallRule | ?{ $_.Direction -eq "Inbound" -and $_.Action -eq "Allow"} | Set-NetFirewallRule -RemoteAddress 192.168.0.2

你也可以用萬用字元查詢規則。 以下範例回傳與特定程式相關的防火牆規則陣列。 陣列的元素可以在後續 Set-NetFirewallRule 的指令中進行修改。

Get-NetFirewallApplicationFilter -Program "*svchost*" | Get-NetFirewallRule

當 Set 指令指定相關群組名稱時,可以同時修改群組中的多個規則。 你可以在指定的管理群組中新增防火牆規則,以管理多個共享相同影響的規則。 在以下範例中,我們將入站與出站的 Telnet 防火牆規則加入 Telnet 管理群組。 在 Windows PowerShell 中,群組成員資格是在規則創建時指定,因此我們會重新建立先前的範例規則。 Netsh 無法將規則加入自訂規則群組。

New-NetFirewallRule -DisplayName "Allow Inbound Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow -Group "Telnet Management"
New-NetFirewallRule -DisplayName "Block Outbound Telnet" -Direction Outbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow -Group "Telnet Management"

如果在規則建立時未指定該群組,則可在 Windows PowerShell 中使用點符號將該規則加入規則群組。 你無法指定使用哪 Set-NetFirewallRule 個群組,因為這個指令允許依規則群組查詢。

$rule = Get-NetFirewallRule -DisplayName "Allow Inbound Telnet"
$rule.Group = "Telnet Management"
$rule | Set-NetFirewallRule

在指令的協助 Set 下,如果指定規則群組名稱,群組成員資格不會被修改,而是群組中的所有規則都依照給定參數進行相同的修改。 以下腳本組啟用包含遠端管理影響防火牆規則的預定義群組中的所有規則。

Set-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Enabled True

另外還有一個獨立 Enable-NetFirewallRule 的 cmdlet,可以依群組或規則的其他屬性啟用規則。

Enable-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Verbose

刪除防火牆規則

規則物件可以被停用,使其不再啟用。 在 Windows PowerShell 中,Disable-NetFirewallRule 指令檔會保留系統上的規則,但會將其置於停用狀態,使規則不再套用並影響流量。 停用的防火牆規則可以透過 Enable-NetFirewallRule 重新啟用。 此 cmdlet 與 Remove-NetFirewallRule 不同,後者會永久移除裝置上的規則定義。 以下 cmdlet 會從本地政策儲存庫刪除指定的現有防火牆規則。

Remove-NetFirewallRule -DisplayName "Allow Web 80"

和其他指令一樣,你也可以查詢要移除的規則。 在這裡,所有阻擋防火牆規則都會從裝置中刪除。

Remove-NetFirewallRule -Action Block

或許用 Get 指令查詢規則並存入變數,觀察受影響的規則,再像我們處理 Set 指令一樣,把它們導到 Remove 指令。 以下範例展示了如何查看所有阻擋防火牆規則,然後刪除前四條規則。

$x = Get-NetFirewallRule -Action Block
$x
$x[0-3] | Remove-NetFirewallRule

遠端管理

預設啟用了使用 WinRM 進行遠端管理。 支援 CimSession 參數的 cmdlet 使用 WinRM,且預設可遠端管理。 以下範例回傳名為 RemoteDevice 的裝置上持久儲存的所有防火牆規則。

Get-NetFirewallRule -CimSession RemoteDevice

我們可以透過 -CimSession 參數對遠端裝置執行任何修改或檢視規則。 這裡我們移除遠端裝置的特定防火牆規則。

$RemoteSession = New-CimSession -ComputerName RemoteDevice
Remove-NetFirewallRule -DisplayName "AllowWeb80" -CimSession $RemoteSession -Confirm

部署基本的 IPsec 規則設定

網際網路協定安全 (IPsec) 政策包含決定IPsec行為的規則。 IPsec 支援網路層級的對等驗證、資料來源驗證、資料完整性、資料機密性 (加密) ,以及重播保護。 Windows PowerShell 可以建立強大且複雜的 IPsec 政策,類似 Netsh 和 Windows 防火牆主控台。 然而,由於 Windows PowerShell 是基於物件而非字串標記,Windows PowerShell 的設定提供了更大的控制與彈性。 在 Netsh 中,認證與密碼學集合以特定格式的逗號分隔令牌清單指定。 在 Windows PowerShell 中,你不是使用預設設定,而是先建立你想要的認證或密碼學提案物件,並依照你偏好的順序將它們打包成清單。 接著,你建立一個或多個 IPsec 規則來參考這些集合。 此模型的好處是程式化存取規則中資訊更為容易。 請參見以下章節以釐清範例。 用於建立單一 IPSEC 規則的物件模型。

建立 IPsec 規則

以下 cmdlet 在群組原則物件中建立基本的 IPsec 傳輸模式規則。 IPsec 規則很容易建立;只需要顯示名稱,其他屬性則使用預設值。 入站流量會透過預設的快速模式和主模式設定進行驗證並檢查完整性。 這些預設設定可以在主控台的「自訂 IPsec 預設值」中找到。

New-NetIPsecRule -DisplayName "Require Inbound Authentication" -PolicyStore domain.contoso.com\gpo_name

在 IPsec 規則中加入自訂的認證方法

如果你想在 IPsec 規則物件中建立一組包含 AH 和 ESP 的自訂快速模式提案,你就要分別建立相關物件並連結它們的關聯。 欲了解更多關於認證方法的資訊,請參閱 選擇 IPsec 協定。 當你建立 IPsec 規則時,就可以使用新建立的自訂快速模式政策。 密碼學集合物件會連結到一個 IPsec 規則物件。 加密貨幣集合物件。 在此範例中,我們基於先前建立的 IPsec 規則,指定自訂的快速模式加密集合。 最終的 IPsec 規則要求出站流量必須透過指定的密碼學方法進行認證。

$AHandESPQM = New-NetIPsecQuickModeCryptoProposal -Encapsulation AH,ESP -AHHash SHA1 -ESPHash SHA1 -Encryption DES3
$QMCryptoSet = New-NetIPsecQuickModeCryptoSet -DisplayName "ah:sha1+esp:sha1-des3" -Proposal $AHandESPQM -PolicyStore domain.contoso.com\gpo_name
New-NetIPsecRule -DisplayName "Require Inbound Authentication" -InboundSecurity Require -OutboundSecurity Request -QuickModeCryptoSet $QMCryptoSet.Name -PolicyStore domain.contoso.com\gpo_name

IKEv2 IPsec 傳輸規則

企業網路可能需要與其他機構保持通訊安全。 但你會發現該機構運行非 Windows 作業系統,並要求使用 Internet Key Exchange Version 2 (IKEv2) 標準。 你可以在 Windows Server 2012 中透過 IPsec 規則指定 IKEv2 作為金鑰模組來套用 IKEv2 功能。 此能力規範只能透過電腦憑證認證實現,無法用於第二階段認證。

New-NetIPsecRule -DisplayName "Require Inbound Authentication" -InboundSecurity Require -OutboundSecurity Request -Phase1AuthSet MyCertAuthSet -KeyModule IKEv2 -RemoteAddress $nonWindowsGateway

欲了解更多關於 IKEv2 的資訊,包括各種情境,請參見「 使用 IKEv2 確保端對端 IPsec 連線安全」。

將 IPsec 規則從一個政策複製到另一個

具有相同規則屬性的防火牆與IPsec規則可以複製,以簡化在不同政策儲存庫中重新建立它們的任務。 若要將先前建立的規則從一個政策儲存複製到另一個,相關物件也必須分別複製。 不需要複製相關的防火牆過濾器。 你可以像其他指令執行程式一樣查詢要複製的規則。 複製單一規則是 Netsh 介面無法完成的任務。 以下是你可以用 Windows PowerShell 達成的方法。

$Rule = Get-NetIPsecRule -DisplayName "Require Inbound Authentication"
$Rule | Copy-NetIPsecRule -NewPolicyStore domain.contoso.com\new_gpo_name
$Rule | Copy-NetPhase1AuthSet -NewPolicyStore domain.costoso.com\new_gpo_name

處理 Windows PowerShell 錯誤

要處理 Windows PowerShell 腳本的錯誤,可以使用 -ErrorAction 參數。 這個參數對於 Remove 指令執行任務特別有用。 如果你想移除某條規則,你會發現找不到該規則就會失敗。 當規則被移除時,如果規則還沒出現,忽略該錯誤是可以接受的。 在這種情況下,你可以做以下操作來抑制移除操作中出現的「找不到規則」錯誤。

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98" -ErrorAction SilentlyContinue

使用萬用牌也能抑制錯誤,但它們可能與你不打算刪除的規則相符。 這些萬用卡可以是個有用的捷徑,但只有在你知道不會有額外規則會意外刪除時才應該使用。 因此,以下的指令檔也會移除該規則,抑制任何「未找到」錯誤。

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*"

使用萬用卡時,如果你想再次確認所匹配的規則集合,可以使用 -WhatIf 參數。

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -WhatIf

如果你只想刪除部分匹配規則,可以使用 -Confirm 參數來取得逐條規則的確認提示。

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Confirm

你也可以直接執行整個操作,並在執行時顯示每條規則的名稱。

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Verbose

螢幕

以下 Windows PowerShell 指令在部署階段的更新週期中非常有用。 要讓你查看特定儲存庫中的所有 IPsec 規則,可以使用以下指令。 在 Netsh 中,這個指令不會顯示 profile=domain,public 或 profile=domain,private 的規則。 它只會顯示包含規則中單一入口網域的規則。 以下指令範例將展示所有設定檔中的 IPsec 規則。

Show-NetIPsecRule -PolicyStore ActiveStore

你可以監控主要模式的安全關聯,了解目前連接裝置的對等節點,以及使用哪套保護套件來建立安全關聯。 請使用以下指令小程式檢視現有的主要模式規則及其安全關聯:

Get-NetIPsecMainModeSA

找出規則的來源 GPO

要查看特定規則或規則組的屬性,你需要查詢該規則。 當查詢回傳標示 為 NotConconfigure 的欄位時,你可以判斷該規則來自哪個政策儲存庫。 對於來自 GPO (的物件,在 Show 指令) 中指定 -PolicyStoreSourceType 參數為 GroupPolicy,若傳遞 -TracePolicyStore,則會在 PolicyStoreSource 欄位中找到並回傳 GPO 名稱。

Get-NetIPsecRule -DisplayName "Require Inbound Authentication" -TracePolicyStore

值得注意的是,揭露的來源並不包含網域名稱。

部署基本的網域隔離政策

IPsec 可用來將網域成員與非網域成員隔離。 網域隔離利用 IPsec 認證,要求網域加入的裝置必須正面確認通訊裝置的身份,以提升組織的安全性。 IPsec 的一項或多項特性可以用來保護 IPsec 規則物件的流量。 要在網路上實施網域隔離,網域內的裝置會收到 IPsec 規則,阻擋未受 IPsec 保護的未經請求的進站網路流量。 這裡我們建立了一條 IPsec 規則,要求網域成員必須進行認證。 透過這種認證,你可以將已加入網域的裝置與未加入網域的裝置隔離開來。 以下範例中,入站流量需 Kerberos 認證,出站流量則需申請認證。

$kerbprop = New-NetIPsecAuthProposal -Machine -Kerberos
$Phase1AuthSet = New-NetIPsecPhase1AuthSet -DisplayName "Kerberos Auth Phase1" -Proposal $kerbprop -PolicyStore domain.contoso.com\domain_isolation
New-NetIPsecRule -DisplayName "Basic Domain Isolation Policy" -Profile Domain -Phase1AuthSet $Phase1AuthSet.Name -InboundSecurity Require -OutboundSecurity Request -PolicyStore domain.contoso.com\domain_isolation

設定 IPsec 隧道模式

以下指令建立一個 IPsec 隧道,將私人網路 (192.168.0.0/16) 經本地裝置上的介面路由流量 (1.1.1.1) 連接於公共網路,再經由其公共介面 (2.2.2.2) 再到另一個私人網路 (192.157.0.0/16) 。 所有通過隧道的流量都會用 ESP/SHA1 檢查完整性,並用 ESP/DES3 加密。

$QMProposal = New-NetIPsecQuickModeCryptoProposal -Encapsulation ESP -ESPHash SHA1 -Encryption DES3
$QMCryptoSet = New-NetIPsecQuickModeCryptoSet -DisplayName "esp:sha1-des3" -Proposal $QMProposal
New-NetIPSecRule -DisplayName "Tunnel from HQ to Dallas Branch" -Mode Tunnel -LocalAddress 192.168.0.0/16 -RemoteAddress 192.157.0.0/16 -LocalTunnelEndpoint 1.1.1.1 -RemoteTunnelEndpoint 2.2.2.2 -InboundSecurity Require -OutboundSecurity Require -QuickModeCryptoSet $QMCryptoSet.Name

部署帶有 IPsec 的安全防火牆規則

在只有安全流量能通過 Windows 防火牆的情況下,則需要手動設定防火牆與 IPsec 規則的組合。 防火牆規則決定允許封包的安全等級,底層的 IPsec 規則則保護流量安全。 這些情境可以在 Windows PowerShell 和 Netsh 中完成,部署上有許多相似之處。

建立安全防火牆規則 (允許安全)

設定防火牆規則允許安全連線,需要對應流量進行認證與完整性保護,然後可選擇性地用 IPsec 加密。 以下範例建立一條防火牆規則,要求流量必須進行認證。 此指令僅允許在遠端裝置連線經由獨立 IPsec 規則驗證時,才允許 Telnet 網路流量進入。

New-NetFirewallRule -DisplayName "Allow Authenticated Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -Authentication Required -Action Allow

以下指令建立一條 IPsec 規則,要求第一台 (電腦) 認證,然後嘗試第二 (使用者) 驗證。 建立此規則可保障並允許流量通過通訊程式的防火牆規則要求。

$mkerbauthprop = New-NetIPsecAuthProposal -Machine -Kerberos
$mntlmauthprop = New-NetIPsecAuthProposal -Machine -NTLM
$P1Auth = New-NetIPsecPhase1AuthSet -DisplayName "Machine Auth" -Proposal $mkerbauthprop,$mntlmauthprop
$ukerbauthprop = New-NetIPsecAuthProposal -User -Kerberos
$unentlmauthprop = New-NetIPsecAuthProposal -User -NTLM
$anonyauthprop = New-NetIPsecAuthProposal -Anonymous
$P2Auth = New-NetIPsecPhase2AuthSet -DisplayName "User Auth" -Proposal $ukerbauthprop,$unentlmauthprop,$anonyauthprop
New-NetIPSecRule -DisplayName "Authenticate Both Computer and User" -InboundSecurity Require -OutboundSecurity Require -Phase1AuthSet $P1Auth.Name -Phase2AuthSet $P2Auth.Name

透過加密與群組成員資格來隔離伺服器

為了提升組織中裝置的安全性,你可以部署限制網域成員的領域隔離。 它們在彼此通訊時要求驗證,並拒絕未經認證的入站連線。 為了提升敏感性資料伺服器的安全性,必須透過只允許企業領域內部分裝置存取來保護這些資料。 IPsec 可以透過隔離伺服器來提供這層額外的保護。 在伺服器隔離中,敏感性資料的存取僅限於有正當商業需求的使用者與裝置,且資料會額外加密以防止竊聽。

建立一條要求群組成員資格與加密的防火牆規則

為了部署伺服器隔離,我們會在 IPsec 規則中設置防火牆規則,限制流量僅限授權使用者或裝置,該規則強制驗證。 以下防火牆規則允許來自名為「授權存取伺服器」的自訂群組成員的使用者帳號進行 Telnet 流量。此外,透過指定限制參數,也可根據裝置、使用者或兩者同時進行限制。 安全描述符定義語言 (SDDL) 字串是透過將使用者或群組的安全識別碼擴展 (SID) 來建立的。 欲了解更多尋找群組 SID 的資訊,請參見: 尋找群組帳號的 SID。 限制對群組的存取允許管理員透過 Windows 防火牆和/或 IPsec 政策擴展強力認證支援。 以下範例說明如何建立代表安全群組的 SDDL 字串。

$user = new-object System.Security.Principal.NTAccount ("corp.contoso.com\Administrators")
$SIDofSecureUserGroup = $user.Translate([System.Security.Principal.SecurityIdentifier]).Value
$secureUserGroup = "D:(A;;CC;;;$SIDofSecureUserGroup)"

透過使用前述的腳本小程式,你也可以取得安全電腦群組的 SDDL 字串,如圖所示:

$secureMachineGroup = "D:(A;;CC;;;$SIDofSecureMachineGroup)"

欲了解更多如何建立安全群組或如何判定 SDDL 字串的資訊,請參見「使用 SID」。 Telnet 是一個不提供加密功能的應用程式。 此應用程式可透過網路傳送資料,如姓名與密碼。 這些資料可能會被惡意使用者攔截。 若管理員希望允許使用 Telnet,但保護流量,則可建立要求 IPsec 加密的防火牆規則。 此防火牆規則是必要的,讓管理員能確保使用此應用程式時,所有由此埠發送或接收的流量都已加密。 若 IPsec 未能授權連線,則該應用程式不允許任何流量。 在此範例中,我們僅允許透過建立以下防火牆規則,允許來自指定安全使用者群組的經認證且加密的 Telnet 入站流量。

New-NetFirewallRule -DisplayName "Allow Encrypted Inbound Telnet to Group Members Only" -Program %SystemRoot%\System32\tlntsvr.exe -Protocol TCP -Direction Inbound -Action Allow -LocalPort 23 -Authentication Required -Encryption Required -RemoteUser $secureUserGroup -PolicyStore domain.contoso.com\Server_Isolation

端點安全執行

前一個範例展示了特定應用程式的端對端安全性。 在許多應用程式需要端點安全的情況下,為每個應用程式設置防火牆規則可能既繁瑣又難以管理。 授權可以覆蓋每條規則的基礎,並在 IPsec 層完成。 在這個範例中,我們用以下指令碼將全域IPsec設定為只允許傳輸模式流量來自授權使用者群組。 參考之前與資安團隊合作的範例。

Set-NetFirewallSetting -RemoteMachineTransportAuthorizationList $secureMachineGroup

建立防火牆規則,允許 IPsec 保護的網路流量 (經過認證繞過)

認證繞過允許來自指定受信任裝置或使用者的流量覆蓋防火牆封鎖規則。 當管理員想使用掃描伺服器監控和更新裝置,而不需要使用埠級例外時,此覆寫非常有幫助。 欲了解更多資訊,請參閱 如何啟用認證防火牆繞過。 在此範例中,我們假設存在阻擋防火牆規則。 此範例允許任何來自任意 IP 位址的網路流量,只要該流量被認證為來自指定裝置或使用者安全群組成員的裝置或使用者帳號,則可覆蓋封鎖規則。

New-NetFirewallRule -DisplayName "Inbound Secure Bypass Rule" -Direction Inbound -Authentication Required -OverrideBlockRules $true -RemoteMachine $secureMachineGroup -RemoteUser $secureUserGroup -PolicyStore domain.contoso.com\domain_isolation