(为了讨论的目的,我没有兴趣开启关于阻止整个国家的权利和错误的辩论.这是我的要求 – 我需要实现它.)
我编写了一个Powershell脚本,每24小时更新一次列表,并使用块规则填充Windows防火墙.但是,我对激活它感到紧张.
我的问题是,Windows防火墙以这种方式处理数千个阻止规则的效率如何?例如,如果我的脚本包含10,000个块规则(甚至100,000个),它会有效地工作还是停止运行?
虽然我希望尽可能保护我的Web服务器,但我需要确保Web服务器快速处理请求.
UPDATE
我决定抓住机会运行PowerShell脚本.我已经采用了略有不同的技术.我创建了一条规则并将所有不良IP范围推送到所有远程地址部分的母版,而不是创建6700条规则(覆盖数百万个IP).
结果:完美地运作.阻止大部分中国,台湾,乌克兰和尼日利亚,这是我们获得大部分入境黑客攻击的地方.并且性能没有明显差异.我们似乎在没有任何变化的情况下提供相同数量的请求.一个用于Windows防火墙.它似乎能够非常有效地处理数千个IP块.
更新2 – 反馈
该剧本已经存在了几天,所以我认为你会对它的进展情况有所了解.我将脚本设置为每日运行的预定作业,使用新的IP范围更新防火墙,从CSV文件读入.这一切都很完美,防火墙功能非常快.但是有一个警告:脚本本身需要大约.运行4-5分钟,在此期间cpu最大化并且Web请求非常缓慢.
因此,我建议您在晚上或维护窗口期间运行脚本,在此期间您不会期望负载过重.
对我来说,解决方案是在每个负载平衡服务器上的不同时间运行脚本,以便在执行期间性能不会降低.
这是脚本:
$csv = Import-Csv -Path 'C:\Scripts\IP Block List.csv' $data = @() $csv | ForEach-Object { $data += $_.From + "-" + $_.To } Set-NetFirewallRule -Name "BlockAllIPsInList" -RemoteAddress $data
这是一个示例CSV文件:
From,To 1.2.3.4,1.2.3.255
所以在这个例子中,它会阻止1.2.3.4 – 1.2.3.255(含)中的所有内容
通过一些工作,可以修改脚本以使用CIDR格式.希望这可以帮助.