Protectie la SYN-flood

          Cei mai multi stiu cat de problematica este protectia impotriva atacurilor de tip SYN, de aceeea upgradand stiva de protocoale TCP/IP se poate micsora impactul acestor atacuri asupra utilizatorilor legitimi. Mai multe metode, mai mult sau mai putin eficiente, sunt folosite de obicei. In aproape fiecare caz buna filtrare de pachete este o solutie viabila. In plus fata de crearea filtrelor de pachete, modificarea stivei TCP/IP a unui sistem de operare  poate fi realizata de catre un administrator.

 

       Ar trebui remarcat faptul ca unele atacuri SYN nu incearca intotdeauna sa deranjeze serverele,  incearca sa consume toata latimea de banda a conexiunii tale la internet.

 

Ce poate face un administrator atunci cand serverele sale sunt supuse unui flood clasic, un SYN atac fara a inunda

latimea de banda? Una dintre cele mai importante masuri este de a construi in sistemele de operare, mecanisme de protectie cum ar fi SYN  cookie-uri sau SynAttackProtect. In plus, in unele cazuri upgradarea parametrilor stivei TCP/IP. Schimbarea valorile implicite ale variabilelor stivei poate fi un alt nivel de protectie pentru siguranta gazdelor.

 

- cresterea numarului de conexiuni pe-jumatate deschise (starea SYN-RECEIVED).

- reducerea perioadei de timp In cazul pastrarii unei conexiuni In starea SYN-RECEIVED. Aceasta metoda se realizeaza prin micsorarea timpului de retransmisie a primului pachet si prin scaderea numarului de retransmisii sau prin dezactivarea completa a retransmisiei de pachete. Acest proces este realizat de un server atunci cand nu primeste un pachet ACK de la un client. Un pachet de la care primeste ACK finalizeaza procesul de strangere de mana In trei cai.

 

     Retineti ca un atacator poate trimite pur si simplu mai multe pachete SYN si apoi


metodele de mai sus nu vor rezolva problema.

 

      Ar trebui sa retinem ca modificarea variabilelor default vor schimba comportamentul stivei TCP/IP. In unele cazuri, valorile pot fi prea stricte. Asa ca, dupa modificare trebuie sa va asigurati ca server-ul poate comunica in mod adecvat cu alte gazde. De exemplu, dezactivarea retransmisiei de pachete in unele medii cu latime de banda mica poate provoca esuarea unei cereri legitime. In acest articol veti gasi setarile necesare variabilelor stivei TCP/IP pentru urmatoarele sisteme de operare: Microsoft Windows 2000, RedHat Linux, Sun Solaris. Aceste variabile sunt similare sau identice In versiunile curente.

 


Windows 2000

      Windows 2000 include o protectie ce Ii permite sa detecteze si sa ajusteze anumiti parametri cand sistemul este tinta unui atac de tip SYN Flood (atac de tip „denial of service”). Cand este activata protectia, coxeniunea raspunde cu mesaje de tip „time out” mult mai rapid In cazul unui atac. Pentru realizarea acestui lucru urmati procedura:

 

a. Dati click pe Start, apoi pe Run si tastati in caseta Run comanda regedit.

 

b. Navigati pana la sectiunea HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\ Services\Tcpip\Parameters

 

c. Aici creati o noua valoare de tip REG_DWORD numita “SynAttackProtect” si setati valoarea acesteia la 0,1 sau 2


in functie de urmatoarele optiuni:

 

0 (implicit) - protectie tipica Impotriva atacurilor de tip SYN

 

            1 - o protectie mai buna Impotriva atacurilor de tip SYN ce utilizeaza niste parametri suplimentari prezentati mai jos.

            2 (recomandat) - cea mai buna protectie Impotriva atacurilor de tip SYN. Aceasta valoare adauga Intarzieri suplimentare catre conexiuni, si cererile TCP au un time out mai rapid cand un atac SYN este In progres.

 

 

     Valoarea “SynAttackProtect” face ca protocolul TCP sa ajusteze retransmisia SYN-ACKs. Cand configurati aceasta valoare, conexiunea raspunde cu time out mult mai rapid In cazul unui atac de tip SYN (atac de tip denial of service).

 

 

Valori optionale avansate:

 

            Pentru control suplimentar puteti crea aceste valori DWORD suplimentare In aceeasi cheie pentru parametrii de mai jos. Ele nu sunt necesare pentru ca “SynAttackProtect” sa fie eficace.

 

            TcpMaxHalfOpen - valoarea implicita este “100”

 

            TcpMaxHalfOpenRetried - valoarea implicita este “80”

 

            TcpMaxPortsExhausted - valoarea implicita este “5”

 

            TcpMaxConnectResponseRetransmissions - valoarea implicita este “3”

 

 

Restartati Windows pentru ca aceste setari sa aiba efect.

 


Sistem de operare: Linux RedHat

 

      RedHat, ca si alte sisteme de operare Linux, a implementat un mecanism SYN cookie-uri care pot fi activat In felul urmator:

 

 # echo 1> / proc/sys/net/ipv4/tcp_syncookies


 

      Retineti ca pentru a face aceasta schimbare permanenta avem nevoie sa cream un fisier de pornire care stabileste aceasta variabila. Trebuie sa facem aceeasi operatie pentru alte variabile UNIX descrise In aceasta lucrare, deoarece valorile pentru aceste variabile vor reveni la valorile implicite la repornirea sistemului.

 

      Protectia SYN cookie-uri este utila In special atunci cand sistemul este sub un atac SYN si sursa adresei IP ale pachet-ului SYN este de asemenea falsificata (un atac de tip spoofing SYN). Acest mecanism permite construirea unui pachet cu SYN si ACK  stabilite si care are un numar special pregatit de secventa initiala (ISN), numit cookie. Valoarea cookie-ului nu este un numar  pseudo-aleator generat de sistem, ci este rezultatul unei functii hash. Acest rezultat hash este generat de informatii cum ar fi: adresa IP a sursei, port sursa, IP destinatie, portul de destinatie plus unele valori secrete. In timpul unui atac SYN sistemul genereaza un raspuns prin trimiterea unui pachet cu un cookie, In loc de respingere a conexiunii, atunci cand „coada” SYN este plina. Cand un server primeste un pachet cu bitul ACK setat (ultima etapa a procesului de strangere de mana cu trei cai), verifica cookie-ul. Atunci cand valoarea sa este corecta, acesta creeaza conexiunea, chiar daca nu exista nici o intrare corespunzatoare In coada de asteptare SYN. Apoi, stim ca este o conexiune legitima si ca adresa IP a sursei nu a fost falsificata.

 

      De asemenea, retineti ca mecanismul SYN cookie functioneaza doar atunci cand optiunea CONFIG_SYNCOOKIES este setata In timpul compilarii kernel-ului.

 

Variabila tcp_max_syn_backlog defineste cate conexiuni pe-jumatate deschise pot fi pastrate de coada de Intarziere In starea SYN-RECEIVED. De exemplu, 256 este un numar total de conexiuni pe-jumatate deschise manipulate In memoria de Linux RedHat 7.3. Variabile stivei TCP / IP pot fi configurate prin comenzi sysctl sau standard Unix. Urmatorul exemplu arata cum sa modificati dimensiunea implicita a acestei “cozi” cu comanda sysctl:

        
       #sysctl -w net.ipv4.tcp_max_syn_backlog="2048"

 

 

Sistem de operare: Sun Solaris

 

      In Sun Solaris, exista doi parametri care controleaza numarul maxim de conexiuni. Primul parametru controleaza numarul total de conexiuni complete. Al doilea parametru tcp_conn_req_max_q0 defineste cate conexiuni pe-jumatate deschise sunt permise, fara renuntarea la cererile primite. In Sun Solaris 8, valoarea implicita este setata la 1024. Folosind comanda ADN putem modifica aceasta valoare.

 

              # ndd -set /dev/tcp tcp_conn_req_max_q0 2048

 

      Este foarte simplu de detectat atacurile SYN. Comanda netstat ne arata cat de multe conexiuni sunt In prezente In stare semi-deschise. Starea pe-jumatate deschisa este descrisa ca SYN_RECEIVED In Windows si ca SYN_RECV In sistemele Unix.

 

              # netstat -n -p TCP | grep SYN_RECV | grep :23 sau

 

              # netstat -s -P tcp | grep tcpHalfOpenDrop In Sun Solaris

 

 

      O metoda simpla pentru limitarea acestor atacuri o reprezinta inserarea in firewall-ul dumneavoastra, daca este iptables a urmatoarelor linii:

 

 

iptables -N syn_flood

 

iptables -A INPUT -p tcp --syn -j syn_flood

 

iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN

 

iptables -A syn_flood -j DROP

 

 

     - limit rate: rata maxima specificata printr-un numar, urmat de ‘/second’, ‘/minute’, ‘/hour’, sau ‘/day’ ; default este 3/hour.

     - limit-burst number: numarul maxim de pachete initiale: acest numar se reia daca limita pachetelor nu este atinsa In limita de timp setata mai sus, default este 5.

 

      Sa presupunem ca aveti nevoie de o limitare a numarului de conexiuni pe portul 22, nu mai mult de 10 conexiuni In 10 minute:

 

iptables -I INPUT -p tcp -s 0/0 -d $SERVER_IP --sport 513:65535 --dport 22 -m state


--state NEW,ESTABLISHED -m recent --set -j ACCEPT



 

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update


--seconds 600 --hitcount 11 -j DROP

 


iptables -A OUTPUT -p tcp -s $SERVER_IP -d 0/0 --sport 22 --dport 513:65535


-m state --state ESTABLISHED -j ACCEPT

 

 SYN FLOOD

 


Figura 1 Configuratia folosita pentru simularea atacului SYN-flood

 


        
Configurarea pentru partea practica, vizualizarea ip-urilor calculatoarelor “Atacator(CentOS 5) -  192.168.0.119”, si cel al victimei(Windows XP) - 93.112.76.218.

 

                 SYN FLOOD
     

 

    Figura 2 Identificarea Ip-ului atacatorului          



 

SYN FLOOD

 

 

Figura 3 Identificarea Ip-ului victimei

 

 

      Se observa pachetele de tip TCP care pleaca de la atacator si fac cereri de conexiuni pe portul 80(http), cu bitul de SYN setat pe 1.




 SYN FLOOD




Figura 4 Pachetele de tip TCP ce parasesc sursa atacatorului pe portul 80

 


      
Se observa pachetele primite de victima, cu cererile respective, iar daca acest atac va persista sigur victima va ramane fara  banda utilizabila, deci fara internet.


 

SYN FLOOD

 

 

Figura 5 Pachetele de tip TCP ce ajung la victima pe portul 80




 

 

SYN FLOOD

 

 

Figura 6 Pachetele de tip TCP ce parasesc sursa atacatorului pe portul 22




SYN FLOOD

 




Figura 7 Pachetele de tip TCP ce ajung la victima pe portul 22  




 Aceste articole vor fi folosite strict în scop educativ.

Protectie la SYN-flood
  • Avem nevoie de ajutorul vostru, am trimis mai multe articole, astept raspuns 1 days ago