防火牆排查不要先把三個 Profile 全關掉。先確認目前套用的 Domain、Private 或 Public Profile,再找規則、程式、Port、來源位址與阻擋紀錄。
動手前:新增放行規則會改變攻擊面。限制 Profile、方向、程式、來源網段與本機 Port,測完刪除臨時規則;受網域 GPO 管理時不要用本機規則硬蓋政策。
查看目前狀態
查看三個防火牆 Profile系統管理員 PowerShell
Get-NetFirewallProfile | Format-Table Name, Enabled, DefaultInboundAction, DefaultOutboundAction確認目前政策,不要先停用。
只看已啟用規則PowerShell
Get-NetFirewallRule -Enabled True | Select-Object DisplayName, Direction, Action, Profile規則很多,可再依 DisplayGroup 或名稱篩選。
依名稱搜尋規則PowerShell
Get-NetFirewallRule -DisplayName '*Remote Desktop*'顯示名稱會因語系不同。
查看規則對應 PortPowerShell
Get-NetFirewallRule -DisplayName 'HTTPS for Admin LAN' | Get-NetFirewallPortFilter規則本體與 Port filter 是不同物件。
查看規則對應程式PowerShell
Get-NetFirewallRule -DisplayName 'App API' | Get-NetFirewallApplicationFilter確認是否綁到正確執行檔路徑。
查看規則來源範圍PowerShell
Get-NetFirewallRule -DisplayName 'HTTPS for Admin LAN' | Get-NetFirewallAddressFilterRemoteAddress 不應無條件設成 Any。
查看目前網路 ProfilePowerShell
Get-NetConnectionProfilePublic Profile 通常比 Private 更嚴格。
建立最小範圍規則
只允許管理網段連 TCP 443系統管理員 PowerShell
New-NetFirewallRule -DisplayName 'HTTPS for Admin LAN' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 443 -RemoteAddress 192.168.50.0/24 -Profile Domain,Private來源網段換成實際管理 VLAN;不要把 Public 一起放行。
只允許指定程式出站系統管理員 PowerShell
New-NetFirewallRule -DisplayName 'Vendor Updater HTTPS' -Direction Outbound -Action Allow -Program 'C:\Program Files\Vendor\updater.exe' -Protocol TCP -RemotePort 443若政策本來允許所有出站,這條不會額外限制其他程式。
建立暫時測試規則系統管理員 PowerShell
New-NetFirewallRule -DisplayName 'TEMP API 8443' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8443 -RemoteAddress 192.168.50.25命名加 TEMP 並記錄移除時間。
停用單一規則系統管理員 PowerShell
Disable-NetFirewallRule -DisplayName 'TEMP API 8443'停用比刪除更容易回復,但不要留下永久臨時規則。
重新啟用單一規則系統管理員 PowerShell
Enable-NetFirewallRule -DisplayName 'TEMP API 8443'啟用後再確認 Profile、來源與 Port。
移除臨時規則系統管理員 PowerShell
Remove-NetFirewallRule -DisplayName 'TEMP API 8443'先用 Get-NetFirewallRule 精確確認只命中一條。
紀錄與驗證
查看防火牆記錄設定系統管理員 PowerShell
Get-NetFirewallProfile | Select-Object Name, LogFileName, LogBlocked, LogAllowed是否記錄允許連線要考慮 log 量。
啟用阻擋紀錄系統管理員 PowerShell
Set-NetFirewallProfile -Profile Domain,Private,Public -LogBlocked True會改設定;先確認磁碟與集中日誌政策。
查看預設防火牆 logPowerShell
Get-Content "$env:SystemRoot\System32\LogFiles\Firewall\pfirewall.log" -Tail 100通常需要系統管理員權限。
本機測監聽 PortPowerShell
Get-NetTCPConnection -LocalPort 8443 -State Listen -ErrorAction SilentlyContinue沒有 listener 時,開防火牆也不會讓服務可用。
從另一台測 TCPPowerShell
Test-NetConnection server.example.com -Port 8443要從真正的來源網段測,才能驗證 RemoteAddress 限制。
怎麼確認有做對
- 先確認服務真的在監聽,再從允許與不允許的來源各測一次。
- 查規則實際套用的 Profile、Port、程式與 RemoteAddress。
- 測試完成移除 TEMP 規則並再次驗證。
常見錯誤
- 為排錯直接關閉整套防火牆。
- Inbound 規則用 Any source、Any profile。
- 開了 Port 卻沒有程式監聽。
- 忽略 GPO 或 MDM 會覆蓋本機設定。
版本與官方文件
參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。