Erstellt man für Joomla eine Fail2ban-Regel, muss man darauf achten, dass die Error-Logs in /administrator/logs immer vorhanden sind, sonst beendet Fail2ban eventuell seine Dienste, und zwar komplett. Eine leere Datei soll dabei unterstützen, diesen Dienst stabil zu halten.

Die Sache ist recht einfach. Die Annahme ist, dass man sich bereits im Joomla Unterverzeichnis befindet und der Webserver den User und die Gruppe www-data benutzt.

# cd ./administrator/logs
# touch snakeoil.php
# chown www-data:www-data snakeoil.php
# chmod 644 snakeoil.php

Danach wird die entsprechende Filterregel erstellt ...

/etc/fail2ban/filter.d/joomla.conf

[Definition]
failregex =     ^.*INFO .*joomlafailure.*(Benutzername|Username).*
                ^.*INFO .*tokenfailure.*(Authentication failed).*

... und eine jail-datei:

/etc/fail2ban/jail.d/joomla.local

[joomla]
enabled = true
filter = joomla
port = http,https
maxretry = xxx
findtime = xxx
bantime = xxx
logpath = [pfad zu joomla]/administrator/logs/*error.php
          [pfad zu joomla]/administrator/logs/snakeoil.php

Ein beherztes

# service fail2ban restart

und voilà, der Dienst läuft.