Was ist eine HTTP-Flood-Attacke?
Eine HTTP-Flood-Attacke ist eine besondere Form der DDoS-Attacken (Distributed Denial of Service). Hierbei versucht man die Webseite oder Applikation durch eine Vielzahl an Besuchen von verschiedenen Stellen zum Absturz zu bringen. Eine HTTP-Flood-Attacke wird oft auch als Layer-7-Attacke bezeichnet. Mit Layer 7 ist der „Application Layer“ im OSI-Modell gemeint. Das Modell besagt, dass das Internet aus sieben Schichten besteht.
Eine Attacke in dieser Schicht besteht immer darin, dem Netzwerk oder dem Server die Ressourcen zu entziehen. Sobald die Hardware nicht mehr genügend Ressourcen zur Verfügung hat, wird die Beantwortung der Anfragen durch den Client mehr Zeit benötigen. Da weiterhin unzählige Anfragen an die Hardware gestellt werden, wird eine ständige Überlastung des Systems erzeugt und der Server oder das gesamte Netzwerk ist nicht mehr erreichbar.
Wenn Angreifer eine HTTP Flood einsetzen, versuchen sie einen Server-Crash über ganz gewöhnliche Anfragen herzuleiten. Wie werden die HTTP-Methoden zu gefährlichen Attacken?
Wie läuft eine HTTP Flood ab?
Eine HTTP-Flood-Attacke basiert auf der GET- oder POST-Anfrage vom Client. Der Client, also der Browser, der die Webseite aufruft, wird eine dieser Anfragen verschicken, der Server verarbeitet die Anfrage und schickt das Resultat an den Client zurück.
Mit der GET-Anforderung werden statische Inhalte abgerufen, etwa Bilder oder Textblöcke. Eine POST-Anforderung wird verwendet, wenn der Zugriff auf dynamische Ressourcen angefragt wird. Vereinfacht kann man sagen, die GET-Methode erhält Daten vom Server und die POST-Methode schickt Daten an den Server. In der Attacke können beide Methoden verwendet werden, jedoch wird die POST-Methode öfter eingesetzt, da sie eine komplexe Verarbeitung durch den Server erfordert.
Die HTTP-Flood-Attacke setzt darauf, dass viele solcher Anfragen gleichzeitig über einen längeren Zeitraum gestellt werden. Dabei wird meistens ein Botnet eingesetzt, um das Volumen der Anfragen zu erhöhen. Die HTTP-Flood-Attacke ist so gestaltet, dass der Server jeder Anfrage die größtmögliche Ressource zuweist. In einer normalen Situation ist dies gewollt, da der Server nicht tausende oder hunderttausende Anfragen pro Minute erhält. Mit der hohen Anzahl der Anfragen und Aufrufe erwartet der Angreifer, dass der Server mit den prozessintensiven Anfragen überlastet wird und die Webseite oder Applikation nicht mehr ordnungsgemäß angezeigt wird.
Wie kann man die Attacke stoppen?
Da es durchaus vorkommen kann, dass eine Seite temporär viel Traffic erhält, ist es schwierig zu entscheiden, ob die gestiegene Anfragemenge eine Attacke darstellt oder nur das Ergebnis einer gelungenen Marketing-Kampagne ist. Wenn jedoch eine HTTP-Flood-Attacke festgestellt wurde, können Firewalls die verdächtigen IP-Adressen kennzeichnen und blockieren.
Als ersten Schritt kann man in einer solchen Situation eine sogenannte JavaScript Computational Challenge an den Client zurücksenden. So lässt sich einfach analysieren, ob der Client zu einem Botnet gehört oder ein regulärer Nutzer ist. Im Gegensatz zum Bot kann jeder Browser eines normalen Website-Besuchers diese zusätzliche Hürde bearbeiten.
Wenn die Vorgehensweise der Attacke bekannt ist, können im Firewall-System einfache Regeln eingeführt werden, die die IP-Adressen des Botnets automatisch blockieren. Normalerweise kann eine HTTP Flood in wenigen Minuten erkannt und gestoppt werden, wenn man weiß, dass dies die Ursache für den Systemausfall ist.
Wie kann man sich davor schützen?
Es ist sehr schwer, sich vor einer HTTP-Flood-Attacke zu schützen, da die Anfragen zunächst wie normaler Traffic auf der Webseite aussehen. Es wird keine Malware an den Server gesendet und es wird auch nicht versucht, eventuelle Sicherheitslücken zu nutzen. Stattdessen fluten die Angreifer den Server mit erlaubten Zugriffen. Da dies bedeutend weniger Bandbreite verbraucht als ein gewaltvolles Eindringen in den Code der Seite, sind die Attacken in den Anfängen meist unerkannt.
Die meisten Webseiten setzen auf einen Captcha-Test, der manuell durch einen echten Nutzer ausgeführt werden muss. Dadurch ist ein Botnet im Vorfeld zu erkennen, und die IP-Adressen können blockiert werden. Es gibt aber auch Firewalls für Websites und Applikationen. Diese Systeme überprüfen und analysieren den Traffic, der auf der Website eingeht. Die Seite wird dadurch nur minimal verlangsamt, dafür wird jedoch ihr Schutz und ihre Stabilität gewährleistet. Sollte die Seite an sich schon daten- und prozessintensiv sein, bietet es sich an, einen Ladebildschirm zu integrieren, während die Hauptseite im Hintergrund geladen wird.
HTTP Flood ist nur eine der verschiedenen Formen von DDoS-Attacken. Auch mit Ping-Flood, SYN-Flood, UDP Flood und dem Ping of Death versuchen Angreifer, den Dienst von Webservern zu unterbinden.