fail2ban-Benachrichtigungen mit Prowl

Diesen Beitrag schrieb ich 6 Jahre und 11 Monate zuvor; die nachfolgenden Ausführungen müssen heute nicht unbedingt noch genau so funktionieren. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 2 Minuten

Ursprünglich hatte ich einen Rootie: ich hostete meine Webseiten, machte Mailserver-Dinge und spielte mit OpenLDAP.

Doch dann wurde die Maschine Teil eines Botnets, und ich hatte nach der Geburt des ersten Kindes plötzlich nicht mehr die benötigte Zeit, mich um das Setup ordentlich zu kümmern. Zudem war die Hardware schon mehrere Jahre alt, ein Umzug hätte angestanden… Ich entschied mich damals schweren Herzens für die Kündigung des Servers und zog mit meinen Daten zu einem Hoster um. Aber wirklich warm wurde ich damit nie. Ich bin es gewohnt, root zu sein, und das FTP-Korsett war mir zu eng. Die Anbindung an die Datenbank brach öfter mal zusammen, was laut Webhoster an der miesen Implementierung von WordPress läge. Und auch sonst war die Performance ziemlich unterirdisch – was laut Webhoster an der miesen Performance von WordPress-Plugins lag.

Vergangene Woche überredete mich das Partnerdings zu einem VPS – ich könne es ja ausprobieren, er sei monatlich kündbar. Ich war zuerst skeptisch, aber hey – was kann man für 2,40EUR pro Monat schon falsch machen? Ubuntu drauf und go. Bei der Gelegenheit transportierte ich alle WordPress-Tabellen von MyISAM zu InnoDB. Dann optimierte ich das grundsätzliche Caching der Datenbank und schaltete schließlich einen varnish vor. Parallel dazu ließ in sendmail, cyrus-imapd und DSPAM anlaufen. In gewisser Weise macht mich die Mutterschaft zu einem deutlich besseren Admin: die Zeit, die ich am Rechner verbringen kann, ist sehr begrenzt, und statt Trial-and-Error plane ich nun ein Setup, während ich Windeln wechsle, Kartoffeln schäle oder Badewanne putze – und hacke es dann, wenn sich die Gelegenheit bietet, innerhalb einer Dreiviertelstunde runter :D

Ohne fail2ban möchte ich keinen Server betreiben, und da ich Prowl ohnehin schon nutze hielt ich es für eine gute Idee, beide zu verheiraten. Dazu musste ich lediglich einen API-Key generieren, eine /etc/fail2ban/action.d/prowl.conf erstellen, die /etc/fail2ban/jail.conf anpassen und dem Dienst einen Tritt geben. Eventuelle Fehler – wie immer – in /var/log/fail2ban.log. Have fun!

/etc/fail2ban/action.d/prowl.conf

[Definition]
actionstart = wget 'https://prowlapp.com/publicapi/add?apikey=<prowlapikey>&application=<prowlapp>&event=<prowlsender>&description=starting&priority=<prowlprio>' -o /dev/null --no-check-certificate -O /dev/null
actionstop = wget 'https://prowlapp.com/publicapi/add?apikey=<prowlapikey>&application=<prowlapp>&event=<prowlsender>&description=stopping&priority=<prowlprio>' -o /dev/null --no-check-certificate -O /dev/null
actioncheck =
actionban = wget 'https://prowlapp.com/publicapi/add?apikey=<prowlapikey>&application=<prowlapp>&event=<prowlsender>&description="jail <name> banned <ip> after <failures> failures"&priority=<prowlprio>' -o /dev/null --no-check-certificate -O /dev/null
actionunban =

[Init]
name = default
prowlsender = fail2ban
prowlprio = 1
prowlapp = $YOUR_API_APP
prowlapikey = $YOUR_API_KEY

/etc/fail2ban/jail.conf

action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
        prowl[name=%(__name__)s]