Dämme gegen die SYN-Flut

Seite 3: Cookies als Schutzimpfung

Inhaltsverzeichnis

Die eigentliche Schwachstelle, die SYN-Flooder ausnutzen, ist die Backlog-Queue; daran ändern auch die vorgestellten Maßnahmen nichts. Sie erschweren einen Angriff zwar deutlich, aber mit ausreichenden Ressourcen kann ein Angreifer die Backlog-Queue immer noch mit sinnlosen Einträgen überfluten.

Bereits 1996 hat jedoch Dan Bernstein gezeigt, wie man diese Schwachstelle gänzlich beseitigen kann. Dabei dienen sogenannte SYN-Cookies als Fallback-Mechanismus wenn die Backlog-Queue voll ist. Sie erfordern keine Anpassungen bei den Clients, aus deren Sicht der Server weiterhin normal antwortet.

Der Trick dabei ist es, dass der Server selbst keinerlei Informationen über ein SYN-Paket speichert, sondern diese als Crypto-Cookie an den Client sendet. Wenn dieser nicht antwortet, hat der Server lediglich ein wenig Rechenzeit investiert. Antwortet der Client jedoch, kommt das Cookie wieder zurück und der Server kann anhand der darin enthaltenen Informationen feststellen, dass er mit diesem Client bereits gesprochen hat und die Verbindung herstellen – auch ohne dass er einen Eintrag in der Backlog-Queue dazu vorfindet.

Konkret verwendet der Server seine Sequenznummer, die er normalerweise pseudozufällig erzeugt, als Cookie. Mit SYN-Cookies erstellt er aus Quell- und Ziel-Ports, den zugehörigen IP-Adressen und einem Geheimnis einen MD5-Hash und schickt diesen als erste Sequenznummer an den Client. Kommt die Antwort, um den Dreiwege-Handshake zu komplettieren, enthält diese eine Bestätigung der Sequenznummer (ACK). Der Server bildet wiederum den MD5-Hash über das Geheimnis und die Adressen und Ports des ACK-Pakets und vergleicht diesen Wert mit der vom Client bestätigten Sequenznummer. Stimmen die beiden überein, weiss der Server, dass der Client das Cookie von ihm haben muss und stellt die Verbindung her. Weitere Details zu SYN-Cookies finden Sie unter [4].

Ein Handicap der SYN-Cookies ist die Einschränkung, dass sie bestimmte TCP-Optionen wie zum Beispiel große Fenster (TCP Window Size) nicht unterstützen. Da der Server jedoch im Normalbetrieb keine SYN-Cookies verwendet und ohne diese Einschränkung arbeitet, ist es sehr empfehlenswert, auf Servern SYN-Cookies als Fallback-Mechanismus für Angriffe zu aktivieren.

Diverse BSD-Systeme und Linux unterstützen SYN-Cookies von Haus aus. Bei Linux muss der Kernel mit der Option CONFIG_SYNCOOKIES übersetzt sein, was beiden gängigen Distributionen der Fall ist. Der Befehl

# echo 1 > /proc/sys/net/ipv4/tcp_syncookies

aktiviert dann die Verwendung der SYN-Cookies.

Maßnahmen wie das Vergrößern der Backlog-Queue und Herabsetzen der Zahl der Retransmissions lassen sich auch direkt auf andere Betriebssysteme wie Solaris übertragen [5]. Mit den beschriebenen Methoden ist der Server recht gut auf SYN-Flood-Angriffe vorbereitet – ganz ausschalten können sie die Gefahr jedoch nicht. Spätestens wenn die akkumulierte Bandbreite eines verteilten DoS-Angriffs die des Servers übersteigt, helfen nur noch Filter auf vorgelagerten Routern, den regulären Betrieb aufrecht zu halten.

[1] Microsoft Knowledge Base: Internet Server Unavailable Because ofMalicious SYN Attacks

[2] MSDN: How To: Harden the TCP/IP Stack

[3] Microsoft Technet: Security Considerations for Network Attacks

[4] Dan Bernstein: SYN-Cookies

[5] Sun: Solaris Tunable Parameters Reference Manual (ju)