Tehnologia SPI (Stateful Packet Inspection) vă permite să vă protejați suplimentar de atacuri prin verificarea corectitudinii traficului care trece (funcționează la nivelurile de rețea, sesiune și aplicație ale modelului OSI ).
Cele mai multe routere de astăzi au firewall-uri SPI . Când se creează orice sesiune TCP / IP , NAT deschide un port pentru aceasta. După încheierea sesiunii, portul rămâne deschis pentru încă câteva minute. Teoretic, dacă în acest moment se face un atac asupra routerului prin scanarea porturilor deschise, atunci devine posibilă pătrunderea în rețeaua internă . Sau un atacator ar putea încerca să trimită pachete către acest port deschis în timpul sesiunii. Când funcția SPI este activată, informațiile despre starea curentă a sesiunii sunt stocate și toate pachetele primite sunt analizatepentru a verifica corectitudinea acestora. Dacă pachetul primit este incorect (de exemplu, adresa expeditorului nu este egală cu adresa la care a fost trimisă cererea sau numărul pachetului nu se potrivește cu cel așteptat), pachetul este blocat și apare o intrare despre un astfel de eveniment în jurnal.
Cele mai puternice procesoare efectuează validarea în momentul creării conexiunii. Intrările sunt create numai pentru conexiunile TCP sau UDP care corespund politicii de securitate specificate. După aceea, toate pachetele (pentru acea sesiune) sunt procesate mai rapid, deoarece devine mai ușor să se determine dacă aparține unei sesiuni existente, preselectate. Pachetele care sunt asociate cu aceste sesiuni pot trece prin firewall .
Un exemplu clasic de rețea fără firewall este FTP ( File Transfer Protocol ). Prin proiectare, astfel de protocoale trebuie să poată deschide conexiuni la un port arbitrar de nivel înalt pentru a funcționa corect. Deoarece firewall-ul nu poate ști că un pachet destinat unei rețele securizate face parte dintr-o sesiune FTP creată, nu va lăsa pachetul să treacă. Firewall-urile rezolvă această problemă prin crearea unui tabel de conexiuni deschise.
Primele încercări de producție de firewall au funcționat la nivelul aplicației, care este cel mai de sus al modelului OSI cu șapte straturi . Această metodă necesită o cantitate foarte mare de putere de calcul și este rar utilizată în tehnologia modernă.
Firewall-ul ține evidența stării conexiunilor de rețea (cum ar fi TCP sau UDP ) și este capabil să păstreze atributele fiecărei conexiuni în memorie. Aceste atribute sunt cunoscute în mod colectiv ca starea conexiunii și pot include detalii precum adresele IP ale porturilor implicate în conexiuni și numerele de secvență ale pachetelor care trec prin conexiune. Inspecția cu stare monitorizează pachetele de intrare și de ieșire în timp, precum și starea conexiunii și stochează datele în tabele dinamice.
Cea mai consumatoare de resurse pentru procesor este verificarea în timpul stabilirii conexiunii. Intrările sunt create numai pentru acele conexiuni TCP sau UDP care vor satisface politica de securitate specificată . După aceea, toate pachetele (pentru acea sesiune) sunt procesate mai rapid, deoarece devine din ce în ce mai ușor să se determine dacă aparține unei sesiuni existente, preselectate. Pachetele deja asociate cu aceste sesiuni pot trece prin firewall. Dacă sesiunea nu corespunde cu niciunul dintre criteriile politicii de securitate, atunci aceasta va fi refuzată.
Firewall-ul depinde de un schimb cu trei căi (descris uneori ca „ SYN, SYN-ACK, ACK ”) atunci când este utilizat protocolul TCP; când se folosește protocolul UDP, firewall-ul nu depinde de nimic. Când un client creează o nouă conexiune, trimite un pachet cu bitul SYN setat în antetul pachetului. Toate pachetele cu bitul SYN setat sunt tratate ca noi conexiuni de către firewall. Dacă serviciul solicitat de client este disponibil pe server, atunci serverul va răspunde cu un pachet care are setați atât biții SYN, cât și biții ACK. Clientul răspunde apoi cu un pachet cu doar bitul ACK setat, iar conexiunea va fi considerată stabilită. În acest caz, firewall-ul va permite toate pachetele de ieșire de la client dacă fac parte din conexiunea creată, asigurându-se că hackerii nu pot crea o conexiune nedorită de la computerul protejat.
Dacă traficul nu a trecut prin această conexiune pentru o anumită perioadă, atunci pentru a preveni debordarea tabelului de stare, aceste conexiuni învechite sunt eliminate din tabel. Prin urmare, multe aplicații trimit periodic mesaje KeepAlive pentru a opri firewall-ul de la terminarea conexiunii în timp ce utilizatorul este inactiv, deși unele firewall-uri pot fi instruite să trimită aceste mesaje. Multe firewall -uri pot monitoriza starea fluxurilor de protocol fără a stabili o conexiune. Sesiunile fără conexiune se pot încheia numai dacă utilizatorul este inactiv.
Prin urmărirea stării conexiunii, firewall-ul oferă o eficiență suplimentară în ceea ce privește inspecția pachetelor. Acest lucru se datorează faptului că conexiunile de firewall existente trebuie doar să verifice starea tabelului, în loc să verifice pachetul cu întregul set de reguli de firewall, care poate fi extins.
Filtrarea pachetelor în sine nu este considerată a oferi o protecție suficientă . Blocarea eficientă a amenințărilor necesită filtrarea aplicațiilor, care poate fi văzută ca o extensie a controlului conținutului pachetelor. Stateful Packet Inspection poate determina ce tip de protocol este trimis pe fiecare port. De exemplu, la nivel de aplicație, un filtru este capabil să distingă între traficul HTTP utilizat pentru a accesa o pagină web și traficul HTTP utilizat pentru partajarea fișierelor , în timp ce un firewall care efectuează numai filtrarea pachetelor va lua în considerare tot traficul HTTP în egală măsură.
Există riscul ca vulnerabilitățile din decodoarele individuale de protocol să permită unui atacator să preia controlul asupra firewall -ului . Această preocupare evidențiază necesitatea actualizării software-ului firewall .
Unele firewall-uri cresc, de asemenea, șansa ca gazdele individuale să fie falsificate. Această posibilitate poate fi eliminată complet prin auditarea software - ului gazdă . Unele firewall-uri pot fi înfrânte pur și simplu prin navigarea pe web (sau cu JavaScript activat sau făcând clic pe un buton de pe un site web).