IPs und Bots mittels der .htaccess sperren

Heute geht es mal nicht um ein Tool, sondern um einen kleinen Tipp, wie man sein eigenes System ein wenig mehr schützen oder entlasten kann. Täglich grasen hunderte von Bots das Internet ab und spidern ganze Websiten. Ganz oft ist dies im Sinne des Webmasters. Da kommen diverse Google, Bing, etc. Bots vorbei und nehmen die eigene Seite in die jeweiligen Indexe. Auch Toolanbieter haben eigene Bots und analysieren darüber Seiten. Darüber hinaus gibt es aber auch immer wieder Bots von denen man nicht weiß, warum sie kommen oder was sie wollen.

IPs und Bots mittels der .htaccess sperren IPs und Bots mittels der .htaccess sperren

Ein gutes Beispiel hatte ich wieder heute Nacht. Da war der Bot von Unister auf einem frischen Projekt. Dieser achtet aber weder auch vernünftige Zugriffszyklen noch auf Last die er verursacht. Auf Grund dieser Zugriffe war der Datenbankserver dann überlastet und die Seite nicht erreichbar. Nun ist mir völlig schleierhaft, warum Unister überhaupt einen Bot betreibt und was sie mit den Daten machen. Bisher gibt es dazu auch keine wirklich sinnhafte Antwort (seo-socialmedia-leipzig.tumblr.com/post/33366766305/unister-bot-spider-sperren).

Welche Gründe gibt es für eine .htaccess Sperre?

Grundsätzlich muss man davon ausgehen, dass jede Seite irgendwann Ziel eines Angriffes ist. Je bekannter und beliebter das dahinter liegende CMS ist, desto häufiger wird das vorkommen. Hier üben sich aber nicht nur Scriptkids sondern auch Menschen, die aus gehackten Systemen Profit ziehen.

Somit sollte man frühestmöglich einen Angriff auf den eigenen Server verhindern. Wenn der Angriff nämlich gar nicht erst bis zu den Skripten des CMS kommt, sondern der Angreifer (oder eben der unbeliebte Bot) schon auf Serverebene gesperrt wird, ist man wieder eine Sorge mehr los.

Ein weiterer Grund ist natürlich der entstehende Traffic durch permanente Abrufe der Seite. Dies ist im kleinsten Fall nur ein Kostenfaktor, kann aber auch ein Performance und dadurch heutzutage auch ein Rankingfaktor sein (Ich sage nur Pagespeed!).

Vorgehensweise beim Aussperren von Bots per .htaccess

Bedingung für dieses Vorgehen ist, dass ihr Zugriff auf die .htaccess auf Eurem Server habt. Bitte sichert Euch diese Datei unbedingt! Solltet ihr Fehler in die .htaccess einbauen, kann (und vermutlich wird) eure Seite nicht mehr erreichbar sein.

Was macht denn diese .htaccess?

Die .htaccess ist eine Konfigurationsdatei für den Webserver und hilft eine Website zu konfigurieren. So können CMS Systeme damit URL Aufrufe umschreiben um aus sprechenden URLS die richtigen Zugriffe im CMS zu generieren. Auch die Fehlerseiten werden durch die .htaccess beeinflusst.

Wie geht das sperren grundsätzlich?

Technisch ist das ziemlich einfach, da die .htaccess nur eine Textdatei ist und somit sehr einfach zu bearbeiten ist. Auch das sperren ist einfach. Hier ein Beispiel:

order allow,deny
allow from all
deny from 84.133.115.37

Die erste Zeile „order allow, deny“ gibt dem Server die Anweisung, wie er die nachfolgenden Befehle zu interpretieren hat. Hier heißt es damit, dass zuerst die allow und danach die deny Angaben geprüft werden.
In der zweiten Zeile sperren wir die IP aus und in der Dritten Zeile erlauben wir für alle den Zugriff.

Somit prüft der Server erst was erlaubt ist (allow from all) und danach was verboten ist (deny from 84.133.115.37).

Dies machen wir uns zu Nutzen um bekannte Bots und IPs zu sperren. Dies kann dann so aussehen:

order allow,deny
deny from 41.140.0.0/14 41.248.0.0/14
deny from 196.43.64.0/19
deny from 80.179.244.0/24

Eine wirklich lange und permanent aktualisierte Liste findet man unter ip-bannliste.de/aktuelle-bannliste.html

Wie mir der Heiko Schnuck gerade gesagt hat, sollte man hier am besten jede IP selber prüfen. So sind zum Beispiel die IPs 66.220.* und 173.252.* von Facebook Bot und somit für die Generierung von Snippets und Vorschaubildern zuständig. Und die 66.249.16.211 kommt von Google.

Umleiten via RewriteCond in der .htaccess

Eine weiter Lösung ist das Auslesen des User-Agent und dann das Umleiten der Seite. Wenn man korrekt arbeitet, gibt man dem Bot oder dem Zugriff den Status 403-Forbidden zurück.

Im Fall des Unister Bots könnte das so aussehen:

RewriteCond %{HTTP_USER_AGENT} ^UnisterBot [NC] RewriteRule ^.* – [F]

Wenn man den Bot nun aber gar nicht mag, schickt man ihn einfach zurück:

RewriteCond %{HTTP_USER_AGENT} ^UnisterBot [NC] RewriteRule ^.* – [F] RewriteRule /* http://www.unister.de/ [L,R]

Dies kann man mit beliebig vielen Bots machen. Auch hier hilft uns die IP-Bannliste: ip-bannliste.de/bad-bots.html

Leider ist hier der Unister Bot nicht dabei, so dass ich diesen selber hinzufügen muss. Weiterhin sollte man immer selber prüfen, welchen Bot man zulässt und welchen nicht.

Alternative Sperren für unerwünschten Bots & IPs

Methode Information
http.conf Wie mich der Tobias Clement gerade hingwiesen hat, muss man bei einer immer längeren .htaccess damit rechnen, dass sich dieses auf den Serverspeed auswirken wird. Die .htaccess muss bei jedem Aufruf geladen werden. Und zwar pro Seite nicht nur 1x, sondern für jeden Request. Hier ist (so man technisch Zugriff darauf hat) die Auslagerung der Sperrung in die die http.conf (dies ist die Konfigurationsdatei für den Apache-Webserver) geeignet.

In der http.conf würde das dann in etwa so aussehen:
lt;directory /var/www/mysite.comgt;SetEnvIf User-Agent "^Ezooms" badUA
SetEnvIf User-Agent "^proximic" badUA
Order Allow,Deny
Allow from all
Deny from env=badUA
</directory>
Firewall Eine Lösung, die noch früher greift, wäre ein Zugriff auf die Firewall, die vor dem Webserver liegt. Somit wäre der Zugriff auf den Server direkt unterbunden.
PHP Wenn man auf Firewall, http.conf oder .htaccess gar nicht zugreifen kann, dann geht es auch über php. Hier kann man (z.B.) IP's sperren:

if($_SERVER[„REMOTE_ADDR"]==”111.123.456.78″) {
header(„Location: http://www.bka.de");
exit();
}

Habt ihr noch Fragen oder Anregungen? Wie geht ihr mit Bots um?

Über Thomas Wagner (30 Artikel)
Seit 1999 arbeite ich im Bereich Marketing und berate Klein- und Mittelständige Unternehmen. Der Fokus liegt auf konzeptioneller Beratung und seit vielen Jahren auf Webanalyse und Online Marketing.
Kontakt: Webseite

13 Kommentare zu IPs und Bots mittels der .htaccess sperren

  1. Interessant, wobei ich das für sehr aufwändig halte. Wie wäre es denn mit einer Liste von Bots die definitiv keiner braucht? Facebook, Google, XOVI und Co hätte ich ja schon gern bei mir – Unister und all die anderen sinnlosen Scripte dürfen aber gern draußen bleiben.

    Kostenlose Projektidee: Ein HTACCESS Generator, mit dem ich mir zusammenklicken kann was ich mag und was nicht.

    • Na eine Liste von Bots habe ich ja im Artikel verlinkt. Allerdings wäre ein Generator wirklich eine gute Idee.

      Das sollte ja gar nicht so schwer sein. Kommt auf meine Denkliste. :)

      • Ja ich bin halt einerseits unglaublich faul in solchen Dingen und andererseits auch alles andere als ein Programmierer oder Serverflüsterer. Von daher wäre das einfach ne nette Geschichte für so Code N00bs wie mich ;)

  2. Schöner Artikel, war mir gar nicht bewusst dass Bots auch einen derart massiven Schaden anrichten können. Aber ein Grund mehr, sich dem ganzen mal anzunehmen.

    Kann man eigentlich eine Aussage treffen, auf welchen Webseiten sich solche Aussperrungen von Bots lohnen? Wie du bereits sagtest sind beliebte CMS wie WordPress ein häufiges Ziel von Bots. Doch bedarf es auch eines „größeren“ Traffics damit die Bots auf eine Seite aufmerksam werden? Versuche mir gerade nur ein ungefähres Bild zu verschaffen über welche Pfade sich so ein Crawler durch’s Web bewegt.

    Und eine Art htaccess-Generator wäre in der Tat was feines. :)

    • Mit Bots kann man ja noch viel mehr machen. Vollautomatisches Auslesen (Scrappen) einer Seite. Zuspammen von Kommentaren. DoS Angriffe. etc.

      Insofern gehört eigentlich vor jede Webseite ein Bot-Schutz.

      Pauschal kann man vielleicht sagen, je wichtiger (im Sinne von Produktiveinsatz) eine Seite, desto mehr Schutz.

  3. Hallo Herr Wagner,
    im Netz bin ich gerade über Ihren Eintrag hier „gestolpert“ – danke für die Erwähnung unserer Bannliste. Ich möchte dazu erwähnen: der Facbook-Bot ist bewusst ausgeschlossen, da diese Datenkrake alles frisst, ohne Rücksicht auf irgendwas. Die Sperrliste greift hier, wenn Sie einfach einen Verweis auf eine Website machen, da sich Facebook dann selbst auf die Suche nach Bildern macht (auch in ausgeschlossenen Verzeichnissen). Dies kann umgangen werden, wenn man Facebook explizit korrekte Angaben gibt – dann wird trotz Sperrliste alles korrekt angezeigt.

    66.249.16.211: Warum ist er der Meinung, dass dies Google sein soll? Es handelt sich hier definitiv um eine bekannte Harvester Adresse und nicht um Google

    Unister nehmen wir mit in unsere Liste auf. Danke!

  4. Hallo,
    das ist sehr interessant. Ich hätte aber eine Frage.
    Wird durch diesen Code in der .htaccess:

    order deny,allow
    Deny from all
    Allow from 178.249.4.39

    Der es nur meiner IP-Adresse erlaubt, auf den Server zuzugreifen.
    Wird durch diesen Code Google daran gehindert, meine neuen Artikel zu crawlen? Ich habe vor 4 Tagen einen Artikel publiziert, der bisher noch nicht im Google-Index ist. Zufall? Oder hängt das mit diesem Code zusammen. Vielen Dank!

    • Damit verhinderst Du jeglichen Zugriff von Außen, außer über Deine IP.

      Mit „order deny, allow“ legst du die Abarbeitungsreihenfolge fest. Erst verbieten, dann erlauben.
      Mit „deny from all“ verbietest du alle Zugriffe.
      Mit „Allow from“ erlaubst du nur noch den Zugriff von Deiner IP.

  5. Sag mal Thomas, gibt’s die Bannliste nicht aktuell oder als WordPress Plugin, das sich immer wieder aktualisiert?

    Mario

    • Ich kenne dazu leider kein Plugin. Ich ziehe die auch immer wieder neu. Einzig „iThemes Security“ hat da schon ein gewisse Grundeinstellung. Mit der kompletten Liste, machst Du aber auch den Abruf langsam, da ja bei jeder Anfrage (also Datei, Bild, CSS, JS) die .htaccess abgefragt wird!

  6. Sufyan Ghali // 5. Juli 2015 um 18:38 //

    Was macht man wenn man bei Facebook immer gesperrt wird,weil Neider einen immer melden?

  7. Ich hab die IP Bannliste und auch die BatBot Liste von http://www.ip-bannliste.de installiert.
    Da steht auch irgendwo, das man alle IP-Adressen kontrollieren sollt.
    Aber mal ehrlich, das sind über 11000 Adressen. Wie soll man das checken…?

    Dann bräuchte man wieder eine Whitelist für die Blacklist…
    Wie Du schon sagtest die „Und die 66.249.16.211 kommt von Google.“
    Welche Adressen haben denn die anderen sauberen Suchmaschinen…?
    Gibt es so eine (auch inoficielle) Whitelist?

    Wie kann man das praktikabel umsetzen
    (das htaccess schreiben ist simpel, aber der Umgang mit einer so großen Liste ist unmöglich)

    oder…?
    Gruß
    Andreas

Kommentare sind deaktiviert.