因此,默认情况下,Windows 客户端操作系统(以及服务器,在某种程度上)有 2 个默认的 Windows 防火墙策略:奇怪的local firewall
和local group policy
。在网络管理员您可以轻松地在它们之间切换:
netsh advfirewall set store gpo=COMUTERNAME
netsh advfirewall set store local
默认始终是本地的。
我无法弄清楚 powershell 的“NetSecurity”模块中新 cmdlet 中本地 GPO 的正确路径是什么。语法是:
New-NetFirewallRule -DisplayName “Block Outbound Telnet” -Direction Outbound -Program %SystemRoot%\System32\tlntsvr.exe –Protocol TCP –LocalPort 23 -Action Block –PolicyStore domain\gpo_name
(取自这里)
我试过了COMPUTER\Local
,COMPUTER\Local Group Policy
但没成功。一定有办法查看本地 GPO 的正确路径/名称。
答案1
New-NetFirewallRule
有很多选项对于-PolicyStore
,但要针对本地主机规则而不是组策略对象,只需使用以下任一项:
PersistentStore
:将其添加到本地防火墙策略的自定义规则部分。在此存储中创建的规则将附加到 ActiveStore 并立即在计算机上激活:New-NetFirewallRule -PolicyStore PersistentStore
localhost
:(不是计算机名称)将规则添加到本地组策略:New-NetFirewallRule -PolicyStore localhost
ActiveStore
:定位当前活跃的商店(Local
默认)New-NetFirewallRule -PolicyStore ActiveStore
编辑:我验证此命令确实在本地安全策略中创建了一条规则:
New-NetFirewallRule -Name TestRule1 -DisplayName TestRule1 -Protocol TCP -LocalPort 5004 -Action Allow -Direction Inbound -PolicyStore localhost
您可以使用相同的策略库查看它
Get-NetFirewallRule -DisplayName Test* -PolicyStore LocalHost
但是,从 localhost 策略存储中的 powershell 创建的此规则似乎不会自动附加到 ActiveStore。Get-NetFirewallRule -DisplayName Test* -PolicyStore ActiveStore
将显示从 secpol UI 创建的规则,但不显示从 powershell 创建的规则。可能需要重新启动或使用其他参数才能启用?