我是否可以使用 Windows 防火墙阻止某些程序与本地计算机之外的源和目标之间的通信?据我了解,我可能必须使用子网/子网掩码 - 我不确定我是否理解它们的工作原理,因为我尝试使用 127.0.0.0/8 作为掩码来允许,但当我设置它时,它似乎允许所有流量通过防火墙。
netsh advfirewall firewall add rule name="Blocked: %%a" dir=out program="%%a" action=block
netsh advfirewall firewall add rule name="Blocked: %%a" dir=in program="%%a" action=block
我一直使用上述两个命令来阻止全部流量,但我需要允许这些程序在本地机器内进行通信。
任何帮助将非常感激 :)
答案1
从那时起我就发现了如何实现这一点!:)
诀窍是不要使用旧的命令提示符“netsh advfirewall 防火墙”界面,而是使用现代的 PowerShell 界面。
New-NetFirewallRule -DisplayName "Blocked: $file" -Direction Outbound -RemoteAddress Internet -Program "$file" -Action Block
上述命令阻止存储在“$file”变量中的文件。在我的用例中,我有这样的情况:
$fileNames = Get-ChildItem -Path $scriptPath -Recurse -Include *.exe
foreach ($file in $fileNames) {
New-NetFirewallRule -DisplayName "Blocked: $file" -Direction Outbound -RemoteAddress Internet -Program "$file" -Action Block
New-NetFirewallRule -DisplayName "Blocked: $file" -Direction Inbound -RemoteAddress Internet -Program "$file" -Action Block
}
上述 PowerShell 脚本会以递归方式阻止往返于特定目录内的 *.exe 文件的所有互联网流量!
这里真正的关键是使用 New-NetFirewallRule 的 -RemoteAddress 宏“Internet”,它会自动选择往返于互联网的数据包。
更多信息请点击这里:https://docs.microsoft.com/en-us/powershell/module/netsecurity/new-netfirewallrule?view=win10-ps