Bot- und Lastschutz für Shops: erste BETA-Woche in Zahlen
Bot-Schutz für Online-Shops direkt auf deinem Server, live auf 13 Servern: Serverlast im Tagesmittel von über 20 auf 1 bis 2. Jetzt mit Shopware und Shared Hosting.
Seit dem Frühjahr bekommen die Shops auf unseren Servern immer mehr Besuch, der nichts kauft. Suchschwärme rufen jede Filterkombination einer Kategorie ab, KI-Crawler kämmen den Katalog für Trainingsdaten durch, Preis-Scraper laufen aus Rechenzentren. Dagegen haben wir einen eigenen Bot-Schutz für Online-Shops entwickelt, den Bot- und Lastschutz. Eine Woche nach dem Start läuft er auf 13 Kundenservern, mit Magento 1 und 2, Shopware 6 und JTL-Shop, unter cPanel und Plesk, inzwischen auch auf Shared Hosting. Für WooCommerce suchen wir noch BETA-Tester, und jeder weitere Shop mit eigenen Schnittstellen hilft uns.
Das Problem: Schwärme statt einzelner Angreifer
Ein einzelner Request eines solchen Bots ist harmlos. Gefährlich wird die Masse. Bei der Welle vom 24. und 25. September kamen rund 4.000 IPs aus einem einzigen Cloud-Netz, jede mit nur einer Handvoll Anfragen. Auf einem der BETA-Shops gingen an einem Tag 92 % von rund 38.000 Anfragen auf Filter-URLs von nur drei Kategorieseiten. Zusammen legen solche Zugriffe PHP und Datenbank lahm, und deine echten Kunden warten auf die Kategorieseite oder brechen den Kauf ab.
Klassische IP-Sperren greifen hier nicht mehr. Wer jede IP nur fünfmal fragen lässt, sperrt nichts, wenn der Schwarm einfach die nächsten 4.000 Adressen nimmt. Und wer großzügig ganze Netze sperrt, trifft schnell auch echte Kunden.
Wie der Bot- und Lastschutz arbeitet
Der Dienst läuft direkt auf deinem Server, vor dem Shop, und prüft jeden Request, bevor der Shop ihn sieht. Im Normalbetrieb merkt niemand etwas davon. Nur Suche und Filterseiten sind immer geschützt, weil dort die Last entsteht.
Gerät der Shop unter Druck, schaltet der Schutz selbstständig eine Stufe höher. Besucher, die noch nicht als Mensch bestätigt sind, bekommen dann eine kurze Rechenaufgabe vorgeschaltet. Das ist ein Proof of Work Der Browser löst eine kleine Rechenaufgabe, bevor er die Seite bekommt. Für einen Besucher unmerklich, für tausende Skripte teuer. , kein Bilderrätsel und kein Klick auf Ampeln. Für einen Schwarm aus tausenden Skripten wird genau dieser Schritt teuer. Lässt der Druck nach, fährt der Schutz von selbst wieder zurück.
Dabei schaut der Dienst auf mehr als die IP-Adresse. Wer die Aufgabe gelöst hat, trägt ein Token, und Limits gelten pro Token statt pro IP. Rotierende Adressen helfen dem Schwarm deshalb wenig, und Kunden hinter derselben Firmen-IP werden nicht gemeinsam ausgesperrt. Auch die Herkunft einer Anfrage und auffälliges Verhalten fließen in die Bewertung ein.
Was die Messwerte zeigen
Wir überwachen unsere Server mit Netdata. Die Serverlast im 15-Minuten-Mittel Zahl der Prozesse, die im Mittel der letzten 15 Minuten rechnen oder auf einen CPU-Kern warten. Liegt sie über der Kernzahl, staut es sich. zeigt bei vier BETA-Servern, wie sich der Tag vor dem Einbau von den Tagen danach unterscheidet (Tagesdurchschnitt):
| Shop | vor dem Einbau | danach |
|---|---|---|
| Magento 2, cPanel und LiteSpeed | 22,6 | 2,0 bis 2,6 |
| Magento 2, cPanel und LiteSpeed, zwei Domains | 25,0 | 0,9 bis 1,1 |
| Magento 2, Plesk und LiteSpeed | 12,3 bis 13,7 | 0,9 |
| Magento 1, cPanel und Apache, sechs Kerne | 4,3 bis 6,6 | 0,3 bis 0,4 |
Über alle BETA-Server zusammen gingen in den letzten 36 Stunden rund 2,3 Millionen Anfragen auf Filterseiten ein. 85 % davon erreichten den Shop nicht direkt: 79 % bekamen eine Challenge, 6 % wurden gedrosselt. Die übrigen 15 % liefen durch, das sind Besucher mit gültigem Token und verifizierte Crawler.
Neu seit dem Start
In der ersten BETA-Woche sind 43 Updates ausgerollt worden. Die wichtigsten:
- Shopware 6 und JTL-Shop laufen im Praxisbetrieb, inklusive FactFinder-Suche, mehrerer Verkaufskanäle und Such-Plugins. Der Installer erkennt den Shop und den individuellen Admin-Pfad selbst.
- Shared Hosting. Der Schutz funktioniert jetzt auch für einzelne Shops auf einem geteilten Server. Er misst dabei die Last des jeweiligen Accounts, nicht die des ganzen Servers, und greift deshalb auch dann, wenn der Server selbst noch Luft hat. Ein Magento-Shop auf unserem Shared Hosting steht gerade unter einer großen Filterwelle. Beim Shop kommt davon nur ein kleiner Bruchteil an, ohne dass wir eingreifen müssen.
- Crawler-Budget je Crawler. Erlaubte Crawler werden gebremst statt ausgesperrt, jetzt auch einzeln: Bingbot lässt sich drosseln, während Google frei bleibt. Auf einem Modeshop machte Bing 54 % aller Zugriffe aus. Mit Budget fiel die Last dort von 24 auf 1,6.
- Filterseiten in allen Varianten werden erkannt, auch SEO-freundliche Filter-URLs. Klicks aus Anzeigen und Affiliate-Links zählen dagegen nicht als Filter und landen nie auf einer Prüfseite.
- Angreifer-Export. Auffällige IP-Adressen lassen sich aus dem Dashboard als Liste für die eigene Firewall exportieren.
Der Aufwand für den Dienst bleibt klein: Im Median kostet die Prüfung 0 ms je Request, im 99. Perzentil 1 ms (gemessen auf acht Servern), dazu kommen rund 20 MB Arbeitsspeicher.
Was immer durchkommt
Ein Schutz, der den Checkout blockiert, ist schlimmer als die Bots. Deshalb gilt:
- Zahlungen laufen ungestört. Rückmeldungen von PayPal, Klarna, Amazon Pay, Wallee, Mollie, Stripe, Adyen und weiteren Anbietern bekommen nie eine Challenge. Dasselbe gilt für Warenwirtschaften wie JTL-Wawi und Pixi und Marktplatz-Anbindungen wie M2E Pro.
- Echte Crawler werden erkannt, falsche abgewiesen. Suchmaschinen, KI-Suche, Meta und Preisvergleicher prüfen wir gegen die veröffentlichten Angaben der Betreiber, nie nur über den User-Agent. Wer sich nur als Googlebot ausgibt, kommt nicht durch.
- Fail-open. Fällt der Dienst aus oder schalten wir ihn ab, leitet der Webserver direkt zum Shop. Ein Watchdog startet den Dienst bei Hängern neu, und abschalten lässt er sich in Sekunden, auch dauerhaft über Neustarts hinweg. Der Schutz ist nie der Grund, warum dein Shop offline ist.
Wichtig zur Einordnung: Das ist kein DDoS-Schutz und ersetzt auch keinen. Es ist der Schutz für das, was täglich passiert, nämlich Bots, die deinen Shop langsam machen.
Der Lagebericht: Was war heute los?
Zu jeder geschützten Domain gehört ein Dashboard mit eigenem Passwort. Es liest sich wie ein Bericht und beantwortet die erste Frage in einer Zeile: Bin ich geschützt, und was war los? Die folgenden Ausschnitte stammen aus den BETA-Shops.
Die Pegeltafel zeigt die Lage wie einen Wasserstand, mit den Meldestufen als Linien. Darunter folgen Kennzahlen gegen den Vorzeitraum und die verifizierten Crawler je Gruppe, mit einer eigenen Spalte für gebremste Anfragen:
Der Verlauf macht sichtbar, wie viel davon nie beim Shop angekommen ist. Blau sind durchgelassene Anfragen, Braun die Challenges, die farbigen Bänder markieren Zeiten mit Schutzstufe 1 oder 2:
Dazu kommen eine IP-Liste mit Netz und Herkunft, eine Länderkarte, deren Klick die IP-Liste filtert, und eine Auswertung der User-Agents. Zeiträume: 24 Stunden, 7 und 30 Tage. Das Dashboard aktualisiert sich jede Minute, läuft auch auf dem Handy und hat einen Dark Mode.
Deine Daten bleiben auf deinem Server
Es gibt keine Cloud vor deinem Shop, keinen DNS-Umzug und kein fremdes TLS-Zertifikat. Dashboard und Challenge-Seite laden nichts von externen Servern. IP-Adressen liegen 7 Tage als Rohdaten auf deinem Server, Tagessummen je IP 30 Tage. Danach bleiben nur Zahlen ohne IP-Bezug für 90 Tage. Suchbegriffe speichern wir nicht, weitergegeben wird nichts.
Danke an unsere BETA-Tester
Dass der Schutz nach einer Woche auf 13 Servern läuft, verdanken wir euch und eurer regen Teilnahme. Fast jeder Shop hat etwas mitgebracht, das wir in einer Testumgebung nie gesehen hätten:
- ein Magento-Import, der länger als 60 Sekunden läuft,
- ein Preisvergleicher, der unnötig geprüft wurde,
- die Tabellen im Magento-Admin und die Zugriffe einer Warenwirtschaft,
- Produktbilder mit Leerzeichen im Dateinamen,
- ein Widget, das per Skript nachlädt und die Seite verschob,
- Tracking-Parameter, durch die Klicks aus Anzeigen auf „keine Ergebnisse“ landeten.
Jede dieser Rückmeldungen steckt heute im Standard und schützt damit alle anderen Shops gleich mit. Auf einem Server haben wir den Schutz auf Wunsch des Kunden pausiert. Auch das ist eine Erkenntnis: Nicht jeder Shop braucht ihn dauerhaft, und abschalten muss ohne Aufwand gehen. Danke für die Geduld, die schnellen Antworten und die vielen Hinweise.
So wirst du BETA-Tester
Voraussetzungen für die BETA:
- ein Shop auf einem unserer Server mit cPanel oder Plesk und LiteSpeed Enterprise oder Apache 2.4, etwa im Magento-Hosting oder auf einem Managed Server; CloudLinux, Shared Hosting und ältere Systeme mit CentOS 7 laufen ebenfalls
- Magento 1 oder 2, Shopware, WooCommerce oder JTL-Shop; andere Shops laufen mit einem allgemeinen Profil
- Bereitschaft, uns zu melden, wenn etwas hakt oder ein Tool eine Challenge bekommt
Die Installation übernehmen wir. Sie dauert unter einer Minute, erkennt den Shop samt individuellem Admin-Pfad selbst, und ab der ersten Sekunde gilt Fail-open. Passt der Schutz nicht zu deinem Shop, schalten wir ihn genauso schnell wieder ab. Unterstützung für Nginx und englische Texte für Dashboard und Challenge-Seite folgen.
Die Teilnahme an der BETA ist kostenlos und wird auch nicht automatisch kostenpflichtig. Als Dankeschön bekommen BETA-Tester später einen dauerhaften Promocode.