SYN cookie je technika proti SYN flood útoku. Vynálezce této techniky Daniel Bernstein SYN cookie jako „zvláštní výběr počáteční sekvence TCP na straně serveru“ Použití souboru cookie SYN umožňuje serveru zabránit přerušení nových připojení, když je fronta připojení TCP plná. Server odešle správnou sekvenci SYN+ACK zpět klientovi , ale neuloží nové připojení do fronty. Pokud server poté obdrží od klienta odpověď ACK, může obnovit svou hodnotu sekvence SYN z hodnoty přijaté od klienta.
Pro vytvoření TCP spojení odešle klient na server TCP paket s příznakem SYN a jeho pořadovým číslem. Jako odpověď server odešle paket s příznaky SYN+ACK. pořadové číslo zákazníka a vaše vlastní pořadové číslo. Celý tok TCP je shromažďován těmito čísly. Specifikace TCP určuje, že počáteční hodnotu těchto pořadových čísel určuje samotný klient a server. SYN cookies jsou právě takové pořadové číslo, které server pečlivě shromažďuje podle následujících pravidel:
Pak se SYN cookie vypočítá jako:
Když klient odešle na server paket ukončující handshake s příznakem ACK, odešle původní pořadové číslo serveru zvýšené o jedničku. Chcete-li zkontrolovat, zda je soubor cookie SYN správný, server od něj jeden odečte a provede následující kontroly:
Od této chvíle připojení funguje jako obvykle.
Použití SYN cookie nenaruší TCP a další protokoly. Tato technika má však dvě omezení [1] :
I když tato omezení vedou k neoptimálnímu použití protokolu TCP, negativní efekty se klientům dotknou jen zřídka, protože soubory cookie SYN by se měly používat pouze při útocích proti serveru. Ignorování některých funkcí protokolu TCP ve prospěch dostupnosti serveru je rozumným kompromisem.
Problém však narůstá, když se ztratí finální ACK paket od klienta a protokol aplikační vrstvy vyžaduje, aby iniciátorem další komunikace byl server (např. protokoly SMTP a SSH). V tomto případě klient předpokládá, že připojení bylo úspěšně navázáno a čeká na pozvánku ze serveru nebo na opakovaný přenos paketu SYN+ACK. Server však takový paket neodešle, protože relaci odmítne. Klient nakonec také resetuje relaci, ale to může trvat dlouho.
Linuxové jádro 2.6.26 přidalo omezenou podporu pro některé možnosti TCP, které jsou zakódovány do časového razítka.
Novější standard TCP Cookie Transactions (TCPCT) je navržen tak, aby se těmto problémům vyhnul a vylepšuje některé další aspekty. Ale je to doplněk k TCP, a proto musí být podporován oběma stranami.
Jednoduché brány firewall , které umožňují veškerý odchozí provoz a povolují pouze příchozí provoz na určité porty, budou blokovat pouze požadavky SYN na uzavřené porty. Pokud jsou povoleny soubory cookie SYN, musíte dávat pozor, aby útočník nemohl obejít takové firewally zasláním ACK paketů s libovolným pořadovým číslem, dokud nevyzvedne ten správný. SYN cookies by měly být povoleny pouze pro veřejně přístupné porty.