<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=SYN-Cookies</id>
	<title>SYN-Cookies - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=SYN-Cookies"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=SYN-Cookies&amp;action=history"/>
	<updated>2026-06-01T10:16:54Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=SYN-Cookies&amp;diff=233117&amp;oldid=prev</id>
		<title>imported&gt;Pitti3577: /* growthexperiments-addlink-summary-summary:2|0|0 */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=SYN-Cookies&amp;diff=233117&amp;oldid=prev"/>
		<updated>2025-02-27T01:53:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;growthexperiments-addlink-summary-summary:2|0|0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Unter &amp;#039;&amp;#039;&amp;#039;SYN-Cookies&amp;#039;&amp;#039;&amp;#039; versteht man einen im Jahr 1996 von [[Daniel J. Bernstein]] entwickelten Mechanismus zum Schutz vor [[SYN-Flood|SYN-Flood-Angriffen]]. Bei diesen handelt es sich um eine Form des [[Denial of Service|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.&lt;br /&gt;
&lt;br /&gt;
== Verbindungsaufbau mit TCP ==&lt;br /&gt;
Beim Herstellen einer herkömmlichen [[Transmission Control Protocol|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 (Signal)|ACK-Paket]] an den Server und die Verbindung ist hergestellt.&lt;br /&gt;
&lt;br /&gt;
== Erweiterung um SYN-Cookies ==&lt;br /&gt;
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 bei aktiven SYN-Cookies die Tabelle der halboffenen Verbindungen nicht verwendet wird, kann es bei dieser Tabelle zu keiner Blockade kommen, womit ein SYN-Flood-Angriff abgeschwächt wird.&lt;br /&gt;
&lt;br /&gt;
Der SYN-Cookie-Mechanismus läuft vollständig auf Server-Seite ab. Da das Verfahren für den Client transparent abläuft, wird keine Unterstützung durch den Client benötigt und der Server kann SYN-Cookies flexibel ein- und ausschalten. Des Weiteren kann die Implementierung auf verschiedene Art und Weise erfolgen. Bernstein schlägt folgendes Verfahren vor:&amp;lt;ref name=&amp;quot;crypto&amp;quot;&amp;gt;[http://cr.yp.to/syncookies.html &amp;#039;&amp;#039;SYN cookies&amp;#039;&amp;#039;.] cr.yp.to – Website des SYN-Cookies Entwicklers; abgerufen am 18. Dezember 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;#039; ist ein langsam ansteigender [[Zeitstempel]], der empfohlenerweise alle 64 Sekunden inkrementiert wird&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; ist die maximale Paketgröße des Clients&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; ist ein Hashwert aus den folgenden Werten: Der Zeitstempel &amp;#039;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;IP-Adressen&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Portnummern&amp;#039;&amp;#039;&amp;#039; von &amp;#039;&amp;#039;&amp;#039;Client&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Server&amp;#039;&amp;#039;&amp;#039;. Der Hashwert muss 24 Bit lang sein.&lt;br /&gt;
&lt;br /&gt;
Der Server sendet sein SYN/ACK-Paket mit einer speziell generierten Sequenznummer. Diese Sequenznummer ist laut TCP-Spezifikation jedoch auf 32 Bit beschränkt und kann folgendermaßen generiert werden:&lt;br /&gt;
&lt;br /&gt;
* Die ersten 5 Bits: &amp;#039;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;#039; mod 32&lt;br /&gt;
* Mittlere 3 Bits: Eine individuelle Kodierung von &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; (nur acht verschiedene Möglichkeiten)&lt;br /&gt;
* Die letzten 24 Bits: &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Da der Client die Sequenznummer des TCP-SYN/ACK bei Empfang um eins hochzählt, enthält sein TCP-ACK-Paket die vom Server generierte initiale Sequenznummer um eins [[Inkrement und Dekrement|inkrementiert]]. Der Server dekrementiert diese also wieder um eins 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.&lt;br /&gt;
&lt;br /&gt;
Im Detail passiert am Server Folgendes, nachdem das Paket dekrementiert wurde:&lt;br /&gt;
&lt;br /&gt;
# Die ersten 5 Bits müssen mit der aktuellen Berechnung von &amp;#039;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;#039; (oder einen Zeitstempel davor) übereinstimmen. Somit kann herausgefunden werden, ob bereits eine Zeitüberschreitung eingetreten ist.&lt;br /&gt;
# Der Wert &amp;#039;&amp;#039;&amp;#039;s&amp;#039;&amp;#039;&amp;#039; wird erneut aus Zeitstempel &amp;#039;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;#039; (oder einem Zeitstempel davor), &amp;#039;&amp;#039;&amp;#039;IP-Adressen&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Portnummern&amp;#039;&amp;#039;&amp;#039; von &amp;#039;&amp;#039;&amp;#039;Client&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Server&amp;#039;&amp;#039;&amp;#039; berechnet und mit den letzten 24 Bit verglichen. Nur bei Übereinstimmung wird die Verbindung zugelassen.&lt;br /&gt;
# Die mittleren 3 Bits werden dekodiert und die Verbindung mit der gewünschten maximalen Paketgröße aufgebaut.&lt;br /&gt;
&lt;br /&gt;
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 [[Zufallszahl|zufällig]] sein, damit ein Angreifer den Wert nicht erraten kann.&amp;lt;ref name=&amp;quot;RFC1948&amp;quot; /&amp;gt; Dies kann durch eine [[kryptographische Hashfunktion]] erreicht werden, die als zusätzlicher Eingabeparameter einen geheimen Schlüssel des Servers erhält.&amp;lt;ref&amp;gt;{{RFC-Internet |RFC=4987 |Titel=TCP SYN Flooding Attacks and Common Mitigations |Datum=2007-08-14 |Abschnitt=7 |Abschnittstitel=Informative References |Kommentar=[cr.yp.to]}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vor- und Nachteile der Verwendung von SYN-Cookies ==&lt;br /&gt;
SYN-Cookies können Denial-of-Service-Angriffe abmildern oder bei kleineren Angriffen diese sogar verhindern. Wie gut sie vor einem Angriff schützen ist dabei abhängig von dessen Art und Ausmaß. Denn während der Einsatz von SYN-Cookies ein Überlaufen der Tabelle halboffener TCP-Verbindungen wirksam verhindert, so kostet der Einsatz aufgrund der hierzu nötigen Berechnungen mehr [[Rechenleistung]] als wenn keine SYN-Cookies verwendet werden, wodurch möglicherweise der Server überlastet werden könnte. In einem solchen Fall wäre dann der SYN-Flood-Angriff trotzdem erfolgreich, jedoch aufgrund der benötigten längeren Rechenzeit, nicht aufgrund des vollen Speicher. Die DOS-Attacke an sich wäre so dennoch erfolgreich, da dem Server sprichwörtlich „die Puste ausgeht“. Außerdem ist es beim Einsatz von SYN-Cookies nicht möglich, gewisse TCP-Erweiterungen, wie beispielsweise „[[TCP Receive Window#TCP Window Scale Option|große Fenster]]“ zu nutzen, da für die hierfür benötigten Informationen nicht genügend Platz im SYN-Cookie zur Verfügung steht.&amp;lt;ref name=&amp;quot;ComputerSecurity&amp;quot;&amp;gt;William Stallings, Lawrie Brown: &amp;#039;&amp;#039;Computer Security – Principles and Practice.&amp;#039;&amp;#039; 2. Auflage. Kapitel 7: &amp;#039;&amp;#039;Denial-of-Service-Attacks.&amp;#039;&amp;#039; Pearson Verlag, ISBN 0-273-76449-7, S. 263–264.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aus diesen Gründen werden SYN-Cookies in der Praxis häufig, wie standardmäßig beispielsweise im [[Linux (Kernel)|Linux-Kernel]], nur dann eingesetzt, wenn die Tabelle der halboffenen TCP-Verbindungen droht überzulaufen. Zwar können die Clients, die per SYN-Cookie bedient werden, gewisse TCP-Erweiterungen nicht nutzen, doch ist dies immer noch besser als wenn der Server ihre Verbindungsanfrage aufgrund von Platzmangel komplett ablehnen müsste. Sobald wieder genügend Platz in der Tabelle vorhanden ist, werden die SYN-Cookies auf Serverseite deaktiviert. Auf diese Weise kann der Server die Vorteile der SYN-Cookies bei aktiven Angriffen nutzen, ohne deren Nachteile im normalen Betriebsfall in Kauf nehmen zu müssen.&amp;lt;ref name=&amp;quot;ComputerSecurity&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://cr.yp.to/syncookies.html Website des Entwicklers]&lt;br /&gt;
* {{RFC-Internet |Autor=W. Eddy |RFC=4987 |Titel=TCP SYN Flooding Attacks and Common Mitigations |Datum=2007-08}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;RFC1948&amp;quot;&amp;gt;&lt;br /&gt;
{{RFC-Internet |Autor=S. Bellovin |RFC=1948 |Titel=Defending Against Sequence Number Attacks |Datum=1996-05 |Seite=5 |Kommentar=AT&amp;amp;T Research}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Transmission Control Protocol|Syncookies]]&lt;br /&gt;
[[Kategorie:IT-Sicherheit]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Pitti3577</name></author>
	</entry>
</feed>