Wer Exchange Server und ihre Webschnittstellen direkt via Portforward im Internet veröffentlicht kennt vieleicht das Problem: Jemand versucht die Benutzer und Passwörter zu erraten oder probiert per Brute-Force an die Mail Konten zu kommen. Leider bieten weder die Windows Bordmittel noch Exchange Server die Möglichkeit nach ein paar fehlgeschlagenen Anmeldeversuchen die IP-Adresse zu blocken.
Hier also wieder ein Script aus dem Bereich Quick and Dirty: Mittels Windows Ereignis Anzeige bekommen man die IP-Adresse herraus, von der ein fehlerhaftes Login ausgegangen ist. Das zugehörige Event ist 4625:
Ich habe daher 2 kleine Scripte erstellt, die folgende Funktion haben:
Das erste Script schreibt die IP-Adresse für jede fehlerhafte Login in eine Datei, das zweite Script zählt die Anmeldeversuche von jeder IP-Adresse und konfiguriert eine Windows Firewall Regel, wenn zu viele fehlerhafte Anmeldungen von einer IP ausgehen.
Leider hat sich gezeigt das diese Methode nicht hundertprozentig zuverlässig ist, es werden also bei vielen falschen Anmeldeversuchen, wie etwa bei einer Brute-Force Attacke nicht jedes Login registriert, was dazu führt das die IP nicht schon nach 10 Versuchen, sondern erst nach um die 30 Versuchen blockiert wird. Ich habe daher wenig Zeit in die Scripte investiert, da es natürlich Lösungen gibt, die solch eine Funktion besser umsetzen können.
Wer die Scripte trotzdem nutzen möchte, muss sie wie folgt einrichten:
Legt in der Aufgabenplanung eine neue Aufgabe an und definiert als Trigger das Event 4625
Als Aktion soll das Script „eventaction.ps1“ gestartet werden, das Script sammelt die 4625er Events und schreibt sie in eine Datei:
Danach legt eine zweite Aufgabe mit dem Trigger „Bei Systemstart“ an:
Als Aktion soll das Script „blacklist-host.ps1“ gestartet werden:
Das Script läuft kontinuierlich in einer Schleife und wertet die Datei „c:\IPban\ipban.txt“ aus. Es genügt vorher eine leere Datei mit dem Namen zu erzeugen, damit das Script nicht auf einen Fehler läuft. Die Pfade lassen sich innerhalb der Script Dateien anpassen.
Im Script „blacklist-host.ps1“ lässt sich außerdem festlegen, ab wann und für wie lange eine IP geblockt werden soll:
Das Script konfiguriert dann die Windows Firewall mit einer „Verweigern“-Regel, wenn eine IP erkannt wurde die zu viele fehlerhafte Logins produziert hat:
Ich habe die Scripte nur kurz in meiner Testumgebung getestet, hier gilt es also selbst noch etwas Hand anzulegen und ausgiebige Tests durchzuführen. Hier nun die Scripte zum Download.
[wpdm_file id=11]
Vieleicht kann es ja jemand gebrauchen