Bisher habe ich ab Debian 8 hier eine Anleitung zu dem Programm geschrieben. Diese Anleitung bezieht sich auf Version 10 Buster.
Für alle, die fail2ban noch nicht kennen, es handelt sich um ein Tool, welches die Anzahl der (falschen) Zugriffe pro IP Adresse begrenzen kann.
1. Server-Zugriffe anzeigen
Die Zugriffe lassen sich in folgender Datei auslesen:
nano /var/log/auth.log
2. Fail2Ban installieren
Fail2Ban lässt sich unter Debian sehr einfach installieren.
apt-get install fail2ban
3. Fail2Ban konfigurieren
3.1 Konfigurationsdatei erstellen
Der Pfad der Konfigurationsdatei lautet: “/etc/fail2ban/jail.conf”. Alle Änderungen in dieser Datei werden jedoch bei einem Update von Fail2Ban überschrieben. Um dies zu verhindern erstellen wir uns eine Kopie dieser Datei, die wir dann bearbeiten. Diese Änderungen bleiben auch nach einem Update erhalten.
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
3.2 Konfigurations-Grundlagen
Nun öffnen wir die neue Datei:
nano /etc/fail2ban/jail.local
Wenn ihr ein paar Zeilen nach unten scrollt, dann seht ihr folgende Einstellungen:
# "bantime" is the number of seconds that a host is banned. bantime = 10m # A host is banned if it has generated "maxretry" during the last "findtime" # seconds. findtime = 10m # "maxretry" is the number of failures before a host get banned. maxretry = 5
Diese Einstellungen legen fest, nach wievielen falschen Versuchen eine IP gesperrt wird und wie lange diese Sperre gilt.
Wenn ihr noch etwas weiter scrollt, könnt ihr noch eure E-Mail Adresse angeben.
# Destination email address used solely for the interpolations in # jail.{conf,local,d/*} configuration files. destemail = eure@email.de
Nun bekommt ihr die verschiedenen Methoden angezeigt, die fail2ban beherrscht zum Bannen.
# The simplest action to take: ban only action_ = %(banaction)... # ban & send an e-mail with whois report to the destemail. action_mw = %(banaction).... # ban & send an e-mail with whois report and relevant log lines # to the destemail. action_mwl = %(banaction).... # See the IMPORTANT note in action.d/xarf-login-attack for when to use this action # # ban & send a xarf e-mail to abuse contact of IP address and include relevant log lines # to the destemail. action_xarf = %(banaction).... # ban IP on CloudFlare & send an e-mail with whois report and relevant log lines # to the destemail. action_cf_mwl = cloudflare...
Etwas weiter unten könnt ihr nun auswählen, was ihr tun möchtet. Ich habe mich für die erste Methode entschieden (action_)
# Choose default action. To change, just override value of 'action' with the # interpolation to the chosen action shortcut (e.g. action_mw, action_mwl, etc) in jail.local # globally (section [DEFAULT]) or per specific section action = %(action_)s
3.3 Gefängnisse / Jails aktivieren
Standardmäßig sind weiter unten alle Jails / Filter deaktiviert. Um einen einzelnes Jail zu aktivieren fügt ihr folgende Zeile hinzu:
enabled = true
Dies sieht zum Beispiel so aus:
[sshd] enabled = true port = ssh logpath = %(sshd_log)s backend = %(sshd_backend)s
Wenn ihr euren SSH Port geändert habt, dann müsst ihr euren geänderten Port hier eingeben, in der Zeile “port =euer-SSH-port”.
4. fail2ban neu starten
Nun müsst ihr fail2ban nur noch neustarten, damit die Einstellungen übernommen werden.
/etc/init.d/fail2ban restart
Danach solltet ihr euch die Logs / Status anschauen, ob alles funktioniert.
5. Logs ansehen
Hier solltet ihr kontrollieren, ob alles richtig funktioniert.
Dazu öffnet ihr folgende Datei
cat /var/log/fail2ban.log
6. fail2ban Status ansehen
Mit folgendem Befehl lässt sich der aktuelle Status von fail2ban anzeigen
service fail2ban status
7. Liste der Bans anzeigen
Um euch eine Liste aller bisherigen Bans anzeigen zu lassen, gebt ihr folgenden Befehl ein:
zgrep 'Ban' /var/log/fail2ban.log*
8. IP “entbannen” / entsperren
Ihr habt auch die Möglichkeit einzelne IP Adressen wieder freizugeben. Im vorherigen Schritt konntet ihr euch alle gebannten Adressen anschauen. Diese müsst ihr nun entsperren.
fail2ban-client set dienst unbanip ip Beispiel beim Dienst sshd fail2ban-client set sshd unbanip 42.32.xxx.xxx