Server mit Fail2ban sichern

Fail2Ban ist eine auf Python basierte Skriptsammlung für Linux Server und Systeme, die es Administratoren ermöglicht, die Sicherheit ihres Systems zu erhöhen und sich vor Angriffen zu schützen, die auf wiederholte Anmeldeversuche abzielen, indem es fehlgeschlagene Anmeldeversuche überwacht und temporäre Sperrmaßnahmen auf IP-Adressen anwendet, die verdächtige oder bösartige Aktivitäten zeigen. Da zu zählen:

    • Schutz vor Brute-Force-Angriffen: Fail2ban ist besonders nützlich, um sich gegen Brute-Force-Angriffe zu verteidigen, bei denen Angreifer wiederholt versuchen, sich mit verschiedenen Benutzernamen und Kennwörtern anzumelden, um unbefugten Zugriff zu erlangen.
    • Konfigurierbare Regeln: Sie können Fail2ban so konfigurieren, dass es spezifische Dienste wie SSH, Apache, FTP und mehr überwacht. Es ermöglicht die Definition von Regeln, die auf Log-Dateien basieren, um verdächtige Aktivitäten zu erkennen.
    • Zeitlich begrenzte Sperren: Wenn ein Benutzer oder eine IP-Adresse gegen eine Regel verstößt, wird er/sie temporär gesperrt. Die Dauer der Sperre ist konfigurierbar und kann je nach Bedarf angepasst werden.
    • Zentrale Protokollierung: Fail2ban protokolliert alle Aktivitäten, einschließlich Sperrungen und Freigaben, um die Überwachung und Fehlersuche zu erleichtern.
    • Benutzerdefinierte Aktionen: Sie können benutzerdefinierte Aktionen festlegen, die bei einer Sperre ausgeführt werden sollen, z.B. Benachrichtigungen per E-Mail oder das Hinzufügen von IP-Adressen zu einer Blockliste.
    • Erweiterbarkeit: Es gibt viele Erweiterungen und Plugins für Fail2ban, die zusätzliche Funktionalitäten bieten, um den Schutz zu verbessern.

Technisch versierte Nutzer können eigene Muster in Error- bzw. Access-Logs erkennen und so weitere Firewall-Regeln definieren.

Grundlagen Jails / Filter Sonstiges
Installation SSH (mit Erklärung / BSP) Fail2Ban E-Mail Support
Konfiguration WordPress  Manuelle IP-Sperre via Blacklist
Die einzelnen Jails Nextcloud
 Fail2ban Steuern

Installation

Fail2Ban ist in den Standardrepositories gängiger Distributionen bereits enthalten und kann auf Debian basierten Systemen wie gewohnt einfach installiert werden :


Zurück zur Übersicht


Konfiguration

Nach erfolgreicher Installation befinden sich die Konfigurationsdateien im Verzeichnis /etc/fail2ban. In der fail2ban.conf  werden die grundlegenden Parameter für Fail2Ban festgelegt. Die allgemeine Konfiguration der Jails wird in der Datei  jail.local realisiert, nicht in der jail.conf, da diese bei Updates überschrieben wird.

Die jail.conf sollte daher zu jail.local kopiert oder einfach auf jail.conf verlinkt werden

In der [DEFAULT] Sektion am Anfang der jail.local werden die globalen Parameter, wie beispielsweise Loglevel oder E-Mail-Adresse für Statusmeldungen, aller Jails gesetzt. Die Parameter können dabei für jeden Jail weiterhin separat konfiguriert werden, sofern diese in der betreffenden Jail Sektion oder Datei /etc/fail2ban/jail.d/<jailname>.conf angeben werden. Die jail.local ist damit eine Art „Fallback Konfigurtion“ der Jails. Globale Parameter sind beispielsweise folgende:


Zurück zur Übersicht


Die einzelnen Jails

Die einzelnen Jails können in der Datei /etc/fail2ban/jail.d/defaults-debian.conf oder einzeln in /etc/fail2ban/jail.d/<jailname>.conf  aktiviert und konfiguriert werden. Aktionen wie das Sperren der IP, Emailversand oder sonstige Aktionen werden hier definiert. Der Filter, der auf die unter dem Parameter logpath zugewiesenen Logdatei angewandt wird, ist in dem Verzeichnis /etc/fail2ban/filter.d/*.conf unter der entsprechen *.conf Datei definiert und wird mit dem Parameter „filter = <Filter Name> zugewiesen. Nachfolgend sind einige Filter und deren Konfigurationen aufgelistet.


Zurück zur Übersicht


SSH

/etc/fail2ban/sshd.conf :

/etc/fail2ban/filter.d/sshd.conf


Zurück zur Übersicht


WordPress

/etc/fail2ban/jail.d/wordpress.conf

/etc/fail2ban/filter.d/wordpress.conf


Zurück zur Übersicht


Nextcloud

/etc/fail2ban/jail.d/nextcloud.conf

/etc/fail2ban/filter.d/nextcloud.conf :


Fail2Ban setzt allerdings nicht irgendwelche IP-Adressen auf die interne Blacklist, sondern ausschließlich die, die dem regulären Ausdruck aus dem Jail-Filter entsprechen. Daher sollte man sehr vorsichtig mit Filter-Definitionen hantieren und diese mit fail2ban-regex umgehend testen. Die Funktion der Filter kann mit dem folgenden Befehl überprüft werden (in diesem Fall SSH):


Zurück zur Übersicht


Manuelle IP-Sperre via Blacklist

Je nach Anwendungsfall kann es notwendig sein, bestimmte IP-Adressen in Fail2Ban manuell zu sperren. Um die Übersicht zu erhalten und die Pflege der Einträge so einfach wie möglich zu halten, empfiehlt sich eine Blacklist Datei.

Eine eigens für diesen Zweck erstellte Lösung kommt an der Stelle zum Einsatz: IP-Datensätze werden aus der angelegten Datei ip.blacklist extrahiert und in der Firewall eingetragen. Einrichten einer Firewall-Blacklist mit Fail2Ban.


Zurück zur Übersicht


Fail2Ban E-Mail Support

Voraussetzung für das automatische Versenden von E-Mails ist ein installierter und konfigurierter Mailtransportagent (MTA) wie z.B. Postfix.

Fail2Ban E-Mail Funktion
Fail2ban kann mit einigen Parametern eigenständig E-Mails versenden ( IP-Adresse gesperrt, Fail2ban start/stop etc. ). Dazu wird die Datei /etc/fail2ban/jail.local angepasst. Der Parametereintrag „destemail = <youremail.address>“ sollte auf eine gültige/n E-Mail-Adresse oder einen Systembenutzer verweisen:

Der Parametereintrag „action = %(action_XXX)s“ legt fest in welchem Umfang fail2ban Mails versendet.

ggf. muss der Systemmailadresse „fail2ban@<hostname>“ noch eine gültige Absenderadresse zugewiesen werden. Entweder direkt in der /etc/postfix/sender_canonical (Fail2ban@<hostname> <address>@<provider>.<tld>) oder in der /etc/postfix/generic (Fail2ban@<hostname> <address>@<provider>.<tld>). Hierbei das Neuerstellen der Postfixdatenbanken nicht vergessen.


Fail2Ban E-Mail Filter Script

Die o.g. Lösung veranlasst Fail2Ban nach jeder Aktion eine E-Mail Benachrichtigung zu versenden. Dies kann u.U. einen sehr hohen E-Mailverkehr verursachen und / oder das E-Mail-Postfach überfluten. Eleganter ist es, die Fail2Ban Logs nach Einträgen zu durchsuchen, zu filtern und täglich eine Zusammenfassung per E-Mail zu versenden. Folgendes Script durchsucht die Fail2Ban Logs der letzten 24 Stunden nach SSH und FTP Bans, sortiert diese und versendet das Ergebnis per E-Mail. Über einen Cronjob kann festgelegt werden, wann und wie oft das Script gestartet wird.


Zurück zur Übersicht


Fail2ban steuern

Fail2Ban nutzt eine eigene Logdatei ( /var/log/fail2ban.log ) in der alle relevanten Aktionen protokliert werden.


Der Status der verschiedenen Jails kann wie filgt abgerufen werden:


IP-Adresse manuell entsperren:

Aufgrund welchen Jails die Adresse gesperrt wurde kann über die  Fail2ban Logfiles auslesen werden :

Mit der Jail Information wird dann die IP Adresse mit dem Fail2ban Client entsperrt :

Alternativ kann die IP auch direkt über iptables wieder freigeben werden. Dazu wird die Iptables Chain und die Nummer der IP in der Chain benötigt :

Hat man die betreffenden Informationen zu der IP gefunden wir die IP direkt über Iptables freigeben :


CC_BY_NC_SAby Speefak | www.my-it-brain.de |  the-art-of-web.com | the-art-of-web.com | the-art-of-web.com | the-art-of-web.com | www.w2k.ch

Schreibe einen Kommentar

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

Back To Top