Bei herkömmlichen Distributed Denial of Service-Angriffen wird versucht, mit einer großen Menge an Traffic die Internetverbindung des Servers lahmzulegen, so dass dieser nicht mehr auf legitime Anfragen von normalen Benutzern reagieren kann, da die Leitung verstopft ist. Bei einem SYN-Flood-Angriff ist das Ziel jedoch nicht primär das Überlasten der Leitung, sondern das Überlasten des entsprechenden Servers. Um die Funktionsweise von SYN-Flooding zu verstehen, ist es wichtig, erst einmal zu wissen, wie eine erfolgreiche TCP-Verbindung überhaupt aufgebaut wird.
Aufbau einer TCP-Verbindung (SYN, SYN/ACK, ACK) und SYN-Flooding
Bevor Client und Server anfangen, Nutzdaten auszutauschen, erfolgt ein Drei-Wege-Handshake, in dem jeder Endpunkt bestätigt, dass er für die Datenübertragung bereit ist. Der Client sendet zuerst ein TCP-Paket mit SYN-Flag an den Server und fragt ihn, ob er mit einer Verbindung einverstanden ist. Daraufhin bestätigt der Server dem Client mit einem TCP-Paket und gesetztem SYN/ACK-Flag, dass er mit dem Verbindungsaufbau einverstanden ist.
Jetzt bestätigt der Client zuletzt noch den Erhalt des SYN/ACK-Flags vom Server, indem er ein TCP-Paket mit ACK-Flag zum Server sendet – und die Verbindung ist hergestellt. Und im letzten Schritt liegt das Problem:
Nachdem der Client ein TCP-Paket mit SYN-Flag zum Server schickt, dieser einverstanden ist und ein SYN/ACK zum Client zur Bestätigung schickt, wartet er auf den Eingang des finalen ACK-Flags vom Client. Der Server hält die Verbindung also noch halb offen, damit er das vom Client gesendete ACK-Paket wieder zuordnen kann. Wenn der Client nun einfach abhaut, hält der Server die Verbindung noch solange offen bis der Timer abläuft. Wenn man diesen Vorgang jetzt automatisiert wiederholt, hat der Server irgendwann die Schnauze voll und kann keine Verbindungen mehr annehmen.
Abhilfe: SYN-Cookies machen SYN-Flooding unwirksam
Abhilfe gegen SYN-Flooding schaffen SYN-Cookies. Dabei schließt der Server nach dem Senden des SYN/ACK-Pakets die halboffene Verbindung und speichert einen Hashwert mit Daten aus vorherigen Paketen, damit er beim Eintreffen des ACKs eines legitimen Clients noch weiß, dass vorher eine Kommunikation stattgefunden hat. Weitere Hintergründe, wie das mit den SYN-Cookies unter einem Linux-Server funktioniert, erklärt Domestic Hacks sehr verständlich.
Eingebettetes Video
https://www.youtube.com/watch?v=fkPxhJJZqNoHier war ein YT-Video über eine Invidious-Instanz eingebunden. Wegen technischen Maßnahmen von Google, mit denen das Invidious-Projekt gerade zu kämpfen hat, können hier momentan keine YT-Videos via Invidious eingebunden werden.