Apache: Bots (UserAgent / IP) aussperren per .htaccess

Ein Anonymizerservice von einem Freund und mir wurde vor kurzem von Bots u.a. für Trackback-Spam missbraucht. Was passiert war lag auf der Hand – 8 Trafficlimit Mails an einem Tag (ich hab mal ein tägliches Limit von 30GB vorgegeben). In den Logs wurden die schuldigen schnell gefunden.

Aber wie lassen sich Bots aussperren? Beim Apache Webserver funktioniert dies relativ leicht: in der Datei des jeweiligen VHosts bzw. in der httpd.conf / apache2.conf oder alternativ in der .htaccess Datei können Regeln aufgestellt werden, die Hosts anhand bestimmter Kriterien ausschließen. Zur Demonstration:

Folgender Eintrag in einer .htaccess Datei bewirkt, dass die Hosts mit den IP-Adressen 69.50.160.50 und 64.28.177.122 nicht mehr auf Inhalte des Apache zugreifen können:

order deny,allow
deny from 69.50.160.50
deny from 64.28.177.122

Folgende Einträge schließen alle Clients, die den UserAgent TrackBack/1.02 oder einen UserAgent, der mit “Java” beginnt haben (ein Bot mit dem UserAgent TrackBack/1.02 sorgte für Trackback-Spam und diverse Bots mit dem UserAgent Java hatten ganz offensichtlich auch nichts gutes vor), von dem Zugriff auf Inhalte des Apache aus:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Java
RewriteRule ^.*$ - [F]
RewriteCond %{HTTP_USER_AGENT} TrackBack/1.02
RewriteRule ^.*$ - [F]

Wer mehr über die dynamisch wirkenden RewriteConditions wissen möchte sollte sich mit regulären Ausdrücken beschäftigen.

6 Gedanken zu „Apache: Bots (UserAgent / IP) aussperren per .htaccess

  1. Pingback: Alexander Langer » Trackback-Spambots erzeugen Unmengen an Traffic

  2. Pingback: felixtriller.de » fuck the spammers

  3. Johann (1 comments)

    Danke für den Tip. Ich hab zwar lighttpd im Einsatz, aber müßte auch eigentlich wissen, wie es mit Apache geht :-)

  4. Pingback: 30.000 Seitenaufrufe in 7 Tagen!? « Online-Werbung, Technik « Selbständig im Netz

  5. kcore (9 comments) Artikelautor

    Rein theoretisch könntest du per default alle Useragents sperren und dann eine von dir definierte Liste von Useragents “freischalten”. Wär aber eine äußerst bescheidene Lösung, u.a. weil die Wahrscheinlichkeit was zu vergessen ist zu groß ist und du musst sicherlich andauernd irgendwas nachtragen…

Kommentare sind geschlossen.