Die SYN-Cookies ( Syncookies ) sind bestimmte Werte der anfänglichen Folgen von Zahlen, die von einem Server (ISN: Initial Sequence Number) bei einer Verbindungsanforderung TCP generiert wurden . Die implementierte Technik ermöglicht es insbesondere, sich gegen Angriffe durch Überflutung von SYN-Anfragen und im Übrigen durch IP-Spoofing zu verteidigen . Es hat jedoch mehrere Nachteile wie Fälschung und Informationsverlust aus dem SYN-Paket. Es wurden verschiedene Verbesserungen vorgeschlagen, um diese Nachteile zu überwinden. Es wurden auch Erweiterungen entwickelt, insbesondere im Zusammenhang mit Multi-Homing .
Ein SYN-Cookie ist eine bestimmte Auswahl der ISN (Initial Sequence Number), die ein Server beim Anfordern einer TCP- Verbindung trifft . Der Server kann den Status von halboffenen Verbindungen in der anfänglichen Sequenznummer speichern, die beim Initialisieren der Verbindung an den Client zurückgegeben wird. Dieser Mechanismus ermöglicht es, sich vor einem Angriff zu schützen, indem SYN-Anforderungen überflutet werden , die aus einem gefälschten SYN- Paket mit zufälligen Quelladressen versuchen, den gesamten Speicher des Servers zuzuweisen, sodass er nicht in der Lage ist, auf legitime Kunden zu antworten. Dieser Schutz wird nur aktiv, wenn zu viele halboffene Verbindungen vorhanden sind. Das Generieren und Überprüfen des SYN-Cookies verbraucht jedoch viele CPU- Ressourcen , wodurch diese Methode nur bei einem kleinen SYN-Anforderungsflutangriff wirksam wird.
Ein SYN-Cookie ist wie folgt aufgebaut:
Diese Wahl der Sequenznummer wurde durch die Tatsache motiviert, dass das TCP-Protokoll erfordert, dass die Sequenznummern langsam ansteigen. In diesem Fall steigt die anfängliche Sequenznummer des Servers etwas schneller als die anfängliche Sequenznummer des Clients.
CodierungDer genaue Mechanismus zum Codieren des Status in der SYN + ACK-Sequenznummer kann von der Implementierung abhängen. Unter Linux werden SYN-Cookies wie folgt codiert:
wobei die anfängliche Sequenznummer des SYN - Pakets vom Kunden ausgewählten darstellt, stellt die 5-Bit - Zeitzähler alle 64 Sekunden zu erhöhen stellt einen MSS codierten Wert zwischen und , und steht für geheime Schlüssel , die nur der Server kennt, stellt eine kryptographische Hash - Funktion wie beispielsweise MD5 oder SHA-1 , , , und jeweils die darstellen Adresse der Quelle, Versand Quelle, Ziel - Adresse und Zielanschluss des SYN - Pakets. 07
Der Ablauf einer TCP-Verbindung mit SYN Cookie ähnelt dem Ablauf einer typischen TCP-Verbindung. Es wird in einer 3-Phasen-Verhandlung durchgeführt .
Der Server überprüft dann die Gültigkeit der Bestätigungsnummer des ACK-Pakets. Wenn gültig, weist der Server Speicher für die Verbindung zu und ändert seinen Status in den Modus ESTABLISHED. Andernfalls wird das ACK-Paket abgelehnt.
SYN-Cookie-ÜberprüfungDer Mechanismus zur Überprüfung der SYN + ACK-Sequenznummer hängt von seiner Codierung ab. Unter Linux werden SYN-Cookies wie folgt überprüft:
wobei bzw. jeweils die Bestätigungsnummer und die Sequenznummer des ACK-Pakets darstellen, den alle 64 Sekunden ansteigenden 5-Bit-Zeitzähler darstellen und geheime Schlüssel darstellen, die nur der Server kennt, eine kryptografische Hash-Funktion wie MD5 oder SHA-1 darstellen , , , und jeweils die repräsentieren Adressenquelle, wobei der Versand Quelle, Ziel - Adresse und Zielanschluss des ACK - Pakets.
Wenn zwischen und liegt , wird das ACK-Paket als legitim angesehen. Der Server stellt dann eine entsprechende Verbindung mit dem MSS her . Für den Fall, dass ein Paket manipuliert wird, neigt es dazu, sich durch einen Wert zwischen und sehr zu unterscheiden . 0707
Es wurde gezeigt, dass SYN-Cookies nur vom endgültigen ACK- Paket abhängen . Da der Server den Verbindungsstatus nicht speichert, kann er nicht wissen, ob das SYN + ACK-Paket verloren gegangen ist, und kann es daher nicht erneut übertragen. Dies stellt eine Sicherheitslücke dar: Ein Angreifer kann versuchen, den SYN-Paketserver zu überfluten, sodass er sich für die Verwendung von SYN Cookie entscheidet. Es kann dann den Server mit einem gefälschten ACK-Paket überfluten, d. H. Einem ACK-Paket, das zufällige Sequenznummern enthält, in der Hoffnung, dass eines davon ein SYN-Cookie ist, das vom Server als gültig angesehen wird.
Es wurde auch gezeigt, dass es nicht notwendig ist, die 32 Bits der anfänglichen Sequenznummer zu erraten, und dass das Erraten der letzten 24 Bits ausreichend ist. Ein Angreifer kann daher hoffen, mit einer Wahrscheinlichkeit von einen korrekten Wert von SYN Cookie zu erraten . Dies liegt daran, dass die Pakete, da sie mit zufälligen IP-Adressen gefälscht sind, nicht wissen können, ob ein Verbindungsversuch erfolgreich war. Wenn der Angreifer eine Verbindung pro Minute fälschen möchte, muss er durchschnittlich ACK-Pakete senden , was einer Rate von 85 Mbit / s entspricht. Diese Art von Angriff ist im Gegensatz zu einem SYN-Anforderungsflutangriff nicht dazu gedacht, Serverspeicher zu verbrauchen. Vielmehr versucht es, seine CPU zu verbrauchen, indem es alle SYN-Cookies validiert, die größtenteils ungültig sind, da sie zufällig generiert werden. Dieser Angriff verbraucht nicht nur die CPU des Servers, sondern beeinträchtigt auch dessen Bandbreite .
Ein Nachteil der Verwendung von SYN-Cookies besteht darin, dass die Serverleistung verringert wird . Tatsächlich werden die im Feld "Optionen" enthaltenen Parameter nicht berücksichtigt, wenn der Client sein SYN-Segment sendet. Diese Parameter wie die Größe eines Empfangsfensters, die selektive Bestätigung, die Round-Trip-Zeit (RTT), der Schutz vor verpackten Sequenzen (PAWS) oder MSS ermöglichen eine effizientere Kommunikation. Dieser Verlust ist jedoch nicht dauerhaft, da SYN-Cookies nur aktiviert werden, wenn der Server einem Angriff ausgesetzt ist, dh wenn alle Ressourcen des Servers von halboffenen Verbindungen belegt sind. In der restlichen Zeit sind SYN-Cookies deaktiviert.
Die anderen Nachteile der Verwendung von SYN-Cookies sind:
Unter Windows ist es möglich, eine Methode zu aktivieren, die dem aufgerufenen SYN-Cookie ähnelt SynAttackProtect. Weisen Sie dazu 2dem Registrierungsschlüssel SynAttackProtectin den empfohlenen Wert zu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters. Es ist auch möglich , von der Schwelle eines Angriff wählen Flutung SYN - Anfragen durch Modifizieren der Registry - Schlüssel erkannt wird TcpMaxHalfOpen, TcpMaxHalfOpenRetriedund TcpMaxPortsExhausted.
Unter Linux kann überprüft werden, ob SYN-Cookies derzeit auf Kernelebene aktiviert sind, entweder mithilfe des Befehls sysctl -n net.ipv4.tcp_syncookies oder mithilfe des Befehls cat /proc/sys/net/ipv4/tcp_syncookies. Wenn der von einem dieser beiden Befehle zurückgegebene Wert gleich ist, 1sind SYN-Cookies bereits aktiviert. Andernfalls müssen Sie die Datei bearbeiten /etc/sysctl.conf, den Wert net.ipv4.tcp_syncookiesan 1anstelle von übergeben 0und die Konfiguration mit dem Befehl sysctl -pneu laden oder den Server neu starten.
Im Jahr 2006 schlug KhakAbi eine Verbesserung zum Speichern von SYN - Paket Informationen wie TCP - Optionen , die Fenstergröße und MSS in einer Hash - Tabelle . Da diese Methode den Verbindungsstatus speichert, kann sie diese Informationen verwenden, um eine optimale Verbindung bereitzustellen. Dies bedeutet auch, dass SYN-Cookies auch dann verwendet werden können, wenn auf dem Server kein SYN-Anforderungsflutangriff auftritt . Es ist auch nicht mehr erforderlich, dass der Server über ein Erkennungsgerät verfügt.
Im Jahr 2007 wurden mehrere Verbesserungen vorgeschlagen. Han Jianying et al. schlug eine Verbesserung vor, die darin besteht, die Basisinformationen des SYN-Pakets vorübergehend zu speichern, um seine Rechtmäßigkeit festzustellen. Diese Verbesserung zielt darauf ab, Überschwemmungen durch ACK-Anfragen zu bekämpfen. Dies trägt zwar zur Reduzierung der CPU- Auslastung bei , erfordert jedoch zusätzlichen Speicherplatzverbrauch. Peng Di et al. haben ihrerseits eine Verbesserung vorgeschlagen, die darin besteht, den Antwortprozess des TCP-Protokolls für das SYN-Paket auf der Ebene des Verteidigungssystems zu ändern. Diese Methode reduziert die Zeit, die zum Überprüfen des Cookies benötigt wird, und verbessert die Effizienz des Verteidigungssystems. Dies gilt jedoch nur in dem Szenario, in dem das Verteidigungssystem vom Server getrennt ist.
Im Jahr 2008 haben Jian Xiaochun et al. schlug eine Verbesserung vor, die darin besteht, auf die erneute Übertragung des SYN-Pakets vom Client zu warten. Diese Methode ermöglicht es, die Aspekte der Berechnung zu reduzieren. Es sind jedoch zusätzliche Systemressourcen erforderlich, da eine Hash-Tabelle verwaltet werden muss. Dies erhöht auch die Antwortzeit für eine normale TCP-Verbindung.
Im Jahr 2009 haben Bo Hang et al. schlugen eine Verbesserung vor, die darin besteht, den zur Berechnung von SYN-Cookies verwendeten Algorithmus zu modifizieren . Ihre Methode basiert auf 3 Komponenten: dem Controller, der Angriffserkennung und der Angriffsreaktion. Im Falle von Angriffserkennungen wird der neue Algorithmus verwendet. Dieser Algorithmus definiert die anfängliche 32-Bit-Sequenznummer wie folgt neu: ein einzelnes Bit für den Cookie-Zeitstempel und 31 Bit für den Cookie-Wert anstelle von 8 Bit für den Zeitstempel und 24 Bit für den Cookie-Wert. Der neue Algorithmus verwendet die Blowfish- Verschlüsselungsmethode mit einem 32-Bit-Schlüssel, der schneller als kryptografische Hash-Funktionen ist . Dies reduzierte die Komplexität der Berechnung erheblich und sparte etwa 30% der Berechnungszeit des Cookies.
Flow-Cookies sind ein Mechanismus, bei dem ein Webserver mit einem Vermittler zusammenarbeitet, der als Cookie-Box bezeichnet wird und mit einer Hochgeschwindigkeitsverbindung verbunden ist . Dieser Mechanismus ermöglicht es, die hohe Bandbreite der Cookie-Box für die Paketfilterung zu nutzen . Der gesamte Datenverkehr zum oder vom geschützten Webserver muss über die Cookie-Box geleitet werden . Es stellt sicher, dass alle Pakete, die zwischen ihm und dem Server übertragen werden, zu einem legitimen TCP- Stream mit einem gültigen Absender gehören. Zu diesem Zweck platziert die Cookie-Box ein SYN-Cookie in jedem Paket, das das Netzwerk des Servers verlässt. Der Webserver kann die Cookie-Box auch auffordern, die IP eines Clients mit abnormalem Verhalten zu filtern .
Das M-SYN-Cookie ist ein modifiziertes SYN-Cookie für Umgebungen mit mehreren Standorten, einschließlich der Firewall- Identifikationsnummer . Letzteres dient zum Teilen von Verbindungsstatus zwischen Firewalls über eine bestimmte Auswahl der TCP- Sequenznummer .
Das M-SYN-Cookie verwendet die Firewall-ID anstelle des MSS-Index des SYN-Cookies, um die Informationen des Absenders des Cookies sicher aufzuzeichnen. Die Überprüfung von SYN + ACK-Paketen erfolgt durch eine Hash-Funktion per Schlüssel. Um diese Funktion nutzen zu können, müssen alle Firewalls denselben geheimen Schlüssel verwenden. Verbindungsstatus-Austauschprotokoll mit M-SYN-Cookie:
Mit diesem Protokoll können Firewall 1 und Firewall 2 Verbindungsinformationen gemeinsam nutzen. Zukünftige Pakete, einschließlich des entsprechenden ACK-Pakets, können direkt durch beide Firewalls geleitet werden.
Eine Studie wurde über die Verwendung von SYN-Cookies auf der Ebene von Systemen der Klasse 2 durchgeführt, d. H. Internet of Things (IoT) -Geräte mit begrenzten Ressourcen mit einem Speicher von 50 bis 250 ko . Diese Systeme sind aufgrund des geringen Arbeitsspeichers besonders anfällig für diese Art von Angriffen. Dies liegt daran, dass eine Flut von SYN-Anforderungen mit niedriger Geschwindigkeit oder sogar ein plötzlicher Anstieg des eingehenden Datenverkehrs dieses Gerät stören kann, wenn es als Server fungiert . Diese Studie zeigte, dass SYN-Cookies wirksamer waren als das Recycling alter halboffener Verbindungen, um einem kleinen SYN-Anforderungsflutangriff entgegenzuwirken.
Es gibt verschiedene Alternativen zum SYN-Cookie, um sich vor SYN-Anforderungsflutangriffen zu schützen :
Phil Karn (en) hat als erster ein Internetprotokoll entwickelt , das Cookies zum Schutz vor Denial-of-Service-Angriffen verwendet . Das16. September 1996, DJ Bernstein hatte die Idee der Verwendung von SYN - Cookies , um Schutz gegen Angriffe von SYN - Anfragen überschwemmen , als bis dahin als ein unlösbares Problem. DJ Bernstein und Eric Schenk arbeiteten in den folgenden Wochen an den Implementierungsdetails. Eric Schenk hatte die Idee, der anfänglichen Sequenznummer des Clients etwas hinzuzufügen, um die Anforderungen des TCP- Protokolls zu erfüllen . Schließlich schlug DJ Bernstein vor, dass Cookies zeitabhängig sind, um erstens zu verhindern, dass ein Angreifer gültige Cookies auf einem öffentlichen Computer sammelt und zweitens sie von einem anderen Ort aus wiederverwendet. ImOktober 1996Jeff Weisberg hat eine Implementierung von SYN Cookies für SunOS veröffentlicht . Ein paar Monate später inFebruar 1997Eric Schenk hat auch eine Implementierung von SYN Cookies für Linux veröffentlicht .
: Dokument zum Schreiben des Artikels.