在具有高级设置的 Windows 防火墙中,我可以创建一条规则,通过指向特定程序的 .exe 文件来阻止特定程序的所有入站或出站流量。问题是该程序在其目录中有许多 .exe 文件,在其子目录中还有其他文件。
所以我的问题是:我是否需要为每个 .exe 文件制定单独的规则,在这种情况下,这意味着大约 50 条规则?或者有没有办法根据一组 .exe 文件在本地硬盘上的位置来阻止它们的流量?
Windows 防火墙 - 如何阻止文件夹中所有 .exe 文件的入站
您可以使用简单的批处理文件。打开记事本并将下面的脚本复制/粘贴到空白文档中。将文件另存为 BLOCKALL.BAT。现在将该文件复制到与要阻止的 EXE 相同的目录并双击它。它将向高级 Windows 防火墙设置添加出站规则,并阻止该文件夹和子文件夹中的所有 EXE。
它在 Windows 7 上进行了测试,但它应该适用于使用 Windows 防火墙的其他版本的 Windows。
注意:批处理在 system32 中自行启动。因此,您需要添加它cd /d "%~dp0"
以使其在当前目录中工作。
生成的脚本如下:
@ setlocal enableextensions
@ cd /d "%~dp0"
for /R %%a in (*.exe) do (
netsh advfirewall firewall add rule name="Blocked with Batchfile %%a" dir=out program="%%a" action=block
)
**根据该文件夹中的动态内容(exe文件)在Windows防火墙中配置和添加规则:**
您应该使用每天运行的PowerShell或命令行工具。
像这样:文章链接
function Add-FirewallRule {
param(
$name,
$tcpPorts,
$appName = $null,
$serviceName = $null
)
$fw = New-Object -ComObject hnetcfg.fwpolicy2
$rule = New-Object -ComObject HNetCfg.FWRule
$rule.Name = $name
if ($appName -ne $null) { $rule.ApplicationName = $appName }
if ($serviceName -ne $null) { $rule.serviceName = $serviceName }
$rule.Protocol = 6 #NET_FW_IP_PROTOCOL_TCP
$rule.LocalPorts = $tcpPorts
$rule.Enabled = $true
$rule.Grouping = "@firewallapi.dll,-23255"
$rule.Profiles = 7 # all
$rule.Action = 1 # NET_FW_ACTION_ALLOW
$rule.EdgeTraversal = $false
$fw.Rules.Add($rule)
}
# Sample Usage
Add-FirewallRule "Test port 1234" "1234" $null $null
Add-FirewallRule "Test port 5555-6666" "5555-6666" $null $null
Add-FirewallRule "Test port 2222 Calc" 2222 "c:\windows\system32\calc.exe" $null
Add-FirewallRule "Test port 3333 W3SVC" 3333 $null "W3SVC"
MSDN 上也有一些很好的VBScript 示例 ,我以此为起点。
但是建议您在网络边缘添加防火墙或代理,例如ISA或SQUID,用于 LAN 中的所有入站流量。
打开 ISA 服务器管理,单击开始,指向所有程序,指向 Microsoft ISA 服务器,然后单击 ISA 服务器管理。
阻止包含 Windows 可执行内容的响应在此处访问本文
To block responses containing Windows executable content
1. In the console tree of ISA Server Management, click Firewall Policy.
2. In the details pane, click the applicable access rule or Web
publishing rule.
3. On the Tasks tab, click Edit Selected Rule.
4. On the Traffic tab (for Web publishing rules) or on the Protocols
tab (for access rules), click Filtering, and then click Configure
HTTP.
5. On the General tab, click Block responses containing Windows
executable content.
在我们基于 Windows 的网络中,我们有名为 SQUID 的缓存服务器:
Squid内容过滤:阻止/下载音乐 MP3、mpg、mpeg、exec 文件
首先打开squid.conf文件/etc/squid/squid.conf:
vi /etc/squid/squid.conf
现在将以下行添加到您的 squid ACL 部分:
acl 块文件 urlpath_regex "/etc/squid/blocks.files.acl"
您希望在文件被阻止时显示自定义错误消息:
拒绝所有被阻止的扩展程序
deny_info ERR_BLOCKED_FILES 块文件
http_access 拒绝块文件
Firewall App Blocker (Fab)在 1.5 版中添加了阻止文件夹中所有可执行文件的功能。您可以在入站和出站规则之间进行选择。
如果 .exe 位于同一个文件夹中,您可能可以将其添加到 windows 防火墙列表中。如果它们位于不同的文件夹中,则您必须手动添加它们。通常,如果 .exe 防火墙会询问用户的权限尝试访问网络,即未被识别为受信任应用程序的网络。但它不会跟踪该进程依次调用的单个 exe 文件。您可以禁用所有端口或特定端口。
一般来说,除非您每天更新您的 Windows,否则我不建议您使用 Windows 防火墙。使用 Comodo 的免费版可以更好地控制并且可以轻松设置。