SYN-Cookies
Unter SYN-Cookies versteht man einen im Jahr 1996 von Daniel J. Bernstein entwickelten Mechanismus zum Schutz vor SYN-Flood-Angriffen. Bei diesen handelt es sich um eine Form des Denial-of-Service-Angriffs bei der der anzugreifende Rechner durch massives Öffnen von Verbindungen dazu provoziert wird, die eigenen Ressourcen auf das Offenhalten der Verbindungen zu verwenden.
Inhaltsverzeichnis |
[Bearbeiten] Verbindungsaufbau mit TCP
Beim Herstellen einer herkömmlichen TCP-Verbindung, dem sogenannten Drei-Wege-Handshake, schickt ein Client zuerst ein SYN-Paket an den Server. Dieser speichert diese Nachricht und antwortet mit einem SYN/ACK-Paket. Schließlich sendet der Client ein ACK-Paket an den Server und die Verbindung ist hergestellt.
[Bearbeiten] Erweiterung um SYN-Cookies
Das Transmission Control Protocol (TCP) macht keine Vorgaben zum initialen Wert der Sequenznummer der SYN/ACK-Pakete. Also kann der Server sie nutzen, um Informationen zu kodieren, die er sonst in einer Tabelle halboffener TCP-Verbindungen speichern müsste. Da es keine solche Tabelle gibt, kann sie auch nicht überlaufen, womit ein SYN-Flood-Angriff nicht zu einem Denial of Service (DOS) führen kann.
Da der Client die Sequenznummer des TCP SYN/ACK um 1 hochzählt, enthält sein TCP ACK-Paket die vom Server generierte initiale Sequenznummer um 1 inkrementiert. Der Server dekrementiert diese also wieder um 1 und vergleicht sie anschließend mit dem Hashwert des Pakets. Stimmen die beiden Hashes nicht überein, muss die Verbindung neu aufgebaut werden, wozu der Server dem Client ein TCP RST-Paket sendet.
Weil die Überprüfung des Verbindungsaufbaus auf dem Server passiert, kann die Hashfunktion der Implementierung grundsätzlich beliebig definiert sein; sie sollte jedoch möglichst zufällig sein, um Sicherheitsrisiken zu vermeiden. Dieses Verfahren läuft für den Client transparent ab, weswegen Verbindungen zwischen Gegenstellen unabhängig davon aufgebaut werden können, ob sie SYN-Cookies verwenden.
[Bearbeiten] Inhalt der initialen Sequenznummer [1][2]
- Zeitstempel mit einer Auflösung von 64 Sekunden
- maximale Segmentgröße
- Hashfunktion über:
- Sender- und Empfänger-IP-Adresse
- Ports
- Zeitstempel mit einer Auflösung von 64 Sekunden
- Ein nur dem Server bekannter geheimer Wert, der sich (wenn überhaupt) in großen Abständen ändert
Die Hashfunktion ist im zugehörigen RFC 4987 nicht spezifiziert und kann daher frei gewählt werden.
[Bearbeiten] Weblinks
[Bearbeiten] Einzelnachweise
- ↑ SYN cookies. Website des SYN Cookies Entwicklers. Abgerufen am 18. Dezember 2009.
- ↑ RFC 4987. RFC 4987 Abschnitt SYN-Cookies. Abgerufen am 18. Dezember 2009.
Steven M. Bellovin: RFC 1948 - Defending Against Sequence Number Attacks. In: Internet Engineering Task Force (IETF). AT&T Research, Mai 1996, S. 5, abgerufen am 20. Juni 2010 (englisch).