WordPress Plugin
Jeder der einen WordPress-Blog betreibt kennt sicher den lästigen Kommentar-Spam.
Ich frage mich immer, was das eigentlich bringen soll. Schwachsinnige Kommtare, die nicht zum Thema passen und sowieso jeder als Spam erkennt.
So wurde mein Blog hier immer wieder vereinzelt zugespamt. Vor allem, wenn viele echte Kommentare bei einem Post vorhanden sind, legen die Spammer erst richtig los. Zuerst kamen die Bösewichte aus Lateinamerika und setzten hin und wieder einen automatischen Kommentar, den ich dann manuell löschen durfte.
Irgendwann wurde es mir dann zu doof und ich habe mich nach einem geeigneten Anti-Spam-Plugin umgeschaut, das kostenlos ist. Fündig wurde ich beim sehr einfachen, aber immens wirkungsvollen Plugin Spam Free WordPress. Im Endeffekt zeigt das Plugin beim Kommentarfeld einen Code an, den man nur kopieren und in der Zeile darunter einfügen muss. Mehr nicht. Für den realen User einfach zu handhaben und viel unkomplizierter als verrückte CAPTCHAS, die kein Mensch lesen kann – zumindest geht es mir oft so.
Das Plugin ist einfach zu verwenden, nach der Installation ist es in den meisten Themes bereits „eingebaut“. Ist dies nicht der Fall muss man den PHP-Code selbst einfügen, was allerdings ebenfalls keine Schwierigkeit ist.
Man öffnet dazu die comments.php Datei des Themes und fügt gleich nach dem letzten Formularfeld (eMail-Adresse oder URL) nachfolgenden Code ein:
<?php if(function_exists ('tl_spam_free_wordpress_comments_form')) { tl_spam_free_wordpress_comments_form(); } ?>
Fail2Ban erweitern
Nachdem ich dieses Plugin installiert und eingerichtet hatte war auch endlich Ruhe mit nervigen Spam und dem manuellen Löschen.
Bis sich seit ein paar Tagen ukrainische Spammer daran machten jeden Tag zig Versuche zu starten automatisiert Kommentare zu setzen. Dies hatte natürlich keinen Erfolg, ging mir aber ziemlich auf die Nerven, weil es zum einen meine Besucherstatistik verfälscht hat und zum anderen massig Einträge im Log-File des Webservers mit fehlgeschlagenen Zugriffen verursacht hat.
Also habe ich mich auf die Suche gemacht, wie ich die IPs anhand der fehlgeschlagenen Zugriffe identifizieren und sperren kann. Der Weg führt natürlich zu fail2ban, das sowieso auf meinem Server läuft und über das ich bereits einen Artikel geschrieben habe.
Zuerst durchsuchen wir die Log-File (/var/log/apache2/access.log) von Apache2 nach dem Eintrag, der uns die Infos über den Spammer liefert:
178.137.92.41 - - [15/Jul/2012:06:50:38 +0200] "POST /wordpress/wp-comments-post.php HTTP/1.0" 500 3577 [...]
Genau nach dieser Zeile wollen wir filtern, denn sie sagt aus, dass versucht wurde einen Kommentar zu setzen, aber ein HTML-Fehler 500 (inernal server error) zurückgegeben wurde.
Nachdem es keinen vorgefertigten Filter für eine solche Aktion bei Fail2Ban gibt, müssen wir unter /etc/fail2ban/filter.d/ eine neue Filter-Config erstellen.
Wir nennen die Datei z.B. blog-comment.conf und füllen sie mit nachfolgendem Inhalt:
# Fail2Ban configuration file # # Author: Imrazor.de # # $Revision: 1$ # [Definition] # Option: failregex # Notes.: regex to find comment spam # Values: TEXT # failregex = <HOST> - - \[.*\] "POST /wordpress/wp-comments-post.php HTTP/1\.[01]" 500 [0-9]+.*$ # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # # ignoreregex =
Das Wichtigste ist die Zeile mit der Filteranweisung „failregex„, die Anweisungen enthält um den passenden Logeintrag zu finden.
Als nächstes erweitern wir die datei jail.local um ein weiteres „Jail“ für unseren Filter:
[blog-comment] enabled = true port = http,https filter = blog-comment logpath = /var/log/apache*/*access.log maxretry = 1
Jetzt noch Fail2Ban neustarten und sich freuen, wenn die erste Spam-IP blockiert wurde:
sudo /etc/init.d/fail2ban restart
2 Kommentare
Ich habe auch immer wieder mit Kommentarspam zu kämpfen und nutze das ebenfalls kostenlose Antispamtool „Antspambee“, zusätzlich muss der Nutzer der Kommentarfunktion noch einen recht einfach lesbaren Captcha Code eingeben. Trotzdem kommt es immer wieder zu Spamversuchen, die allerdings schon im Vorfeld von „Antispambee“ erkannt werden. In den zurückliegenden beiden Jahren wurde kein einziger sinnvoller Kommentar als Spam eingestuft.
Richtig, seit geraumer Zeit benutze ich ebenfalls das Plugin „Antispambee“. Sehr zuverlässig und unproblematisch in der Anwendung.