SYN-kaka är en teknik för att motverka SYN-översvämningsattack . Uppfinnaren av tekniken, Daniel Bernstein definierade en SYN-cookie som "ett speciellt val av initial TCP-sekvens på serversidan" Genom att använda SYN-cookien kan servern undvika att tappa nya anslutningar när TCP-anslutningskön är full. Servern skickar rätt SYN+ACK -sekvens tillbaka till klienten , men lagrar inte den nya anslutningen i kön. Om servern sedan tar emot ett ACK-svar från klienten kan den återställa sitt SYN-sekvensvärde från värdet som tas emot från klienten.
För att skapa en TCP-anslutning skickar klienten ett TCP-paket med SYN-flaggan och dess sekvensnummer till servern. Som svar skickar servern ett paket med SYN+ACK-flaggor. kundsekvensnummer och ditt eget sekvensnummer. Hela TCP-strömmen samlas av dessa nummer. TCP-specifikationen anger att startvärdet för dessa sekvensnummer bestäms av klienten och servern själva. SYN-cookies är bara ett sådant sekvensnummer, som noggrant samlas in av servern enligt följande regler:
Sedan beräknas SYN-kakan som:
När en klient skickar ett handskakningsändande paket med en ACK-flagga till servern, skickar den serverns ursprungliga sekvensnummer ökat med ett. För att kontrollera om en SYN-cookie är korrekt, subtraherar servern en från den och utför följande kontroller:
Från och med nu fungerar uppkopplingen som vanligt.
Att använda en SYN-cookie bryter inte mot TCP och andra protokoll. Denna teknik har dock två begränsningar [1] :
Även om dessa begränsningar leder till suboptimal användning av TCP-protokollet, påverkar de negativa effekterna sällan klienter, eftersom SYN-cookies endast ska användas vid attacker mot servern. Att ignorera vissa funktioner i TCP-protokollet till förmån för servertillgänglighet är en rimlig kompromiss.
Problemet ökar dock när det slutliga ACK-paketet från klienten går förlorat och applikationslagerprotokollet kräver att servern är initiator för ytterligare kommunikation (t.ex. SMTP- och SSH-protokoll). I det här fallet antar klienten att anslutningen upprättades framgångsrikt och väntar på en inbjudningsbanner från servern eller en omsändning av SYN+ACK-paketet. Servern kommer dock inte att skicka ett sådant paket, eftersom den kommer att avvisa sessionen. Så småningom kommer klienten också att återställa sessionen, men det kan ta lång tid.
Linuxkärnan 2.6.26 lade till begränsat stöd för vissa TCP-alternativ som är kodade till en tidsstämpel.
Den nyare standarden TCP Cookie Transactions (TCPCT) är utformad för att undvika dessa problem och förbättrar på vissa andra aspekter. Men det är ett tillägg till TCP och måste därför stödjas av båda parter.
Enkla brandväggar som tillåter all utgående trafik och endast tillåter inkommande trafik till vissa portar kommer bara att blockera SYN-förfrågningar till stängda portar. Om SYN-cookies är aktiverade måste du vara uppmärksam på att en angripare inte kan kringgå sådana brandväggar genom att skicka ACK-paket med ett godtyckligt sekvensnummer tills han plockar upp det rätta. SYN-cookies bör endast aktiveras för offentligt tillgängliga portar.