TCP SYN-Floods und ihre Abwehr

Jeder Internet-Nutzer, der mit einem Webbrowser auf eine Web-Seite zugreift, nutzt es, meistens ohne es zu bemerken. Gemeint ist TCP, das Transmission Control Protocol aus dem Jahre 1981 (RFC 793). Damals war nicht absehbar welche Bedeutung das Protokoll für die gesamte Welt haben würde.

Trotz seines Alters funktioniert das Protokoll bis heute. Jede Sekunde fließen Milliarden von TCP-Paketen durch die Kupfer- oder Glasfaser-Kabel rund um die Welt.

TCP hat allerdings einige Besonderheiten, die es angreifbar und insbesondere Webserver-Betreibern das Leben durch regelmäßige Denial of Service Attacken schwer machen.

Der erste Schritt bei der Etablierung einer TCP-Session ist der sogenannte Handshake. Dabei schickt der Rechner eines Webseiten-Besuchers ein sogenanntes SYN-Paket. Dadurch, dass ein Angreifer besonders viele SYN-Pakete sendet, kann eine Überlastung des Servers herbeigeführt werden.

Dagegen sind bestimmte Maßnahmen bekannt und können eingesetzt werden. Die bekannten Mittel haben jedoch alle signifikante Vor- und Nachteile, die im Folgenden dargestellt werden.

  • TCP-Stack ohne Schutz. Hier füllt sich die sogenannte Accept- oder Listen-Queue sehr schnell, so dass keine normalen Verbindungen mehr angenommen werden können. Der Angreifer erreicht sein Ziel, die “Abschaltung” des Dienstes. Die meisten Linux-Distributionen werden in diesem Zustand ausgeliefert.
  • TCP-Stack mit SYN-Cookies. Ist die Accept- oder Listen-Queue eines Dienstes erst mal gefüllt, kann der Server in den sogenannten zustandslosen SYN-Cookie-Modus umschalten. Linux und FreeBSD unterstützen das zum Beispiel, allerdings mit unterschiedlichen und abweichenden Methoden der Kodierung der Basisparameter wie MTU und Window-Size. Nachteil ist, dass bestimmte moderne Erweiterungen von TCP nicht unterstützt werden (Selective ACKs z.B.). Vorteil ist, dass bei leichten SYN-Floods bis mehrere hunderttausend Pakete pro Sekunde dieser Schutz ausreicht. Sobald diese Anzahl überschritten wird (>1mpps), sind allerdings die Kosten der Paketverarbeitung so signifikant, dass auch hier ein erfolgreicher Denial of Service (DoS) stattfindet.
  • TCP-Stack mit SYN-Cookies und vorgeschaltetem SYN-Rate-Limiting. Durch das Limitieren der Anzahl SYN-Pakete pro Sekunde kann ein TCP-Stack geschützt werden, so dass zumindest die bereits aktiven TCP-Sessions und UDP-Pakete verarbeitet werden können. Durch das Rate-Limiting wird jedoch generell ein großer Teil auch der validen Anfragepakete verworfen, was wiederum die Verfügbarkeit des Dienstes für den Nutzer einschränkt. Der Ansatz ist besser als ein Komplettausfall, aber erfüllt nicht den Anspruch der vollen Verfügbarkeit.

Wie geht man nun effektiv mit großen SYN-Floods um ohne die Verfügbarkeit einzuschränken? Für den DDoS-Schutz myracloud haben wir Kernelmodule entwickelt, die viel früher in die Paketverabeitung eingreifen und dadurch mit sehr geringer Latenz und ohne Network-Stack-Overhead SYN-Flood-Angriffe effektiv bekämpfen und abwehren. Der Ansatz funktioniert ohne jeglichen Zustand auf der Filterebene und braucht auch, anders als der für Linux 3.12 vorgeschlagene SYN-Proxy, keine Translation jedes(!) einzelnen(!) Paketes der so aufgebauten TCP-Session. Das ist effizienter, schneller und weniger fehleranfällig und bewältigt somit auch sehr große Angriffe mit minimalem Ressourcen-Verbrauch.

Dieser Beitrag wurde unter Allgemein veröffentlicht. Setze ein Lesezeichen auf den Permalink.