FHEM Tutorial-Reihe - Part 32: Zugriff auf FHEM mit Fail2Ban absichern

Mit ** gekennzeichne Links auf dieser Seite sind Affiliatelinks.

Immer wenn man irgendwelche Anwendungen in Netz stellt, sollte man diese so gut es geht absichern. Dies haben wir dank ReverseProxy, SSL und Benutzernamen und Passwort schon ganz gut hinbekommen. Die Schwachstelle aktuell ist eigentlich nur noch Bruteforce - also das erraten von Benutzernamen und Passwort durch ausprobieren. Diesem Problem gehen wir in diesem Video an den Hals und lösen es natürlich.

Was wird benötigt?

  • Eine FHEM-Installation
  • Alles, was in Tutorial 21 gezeigt wurde (ReverseProxy)

Video

FHEM-Kurs

Befehle

Als erstes installieren wir ganz einfach fail2ban. Das geht relativ flott.

sudo apt-get update
sudo apt-get install fail2ban

Jetzt können wir die jail-Config kopieren, falls wir vorhaben Standardeinstellungen anzupassen. Ist dies nicht gewünscht, brauchen wir diesen Schritt nicht durchführen. Genauso gut kann man alle Informationen für jedes Jail einzeln konfigurieren.

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

Falls Pfade angepasst werden müssen (wie bei mir wegen Docker):

sudo cp /etc/fail2ban/paths-debian.conf /etc/fail2ban/paths-overrides.local
sudo vi /etc/fail2ban/paths-overrides.local

Nun legen wir für das neue Jail eine neue Datei an. Wie diese heißt ist egal. Hauptsache der Name endet auf .conf und die Datei liegt im jail.d-Verzeichnis. In einer Datei können beliebig viele Jails konfiguriert werden.

sudo vi /etc/fail2ban/jail.d/docker-apache.conf

Theoretisch reicht jetzt der folgende Inhalt, damit alles bereits funktioniert. Ich habe allerdings noch ein wenig Feintuning durchgeführt und die maximalen Fehlversuche bis zum Ban beschränkt, sowie die Banzeit erhöht. Nach 3 Versuchen wird man nun bei mir eine ganze Stunde gesperrt. Mit maximal 72 Benutzer und Passwort-Kombinationen kann man pro Tag nicht wirklich viel erreichen. So würde ich das auch immer rechnen: Was ist im schlimmsten Fall möglich?

[apache-auth]
enabled = true

Wenn man nun noch mit Pushover arbeiten möchte, muss man als erstes eine neue Applikation auf der Pushover-Website anlegen. Natürlich kann genauso gut eine bestehende genutzt werden. Wir brauchen auf jeden Fall ein Application- und einen User-Token.

sudo apt-get install geoip-bin
sudo cp /etc/fail2ban/action.d/iptables-multiport.conf /etc/fail2ban/action.d/pushover-notify.conf
sudo vi /etc/fail2ban/action.d/pushover-notify.conf

Danach fügt man als neue Zeile (unter actionban) folgenden Aufruf ein:

/usr/bin/curl -s -F "token=<token>"  -F "user=<user>" -F "title=[Fail2Ban] banned" -F "message=Banned IP: <ip> Location: `geoiplookup <ip>`" https://api.pushover.net/1/messages

[Init]
token = YOUR_APPLICATION_TOKEN_HERE
user = YOUR_USER_API_KEY_HERE

Diese neue banaction muss dann natürlich noch im entsprechenden Jail konfiguriert werden:

sudo vi /etc/fail2ban/jail.d/docker-apache.conf

Newsletter

Trage Dich jetzt in den Newsletter ein und genieße dadurch viele Vorteile:

  • 5€-Gutschein als Dankeschön
  • Zugang zu exklusiven Inhalten
  • Rabattaktionen für Kurse
  • Angebote für Produkte

* Durch Angabe meiner E-Mail-Adresse erkläre ich mich damit einverstanden, dass mir regelmäßig Informationen und Produktempfehlungen aus dem Fachgebiet Smart Home zugesendet werden. Mit dem Eintrag akzeptieren Sie unsere Datenschutzbestimmungen. Meine Einwilligung kann ich jederzeit widerrufen.

Matthias Kleine

Matthias Kleine

Großer Fan und Anhänger von OpenSource-Projekten und erweiterbaren Haus-Automatisierungskomponenten. Je offener und flexibler das System, desto besser. Ich lege mich ungern auf einzelne Protokolle oder Standards fest, sondern probiere aus allen Welten das Beste zu verheiraten. Unterwegs als Softwareentwickler, Trainer und Blogger im Bereich Smart Home.

Auf YouTube und hier im Blog gibt es bereits unzählige kostenlose Videos, Informationen und Tutorials. Wenn Dir das noch nicht reicht, ist ein Training genau das richtige für Dich! Die folgenden Trainings haben den Vorteil, dass immer von Anfang an gestartet wird und Du ohne Vorwissen teilnehmen kannst.