SYN-eväste on tekniikka SYN-tulvahyökkäyksen torjumiseksi . Tekniikan keksijä Daniel Bernstein SYN-evästeen "alkuperäisen TCP-sekvenssin erityiseksi valinnaksi palvelinpuolella" SYN-evästeen avulla palvelin voi välttää uusien yhteyksien katkeamisen, kun TCP-yhteysjono on täynnä. Palvelin lähettää oikean SYN+ACK -sekvenssin takaisin asiakkaalle , mutta ei tallenna uutta yhteyttä jonoon. Jos palvelin saa sitten ACK-vastauksen asiakkaalta, se voi palauttaa SYN-sekvenssiarvonsa asiakkaalta saadusta arvosta.
TCP-yhteyden luomiseksi asiakas lähettää palvelimelle TCP-paketin, jossa on SYN-lippu ja sen järjestysnumero. Vastauksena palvelin lähettää paketin SYN+ACK-lipuilla. asiakkaan järjestysnumero ja oma järjestysnumerosi. Nämä numerot keräävät koko TCP-virran. TCP-spesifikaatio määrittää, että asiakas ja palvelin määrittävät näiden järjestysnumeroiden alkuarvon. SYN-evästeet ovat juuri sellainen järjestysnumero, jonka palvelin kerää huolellisesti seuraavien sääntöjen mukaisesti:
Sitten SYN-eväste lasketaan seuraavasti:
Kun asiakas lähettää palvelimelle kättelyn lopettavan paketin ACK-lipulla, se lähettää palvelimen alkuperäisen järjestysnumeron yhdellä lisättynä. Tarkistaakseen, onko SYN-eväste oikea, palvelin vähentää siitä yhden ja suorittaa seuraavat tarkistukset:
Tästä eteenpäin yhteys toimii normaalisti.
SYN-evästeen käyttö ei riko TCP :tä ja muita protokollia. Tällä tekniikalla on kuitenkin kaksi rajoitusta [1] :
Vaikka nämä rajoitukset johtavat TCP-protokollan epäoptimaaliseen käyttöön, negatiiviset vaikutukset vaikuttavat harvoin asiakkaisiin, koska SYN-evästeitä tulisi käyttää vain hyökkäyksissä palvelinta vastaan. Joidenkin TCP-protokollan ominaisuuksien huomiotta jättäminen palvelimen saatavuuden hyväksi on kohtuullinen kompromissi.
Ongelma kuitenkin kasvaa, kun viimeinen ACK-paketti asiakkaalta katoaa ja sovelluskerroksen protokolla edellyttää palvelimen olevan jatkoviestinnän aloittaja (esim. SMTP- ja SSH-protokollat). Tässä tapauksessa asiakas olettaa, että yhteys on muodostettu onnistuneesti, ja odottaa kutsua palvelimelta tai SYN+ACK-paketin uudelleenlähetystä. Palvelin ei kuitenkaan lähetä tällaista pakettia, koska se hylkää istunnon. Lopulta asiakas myös nollaa istunnon, mutta tämä voi kestää kauan.
Linux-ydin 2.6.26 lisäsi rajoitetun tuen joillekin TCP-vaihtoehdoille, jotka on koodattu aikaleimaan.
Uudempi TCP Cookie Transactions (TCPCT) -standardi on suunniteltu välttämään nämä ongelmat ja parantamaan joitakin muita näkökohtia. Mutta se on TCP:n lisäosa, ja siksi molempien osapuolten on tuettava sitä.
Yksinkertaiset palomuurit , jotka sallivat kaiken lähtevän liikenteen ja sallivat vain saapuvan liikenteen tiettyihin portteihin, estävät vain SYN-pyynnöt suljettuihin portteihin. Jos SYN-evästeet ovat käytössä, sinun on kiinnitettävä huomiota siihen, että hyökkääjä ei voi ohittaa tällaisia palomuureja lähettämällä ACK-paketteja mielivaltaisella järjestysnumerolla, kunnes hän poimii oikean. SYN-evästeet tulisi ottaa käyttöön vain julkisissa porteissa.