Seit geraumer Zeit bietet das WordPress Plugin Antispam Bee die Möglichkeit, Spam Kommentare mit dem HTTP-Statuscode 403 Forbidden abzulehnen, anstatt sie in der Datenbank zu archiveren. Dies hat für uns, als Apache-User, den Vorteil, dass der Statuscode immer im Logfile auftaucht und somit ganz unkompliziert von Fail2Ban übernommen werden kann.
Dadurch, dass Fail2Ban die Spammer komplett aussperrt, hat der Webserver weniger Arbeit mit den wiederholten Versuchen der Spambots, was schließlich auch dazu führt, dass die Gesamtauslatung des Servers sinkt.
Damit das Ganze funktioniert, muss zuerst in den Einstellungen von Antispam Bee der Haken bei “Spammer mit Fail2Ban und Antispam Bee loswerden” entfernt werden. Anschließend sollte der Filter apache-wpspam angelegt werden. Dazu packt ihr die folgenden drei Zeilen in die Datei /etc/fail2ban/filter.d/apache-wpspam.conf.
[Definition] failregex = ^<HOST> - - .*"POST /wp-comments-post.php HTTP.*" 403 [0-9]{1,} ".+" ".+" [0-9]{1,} [0-9]{1,}$ ignoreregex =
Anschließend muss die Datei /etc/fail2ban/jail.conf (unter Debian die Datei jail.local verwenden bzw. anlegen) noch um das passende Jail erweitert werden:
[apache-wpspam] enabled = true filter = apache-wpspam port = http,https logpath = /var/www/web/logs/access.log maxretry = 2 findtime = 86400 bantime = 2592000
Hier wird das Logfile /var/www/web/logs/access.log (Access-Log von web unter LiveConfig, ggf. eurem Setup entsprechend korrigieren) überwacht. Taucht eine IP innerhalb eines Tages (findtime = 86400) zwei Mal (maxretry = 2) auf, wird sie für 30 Tage (bantime = 2592000) gesperrt.
Die Werte könnt ihr selbstverständlich nach Belieben verändern,
wichtig ist jedoch, dass die Angaben bei findtime und bantime von fail2ban immer als Sekunden interpretiert werden.