Linux Tutorial: Fail2Ban unter Ubuntu 21 installieren und konfigurieren


In diesem Tutorial erkläre ich, wie man schnell und einfach Fail2Ban auf seinem Linux Server einrichtet.

Fail2Ban ist ein mächtiges IP-Auto-Ban-Tool, welches auf jeder Linux VM laufen sollte, die im öffentlichem Netz erreichbar ist. Durch die simple konfiguration kann man es Hackern, Spammern, usw. sehr schwer machen, Zugriff auf den eigenen Server zu bekommen.

Wichtig: Wenn später der BruteForce Angriff getestet wird, sollte man dies nicht mit seiner eigenen IP Adresse sondern mit einem VPN machen. Je nach Ban-Dauer hat man dann keinen Zugriff mehr auf den Server.

1. Fail2Ban installieren

Um Fail2Ban auf seinem Ubuntu 20 Server installieren zu können benötigt man folg. Command:

sudo apt install fail2ban

Nach der Installation sollte bereits ein Service laufen, den wir mit folg. Command prüfen können:

sudo systemctl status fail2ban

Wenn man so eine Antwort erhält, sollte die Installation erfolgreich sein:

Der Service ist erfolgreich gestartet und einsatzbereit

2. Fail2Ban Grundkonfiguration

Nun können wir relativ simpel und einfach eine Konfiguration erstellen, in der wir unsere eigenen Regeln bestimmen können. Kopiert dazu die Datei „/etc/fail2ban/jail.conf“ zu „/etc/fail2ban/jail.local“ – mit diesem Befehl:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Sobald wir den Service neustarten, wird unsere jail.local geladen. Es sollten niemals Änderungen in der jail.conf durchgeführt werden, da diese Datei bei Updates höchstwahrscheinlich überschrieben wird.

Nun öffnen wir die jail.local:

sudo nano /etc/fail2ban/jail.local

In dieser jail.local können wir jetzt folg. Anpassungen durchführen. Die einzelnen Keywords kann man bei Nano per „STRG + W“ suchen:

ignoreself = true
ignoreip = 127.0.0.1/8 ::1
bantime  = 1d
findtime  = 10m
maxretry = 3

Kurz erklärt: IgnoreSelf und IgnoreIP sind für whitelist Funktionen. Wenn man die Prüfung der lokalen Adresse und andere IP Adressen von extern zulassen will, muss man dies einfügen.

Bantime ist die Zeit, wie lange eine IP Adresse auf die Blacklist gesetzt wird. Im Normalfall reicht 1d, wer aber auf nummer Sicher gehen will kann dies auch auf 1y (1 Jahr) setzen.

findtime ist der Zeitraum in dem der Angriff stattfinden soll. Verbunden mit maxRetry bedeutet das also: Wenn die IP innerhalb 10 Minuten 3 mal das falsche User Passwort eingibt (z.B. für SSH) wird die IP für einen Tag gesperrt.

Als nächstes richten wir noch die Jails ein. Ein Jail ist eine Konfiguration pro Dienst. Man kann also verschiedene Jails für verschiedene Dienste oder Ports erstellen – sodass etwas mehr Dynamik in das Sperren der Nutzer kommt.

Beispielsweise will man den SSH Zugang auf max. 3 Versuche setzen und den User dann sperren – allerdings sollte ein FTP Kunde mehr Versuche bekommen, da dieser ja auch einfach das Passwort vergessen haben könnte.

Die Jails findet man in der gleichen Datei relativ weit unten:

Hier fängt die Jails Konfig direkt mit SSH an.

Beispielconfig für SSH Jail

Wie oben im Bild zu sehen, habe ich für SSH bereits eine funktionierende Jail Config:

[sshd]
enabled = true
maxretry = 3
findtime = 12h
bantime = 1d
port = ssh

Wichtig: Man muss bei jedem Dienst „enabled = true“ setzen, da sonst die globale Config greift. Die globale Config setzt alles auf disabled. Beim Port kann man entweder den Dienst (In diesem Fall ssh) oder auch Ports hinzufügen.

Speichern wir nun die Datei mit „STRG X – Y“ müssen wir den Service einmal neustarten, damit die neue Konfiguration geladen wird:

sudo service fail2ban restart

Und zum Schluss prüfen wir, ob wir alles richtig konfiguriert haben:

sudo systemctl status fail2ban

Wenn wir „Active“ beim Status zurückbekommen ist unsere Config geladen.

3. Konfiguration Praxistest

Nochmal ganz wichtig: Testet Fail2Ban nicht mit eurer eigenen IP sondern nutzt einen VPN!!!

Damit wir jetzt auch sehen, dass Fail2Ban funktioniert, wollen wir per KiTTy oder PuTTy ein neues Fenster (Mit aktivem VPN) öffnen und uns per SSH einloggen.

Als Username nehmen wir egal welchen Namen (Die BruteForce Kiddos aus Indien wissen wahrscheinlich auch nicht die Usernamen vom Server) und egal welches Passwort. Nachdem die Verbindung abgebrochen wurde, können wir mit der aktuellen IP nicht mehr mit dem Server verbunden werden.

Jetzt schalten wir den VPN aus und versuchen uns wieder per SSH auf den Server zu verbinden. Wenn man jetzt wieder das Login Window sieht, hat der Test funktioniert und Fail2Ban läuft!

Auch wichtig ist, dass bei der Grundeinrichtung des Servers die Firewall eingerichtet wird. Man sollte immer nur die Ports öffnen, die man braucht. Also z.B. für SSH Port 22, für HTTP 443, usw.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.