Sim*_*one 9 performance firewall windows-firewall windows-server-2012
我们的一项服务是专供我们在英国的 200 名员工使用的外联网。我们看到来自中国、俄罗斯、乌克兰和尼日利亚的大量登录尝试。我有大量要阻止的 IP 范围列表。有数以千计的条目。
(出于本次讨论的目的,我不想就封锁整个国家的对与错展开辩论。这是我的要求——我需要满足它。)
我编写了一个 Powershell 脚本,它每 24 小时更新一次列表,并将使用阻止规则填充 Windows 防火墙。但是,我对激活它感到紧张。
我的问题是,Windows 防火墙以这种方式处理数千条阻止规则的效率如何?例如,如果我的脚本包含 10,000 个块规则(甚至 100,000 个),它会有效地工作还是会停止?
虽然我希望尽可能保护我的 Web 服务器,但我需要确保 Web 服务器能够快速处理请求。
更新
我决定抓住机会运行 PowerShell 脚本。我采用了稍微不同的技术。我没有创建 6700 条规则(涵盖数百万个 IP),而是创建了一个规则并将所有错误的 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
Run Code Online (Sandbox Code Playgroud)
这是一个示例 CSV 文件:
From,To
1.2.3.4,1.2.3.255
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中,它会阻止从 1.2.3.4 - 1.2.3.255 包含的所有内容
通过一些工作,脚本也可以修改为使用 CIDR 格式。希望这可以帮助。
小智 2
我们用游戏服务器做到了这一点。我们最终将其更改为 pfsense 上的插件,但我们没有注意到 Windows 防火墙中的几千个 ip 块有任何性能下降。基于 IP 的阻止是防火墙可以执行的最基本的任务之一。除了管理开销(您已经有一个脚本)之外,我看不出有任何原因会出现问题。FWIW,我考虑使用亚马逊的route53来实现此目的,但当时它没有达到我们的目的。它可以让您解析这些国家/地区的虚假 IP。
归档时间: |
|
查看次数: |
5492 次 |
最近记录: |