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.
quelle
Antworten:
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.
quelle
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.
quelle