Fail2ban als Intrusion Detection und Prevention System
Fail2ban ist ein in Python geschriebenes Sicherheitsprogramm für Linuxserver, um Brute Force Attacken in Anmeldelogs (SSH, FTP...) zu entdecken und bei zu vielen vergeblichen Anmeldeversuchen die angreifende IP-Adresse für eine vordefinierte Zeit zu bannen. Die Sperrzeit (bantime) kann vom Standard 10 Minuten auf mehrere Stunden hochgesetzt werden und macht damit DoS-Angriffe unwirksam. Ohne solch ein Intrusion Detection und Prevention System ist ein Server im Internet ungeschützt und wäre schnell angreifbar!
Installation von fail2ban
Zwei Videos zeigen die einzelnen Installationsschritte gut auf:
Linux Guides:
https://www.youtube.com/watch?v=jLPK67lSoLo
realtm_csgo :
https://www.youtube.com/watch?v=nqvbAkr-QMQ
Weg 1 per Konsolenbefehle:
In die Konsole per SSH-Client wie Putty oder Bitvise
SSH-Client einlogen und folgende Befehle eingeben:
a)
b) sudo apt install fail2ban
-> installiert das Sicherheitsprogramm fail2ban
c)
sudo systemctl start fail2ban
-> startet das installierte Programm
d)
sudo systemctl enable fail2ban
-> richtet das Programm in den
Autostart ein; kann dann per Befehl htop erkannt werden
Weg 2 durch Schnelleinrichtung als vorkonfiguriertes Dietpi-Programm:
In die Konsole per SSH-Client wie Putty oder Bitvise
SSH-Client einlogen und folgende Befehle eingeben:
a) dietpi-software -> ruft Fenster zur Dietpi-Konfiguration und Installation auf
b)
Browse Software auswählen und
ok klicken.
c) Programm Nr 73 im Softwareauswahlfenster (im Bereich System
Security weiter unten) mit Leertaste markieren und mit
confirm bestätigen.
d) Zurückgekehrt zum Dietpi-Startfenster Install Go Start installation for selected software -> ok -> installiert und startet das Programm fail2ban
Fail2ban-Konfiguration
Alle Fail2ban-Konfigurationsdateien liegen im
Verzeichnis /etc/fail2ban. Dort liegt die wichtige
Konfigurationsdatei jail.conf, die man mit dem Konsolenbefehl nano
/etc/fail2ban/jail.conf ansehen kann. Diese Datei sollte aber nicht
editiert werden, da sie beim nächsten Update überschrieben würde und wieder in
Standardkonfiguration vorläge. Man erzeugt deshalb eine Kopie dieser Datei mit
dem Namen jail.local, welche alle auf eigene Bedürfnisse
angepassten jails zum Bannen ungewünschter Angreifer enthält. Gib dazu folgende
Konsolenbefehle ein:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Zum Editieren dieser neu erstellten jail.local öffnet man den Editor nano mit folgendem Befehl:
sudo nano /etc/fail2ban/jail.local
Eine Minimalkonfiguration dieser jail.local könnte so aussehen:
Für jeden Dienst, der geschützt werden soll, muss ein Jail [in eckigen Klammern] eingefügt werden; Musterkonfigurationen dazu findet man zahlreiche im Internet.
Um einen Dienst im Programm fail2ban zu aktivieren, muss unbedingt die Zeile
enabled = true eingefügt werden.
Die bantime gibt die Sperrzeit in Sekunden (600 = 10 Minuten) an oder Angaben in M (Minuten) bzw. h (Stunden).
Mit maxretry (kein Plural) gibt man die Anzahl an Versuchen
an, die innerhalb der bantime erlaubt sind, bevor es zur Sperre kommt.
Zur Kontrolle, ob fail2ban richtig läuft, ruft in der Konsole folgende Befehle auf:
systemctl status fail2ban -> alles ok, wenn
active running angezeigt wird
fail2ban-client status sshd (oder ein anderes jail wie apache)
-> zeigt eine Übersicht der fehlgeschlagenen Einwahlversuche,
bzw. gesperrte IPs an
Fail2ban hat schon zahlreiche vorkonfigurierte Filter,
die nur noch angepasst und gestartet werden müssen.
Mit folgendem Konsolenbefehl kann man sich alle Filter anzeigen lassen:
ls /etc/fail2ban/filter.d
Einige umfangreich konfigurierte jail.conf-Beispikonfigurationen findet man an
folgenden Internetadressen:
https://gist.github.com/mgeeky/fc3a8d8e9cb06f31aac20fab7872d531
https://crycode.de/fail2ban/#beispiel-einer-jail-local
https://webdock.io/en/docs/how-guides/security-guides/how-configure-fail2ban-common-services