Spammer mit Fail2Ban und Antispam Bee loswerden

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. 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 =

(Alternativ: wget -O /etc/fail2ban/filter.d/apache-wpspam.conf //archive.tamcore.eu/wp-content/uploads/2013/07/apache-wpspam.conf)

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/web1/logs/access.log
maxretry = 2
findtime = 86400
bantime = 2592000

Hier wird das Logfile /var/www/web1/logs/access.log (Access-Log von web1 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.