Domoticz toevoegen aan Fail2Ban
In het vorige deel hebben we Fail2Ban geïnstalleerd op een Raspberry Pi. Hiermee is de Raspberry Pi een heel stuk veiliger geworden. Uiteraard willen we niet dat vreemden in kunnen loggen op Domoticz. We gaan nu Domoticz toevoegen aan Fail2Ban, zodat we hier ook een extra beveiliging op hebben. Indien er drie keer binnen 6 minuten met een verkeerd wachtwoord wordt geprobeerd om in te loggen dan wordt het desbetreffende IP-adres geblokkeerd door Fail2Ban.
Benodigdheden
Domoticz toevoegen aan Fail2Ban
Geef onderstaand commando in de terminal in:
1 |
sudo nano /etc/fail2ban/jail.local |
Voeg nu onderstaande regels toe aan het bestand:
1 2 3 4 5 6 |
[domoticz] enabled = true port = 8080 filter = domoticz logpath = /tmp/domoticz.txt maxretry = 3 findtime = 3600 |
Pas, indien nodig, het poort-nummer en de locatie van het Domoticz logbestand aan. Indien er geen logbestand van Domoticz op je Raspberry Pi staat dan moet je de logging eerst even aanzetten door het domoticz.sh bestand aan te passen:
1 |
sudo nano /etc/init.d/domoticz.sh |
Je ziet nu de regel #DAEMON_ARGS="$DAEMON_ARGS -log /tmp/domoticz.txt"
staan. Haal op deze regel het #=teken weg en sla het bestand op. Vervolgens herstart je Domoticz:
1 |
sudo service domoticz restart |
Controleer of alles goed gegaan is:
1 |
ls /tmp/ |
Nu moet het bestand domoticz.txt zichtbaar zijn.
Om te kijken of het logbestand de data bevat die we willen zien geef je onderstaand commando in:
1 |
cat /tmp/domoticz.txt | grep 'Incoming' |
Nu moeten we Fail2Ban laten weten welke IP-adressen geblokkeerd moeten worden. We maken hiervoor een nieuw bestand aan:
1 |
sudo nano /etc/fail2ban/filter.d/domoticz.conf |
Kopieer onderstaande code naar het bestand (door alles te selecteren en met de rechtermuisknop te plakken in PuTTY:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# Fail2Ban configuration file for domoticz # # $Revision$ # [Definition] # Option: failregex # Notes.: regex to match the password failures messages in the logfile. The # host must be matched by a group named "host". The tag "<HOST>" can # be used for standard IP/hostname matching and is only an alias for # (?:::f{4,6}:)?(?P<host>[\w\-.^_]+) # Values: TEXT # failregex = Error: Failed login attempt from <HOST> for user '.*' ! Error: Failed login attempt from <HOST> for '.*' ! Error: \[Web:8080\] Failed authentication attempt, ignoring client request \(remote address: <HOST>\) Error: \[web:443\] Failed authentication attempt, ignoring client request \(remote address: <HOST>\) #First line is for 'Login Page' authentication mode of Domoticz #Second line is for 'Basic-Auth' authentication mode in Domoticz # # # # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex = |
Sla de wijzigingen op en sluit het bestand.
Om alle wijzigingen door te voeren moeten we Fail2Ban herstarten:
1 |
sudo service fail2ban restart |
Domoticz is nu beveiligd tegen ongewenste inlogpogingen. Het IP-adres wordt na drie mislukte pogingen, binnen zes minuten, automatisch geblokkeerd! Uiteraard kun je IP-adressen die per abuis zijn geblokkeerd door Fail2Ban ook weer deblokkeren, kijk hiervoor in het eerste deel van dit artikel. Ook is het mogelijk om bepaalde IP-adressen, uit je LAN-netwerk, op een whitelist te zetten, zodat deze nooit geblokkeerd worden.
Bezig met het activeren van fail2ban voor domoticz.
In je domoticz.conf code staat een regel die er niet hoort:
Bij het starten van fail2ban waarbij ik domoticz heb toegevoegd (conform bovenstaande instructie) krijg ik de volgende error:
Jun 23 21:26:49 raspberrypi fail2ban[25287]: Starting authentication failure monitor: fail2banERROR NOK: (“No ‘host’ group in ‘Error: Failed login attempt from for user ‘.*’ !'”,)
Jun 23 21:26:49 raspberrypi fail2ban[25287]: ERROR NOK: (“No ‘host’ group in ‘Error: Failed login attempt from for ‘.*’ !'”,)
Jun 23 21:26:49 raspberrypi fail2ban[25287]: ERROR NOK: (“No ‘host’ group in ‘Error: \\[Web:8080\\] Failed authentication attempt, ignoring client request \\(remote address: \\)'”,)
Ik lees dat op elke failregex regel de variabele aanwezig moet zijn, maar dat is ook het geval, ik weet dus niet waarom het nu mis gaat.
Je dient in domoticz.conf alle < HOST > aan te passen naar .
Als je nu de service herstart zul je zien dat het probleem is opgelost.