Firewall

Windows 防火牆 - 大量阻止 IP 地址範圍 - 性能考慮因素?

  • September 4, 2014

我們的一項服務是為我們在英國的 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

這是一個範例 CSV 文件:

From,To
1.2.3.4,1.2.3.255

所以在這個例子中,它將阻止從 1.2.3.4 到 1.2.3.255 的所有內容

通過一些工作,腳本也可以修改為使用 CIDR 格式。希望這可以幫助。

我們用遊戲伺服器做到了這一點。我們最終將其更改為 pfsense 上的一個外掛,但我們沒有註意到 Windows 防火牆中有幾千個 ip 塊有任何性能下降。基於 ip 的阻止是防火牆可以做的最基本的任務之一。除了管理成本(你已經有一個腳本)之外,我看不出有什麼原因會出現問題。FWIW,我考慮使用亞馬遜的 route53 來解決這個問題,但當時它並沒有達到我們的目的。它會讓您在這些國家/地區解決虛假 IP。

引用自:https://serverfault.com/questions/625529