[WordPress] Massnahmen gegen Kommentarspam

Spam ist wohl das meist gehasste Thema im Internet.
Auch vor Blogs, bzw. WordPress machen die Spammer keinen Halt und müllen alles gnadenlos zu bis hin zu regelrechen Denial of Service Angriffen auf die Webserver/SQLServer.

Massnahmen gegen Spam gibt es viele Verschiede, genauso wie es verschiedene Arten von Spam gibt.

Ich werde mit diesem Beitrag versuchen dieses Thema zusammen zufassen und Möglichkeiten gegen Spam, anhand der Erkenntnisse welche ich gesammelt habe, aufzuzeigen.
Und damit meine ich nicht wie man Spam einfach nur abfängt, sondern ganz einfach versucht zu unterbinden.

Arten des Spams in Blogs

Ich unterscheide Blogspam in 3 Klassen:

  • Automatischer Kommentarspam
    Die Spamkommentare werden von den Bots via direktem Post-Aufruf der entsprechenden Datei, bei WordPress wp-comments-post.php, abgesetzt.
  • Automatischer Trackbackspam
    Ähnlich wie beim automatischen Kommentarspam, der Spam wird direkt mittels Post auf die Datei abgesetzt.
  • Semiautomatischer Kommentarspam
    Bei dieser Form wird nicht direkt die Datei angesprochen, aber das Formular im Blog automatsch gefüllt und abgesannt.

Die automatisierte Form kommt am häufigsten vor, sprich Spambots, bzw. ganze Botnetze, grasen diverse Listen ab und versuchen ihren Müll abzuladen. Vermutlich kommt man recht schnell auf diese Listen wenn man nicht näher bekannte Pingdienste anpingt. Habe damals auch irgendeine Liste gefunden und pauschal mal bei mir Übernommen.
Aber genauso gut kann man durch Zufall von diesen Bots heimgesucht werden. Und wenn dem so ist hilft nix mehr, ausser diverse Massnahmen.

Plugins gegen Spam

Es gibt viele AntiSpam-Plugins für WordPress, einige davon zähle ich kurz auf:

  • Generelle Antispamplugins
    Diese Plugins überprüfen alle Kommentare und Trackbacks entweder nach gewissen Mustern oder anhand einer externen Datenbank.
    • Akismet
      Der Quasi-Standard welcher mit WP schon mitgeliefert wird.
      Alle eingehenden Kommentare und Trackbacks werden mit einer externen Datenbank abgeglichen und müssen dann im Backend entweder gelöscht werden oder aus der Akismetspamliste wieder herausgefischt werden, falls Akismet einen Kommentar als False-Positive erkannt hat.
    • SpamKarma2
      SK2 klassifiziert eingehende Kommentarte anhand diverser Regeln und verhindert so Spam im Blog.
      Viel mehr kann ich zu SK2 nicht sagen da ich dieses nur einmal kurz getestet habe und nicht wirklich begeistert war wegen der mannigfaltigen konfigurationsmöglichkeiten. Jedoch schwören viele auf dieses Plugin.
  • Automatische Botfallen
    Botfallen dienen dazu diverse Bots, z.B. Spambots oder Contentgrabber, schon im Vorfeld von der Seite abzublocken.
    • Bad Behavior
      BB überprüft eingehende Verbindungen anhand diverser Kriterien und entscheidet dann ob die Anfrage von einem Bot kommt und sperrt diesen dann aus.
    • Bot-Trap
      Bot-Trap ist BB ähnlich und filtert Bots anhand von UserAgents und IP-Sperrlisten.
      Bot-Trap hatte ich einige Zeit im Einsatz, jedoch war mir nie wohl bei dem Gedanken das man kaum Einfluss auf die Sperrlisten hat und somit schon mal Besucher ausgesperrt werden können. Auch wenn im Falle des Sperrens ein Captcha zur Verfügung gestellt wird.
  • Interaktive Plugins (Captcha)
    Bei einem Captcha wird der Besucher/Kommentator aufgefordert eine meist sinnlose Buchstabenkombination aus einem Bild abzulesen und in ein Feld zu tippen. Erst wenn dies richtig geschehen ist wird der Kommentar ins System geschrieben. Ist die Eingabe falsch wird der Kommentar nicht angenommen.
    • Silver’s Captcha
      Einfacher Vertreter des Bild-Captchas
    • Math Comment Spam Protection
      Mein derzeit eingesetzes Captcha. Der Besucher wird dazu aufgefordert eine simple Rechenaufgabe zu lösen um zu beweisen das er kein Bot ist. Meiner Meinung nach einfacher für den Besucher als manch verdammt schwer zu entzifferndes Bild-Captcha.
    • Captcha This
      Dieses Captcha habe ich noch nicht getestet, soll aber recht gut sein, da man viele verschiede Fragen stellen kann und nicht nur stupides Buchstaben abtippen.
  • Trackback-Plugins
    • WP-Hardened Trackbacks
      Dieses Plugin generiert für jeden Trackback eine eigene URI mit einer festgesetzen Gültigkeitsdauer, sprich man muss den Link anklicken um die URI zu bekommen und hat dann X Minuten Zeit seinen Trackback abzusetzen.
      Ein recht klasse Ansatz, aber leider funktioniert dieses Plugin nicht, bzw. bei mir nicht, und scheint auch nicht mehr weiter entwickelt zu werden.
    • Simple Trackback Validation
      Hier wird überprüft ob vom Trackbackursprung ein Link zum Beitrag verweist, wenn nicht wird der Trackback in die Spamliste gehauen.

Ich setze hier Akismet und Math Comment Spam Protection ein und bin recht zufrieden.
Trotzdem bestand immer noch das Problem das ich täglich die hunderte Spams durchschauen musste welche in Aksimet aufliefen.

Die Lösung

Und hier kommt die Holzhammermethode ins Spiel.
Dazu möchte ich ein paar Gründe aufführen warum ich dies so mache:
Viele schreiben das Akismet wunderbar seinen Dienst verrichtet, wofür dann noch mehr machen? Macht Akismet ja auch, jedoch wenn teilweise ca. 300 Spamkommentare pro Stunde auflaufen habe ich einfach keine Lust seitenweise Spamkommentare durchzuschauen ob nicht doch ein Echter mit reingerutscht ist. Von der erzeugten Last auf dem Server möchte ich garnicht sprechen.

Wir entziehen den Bots einfach ihre Grundlage! Die Bots sprechen nämlich meist direkt die entsprechenden Dateien an (wp-comments-post.php & wp-trackback.php)
ACHTUNG! Bitte vor dem Ändern ein Backup machen

  1. Schritt 1: wp-comments-post.php umbenennen
    Wenn man keine weiteren Plugins wie z.B. WP-PDA einsetzt muss man einfach nur die wp-comments-post.php umbenennen in einen beliebigen Namen.
    Diese wird nur ein einziges Mal aufgerufen, nämlich in der comments.php des Themes.

    • Suche nach <em><strong>wp-comments-post.php</strong></em> und ersetze dieses durch den genderten Dateinamen.

    Mit dieser einfachen Änderung haben wir die Standard-URI für das absenden der Kommentare ans System geändert und somit den Bots eine ihrer Grundlagen geklaut und somit schon mal einen Teil Spam erschlagen.

  2. Schritt 2: wp-trackback.php umbenennen
    Damit diese Datei umbenannt werden kann sind mehrere Änderungen an Core-Dateien notwendig.
    1. wp-trackback.php umbenennen
    2. wp-includes/template-loader.php
      Suche nach <em>include(ABSPATH . ‘/wp-trackback.php’);</em> und ersetze dort den Dateinamen. In dieser Datei muss der Dateiname 2 mal ersetzt werden. I.d.R Zeile 11 & 68.
    3. wp-includes/comment-template.php
      Suche nach <em>$tb_url = get_option(’siteurl’) . ‘/wp-trackback.php?p=’ . $id;</em> und entsprechend ndern.
    4. wp-includes/comment-template.php
      Suche nach <em>$tb_url = trailingslashit(get_permalink()) . user_trailingslashit(’trackback’, ’single_trackback’);</em> und das ‘trackback/’ z.B. in ‘trackback_ohnebots/’ ndern.
      Dieser Schritt dient dem Ändern der Angezeigten Trackback-URI
    5. wp-includes/rewrite.php
      Suche nach <em>$trackbackregex = ‘trackback/?$’;</em> und analog dem vorherigen Schritt ndern.
    6. Zu guterletzt muss man im Backend einmalig die Permalinkstruktur aktualisieren.

    Nun haben wir den Bots den zweiten Nährboden geklaut, die Standard-Trackback-URI.
    Dies hat zwar zum Nachteil das normale Trackbacker nun immer die URI nachschauen müssen und nicht einfach ein /trackback/ dahinter schreiben können, aber wie ich Anfangs geschrieben hab, man muss abwägen.

Fazit

Liesst sich viel Aufwand, und es wurde auch schon gesagt das nach jedem Update diese Änderungen durchgeführt werden müssen. Dies will ich keines Falls anzweifeln, aber das Ergebniss kann sich meiner Meinung nach sehen lassen….0 Spam in Akismet. Und dies schon seit Mitte Mai, da war das letze WP-Update. Updates für WordPress kommen aber nicht so oft das man jede woche die Änderungen im Code nachpflegen muss. Und wenn man es einmal gemacht hat, gehts beim zweiten Mal doppelt so schnell 🙂

Und es nochmal klar zu sagen, auch wenn Akismet und Math-Captache prima den Spam abfangen, ich muss ihn trotzdem sichten um FalsePositives auszuschliessen und bei Spamprimetimes mit 100 Stück pro Stunde kann dies ganz schnell in viel Arbeit umschwenken.




Trackback-Url Trackback

13 Kommentare für “[WordPress] Massnahmen gegen Kommentarspam”

  1. www.gravatar.com
  2. www.gravatar.com
  3. www.gravatar.com
  4. www.gravatar.com
  5. www.gravatar.com
  6. www.gravatar.com
  7. www.gravatar.com
  8. www.gravatar.com
  9. www.gravatar.com
  10. www.gravatar.com
  11. www.gravatar.com
  12. www.gravatar.com
  13. www.gravatar.com
blog stats