So kannst du Bots, Crawler und Spider verwirren, verlangsamen oder sogar remote killen

So kannst du Bots, Crawler und Spider verwirren, verlangsamen oder sogar remote killen

Ist der Shop schon wieder down? Ein Blick in die Logs des Servers verrät nichts Gutes: Schon wieder werden massenhaft Produkte des Shops aufgerufen. Scheinbar versucht hier wer die Artikel der Seite zu crawlen. Manchmal wird das gemacht, damit die Konkurenz schnell auf Preisänderungen reagieren kann. Erst vor ein paar Tagen hat wer versucht tausendfach am Gewinnspiel auf einer Website teilzunehmen. Oder diese ständigen Anfragen an die Suchfunktion eines Shops, ob bestimmte Artikel gerade vorrätig sind, nur, um diese gleich in der ersten Sekunde wegkaufen zu können. Das geht die ganze Zeit so. Tag und Nacht. Voll automatisch. Und zwar in solcher Geschwindichkeit dass die Obergrenze der möglichen PHP-Prozesse regelmäßig erreicht ist oder keine Datenbank-Verbindungen mehr zur Verfügung stehen. Die Folge: Der Shop oder die Website ist down.

Eine einfache Web Application Firewall

Ich hatte schon vor einer Weile mal die Idee eine kleine defensive Firewall für einfache PHP basierte Webhsotings zu bauen, die ohne Datenbanken auskommt. Jetzt hatte ich die Zeit das mal zu testen und etwas zu experimentieren. Also ran ans Werk. Ich werde versuchen das bald auf GitHub zu veröffentlichen.

Letztlich arbeitet das System ganz simpel. Es wird in der Einstiegsdatei des zu schützenden Systems (zum Beispiel index.php) eingehangen und konfiguriert. Es lassen sich sogenannte Areas bestehend aus verschiedenen Pfaden konfigurieren. So können zum Beispiel verdächtige Netzwerke nur von bestimmten Teilen der Website ausgeschlossen werden, wohingegen die restliche Website noch für diese erreichbar bleibt.

Das System zählt dabei einfach nur die Anfragen innerhalb einer bestimmten Zeit auf einen bestimmten Bereich der Website durch ein bestimmtes Netzwerk.

Die Anfragedaten werden in Dateien gesammelt und bei jeder Anfrage erneut ausgewertet. Ich werde versuchen das bald mal auf GitHub bereitzustellen.

Wir schlagen zurück

Wird verdächtiges Verhalten erkannt, werden nacheinandern diverse Aktionen ausgelöst. Zunächst wird eine einfache Warnung angezeigt. Wird diese Warnung mehrfach ignoriert, und die Aktivität nicht eingestellt, versucht die Firewall zurückzuschlagen. Dazu stehen diverse Techniken bereit.

Der magische Spiegel - Localhost

Ja es funktioniert wirklich. In den Logs ist nachzuweisen, dass sich manche (natürlich nicht alle) Bots oder Crawler einfach verabschieden, nachdem ein Location-Header mit dem Inhalt http://localhost an sie gesendet wurde :-) Ich finde das wirklich lustig.

Lazy Mode

In diesen Actions simuliert die Firewall eine sehr langsame Response Zeit. Das führt dazu, dass manche Bots für eine Weile von der Website ablassen. Das lässt sich auf einigen Systemen mit PHP und flush() realisieren. So kann zum Beispiel das HTML einer Website ganz langsam stückchenweise oder erst nach einem bestimmten Delay ausgeliefert werden.

Flood

Beim Flooden senden wir einfach ein zuvor generiertes random File, welches auf der Festplatte des Servers liegt, an den verdächtigen Client zurück. Das darf schon mal 1-2 GB groß sein. Viel Spaß beim Verarbeiten. Auch hier zeigt sich, dass sich einige Clients nach dieser Antwort komplett verabschieden. Wahlweise kann dieses File auch mit validem HTML gefüllt sein. Das dürfte den Client dann beim Parsen endgültig überlasten, wenn dieser dagegen nicht abgesichert ist.

Fake

Du kannst bewusst falsche Daten ausliefern. Wenn Warnungen mehrfach in hoher Geschwindichkeit ignoriert werden handelt es sich ganz offensichtlich nicht um menschliche Benutzer:innen. Daher kannst du dem Client verwirrende Informationen zusenden und das zu deinem Vorteil nutzen. Angenommen du betreibts einen Shop. In regelmäßigen Abständen wird dieser gecrawled, um die Preise abzuschreiben. Dann kannst du natürlich auch eine valide Produktedetailseite deines Shops ausliefern und darin falsche Preise setzen. Zum Beispiel sehr hohe Preise. Dies könnte dazu führen, dass in den betroffenen Konkurrenz-Shops die Preise zu deinen Gunsten steigen.

Titelbild: https://pixabay.com/de/illustrations/kapow-comic-comic-buch-kämpfen-1601675/