Sonntag, 14. August 2011


Topthema

Donnerstag, 11. Februar 2010 | Topthema

About Security #242: Schwachstellen-Suche: DoS verhindern

(Link zum Artikel: http://www.entwickler.de/entwicklerde/kolumnen/053868)
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share

Bei der Abwehr von DoS-Angriffen muss man in drei Schritten vorgehen: Erstens muss man Maßnahmen ergreifen, um einen Angriff zu verhindern oder abzuschwächen, zweitens muss man feststellen können, wenn ein Angriff erfolgt, und drittens muss man Maßnahmen vorbereiten, die im Falle eines Angriffs ergriffen werden können, um ihn zu beenden oder abzuschwächen.

Angriffe vorab verhindern oder abschwächen

DoS-Angriffe können auf allen Schichten vom Netzwerk bis zur Anwendung stattfinden, wie in About Security #239, #240 und #241 bereits beschrieben wurde. Zwar sind "Low Level"-Angriffe auf das Netzwerk häufiger als Angriffe auf die höheren Schichten wie z.B. die Webanwendung oder deren Datenbank, doch sind dafür die Folgen der Angriffe auf die höheren Schichten i.A. schwerwiegender.

Anti-DoS-Produkte

Es werden verschiedene Produkte zur Abwehr von DoS-Angriffe angeboten, die aber immer nur einen Teil der möglichen Angriffe abdecken. Software-Firewalls sind i.A. recht gut in der Erkennung und teilweise auch Abwehr von Angriffen auf Anwendungsebene, während Hardware-Firewalls besser mit Angriffen auf der Netzwerkebene klar kommen. SYN- und UDP-Flooding, Snurf- und Fraggle-Angriffe sowie Angriffe auf die alten Schwachstellen in den TCP/IP-Implementierungen können gut von der Firewall gestoppt werden. Firewalls mit Application-Layer-Proxies können auch einen Teil der Angriffe auf die Webanwendung abwehren, werden dabei aber leicht selbst zum Flaschenhals, und dem Angreifer ist es meist egal, ob die Webanwendung nicht mehr erreichbar ist, weil sie selbst lahm gelegt wurde, oder weil die Firewall davor überlastet ist und keine Daten mehr an die Webanwendung weiterleiten kann. Da eine Firewall den Netzwerkverkehr nur verwerfen oder filtern kann, ist sie gegen Angriffe, die die Netzwerkverbindung selbst überlasten, machtlos. Solche Angriffe kann ein Load Balancer teilweise abwehren, der dafür ausgelegt ist, extrem hohe Anzahlen an SYN- oder HTTP-Requests zu verarbeiten und damit den Webserver zu entlasten. Manche Load Balancer können auch als "SSL Offload Device" die Abwicklung der SSL-Verbindungen für den Webserver übernehmen und diesen damit von der Berechnung der aufwendigen Krypto-Funktionen entlasten. Load Balancer, die erst einen vollständigen HTTP-Handshake durchführen bevor sie die Verbindung zum Webserver weiterleiten, halten SYN-Floods vom Webserver fern und verhindern die Verwendung gefälschter Sender-Adressen, da der Angreifer auf die Antwort des Load Balancers reagieren muss. Eine weitere Möglichkeit, die Kapazität der Website zu erhöhen, sind Caches in Form eigenständiger Geräte. Je mehr Daten gecached werden, desto mehr Kapazitäten bleiben dem Webserver zum Beantworten komplizierterer Requests. Daher ist es empfehlenswert, außer den statischen Daten auch so viele dynamische Inhalte wie möglich zu cachen. So könnte die i.A. am häufigsten aufgerufene Startseite im Cache gespeichert und nur bei Bedarf aktualisiert werden. Ebenso kann teilweise dem Slashdot-Effekt begegnet werden: Die betroffene Seite wird im Cache gespeichert, ggf. uch durch eine statische Seite ersetzt, so dass der Webserver sie nicht ständig neu aufbauen muss.

Kapazitäten planen

Die Tatsache, dass es Produkte gibt, die DoS-Angriffe abwehren oder abschwächen können, ist schön und gut - nur müssen auch die jeweils passenden Produkte verwendet werden. Die Auswahl ist abhängig von den geplanten Kapazitäten: Wie viele Benutzer nutzen die Webanwendung normalerweise, und wie viel Aufwand wird ein Angreifer treiben, um sie lahm zu legen? Abhängig von den Antworten auf diese Fragen können dann ein passend dimensionierter Server und eine passende Netzwerkverbindung sowie ggf. zusätzliche Anti-DoS-Produkte ausgewählt werden. Nicht vergessen werden sollte dabei das zukünftige Wachstum. Auch wenn die Kapazitätsplanung in erster Linie aussagen muss, welche bzw. wie viele Server benötigt werden und welche Bandbreite für die Netzwerkanbindung notwendig ist, müssen mögliche Erweiterungen bei der Auswahl berücksichtigt werden. Es wäre ziemlich peinlich, bei einer notwendigen Erweiterung fest zu stellen, das die gewählte Konfiguration sich nicht so einfach erweitern lässt, wie man gedacht hat.

Die Netzwerkbandbreite ist i.A. kein Problem, wenn die Webanwendung in einem Rechenzentrum eines ISP oder einem Colocation-Standort gehosted wird, die direkt an einen oder mehrere Backbones angeschlossen sind. Anders sieht es aus, wenn der Webserver im eigenen Unternehmen steht und im Vergleich zu einer direkten Backbone-Anbindung nur relativ schmalbandig angebunden ist. Zusätzliche Kapazitäten sind dann i.A. nur aufwendig zu beschaffen, wenn überhaupt. Die Server-Kapazität kann auf zwei Arten erhöht werden: Man nimmt einen stärkeren Server, oder man nimmt mehrere Server. Beides erhöht die Leistung der Webanwendung, bei der Verwendung mehrere Server kommt durch die vorhandene Redundanz hinzu, das der Ausfall eines Servers keine Auswirkung auf die generelle Funktion der Webanwendung hat. Dafür ist der Betrieb und die Administration mehrerer Server aufwändiger als die Verwendung eines einzigen Servers.

In der nächsten Folge geht es weiter um die Abwehr von DoS-Angriffen.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security - Übersicht zum aktuellen Thema:

Kommentare

Folgende Links könnten Sie auch interessieren