Windows-Firewall - Blockieren von IP-Adressbereichen in großen Mengen - Überlegungen zur Leistung?


7

Eine unserer Dienstleistungen ist ein Extranet für die ausschließliche Nutzung unserer 200 Mitarbeiter in ganz Großbritannien. Wir sehen eine große Anzahl von Anmeldeversuchen aus China, Russland, der Ukraine und Nigeria. Ich habe große Listen von IP-Bereichen, die ich blockieren möchte. Es gibt Tausende von Einträgen.

(Für die Zwecke dieser Diskussion bin ich nicht daran interessiert, eine Debatte über die Rechte und das Unrecht der Blockierung ganzer Länder zu eröffnen. Das ist die Anforderung, die ich habe - und die ich erfüllen muss.)

Ich habe ein Powershell-Skript geschrieben, das die Liste alle 24 Stunden aktualisiert und die Windows-Firewall mit Blockregeln auffüllt. Aber ich bin nervös, es zu aktivieren.

Meine Frage ist, wie effizient Windows Firewall Tausende von Blockregeln auf diese Weise handhabt. Wenn mein Skript beispielsweise 10.000 Blockregeln (oder sogar 100.000) enthielt, funktioniert es dann effektiv oder kommt es zum Stillstand?

Während ich meinen Webserver so geschützt wie möglich halten möchte, muss ich sicherstellen, dass der Webserver Anfragen schnell bearbeitet.

AKTUALISIEREN

Ich habe beschlossen, ein Risiko einzugehen und das PowerShell-Skript auszuführen. Ich habe mich für eine etwas andere Technik entschieden. Anstatt 6700 Regeln zu erstellen (die Millionen von IPs abdecken), habe ich eine Regel erstellt und alle fehlerhaften IP-Bereiche in die Mutter aller Remote-Adressen verschoben.

Ergebnis : Funktioniert einwandfrei. Blockiert den größten Teil Chinas, Russlands, Taiwans, der Ukraine und Nigerias, wo wir die meisten eingehenden Hacking-Versuche erhalten. Und es gibt keinen merklichen Leistungsunterschied. Wir scheinen die gleiche Anzahl von Anfragen ohne Änderung zu bearbeiten. Eine für die Windows-Firewall. Es scheint in der Lage zu sein, Tausende von IP-Blöcken sehr effizient zu handhaben.

UPDATE 2 - FEEDBACK

Das Skript ist seit ein paar Tagen in Kraft, daher dachte ich, Sie würden sich über Feedback freuen, wie es läuft. Ich habe das Skript als geplanten Job eingerichtet, der täglich ausgeführt wird, und die Firewall mit neuen IP-Bereichen aktualisiert, die aus einer CSV-Datei eingelesen werden. Das alles funktioniert perfekt, die Firewall funktioniert sehr schnell. Allerdings gibt es ein Wort der Vorsicht: Das Skript selbst dauert ca.. Die Laufzeit beträgt 4-5 Minuten. Während dieser Zeit ist die CPU voll und die Webanforderungen sind äußerst träge.

Daher empfehle ich, das Skript abends oder während eines Wartungsfensters auszuführen, in dem Sie keine hohe Last erwarten.

Die Lösung für mich besteht darin, das Skript zu unterschiedlichen Zeiten auf jedem meiner Server mit Lastenausgleich auszuführen, damit die Leistung während der Ausführung nicht beeinträchtigt wird.

Hier ist das Skript:

$csv = Import-Csv -Path 'C:\Scripts\IP Block List.csv'

$data = @()
$csv | ForEach-Object { $data += $_.From + "-" + $_.To }

Set-NetFirewallRule -Name "BlockAllIPsInList" -RemoteAddress $data

Und hier ist eine CSV-Beispieldatei:

From,To
1.2.3.4,1.2.3.255

In diesem Beispiel würde also alles von 1.2.3.4 bis einschließlich 1.2.3.255 blockiert

Mit ein wenig Arbeit könnte das Skript so geändert werden, dass es auch mit CIDR-Formaten funktioniert. Hoffe das hilft.


3
Ich würde dies wahrscheinlich in Hardware und nicht auf Betriebssystemebene erledigen.
ewwhite

@ewwhite Danke für deinen Kommentar. Ich auch, aber leider bin ich auf einer gehosteten Lösung ohne physische Firewall zum Spielen. Ich habe nur Windows Firewall.
Simon Goldstone

Gibt es eine Möglichkeit, diese Bedenken an den Hosting-Anbieter weiterzuleiten und zu prüfen, ob Upstream-Lösungen verfügbar sind?
ewwhite

@ewwhite Leider nicht. Es ist eine gehostete Lösung, aber nicht verwaltet. Ich muss auf jeden Fall eine Softwarelösung für dieses Problem finden.
Simon Goldstone

Antworten:


2

Wir haben das mit einem Spieleserver gemacht. Wir haben es schließlich für ein Plugin auf pfsense geändert, aber wir haben keine Leistungsminderung mit ein paar tausend IP-Blöcken in der Windows-Firewall bemerkt. Das Blockieren basierend auf IP ist eine der rudimentärsten Aufgaben, die eine Firewall ausführen kann. Abgesehen vom Verwaltungsaufwand (Sie haben bereits ein Skript dafür) würde ich keinen Grund sehen, warum es ein Problem geben würde. FWIW, ich habe versucht, route53 von amazon dafür zu verwenden, aber es hat zu diesem Zeitpunkt nicht unseren Zweck erfüllt. Es würde Ihnen erlauben, eine gefälschte IP in diesen Ländern aufzulösen.


Schätzen Sie das Feedback, danke. Ich werde es versuchen und sehen, was dann passiert!
Simon Goldstone

Siehe meine aktualisierte Frage. Die Ergebnisse sind sehr vielversprechend. Sie haben absolut Recht - sehr effektiv, um Millionen von IP-Adressen sehr effizient zu blockieren. Danke für die Warnung.
Simon Goldstone

2

Auch wenn unsere Szenarien unterschiedlich sind, möchte ich Folgendes mitteilen: Ich habe einen kleinen VPS (1 CPU, 256 MB RAM), auf dem einige Dienste unter Linux ausgeführt werden, und die Firewall verfügt über Tausende von Regeln, die ganze Adressblöcke verweigern, die sich über ganze Länder erstrecken, und Ich habe keine Verlangsamung gesehen.

Ich denke, es ist weniger anspruchsvoll für den Server, einfach viele Pakete zu verwerfen, als sie zur Anwendung gehen zu lassen und verarbeitet zu werden, nur um sie zurückzusenden und eine Fehlermeldung zu erhalten. Das Fallenlassen erfordert viel weniger Kraft.


Vielen Dank für Ihr Feedback, sehr geschätzt. Ich würde Ihnen zustimmen, dass das frühzeitige Scheitern die beste Option ist, um Menschen so früh wie möglich in der Pipeline zu verweigern. Wie Sie jedoch betonen, benötige ich hier einige Eingaben zur Windows-Firewall.
Simon Goldstone

Sie können einen Blick auf wipfw.sourceforge.net werfen , es ist ein IPFW-Port von FreeBSD und selbst auf Hardware der unteren Preisklasse sehr performativ.
ThoriumBR
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.