Home > How-To´s, Webserver > Guter Spamschutz mit mod_rewrite und .htaccess

Guter Spamschutz mit mod_rewrite und .htaccess

Seit längerem habe ich Spamprobleme im Gästebuch meiner Privat-HP. Ca. zwei Spameinträge pro Tag. Manchmal mit Werbung für illegale Arzneimittel, Viagra oder Pornografie. Jaja es ist schon schlimm heutzutage mit Gästebuch, Trackback -oder Kommentarspam. Fast jeder der eine eigene Website/Blog betreibt weiß um was es sich hier handelt. Hier möchte ich euch ein kleines Spamblocksystem vorstellen. Vorraussetzung dafür ist, dass man weiß welche IP und welcher User-Agent hinter den Spameinträgen steckt.

Hier mal ein Beispiel mit einem Haufen von Hyperlinks für Viagra & Co.:
Da solche Einträge meist automatisch ablaufen und meist unter ca. 2-4 Sekunden ins Gästebuchformular geschrieben werden, sind die sogenannten Spambots nicht ganz unauffällig.

Ihre Merkmale:

  • Schnelle Eingabe der Daten in Formulare (in Geschwindigkeit die höchstens ein Schnelltipper knacken könnte)
  • Bots sind “nur” Computer die nix sehen oder hören können, deshalb verwendet man CAPTCHAS. Die hat zu 99,9% jeder schon mal gesehen. Ob bei der Anmeldung für ein Forum, Social-Network oder eben bei einem Gästebucheintrag auf der Homepage seines Freundes. Hier beispielsweise eine leichte Additionsaufgabe die in den meisten Fällen nur ein gebildeter Mensch lösen kann:
    Ein Captcha als Rechenaufgabe

    Ein Captcha als Rechenaufgabe

  • Jeder Webbrowser sendet standardmäß einen sogenannten User-Agent-String im HTTP-Header mit, mit dem der Webserver den Browser identifizieren kann. Bei mir wäre das z.B. dieser hier: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10. Spambots senden meistens einen komplett fehlerhaften UA. Beispielsweise als Betriebssystem Windows 98 und als Browser den Internet Explorer 7. Ein Laihe würde das warscheinlich nicht erkennen. Aber jeder der ein bisschen mehr mit PCs zu tun hat, weiß das der IE 7 auf Windows 98 nicht läuft.
  • Die IPs solcher Spambots sind meist aus Russland oder China. Es gibt Projekte im Web, die diese Adressen protokollieren und dann für alles sichtbar machen.
  • Sicherlich gibt es noch mehr Merkmale, die ich aber hier jetzt nicht alle aufzählen möchte

Jetzt zur die Reduzierung solcher Spameinträge:

Ganz verhindern lassen sich diese Einträge nur mit großem Aufwand. Für private Websites wie computerjan.de tuts daher auch ein einfacher Schutz durch mod_rewrite und einer .htaccess-Datei. Dies möchte ich euch an diesem einfachen Beispiel näher bringen:

Vorraussetzung ist:

  • Ihr besitzt eigenen Webspace mit einem Apache-Webserver
  • Wisst, wie ihr Dateien auf euren Webspace per FTP hoch -und runterladen könnt
  • Ihr habt einen Texteditor auf eurem System installiert

Öffnet euren FTP-Client und begebt euch ins root-Verzeichnis eures Internetauftritts. Sucht dort nach einer Datei namens .htaccess. Ist diese vorhanden, downloadet ihr sie auf euren PC. Ist sie nicht vorhanden, erstellt ihr sie mit eurem Editor. Wichtig ist, dass die Datei genau .htaccess.
Falls schon etwas drinstehen sollte, einfach untendrunter weiter schreiben. Fügt jetzt folgende Zeilen ein:

1
2
3
4
5
6
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Java [OR]
RewriteCond %{HTTP_USER_AGENT} =Mozilla [OR]
RewriteCond %{HTTP_USER_AGENT} "^Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4" [OR]
RewriteCond %{HTTP_USER_AGENT} "^Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5..*$"
RewriteRule ^.*$ - [F]

Zeile 1…
Bewirkt, dass das Modul mod_rewrite des Apachen aktiviert werden soll.

Zeile 2…
Bewirkt, dass eine Regel erstellt wird die erfüllt ist, wenn der User-Agent mit Java beginnt. Beispiel für einen UA: Java/1.04

Zeile 3…
Bewirkt, dass die Regel erfüllt ist, wenn der User-Agent genau Mozilla lautet

Zeile 4…
Bewirkt, dass der User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4 gesperrt wird.

Zeile 5…
Bewirkt, dass der User-Agent der mit Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.. beginnt geblockt.

In der letzten Zeile
Wird bestimmt was gemacht wird, wenn eine der Regeln zutrifft. In disem Fall wird einfach auf die 403-Errorpage des Webserver weitergeleitet.

Falls ihr noch weitere hinzufügen wollt, einfach nach dem selben Schema vorgehen.
Achtung:
Punkte (.), Klammern ( oder ) oder Slashes / müssen mit einem Backslash ( ) “escaped” werden !

Gibt´s Probleme :? Dann trau dich ruhig einen Kommentar zu hinterlassen ! Ich werde dir so schnell wie möglich helfen :-)

  1. Bisher keine Kommentare
  1. Bisher keine Trackbacks
:-) 
;-) 
:D 
:( 
:o 
8O 
:? 
8) 
:lol: 
:x 
:P 
:ups: 
:cry: 
:evil: 
:twisted: 
:idee: 
:pfeil: 
:| 
:mrgreen: 
:XD: 
:DX: 
:ugly: 
:freu: 
:motz: 
:lachtot: 
:irre: 
:hilfe: 
:wallbash: 
:gott: 
:zensur: 
:hurra: 
O_o 
:bravo: 
:pfeif: 
:ja: 
:nein: 
:maul: 
:doh: 
:girl: 
:winken: