DDoS-Angriffe: SYN-Flooding mit SYN-Cookies abwehren

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.

Hinweis:
Dies ist ein älterer Artikel von meinem alten Blog. Die Kommentare zu diesem Artikel werden (falls vorhanden) später noch hinzugefügt.

Der Autor

Unter dem Namen »TheBlackPhantom« alias »BlackY« veröffentlichte ich auf meinem alten Blog, BlackPhantom.DE, in der Zeit von 2011 bis 2015 leidenschaftlich Beiträge über Computer, Internet, Sicherheit und Malware. Während der BlackPhantom-Zeit war ich noch grün hinter den Ohren und lernte viel dazu. Mehr Infos vielleicht in Zukunft...