Ist es möglich, eine IP-Adresse nach x erfolglosen Anmeldeversuchen auf einem Windows Server zu sperren? Nicht auf ein bestimmtes Konto, von dem ich weiß, wie es geht, sondern auf die gesamte Maschine.
Wir werden ziemlich hart von Brute-Force-Angriffen getroffen, bei denen versucht wird, Benutzernamen zu erraten. Dies würde wirklich helfen, den Server etwas zu entlasten.
windows
brute-force-attacks
HeavyWave
quelle
quelle
Antworten:
Sie können dies mit dem Powershell- und Task-Manager tun. Es ist wahrscheinlich keine perfekte Lösung, aber es funktioniert ganz gut und ich habe ungefähr 100 gesperrte IP-Adressen in zwei Monaten. Ich habe ein Skript geschrieben, das von EventLog angegebene Ereignisse auswählt ("audit failure"). Wenn es von einer IP-Adresse aus viele fehlgeschlagene Anmeldungen gibt, wird sie der (manuell erstellten) Firewall-Regel "BlockAttackers" hinzugefügt, die den Datenverkehr zu angegebenen IP-Adressen blockiert.
PS1-Skript:
Erstellen Sie eine Aufgabe im Scheduler und setzen Sie den Auslöser auf Ereignis 4625 (Windows-Anmeldung einschließlich Terminaldienste). Sie können den Trigger jedoch so einstellen, dass er z. B. zweimal pro Stunde ausgeführt wird, um ein unnötiges Laden des Servers zu vermeiden.
und nach dem Trigger ein Powershell-Skript ausführen. Sie müssen auch höhere Berechtigungen festlegen, um dieses Skript auszuführen. Andernfalls schlägt die Ausführung mit einer Sicherheitsausnahme fehl.
Sie können dieses Skript auch an andere Sicherheitsereignisse binden.
quelle
Ich weiß, dass diese Frage alt ist, aber es war tatsächlich der erste Forumsbeitrag, auf den ich gestoßen bin, als ich vor ein paar Wochen versuchte, genau dasselbe zu tun. Ich habe es geschafft, ein funktionierendes Skript zu entwickeln, das die Ereignisprotokolle 24 Stunden später auf Einträge mit ungültigen Anmeldungsereignissen analysiert, die Einträge mit mehr als 10 ungültigen Anmeldungen auflistet und sie dann mithilfe von in eine IPSec-Filterliste einfügt Befehl netsh. Dann habe ich eine Batch-Datei mit dieser Zeile geschrieben
powershell .\*scriptname.ps1*
und eine geplante Task erstellt, um die Batch-Datei alle 24 Stunden auszuführen (aus irgendeinem Grund würde sie nicht direkt ausgeführt).Ich weiß, dass dieses Skript wahrscheinlich ineffizient ist, aber als ich anfing, daran zu arbeiten, hatte ich absolut keine Erfahrung mit Powershell. Daher lässt meine Fähigkeit, Skripte zu optimieren, sehr zu wünschen übrig. Trotzdem dachte ich, ich würde das mit jedem teilen, der es benutzen könnte.
Ich danke Remunda für die anfängliche Idee, dieses Poster hat mich auf die Idee gebracht, mit Powershell die Ereignisprotokolle zu durchsuchen.
quelle
Dieses Skript basiert auf Remunda Antwort und geht ein wenig weiter https://serverfault.com/a/397637/155102 Es erklärt die „BlockAttackers“ haben in der Regel keine eingegeben IPs noch (was ein „*“ als String zurückgibt). Außerdem wird ein Kommentar in eine Protokolldatei geschrieben, um Sie darüber zu informieren, wann die IP der Regel hinzugefügt wurde.
Ein guter Tipp ist, die "BlockAttackers" -Regel zu erstellen, die die IP-Adressen blockiert, sie jedoch zunächst deaktiviert. Führen Sie dieses Skript dann einmal manuell aus, damit es das Feld "RemoteAddresses" mit den tatsächlichen IP-Adressen auffüllt, die blockiert werden sollen. Sehen Sie sich diese IP-Adressen an, um sicherzustellen, dass nichts Kritisches hinzugefügt wurde, und aktivieren Sie dann die Firewall-Regel. Fügen Sie diese Regel wie beschrieben zu Ihrer Firewall hinzu.
Der Git für dieses Skript
quelle
Ich kann diese Antwort nicht würdigen, aber https://serverfault.com/users/7200/evan-anderson hat sein Projekt erwähnt http://opensource.wellbury.com/projects/windows_sshd_block/newest-release/
quelle
Im Allgemeinen ist es keine gute Idee, Ihre Firewall-Regeln von einer anderen Person steuern zu lassen. Das ist im Grunde das, wonach du hier fragst.
quelle
Dies ist ein alter Thread. Ich habe das Skript von KevinMicke in den Jahren 2014-2015 verwendet. Dann hat es einfach aufgehört zu funktionieren. Daher musste ich es ein wenig bearbeiten, um es an die Windows-Netzwerksicherheitsauthentifizierung anzupassen, bei der keine IP-Adressen im Sicherheitsprotokoll verbleiben. Da ich kein reguläres FTP habe, habe ich diesen Teil entfernt, da er Fehler verursachte, da es keinen Protokollordner gab. Die Hauptänderung betrifft die Quelle von RDP-Ereignissen.
Das obige Skript funktioniert unter Windows 2012. Wenn Sie unter Windows 2008 immer noch Remotedesktop mit Authentifizierung auf Netzwerkzugriffsebene verwenden, müssen Sie möglicherweise den folgenden Trick ausführen. Windows 2008 hat keine IP-Adressen im Sicherheitsprotokoll und scheint diese auch nicht im Microsoft-Windows-RemoteDesktopServices-RdpCoreTS-Protokoll zu haben. Also musste ich eigentlich 2 Protokolle verwenden - Ereignisse aus dem Sicherheitsprotokoll mit erfolgreichen Zugriffsversuchen auf Port 3389 im Firewall-Protokoll abgleichen. Dies ist eine Vermutung, aber es scheint, Kennwortangriffe zu erkennen. Hier ist der Teil, der verletzende IPs sammelt:
HINWEIS: Vergessen Sie nicht, die Firewall-Protokolle zu aktivieren. ANMERKUNG 2: Ich bin kein Powershell-Experte, daher wäre es schön, wenn einige Gurus meinen Code korrigieren / verbessern könnten.
quelle
Ich benutze ts_block kostenlos.
Grundsätzlich handelt es sich um ein "VBScript-Programm, das als WMI-Ereignissenke fungiert, um Ereignisse zu empfangen, die von Windows als Reaktion auf ungültige Terminaldiensteanmeldungen protokolliert wurden."
Scheint perfekt zu funktionieren und das Skript ist unkompliziert, wenn Sie es modifizieren müssen. Sie können entweder zulassen, dass Versuche protokolliert und dann basierend auf der Anzahl der zulässigen Versuche gesperrt werden, und / oder Sie können Anmeldenamen, auf die Sie keinen Zugriff gewähren möchten, fest codieren.
Ich wurde erwischt, als ich versehentlich zweimal den gleichen Namen hinzufügte und der Dienst in eine Endlosschleife überging, die alle 1500 ms neu gestartet wurde, aber sehr einfach zu reparieren / modifizieren ist, wenn Sie mit vbs einverstanden sind.
Meine aktuellen Einstellungen sind nur eine Wiederholung und Sie sind für 2 Tage gesperrt, wobei Anmeldungen wie "admin", "Admin", "Administrator", "Gast" usw. automatisch gesperrt werden. Sollte es unkompliziert sein, auf ip zu wechseln?
Irgendwie macht es süchtig, nachzusehen, welche Tiere über Nacht gesperrt wurden ...
quelle
Meinen Sie damit die Anmeldung am Server / in der Domäne oder die Anmeldung an einer Website, die auf dem Server ausgeführt wird? Wenn Sie sich auf dem Server / in der Domäne anmelden möchten, lautet die Antwort "Nein". Windows hat kein Konzept zum Blockieren von IP-Adressen basierend auf fehlgeschlagenen Anmeldeversuchen, da IP-Adressen keine Sicherheitseinheiten sind. Möglicherweise gibt es Tools von Drittanbietern, die dies tun können, mir sind jedoch keine bekannt, da ich mich noch nie darum gekümmert habe.
quelle
Wenn ein Webserver angegriffen wird, können Sie die Erweiterung für dynamische IP-Beschränkungen installieren . Wenn dies für die Standardauthentifizierung gegenüber dem Server vorgesehen ist, sollten Sie in der Lage sein, Domänen- und Serverisolierungen zu implementieren, die den Umfang der Angriffe auf Domänencomputer einschränken. Außerdem können Sie festlegen, dass nur Versuche von den Systemen zugelassen werden, auf die Sie Zugriff haben müssen der Server. In Windows besteht die Verhinderung von Brute-Force-Angriffen darin, die Kontosperrungsrichtlinie auf 10 Minuten und die Richtlinie für ungültige Kennwörter auf 3 Versuche festzulegen. Dies bedeutet, dass das angegriffene Konto nach 3 Versuchen für 10 Minuten gesperrt wird. IP-Verbindungen können in Windows standardmäßig nicht gesperrt werden. (Nebenbei bin ich auch gespannt, wie viele Anmeldeversuche pro Sekunde erforderlich sind, um das System zu beeinflussen.)
quelle
http://nerderies.blogspot.co.at/2012/12/automatically-banning-ips-with-windows.html
quelle
Mit dem großartigen Skript von remunda als Ausgangspunkt habe ich eine wichtige Sache hinzugefügt, die fehlte: das Blockieren von IP-Adressen für fehlgeschlagene FTP-Anmeldungen . Windows Server protokolliert die IP-Adresse nicht im Sicherheitsprotokoll, wenn sich jemand nicht über FTP anmeldet, sondern setzt die "Quellnetzwerkadresse" auf einen Bindestrich. FTP ist ein sehr verbreiteter Angriffsvektor für Brute-Force-Angriffe. Daher habe ich seinem Skript die Möglichkeit hinzugefügt, die FTP-Protokolle des aktuellen Tages auf mehrere Anmeldefehler zu scannen und diese IP-Adressen ebenfalls zu blockieren.
Update 2014/02/07: Als ich einige Anpassungen an dieser Funktion vorgenommen habe, um alle meine alten FTP-Protokolle zu verarbeiten, wurde mir klar, dass die von ihr erstellten Arrays bei einer immensen Anzahl von Versuchen (über 50.000) sehr groß und die Verarbeitung unglaublich langsam sein würden. Ich habe es seitdem umgeschrieben, um es viel effizienter bei der Verarbeitung von FTP-Protokollen zu machen.
Ich habe auch herausgefunden, dass es ein beliebiges festes Limit von 1000 gibt, wie viele IPs in einer Windows-Firewall-Regel enthalten sein können. Aufgrund dieser Begrenzung musste ich automatisch eine neue Regel erstellen, wenn die letzte voll ist. Das erledigt es jetzt und erstellt auch die anfängliche Firewall-Regel (falls Sie keine eigene erstellen), sodass das einzige Setup darin besteht, sie dem Scheduler hinzuzufügen, damit sie ausgeführt wird, wenn ein Ereignis 4625 auftritt.
Hier ist der Code, der sowohl unter Windows Server 2008 R2 als auch unter Windows 7 getestet wurde:
quelle
Set-ExecutionPolicy RemoteSigned
damit Sie lokale Skripts ausführen können. Andernfalls erhalten Sie eine Fehlermeldung: "blockattackers.ps1 kann nicht geladen werden, da die Ausführung von Skripten auf diesem System deaktiviert ist."Das von kevinmicke bearbeitete Skript von remuda (7. Februar um 21:59 Uhr) hat den Kontrollkanal des FTP nicht überprüft, der auf meinem System einen eigenen Ordner hat (Windows Server 2008 R2). Auch
530 11001
haben -Events nicht erkannt worden, was zu erscheinen scheinen , wenn nur der Hacker den Zugriff auf den Steuerkanal versucht. Deshalb habe ich einige Zeilen im Skript angehängt, um einen zweiten FTP-Log-Ordner zu überprüfen:Der Name des FTP-Protokollordners
FTPSVC*
in Zeile 54 muss aus wichtigem Grund ausgefüllt werden. In den Zeilen 115 und 116 muss die IP Ihres Servers (IPv4 und IPv6) eingegeben werden, andernfalls kann die IP des eigenen Servers hundertmal zur Firewall-Regel hinzugefügt werden. Die Variable, die$int_block_limit
ich auf meinem Server auf 1 setze, sodass das Skript einen Hackerangriff blockiert, der innerhalb von zwei Sekunden ein 4625-Ereignis verursacht. Ich denke immer noch darüber nach, das Skript zusätzlich zu 4625-Ereignissen in einem Zeitraum von wenigen Minuten auszuführen. Natürlich wäre es auch möglich, die Skripte zu trennen und ein Skript die vom 4625-Ereignis ausgelösten 4625-Ereignisse und ein anderes Skript die Protokollordner des FTP-Servers regelmäßig alle 5 oder 10 Minuten überprüfen zu lassen, selbst bei separater Firewall-Regel und Protokolldatei.quelle
Ich habe meine für SQL hinzugefügt
Dann müssen Sie das Array in ips_all einfügen
quelle