A SYN cookie egy technika a SYN árvíztámadások ellen. A technika feltalálója, Daniel Bernstein határozta meg a SYN cookie-t, mint "a kezdeti TCP-szekvencia speciális választása a szerver oldalon" A SYN cookie használata lehetővé teszi a szerver számára, hogy elkerülje az új kapcsolatok megszakítását, amikor a TCP-kapcsolati sor megtelt. A szerver visszaküldi a megfelelő SYN+ACK szekvenciát az ügyfélnek , de nem tárolja az új kapcsolatot a sorban. Ha a szerver ezután ACK választ kap az ügyféltől, akkor vissza tudja állítani a SYN sorozat értékét az ügyféltől kapott értékből.
A TCP-kapcsolat létrehozásához az ügyfél egy TCP-csomagot küld a kiszolgálónak a SYN jelzővel és annak sorszámával. Válaszul a szerver SYN+ACK jelzőkkel ellátott csomagot küld. ügyfél sorszámát és saját sorszámát. A teljes TCP adatfolyamot ezek a számok gyűjtik össze. A TCP specifikáció meghatározza, hogy ezeknek a sorszámoknak a kezdeti értékét maga a kliens és a szerver határozza meg. A SYN cookie-k csak egy sorszám, amelyet a szerver gondosan gyűjt a következő szabályok szerint:
Ezután a SYN cookie kiszámítása a következőképpen történik:
Amikor egy kliens kézfogás-végző csomagot küld ACK jelzővel a kiszolgálónak, elküldi a szerver eredeti sorszámát eggyel növelve. A SYN cookie helyességének ellenőrzéséhez a szerver levon belőle egyet, és elvégzi a következő ellenőrzéseket:
A kapcsolat mostantól a megszokott módon működik.
A SYN cookie használata nem töri meg a TCP -t és más protokollokat. Ennek a technikának azonban két korlátja van [1] :
Míg ezek a korlátozások a TCP protokoll szuboptimális használatához vezetnek, a negatív hatások ritkán érintik az ügyfeleket, mivel a SYN cookie-kat csak a szerver elleni támadásoknál szabad használni. A TCP protokoll egyes funkcióinak figyelmen kívül hagyása a szerver elérhetősége érdekében ésszerű kompromisszum.
A probléma azonban fokozódik, ha a kliens végső ACK-csomagja elveszik, és az alkalmazási réteg protokollja megköveteli, hogy a szerver legyen a további kommunikáció kezdeményezője (pl. SMTP és SSH protokollok). Ebben az esetben a kliens azt feltételezi, hogy a kapcsolat sikeresen létrejött, és vár egy meghívó szalaghirdetésre a szervertől vagy a SYN+ACK csomag újraküldésére. A szerver azonban nem küld ilyen csomagot, mivel elutasítja a munkamenetet. Végül az ügyfél is visszaállítja a munkamenetet, de ez sokáig tarthat.
A Linux kernel 2.6.26 korlátozott támogatást adott néhány időbélyegbe kódolt TCP-beállításhoz.
Az újabb TCP Cookie Transactions (TCPCT) szabványt úgy tervezték, hogy elkerülje ezeket a problémákat, és javítson néhány egyéb szempontot. De ez a TCP kiegészítője, ezért mindkét félnek támogatnia kell.
Az egyszerű tűzfalak , amelyek engedélyezik az összes kimenő forgalmat, és csak bizonyos portokra engedik a bejövő forgalmat, csak a zárt portokra irányuló SYN kéréseket blokkolják. Ha a SYN cookie-k engedélyezve vannak, akkor ügyelni kell arra, hogy a támadó ne tudja megkerülni az ilyen tűzfalakat tetszőleges sorszámú ACK csomagok küldésével, amíg fel nem veszi a megfelelőt. A SYN cookie-kat csak a nyilvánosan elérhető portoknál szabad engedélyezni.