🏡 blog.dannykorpan.de


Windows Server Firewall mit IPBan aufwerten

Tags windowsserver ipban firewall
03.12.2022

Fail2Ban

Um einen Server sicher im Internet oder einer DMZ zu betreiben, müssen bestimmte Grundvoraussetzungen bei der Sicherheit geschaffen werden. Unter anderem eine vernünftig konfigurierte Firewall, regelmäßige und zeitnahe Einspielung von Sicherheitsupdates, Anmeldung mittels 2-Faktor-Authentifizierung und noch ein paar weitere Punkte. Die integrierte Windows-Firewall wehrt dabei jedoch keine Brute Force-Attacken ab, also das gezielte Durchtesten einer Vielzahl an Benutzernamen und Kennwörtern an unterschiedlichen Diensten wie SSH, VNC, RDP etc. um so in das System einzudringen und die Kontrolle zu übernehmen. Im schlimmsten Fall ist der Server von außen aufgrund Überlastung nicht mehr ansprechbar.

Einen Windows Server im (wilden) Internet einzusetzen bringt eine Reihe zusätzlicher Herausforderung bei der Absicherung mit sich. In diesem kurzen Artikel möchte ich euch erklären, wie ich die integrierte Windows Firewall mittels der Open Source Software IPBan aufgewertet habe, um ihr einen von Fail2Ban bekannten Funktionsumfang nachzurüsten.

Funktionsumfang

  • Auto ban ip addresses on Windows and Linux by detecting failed logins from event viewer and/or log files. On Linux, SSH is watched by default. On Windows, RDP, OpenSSH, VNC, MySQL, SQL Server and Exchange are watched. More applications can easily be added via config file.
  • Highly configurable, many options to determine failed login count threshold, time to ban, etc.
  • Banning happens basically instantly for event viewer. For log files, you can set how often it polls for changes.
  • Very fast - I’ve optimized and tuned this code since 2012. The bottleneck is pretty much always the firewall implementation, not this code.
  • Unban ip addresses easily by placing an unban.txt file into the service folder with each ip address on a line to unban.
  • Works with ipv4 and ipv6 on all platforms.

Link zum Projekt auf GitHub

Systemvoraussetzungen

IPBan verrichtet seine Arbeit bereits ab Windows Server 2012 . Diese Version von Windows erhält jedoch schon seit längerer Zeit keine Sicherheitsupdates mehr und daher empfehle ich mindestens einen Windows Server in Version 2019 einzusetzen.

Vorarbeiten

IPBan wird ganz einfach mittels eines PowerShell-Einzelers installiert. Da wir jedoch als Administrator genau wissen möchten, was hier bei der Installation auf unserem System passiert, sehen wir uns zuerst das Installationsskript im Detail an.

Installation und Einrichtung

  1. Sobald du dir darüber im Klaren bist, was genau bei der Installation passiert, rufst du PowerShell im Administrator-Modus auf und setzt diesen Befehl ab

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/DigitalRuby/IPBan/master/IPBanCore/Windows/Scripts/install_latest.ps1'))

  2. Das war’s auch schon, IPBan ist installiert und verichtet bereits seine Arbeit im Hintergrund. Es wird bei der Installation automatisch ein Dienst installiert. So ist sichergestellt, dass IPBan auch ohne Benutzeranmeldung automatisch im Hintergrund mitstartet. Jetzt kannst du IPBan an deine individuellen Anforderungen anpassen. Ohne weitere Konfiguration ist IPBan jedoch bereits voll funktionsfähig! Windows Firewall - IPBan

  3. Öffne die ipban.config unter ‘C:\Program Files\IPBan’

  4. Die config-Datei ist sehr gut kommentiert, weitere Details findest du im Wiki. Ich habe folgende Einstellungen angepasst:

    <add key="IPThreatApiKey" value="" />
    Um dem Projekt IPThreat IP-Adressen von ausgehenden Brute-Force-Angriffen zu übermitteln, benötigt man einen kostenfreien API-Key. Wie man diesen erhält, kannst du in den kommentieren Zeilen über der Konfigurationseinstellung lesen. Diese Einstellung ist optional. Wer jedoch IPThreat unterstützten möchte, kann hier mithelfen. Somit kann jeder davon profitieren. Wie du davon profitieren kannst, siehst du in der letzten Einstellung, ganz unten.
    <add key="Whitelist" value=""/> 
    Hier habe ich alle statischen IP-Adressen eingerichtet, von denen ich regelmäßig aus zugreife. Eine Whitelist eben, damit ich im Fall einer mehrfachen Falscheingabe nicht selbst ausgesperrt werde.
    <add key="ClearFailedLoginsOnSuccessfulLogin" value="true"/>
    Auch ein Administrator kann sich mehrfach vertippen und eine Falscheingabe provozieren, trotz Passwortmanager. Nach einem erfolgreichen Login wird die Anzahl der fehlerhaften Versuche ausgehend von der IP-Adresse zurückgesetzt. Wir setzen den Wert daher auf true.
    <add key="ProcessInternalIPAddresses" value="false"/>
    Wer IPBan zuerst auf einem internen Testserver ausprobieren möchte, was ich absolut empfehle, sollte den Wert hier auf true setzen.
    <add key="FirewallUriRules" value="IPThreat,01:00:00:00,https://lists.ipthreat.net/file/ipthreat-lists/threat/threat-100.txt.gz,10000"/>
    Hier kommt der erste Punkt mit der Übermittlung der IP-Adresse an IPThreat zum Tragen. Diese Liste aggregiert alle IP-Adressen von denen Attacken ausgehen und sperrt sie bereits im Vorfeld aus. Weitere Listen und Informationen zur Liste selbst, findet ihr hier

  5. Anschließend startet man den IPBan-Dienst neu. Windows Dienste - IPBan

Ob IPBan seine Arbeit verrichtet, kannst du im Logfile ’logfile.txt’ unter ‘C:\Program Files\IPBan’ einsehen. Logfile - IPBan

Bei mir waren innerhalb von 24h mehrere hundert IP-Adressen hinterlegt. IPBan hinterlegt dabei alle Einstellungen transparent in der Windows-Firewall. Windows Firewall - IPBan


BoilerplatesCheat SheetsImpressumDatenschutz