Eine Erweiterung für Joomla um gegen Spam vorzugehen ist OSpam-a-not von Joomlashack. Ich gehe jetzt nicht weiter darauf ein wie dieses Plugin genau funktioniert, wichtig ist nur, dass ihr in seinen Einstellungen das logging aktiviert, solltet ihr es mit fail2ban kombinieren wollen. Das Plugin generiert die Datei spamanot.log.php im logs Ordner eurer Joomla Installation. Allerdings erst, wenn das erste mal ein Spammer auffällt. Entweder wartet ihr bis die Datei angelegt wurde, oder ihr legt sie manuell an.
fail2ban
filter
In fail2ban müssen wir dann einen Filter erzeugen, der die Log-Einträge per regex parsed, damit wir die IP bekommen die zu sperren ist.
Dafür legen wir unter /etc/fail2ban/filter.d
die Datei ospamanot.conf
an
[Definition]
failregex = .+NOTICE <HOST>.+honeypot.+
Den Filter können wir mit fail2ban-regex und der Log-Datei testen
# fail2ban-regex /PATH/TO/ospamanot.log.php /etc/fail2ban/filter.d/ospamanot.conf
Running tests
=============
Use failregex filter file : ospamanot, basedir: /etc/fail2ban
Use log file : /PATH/TO/ospamanot.log.php
Use encoding : UTF-8
Results
=======
Failregex: 295 total
|- #) [# of hits] regular expression
| 1) [295] .+NOTICE <HOST>.+honeypot.+
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [295] {^LN-BEG}ExYear(?P<_sep>[-/.])Month(?P=_sep)Day(?:T| ?)24hour:Minute:Second(?:[.,]Microseconds)?(?:\s*Zone offset)?
`-
Lines: 295 lines, 0 ignored, 295 matched, 0 missed
[processed in 0.01 sec]
jail
Jetzt brachen wir noch ein Jail in /etc/fail2ban/jail.d/
dafür, diese Datei benennen wir ebenfalls wieder oaspamanot.conf
# Servicename
[ospamanot]
enabled = true
# was soll gesperrt werden
port = https,http
# Name des Filters
filter = ospamanot
logpath = /PATH/TO/ospamanot.log.php
# wie oft soll die IP gelistet sein bevor ban
maxretry = 3
findtime = 600
# für 10 Minuten bannen
bantime = 600
aktivieren und prüfen
Jetzt müssen wir nur noch fail2ban neu starten und prüfen ob die Neue Jail funktioniert
# service fail2ban restart
# fail2ban-client status ospamanot
Status for the jail: ospamanot
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /PATH/TO/ospamanot.log.php
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
Mit dieser einfachen Lösung sperren wir Formular Spammer erstmal für 10 Minuten komplett aus. Wer es länger möchte muss einfach den Wert in Jail dafür dementsprechen anpassen