Website-Zugriffe anhand einer bestimmten IP-Adresse sperren oder umleiten

Dieser Tage stellte ich mit Überraschung fest, dass auf einer der von mir betriebenen Websites die sogenannten Pageviews beim rund 20-fachen der sonst üblichen Werte lagen. Auch wenn hier höhere Werte sicherlich gewünscht sind, ist ein solches Ereignis leider meist das Ergebnis von weniger netten Besuchern und siehe da: ein Blick in die Log-Dateien zeigte, dass über einen Server aus der Ukraine versucht wurde, das Gästebuch zuzuspamen. Dank eingebauer Anti-Spam-Algorithmen gelang das zwar nur in einem Fall, aber mehrere 10.000 unötiger Seitenaufrufe pro Tag müssen trotzdem nicht sein. Also musste ich selber auch mit härteren Bandagen kämpfen und dachte mir, die hierfür geeigneten Methoden könnte ich gleich mal als kleines Tutorial veröffentlichen!

Also wie kann man sich gegen ungewünschte Besucher wehren, die mit einer festen, bestimmbaren IP versuchen, Zugriff auf die Website zu nehmen. Hier ein paar Ideen:

PHP: $_SERVER[„REMOTE_ADDR“

  1. if($_SERVER["REMOTE_ADDR"]=="111.123.456.78")
  2. {
  3. header("Location: http://www.bka.de");
  4. exit();
  5. }

Hier wird der Besucher anhand der IP identifiziert und auf eine andere Website umgeleitet.

Der grosse Vorteil ist, dass diese Lösung auf den meistern Servern umgesetzt werden kann. Die Nachteile an dieser Methoden sind, dass die Website auf Basis PHP erstellt sein muss, der Code ggf. in jeder PHP-Datei eingebaut werden muss (sofern es keine zentrale Datei gibt, die von allen anderen aufgerufen wird, also z.B. Konfigurations-Dateien) und der Besucher natürlich i.d.R. mitbekommt, dass er eine ganz andere Seite angezeigt bekommt, als gewünscht.

htaccess: order

  1. order allow,deny
  2. deny from 111.123.456.78
  3. allow from all

Die Datei .htaccess ist eine Server-Konfigurationsdatei, in der manuelle Anpassungen an den Servereinstellungen vorgenommen werden können. Nicht auf allen Servern und insbesondere bei billigengünstigen Webhostern ist der Zugriff gestattet und wenn doch, oftmals reglementiert. Der o.g. Code müsste aber bei sehr vielen Anbietern funktionieren und sperrt den Besucher komplett aus, d.h. er bekommt einen Fehlerhinweis.

Hier ist der grosse der Vorteil, dass in einer einzigen Daten zentral die Sperre eingetragen wird. Nachteilig ist, dass auch hier der Besucher es i.d.R. mitbekommt und dass es nicht bei allen Anbietern zugelassen wird, eine htaccess-Datei zu nutzen.

htaccess: mod_rewrite 1

Die erste Methode mittels PHP kann auch via der Datei .htaccess vorgenommen werden:

  1. RewriteEngine on
  2. RewriteCond %{REMOTE_ADDR} ^(111\.123\.456\.78)
  3. RewriteRule .* http://www.bka.de [R=301,L]

Auch hier wird die IP-Adresse genutzt, um den Besucher auf eine andere Website umzulenken, so dass er gar nicht erst auf das eigentliche Ziel Zugriff nehmen kann. Vorteil ist erneut, dass in einer einzigen Daten zentral die Sperre eingetragen wird. Die Nachteile sind, dass hierfür auf dem Server mod_rewrite genutzt werden darf, was leider immer noch nicht überall üblich ist, und dass der Besucher auch hier i.d.R. mitbekommt, dass er umgeleitet wird und sich andere Methoden überlegen kann.

htaccess: mod_rewrite 2

Hier kommt nun die Lösung, die ich am effektivsten finde, denn damit bekommt der Besucher nicht sofort mit, dass nur er ausgesperrt wird:

  1. RewriteEngine on
  2. RewriteCond %{REMOTE_ADDR} ^(111\.123\.456\.78)
  3. RewriteCond %{REQUEST_URI} !^wartung\.html
  4. RewriteRule .* /wartung.html

Anstelle den Besucher auf eine dritte Website umzulenken, schicke ich Ihn auf eine sogenannte Wartungsseite. Dadurch bekommt er den Eindruck, dass die Website aktuell bearbeitet wird und ist nicht verwundert, dass er seine Spam-Aktivitäten nicht fortsetzen kann. Und wenn er dannbeim nächsten Besuch immer noch die Wartungsseite online hat, gibt er seine Besuche hoffentlich auf 🙂

Fazit:

Natürlich können diese Maßnahmen nicht immer 100%ig greifen. Immer dann, wenn der „Angreifer“ seine IP unterdrückt oder wechselt, laufen diese Ideen leider ins Leere. Aber zumindest kann man mit wenig Aufwand zunächst reagieren und hoffen, dass der ungewollte Besucher sich ein leichteres Ziel sucht.

44 Gedanken zu „Website-Zugriffe anhand einer bestimmten IP-Adresse sperren oder umleiten“

  1. Bitte, wie würde das ausehen mit mehrerer IP Adressen?PHP: $_SERVER[„REMOTE_ADDR“htaccess: mod_rewrite 1htaccess: mod_rewrite 2

  2. Hallo Richard,

    für welche der o.g. Varianten bräuchtest Du eine Lösung mit mehreren IPs? Die PHP-Variante?

    VG Frank

  3. Hallo!
    Die PHP Variante finde ich etwas kompliziert. Einfacher ist die .htaccess aber die mod_revirte1 oder .htaccess mod_revirte2. Die funktionieren auch bei mir. Aber wenn ich mehere ip`s blokieren will wie soll ich die eingeben. Die Variante .htaccess order könne ich schon, funktioniert auf meinem Server nicht. Danke
    Richard

  4. Wenn man mehrere IPs bei den Lösungen htaccess: mod_rewrite 1 resp. htaccess: mod_rewrite 2 nutzen will, geht das folgendermassen:

    RewriteCond %{REMOTE_ADDR} ^(111.123.456.78) [OR]
    RewriteCond %{REMOTE_ADDR} ^(222.231.458.78) [OR]
    RewriteCond %{REMOTE_ADDR} ^(333.123.664.78)

    Also einfach mehrere Zeilen mit der RewriteCond %{REMOTE_ADDR} … einfügen und mit [OR] verknüpfen.

    Ich hoffe, ich habe das verständlich ausgedrückt 🙂

    VG Frank

  5. hallo,
    geht das auch mit eine webadresse ? also alles was von google.com kommt ..ist nur ein beispiel…. ?

    order allow,deny
    deny from google.de
    allow from all

  6. Hi,

    sorry für die späte Antwort, aber ich war im Urlaub. Meines Erachtens müsste das auch so mit Webadressen funktionieren, habe das aber jetzt nicht getestet.

    CU

    Frank-Andre

  7. Hallo,wie muss der Code aussehen, wenn man die htaccess: order Variante nimmt und damit mehrere IP-Adressen sperrt? GrußWoldemar

  8. Hi Woldemar,

    das ist recht einfach, dazu müssen die einzelnen IP in separate deny from Zeilen aufgeführt werden, also z.B.:

    order allow,deny
    deny from 111.123.456.78
    deny from 222.123.456.78
    allow from all

    VG Frank

  9. Na, da wird sich das BKA aber freuen 😉 Ich lasse die Spammer ruhig ihren Müll eintragen. In meinen versende-Scripten frage ich dann ab, ob es sich um Spam oder um eine korrekte Mail handelt. Echte User geben z. B. nie [url=xxx.de] oder ähnliches ein. Und ein kleiner Trick hilft um festzustellen, ob das Formular per Hand abgeschickt wurde oder nicht – du darfst gern mal nachfragen.
    Wird ein Post von meinem Programm als Spam erkannt, wird die IP automatisch zu einem Logfile hinzugefügt und der User kehrt automatisch zur Homepage zurück. In Kürze werde ich einfach meine „schwarze liste“ abfragen, wenn jemand auf die Formulareingabe zugreifen will. Ist der User gelistet, wird auch gar kein Formular mehr angezeigt.
    bei Rückfragen darfst du dich gern bei mir melden.
    Michael

  10. Hallo Michael,

    Deine Vorgehensweise ist auf den ersten Blick nicht verkehrt, hat aber zwei Haken!

    Ich bin z.B. einer der User, der Links gern auch mal als BB-Code einträgt resp. gibt es Formulare, die BB-Codes anbieten. Und dann werden auch echte User blockiert. In einer ähnlichen Routine frage ich ab, ob es mehr als 2 URLs gibt, dann wandert das ganze zur manuellen Freigabe, weil das auf Spam hindeutet. Aber ich würde nie daraufhin automatisch eine Blacklist anlegen, weil dann auch echte User darauf landen können.

    Auch das Thema IP-Sperre kann kontraproduktiv sein. Einerseits nutzen viele Spamtools falsche IPs – d.h. es wird eine andere IP übertragen, als der Spammer wirklich nutzt – und bei den meisten Usern wechseln die IPs täglich. Dementsprechend besteht das Risiko, dass ein echter User aufeinmal eine bei Dir gesperrte IP hat und gar nichts dafür kann.

    Es ist halt leider ein nicht einfach zu lösendes Problem 🙂

    VG

    Frank-Andre Thies

  11. Hi leute,
     
    ich bin einfach zu blöd und hoffe ihr könnt mir helfen. Ich habe einen Webspace und dort 2 Ordner, nun möchte ich das eine bestimmte IP auf einen bestimmten Ordner kommt und alle anderen auf den anderen Ordner…
     
    ich krieg die Umleitung einer speziellen ip auf einen bestimmten ordner hin, aber wie sage ich nun, dass alle anderen auf einen anderen Ordner sollen?
    danke!

  12. Sensationeller Tipp! Vielen Dank! Mindestens 5 Sterne dafür. Ich hatte jemanden, der mich komplett ausspionieren wollte. Dem ist nun der Finger gezeigt 🙂

  13. Hallo,

    klasse Tipp! Bin über google hier her gekommen, da meine Pages aktuell täglich von mehreren hundert verschiedenen Ip’s, aus allen möglichen Ländern zugespammt werden. Bei den Kommentaren kommen die Dank Spamschutz bisher zum Glück ncht durch, ich frage mich jedoch, wie ich über 300!! Ip’s per .htacess sperren soll, die wechseln ja dauernd 🙁
    Das nervt und verfälscht die Statistik.

    Gruß
    Marco

  14. Hallo Marco,

    diese Methode ist wirklich nur dafür geeignet, ein paar eindeutige IPs zu sperren und ist keine Massenabwehr. Wenn Du schreibst, dass Du „zugespammt“ wirst, es aber nicht die Kommentare betrifft: wo liegt Dein konkretes Problem, was wird genau zugespammt?

    VG

    Frank

  15. Hi…
    Gibt es die Möglichkeit, dass der Zugriff nur über eine IP erlaubt ist und alle anderen IPs woanders hinlaufen?
     
    Danke
     
    Till

  16. Hallo Till,

    klar das geht auch – wenngleich ich aktuell nicht verstehe, warum Du das willst 🙂

    Bei der htaccess mod_rewerite Variante 2  müsste  das wie folgt aussehen:

    RewriteEngine on

    RewriteCond %{REMOTE_ADDR} !^(111.123.456.78)

    RewriteCond %{REQUEST_URI} !^wartung.html

    RewriteRule .* /wartung.html 

    Durch das ! in der zweiten Zeile  werden alle Aufrufe, die NICHT von der IP kommen, umgeleitet.

    Müsstest Du aber mal austesten. Oder wolltest Du eine andere Variante nutzen?

    VG

    Frank-Andre

  17. Hi…
    Danke! Ganz einfach, bei mir soll eine Anwendung nur auf einem Rechner mit fester IP laufen. Andere sollen diese Anwendung über das Internet nicht aufrufen können.
     
    Vielen Dank!
     
    Till

  18. Ich habe mit zunehmenden „Besucherzahlen“ zu kämpfen, die unsere Seite ausspionieren möchten. Da wird zum Beispiel versucht php Dateien auszulesen oder auch die liesmich, bzw. readme datei, um an die Versionsnummer des WP Blogs zu kommen. Glücklicherweise kann man den Zutritt zu diesen Dateien mit recht einfachen Mitteln über die .htaccess Datei sperren. Dies ist eine bessere Lösung, als diese zu löschen, da sie beim nächsten Update/ Upgrade dann wieder geladen würden. Bekannte Angreifer habe ich ebenfalls über die .htaccess Datei geblockt.

  19. Hallo,

    ich bin auch über die Google Seite hier gelandet, da ich herausfinden wollte wie ich eine spezielle IP sperren kann. Das funktioniert mit der zuletzt vorgestellten Methode bei mir sehr gut. Danke dafür.

    Ich habe in den Kommentaren gelesen, dass Jemand Probleme mit mehren 1000enden IPs hat. Wäre es hier ggf. hilfreich und möglich alle IPs aus einem oder mehreren Ländern zu sperren?

  20. Der folgende Code hat mich fast zur Verzweiflung gebracht, da ein Test mit eigenener IP zu einem 500 Error führte.
    RewriteCond %{REQUEST_URI} !^wartung\.html

    Hier fehlte offenbar nur ein Slash vor wartung…
    So funktioniert es jetzt jedenfalls wie gewünscht.
    RewriteCond %{REQUEST_URI} !^/wartung\.html

    Danke für diesen Tipp!
    Maik

  21. Hallo Frank-Andre,

    vielen Dank für deine Infos.

    Ich möchte gerne einzelne Domains sperren, z.B.

    traffic.getmyads.com

    contenta-z.com

    Leider habe ich keine IP’s von diesen Seiten.

    Vielen Dank für deine Hilfe

    Karsten

  22. Hallo Karsten,

    sorry für meine späte Reaktion. Dein Kommentar war leider im Spam gelandet 🙁

    Ich kenne leider selber keine Lösung zum Sperren von Domains ohne Hinterlegung einer IP-Adresse. Solltest Du an anderer Stelle etwas dazu gefunden haben, wäre ich für eine Info sehr dankbar!

    VG

    Frank-Andre

  23. Hallo Robert,

    schwieriges Thema, habe ich mich noch nicht mit beschäftigt und habe daher auch keine Lösung parat. Eventuell könnte Dir die Website https://www.maxmind.com/de/home weiterhelfen, denn die beschäftigen sich mit GeoIP-Diensten. Ob es die Daten aber kostenlos gibt, habe ich auf die Schnelle nicht herausfinden können.

    VG

    Frank-Andre

  24. Man kann auch Deny from so angeben: Deny from 2.110.228.102 2.133.109.142 2.176.151.246 5.140.203.239 5.141.201.204

    So kann man direkt Listen eingeben.

    lg sven

  25. Hallo,
    Funktioniert das auch mit der IP 0.0.0.0 ? Browser ist Safari 7 iphone7
    Würde den Besucher gern von meiner Website sperren….der stalked mich alle paar Tage und es nervt!
    Danke fürs Feedback.
    LG M.H.

  26. Hi,

    Grundsätzlich ja, aber eine IP 0.0.0.0 steht für eine nicht routingfähige Adresse oder ein unbekanntes Paket – sieht für mich nach einer manipulierten Datenübertragung aus. Daher glaube ich kaum, dass Du hier mit einer IP-Sperre wirklich weiter kommst.

    VG Frank-Andre

  27. Hi Frank-Andre,

    was schlagen Sie vor, was man dagegen tun kann? Anzeige gegen Unbekannt wird wohl kaum was bringen, oder?
    VG M.H.

  28. Sorry, aber da kann ich leider nicht mehr weiterhelfen. Da hilft u.U. nur noch eine rechtliche Beratung durch einen entsprechenden Anwalt – oder aussitzen.

  29. Hi,

    tolle Infos hier!

    Kann man auch einen Spider / Bot anhand der Browserkennung sperren?
    Hintergrund ist die neue DSGVO es sollen ja selbst archivierte Seiten abmahnfähig sein.

    Der Spider hat z.B. die Kennung
    „Mozilla/5.0 (compatible; archive.org_bot; Wayback Machine Live Record; +http://archive.org/details/archive.org_bot)“

    LG

    Horst

  30. Hi Horst,

    Danke erstmal für das Lob 🙂 Das die DSGVO auch Auswirkungen auf Archiv-Websites hat ist mir nicht bekannt – was aber nichts bedeutet. Wie weit die Auswirkungen der DSGVO nachher greifen, wird man sicherlich abwarten müssen. Spider und Bots kann man auch sperren, schau Dir mal folgenden Artikel an: https://www.mediaevent.de/bad-bots-oder-wie-man-bots-fern-haelt/ Ich habe diese Methoden jedoch nicht selber getestet und kann daher zur Wirksamkeit leider keine Aussagen machen.

    Beste Grüße

    Frank-Andre

  31. Hallo!

    Gibt es auch die Möglichkeit die Zugriffsanzahl zu limitieren?

    Die Hacker versuchen es ja jede paar Sekunden, was bei einem normalen User nicht der Fall ist. Somit wäre es doch eine sinnvolle Lösung, dass z.B. eine IP, die innerhalb 5 Minuten mehr als 10 x zugegriffen hat automatisch gesperrt oder umgeleitet wird.

    Ist so etwas machbar?

  32. Nabend,
    Zwei Fragen dazu:
    1) Funktioniert das Skript auch mit IPv6 IPs?
    2) Kann man Wildcards benutzen? Angenommen ein Spammer nutzt verschiedene IPs, wie z.B. 233.122.4.17, 233.122.4.66, 233.122.4.51, usw. kann man z.B. alle IPs 233.122.4.* sperren, bzw. bei IPv6 auch die letzten beiden Blöcke?

  33. Hallo Thomsen,

    mit IPv6 kenne ich mich leider (noch) gar nicht aus, daher kann ich die Frage leider nicht beantworten.

    Bei der Lösung mit deny from …. sollte * als Wildcard gehen, habe ich aber nicht getestet. Wildcards wie * gehen bei der mod_rewrite-Lösung nicht, dafür aber [0-255] anstelle einer einzelnen Zahl.
    Aber Du solltest damit vorsichtig sein, nicht dass Du dann zuviele echte und normale Besucher aussperrst!!!

    Beste Grüße Frank-Andre

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.