În Cookie - urile SYN ( syncookies ) sunt valori particulare ale secvențelor inițiale de numere generate de un server de (ISN: Initial Sequence Number) la o solicitare de conectare TCP . Tehnica implementată face posibilă în special apărarea împotriva atacurilor prin inundarea cererilor SYN și incidental prin falsificarea IP . Cu toate acestea, are mai multe dezavantaje, cum ar fi falsificarea și pierderea informațiilor din pachetul SYN. Au fost propuse mai multe îmbunătățiri pentru a depăși aceste dezavantaje. Au fost dezvoltate și extensii, în special în contextul multi-homing .
Un cookie SYN este o alegere specială a numărului de secvență inițială (ISN) efectuată de un server atunci când solicită o conexiune TCP . Permite serverului să salveze starea conexiunilor semi-deschise în numărul de ordine inițial returnat clientului atunci când este inițializată conexiunea. Acest mecanism face posibilă protecția împotriva unui atac prin inundarea cererilor SYN care caută, dintr-un pachet SYN falsificat cu adrese sursă aleatorii , să aloce întreaga memorie a serverului, astfel încât acesta să nu poată răspunde clienților legitimi. Această protecție devine activă numai atunci când există prea multe conexiuni pe jumătate deschise. Cu toate acestea, generarea și verificarea cookie-ului SYN consumă o mulțime de resurse CPU , ceea ce face ca această metodă să fie eficientă doar în cazul unui mic atac de inundație SYN.
Un cookie SYN este structurat după cum urmează:
Această alegere a numărului de secvență a fost motivată de faptul că protocolul TCP necesită ca numerele de secvență să crească încet. În acest caz, numărul secvenței inițiale a serverului crește ușor mai repede decât numărul secvenței inițiale al clientului.
CodificareMecanismul exact pentru codificarea stării în numărul de secvență SYN + ACK poate depinde de implementare. Pe Linux , cookie-urile SYN sunt codificate după cum urmează:
în cazul în care reprezintă numărul inițial de secvență din pachetul SYN ales de către client, reprezintă timpul contorul de 5 biți în creștere la fiecare 64 de secunde, reprezintă o MSS valoare codificată între și , și reprezintă chei secrete pe care doar serverul știe, reprezintă o funcție hash criptografică cum ar fi MD5 sau SHA-1 , , , și , respectiv , reprezintă adresa sursă, de transport maritim sursa, adresa de destinație și portul de destinație a pachetului SYN. 07
Fluxul unei conexiuni TCP folosind SYN Cookie este similar cu fluxul unei conexiuni TCP tipice. Se realizează utilizând o negociere în 3 faze .
Serverul verifică apoi validitatea numărului de confirmare al pachetului ACK. Dacă este valid, serverul alocă memorie pentru conexiune și își schimbă starea în modul ESTABLISHED. În caz contrar, pachetul ACK este respins.
Verificare cookie SYNMecanismul de verificare a numărului de secvență SYN + ACK depinde de codificarea acestuia. Pe Linux , cookie-urile SYN sunt verificate după cum urmează:
unde și respectiv reprezintă numărul de confirmare și numărul de secvență al pachetului ACK, reprezintă contorul de timp pe 5 biți care crește la fiecare 64 de secunde și reprezintă chei secrete pe care doar serverul le cunoaște, reprezintă o funcție hash criptografică precum MD5 sau SHA-1 , , , și respectiv , reprezintă adresa sursă, de transport maritim sursa, adresa de destinație și portul de destinație a pachetului ACK.
Dacă este între și , pachetul ACK este considerat legitim. Serverul creează apoi o conexiune cu MSS corespunzător . În cazul în care un pachet este modificat, tinde să fie foarte diferit de o valoare între și . 0707
S-a demonstrat că cookie-urile SYN depind doar de pachetul ACK final. Într-adevăr, deoarece serverul nu salvează starea conexiunii, nu poate ști dacă pachetul SYN + ACK a fost pierdut și, prin urmare, nu îl poate retransmite. Aceasta constituie o vulnerabilitate de securitate: un atacator poate încerca să inunde serverul de pachete SYN, astfel încât să decidă să folosească SYN Cookie. Apoi poate inunda serverul cu un pachet ACK falsificat, adică un pachet ACK care conține numere de ordine aleatorii, în speranța că unul dintre ele este un cookie SYN considerat de server ca fiind valid.
De asemenea, s-a arătat că nu este necesar să ghiciți cei 32 de biți ai numărului secvenței inițiale și că ghicirea ultimilor 24 de biți este suficientă. Prin urmare, un atacator poate spera să ghicească o valoare corectă a SYN Cookie cu o probabilitate de . Acest lucru se datorează faptului că, deoarece pachetele sale sunt falsificate cu adrese IP aleatorii, nu poate ști dacă o încercare de conectare a avut succes. Dacă atacatorul dorește să falsifice o conexiune pe minut, trebuie să trimită o medie de pachete ACK, care corespunde unei rate de 85 Mb / s. Acest tip de atac, spre deosebire de un atac de inundație de cerere SYN , nu este destinat să consume memoria serverului. Mai degrabă, încearcă să-și consume CPU, făcându-l să valideze toate cookie-urile SYN care, în cea mai mare parte, sunt invalide, deoarece sunt generate aleatoriu. Pe lângă consumarea procesorului serverului, acest atac îi penalizează și lățimea de bandă .
Un dezavantaj al utilizării cookie-urilor SYN este că reduce performanța serverului . Într-adevăr, nu ia în considerare parametrii conținuți în câmpul „opțiuni” atunci când clientul își trimite segmentul SYN. Acești parametri, cum ar fi dimensiunea unei ferestre de recepție, confirmarea selectivă, timpul dus-întors (RTT), Protect Against Wrapped Sequences (PAWS) sau MSS permit comunicații mai eficiente. Cu toate acestea, această pierdere nu este permanentă, deoarece cookie-urile SYN sunt activate numai atunci când serverul suferă un atac, adică atunci când toate resursele serverului sunt ocupate de conexiuni semi-deschise. În restul timpului, cookie-urile SYN sunt dezactivate.
Celelalte dezavantaje ale utilizării cookie-urilor SYN sunt:
Pe Windows este posibil să activați o metodă similară cu cea apelată SYN Cookie SynAttackProtect. Pentru aceasta, atribuiți valoarea recomandată 2cheii de registry SynAttackProtectaflate în HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters. De asemenea , este posibil să se aleagă din care pragul de un atac prin inundare a cererilor SYN vor fi detectate prin modificarea cheile de registry TcpMaxHalfOpen, TcpMaxHalfOpenRetriedși TcpMaxPortsExhausted.
Pe Linux , este posibil să se verifice dacă cookie-urile SYN sunt activate în prezent la nivelul nucleului , fie utilizând comanda, sysctl -n net.ipv4.tcp_syncookies fie utilizând comanda cat /proc/sys/net/ipv4/tcp_syncookies. Dacă valoarea returnată de una dintre aceste două comenzi este egală cu 1, cookie-urile SYN sunt deja activate. În caz contrar, trebuie să editați fișierul /etc/sysctl.conf, să transmiteți valoarea net.ipv4.tcp_syncookiesîn 1loc 0și să reîncărcați configurația folosind comanda sysctl -psau să reporniți serverul.
În 2006, KhakAbi a propus o îmbunătățire pentru stocarea informațiilor despre pachetul SYN, cum ar fi opțiunile TCP , dimensiunea ferestrei și MSS într-un tabel hash . Deoarece această metodă salvează starea conexiunii, poate utiliza aceste informații pentru a oferi o conexiune optimă. De asemenea, implică faptul că cookie-urile SYN pot fi utilizate chiar și atunci când serverul nu se confruntă cu un atac de inundație de cerere SYN . De asemenea, nu mai este necesar ca serverul să aibă un dispozitiv de detectare.
În 2007, au fost propuse mai multe îmbunătățiri. Han Jianying și colab. a propus o îmbunătățire constând în stocarea temporară a informațiilor de bază ale pachetului SYN pentru a identifica legalitatea acestuia. Această îmbunătățire are ca scop combaterea inundațiilor prin solicitări ACK. Deși ajută la reducerea ratei de ocupare a procesorului , necesită un consum suplimentar de spațiu de stocare. Peng Di și colab. au propus, la rândul lor, o îmbunătățire constând în modificarea procesului de răspuns al protocolului TCP pentru pachetul SYN la nivelul sistemului de apărare. Această metodă reduce timpul necesar verificării cookie-ului și îmbunătățește eficiența sistemului de apărare. Cu toate acestea, se aplică numai în scenariul în care sistemul de apărare este separat de server.
În 2008, Jian Xiaochun și colab. a propus o îmbunătățire constând în așteptarea retransmisiei pachetului SYN de la client. Această metodă face posibilă reducerea aspectelor de calcul. Cu toate acestea, necesită resurse de sistem suplimentare, deoarece implică menținerea unui tabel hash. De asemenea, crește timpul de răspuns pentru o conexiune TCP normală.
În 2009, Bo Hang și colab. a propus o îmbunătățire constând în modificarea algoritmului utilizat pentru calcularea cookie-urilor SYN. Metoda lor se bazează pe 3 componente: controlerul, detectarea atacului și răspunsul la atac. Noul algoritm este utilizat în cazul detectărilor de atac. Acest algoritm redefinește numărul secvenței inițiale de 32 de biți după cum urmează: un singur bit pentru marca de timp a cookie-ului și 31 de biți pentru valoarea cookie-ului în loc de 8 biți pentru marca de timp și 24 de biți pentru valoarea cookie-ului. Noul algoritm folosește metoda de criptare Blowfish cu o cheie pe 32 de biți, care este mai rapidă decât funcțiile hash criptografice . Acest lucru a redus foarte mult complexitatea calculului cu o economie de aproximativ 30% la timpul de calcul al cookie-ului.
Cookie-urile de flux sunt un mecanism în care un server web cooperează cu un intermediar, numit cutie cookie , conectat la o legătură de mare viteză . Acest mecanism face posibilă exploatarea lățimii de bandă ridicate a cutiei cookie pentru filtrarea pachetelor . Tot traficul către sau de la serverul web protejat trebuie să treacă prin caseta cookie . Se asigură că toate pachetele care trec între acesta și server aparțin unui flux TCP legitim cu un expeditor valid. Pentru a face acest lucru, caseta cookie va plasa un cookie SYN în fiecare pachet care părăsește rețeaua serverului. Serverul web poate cere, de asemenea, casetei cookie să filtreze adresa IP a unui client cu comportament anormal.
Cookie-ul M-SYN este un cookie SYN modificat pentru medii multi-homed , inclusiv numărul de identificare firewall . Acesta din urmă este conceput pentru a partaja stările de conexiune între firewall-uri printr-o anumită alegere a numărului de secvență TCP .
Cookie-ul M-SYN folosește ID-ul firewallului în locul indexului MSS al cookie-ului SYN pentru a înregistra în siguranță informațiile expeditorului cookie-ului. Verificarea pachetelor SYN + ACK se face printr-o funcție hash prin tastă. Pentru a utiliza această caracteristică, toate firewall-urile trebuie să partajeze aceeași cheie secretă. Protocol de schimb al stării conexiunii cu cookie-ul M-SYN:
Acest protocol permite firewall-ului 1 și firewall-ului 2 să partajeze informații despre conexiune. Viitoarele pachete, inclusiv pachetul ACK corespunzător, pot trece direct prin ambele firewall-uri.
A fost efectuat un studiu privind utilizarea SYN Cookie la nivelul sistemelor de clasa 2, adică dispozitive Internet of Things (IoT) cu resurse limitate, cu o memorie de 50 până la 250 ko . Aceste sisteme sunt deosebit de vulnerabile la acest tip de atac din cauza cantității reduse de memorie pe care o au. Acest lucru se datorează faptului că un flux de solicitări SYN de viteză mică sau chiar o creștere bruscă a traficului de intrare poate perturba acest dispozitiv dacă acționează ca un server . Acest studiu a arătat că cookie-urile SYN au fost mai eficiente decât reciclarea conexiunilor semi-deschise vechi în contracararea unui mic atac de inundație de cerere SYN.
Există mai multe alternative la cookie-ul SYN pentru a vă proteja împotriva atacurilor de inundații solicitate de SYN :
Phil Karn (ro) este primul care a proiectat un protocol de internet care utilizează cookie-uri pentru a proteja împotriva atacurilor de refuz de serviciu . 16 septembrie 1996, DJ Bernstein a avut ideea de a folosi cookie-uri SYN pentru a se proteja împotriva atacurilor prin inundarea cererilor SYN , considerate până atunci ca o problemă insolubilă. DJ Bernstein și Eric Schenk au lucrat la detaliile implementării în următoarele săptămâni. Eric Schenk a venit cu ideea de a adăuga ceva la numărul de ordine inițial al clientului pentru a se conforma cerințelor protocolului TCP . În cele din urmă, DJ Bernstein a propus ca cookie-urile să fie dependente de timp pentru a preveni, mai întâi, un atacator să colecteze cookie-uri valide pe un computer public și, în al doilea rând, să le reutilizeze dintr-o altă locație. ÎnOctombrie 1996, Jeff Weisberg a lansat o implementare a SYN Cookies pentru SunOS . Câteva luni mai târziu, înFebruarie 1997, Eric Schenk a publicat, de asemenea, o implementare a SYN Cookies pentru Linux .
: Document utilizat pentru scrierea articolului.