FHEM Tutorial-Reihe - Part 32: Zugriff auf FHEM mit Fail2Ban absichern
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
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