Guild Wars 2, Powershell und die API

In Guild Wars 2 hat man die Möglichkeit auf API-Calls. Die Antwort eines solchen Calls kann man fĂŒr seine Zwecke nutzen. So hat man z.B. die Möglichkeit auf einen Event-Listener. Im Grunde ist das nichts anderes als „Ich schicke Anfragen an den API-Server, schau mir das Resultat an und wenn da was dabei ist, was ich suche, informiere ich mich.“

Das macht folgendes Powershell-Script:

Ich checke gerne die Events die eine Daily-Truhe abwerfen. Wenn ein solches Event startet, wird ein Sound abgespielt und ein Fenster öffnet sich. Wenn das Event einmal aktiv war, wird es aus der Liste der zu prĂŒfenden Events gelöscht. Das macht das Script so lang, bis kein Event mehr vorhanden ist.

Anzupassen gibt es da eigentlich nur die $world_id. Diese ist aktuell auf Millersund gesetzt.

Die mÀchtige Powershell

Ich stand kĂŒrzlich vor der Herausforderung meinen Windows-Server gegen die nervigen RDP Brute-Force-Attacken abzusichern. Hier sind im Sekundentakt die Anfragen aus aller Welt reingekommen. Nervig war aber nicht der Umstand das es versucht wurde. Nervig war viel mehr die eklige CPU-Last die die verursacht haben.

Sicher gibt es da schon 2 universelle Heilmittel die ĂŒberall groß und breit vorgeschlagen werden.
Zum einen kann man ein VPN einrichten, zum anderen einfach den RDP-Port abĂ€ndern. VPN einrichten war ich zu faul. RPD-Port abĂ€ndern, wenn man keinen physischen Zugriff auf die Maschine hat, kommt mir nicht in die TĂŒte.

So machte ich mich auf die Suche nach einer Software die mir IP XYZ blocked wenn zu viele Fehlgeschlagene Logins per Remote Desktop (Audit Error) auftauchen. Software war schnell zu finden. FĂŒr um die 80€ oder so 🙂

Zum Vergleich: Unter Linux hat man wirklich gute Programme die sowas könnten und nichts kosten.

Da viel mir die Windows Powershell ein. Powershell bietet die Möglichkeit die Events auszulesen, zu parsen und mit dem Ergebnis etwas zu machen. Warum also nicht ein Script schreiben, welches mir die Audit-Errors ausliest, die IP rausholt und jene der Firewall hinzufĂŒgt?

7 Zeilen Code, vollkommen kostenlos, hocheffektiv und was noch viel besser ist: Keine Zusatzsoftware die Ressourcen frisst 😀

Alles was man tun muss:
Firewallregel mit dem Namen BruteStop anlegen.
Das Script per Task starten lassen.
Entweder alle X-Minuten oder bei Event 4625 (Audit-Failure)

Das Script holt sich alle IP’s der letzten 12 Stunden die 15 Audit-Errors produziert haben und fĂŒgt die IP der Firewall-Regel hinzu. Damit die Banliste nicht irgendwann ĂŒberquillt, stehen auch wirklich nur die IP’s der letzten 12 Stunden in der Firewallregel. Alle anderen fallen aus der Liste, könnten aber bei einem neuem Angriff wieder schnell in der Liste auftauchen 😉