Stateful-Inspection Firewalls: come funzionano e le loro debolezze

migliori-firewall-gratuiti-2015Dopo aver spiegato cosa, effettivamente, un firewall sia ed esserci dedicati in specifico al funzionamento del firewall packet filtering e del proxy firewall, oggi osserveremo più da vicino lo stateful firewall.

Se, quindi, un packet filtering, sistema abbastanza primitivo, filtra i pacchetti di dati utilizzando l’ACL (ovvero, la lista di controllo degli accessi), lo stateful firewall tiene sotto controllo dove i pacchetti vanno, ovvero il loro stato di transizione, finché ogni specifica connessione viene chiusa.

Per spiegare il packet filtering avevamo usato l’esempio delle bodyguards che decidono chi far entrare o meno in uno specifico locale; nel caso dello stateful firewall invece abbiamo a che fare con una sorta di vicino di casa impiccione che controlla tutte le macchine che si fermano a casa nostra, le persone, le conversazioni fatte il che risulta alquanto fastidioso ma può, paradossalmente, rivelarsi utile se qualche malintenzionato si avvicina a casa nostra. Allo stesso modo, lo stateful firewall controlla tutte le conversazioni tra i computer connessi utilizzando una state table (tabella di stato) che ne schematizza i risultati. Questa azione, però, implica la presenza di molte variabili. Per esempio, se il nostro sistema (A) vuole comunicare con un altro (B) attraverso una connessione TCP (Transfer Control Protocol), ovvero un protocollo affidabile per trasferire i pacchetti, A invierà a B un pacchetto dove il valore predefinito della SYN flag sarà impostato su 1. Questo valore specifica il volere di A d’aprire una connessione di tipo TCP con B. Quando B risponderà che è pronto a partecipare alla suddetta risponderà restituendo un pacchetto completo di SYN e ACK (acknowledge, riconoscimento) flags con il valore sempre impostato su 1 (semplificando B dice ad A: “Ok, ho riconosciuto il pacchetto SYN che mi hai mandato, sincronizziamoci). Ma questa non è l’unica informazione che nel frattempo A e B si scambiano: prenderanno, infatti, accordi relativi a sequenze numeriche, quanti dati inviare alla volta, quanti errori potenziali di trasmissione potranno essere identificati (valori CRC), etc. Inoltre, vi sono oltre al TCP altri protocolli di cui lo stateful firewall deve occuparsi. Qui sotto vediamo un’immagine tratta dal libro di Shon Harris CISSP del TCP header (intestazione del pacchetto TCP) a cui abbiamo appena accennato e che ci aiuta a comprendere quante informazioni vengono contemporaneamente processate.  mjb-tcp-header-800x564

Mantenere, quindi, lo stato della connessione significa creare una sorta di tabella relativa ai vari valori dell’intestazione del protocollo (protocol header) man mano che i pacchetti si scambiano. Logicamente, tutti i valori non devono essere solo corretti ma devono anche essere processati nella giusta sequenza. Per esempio, il cosiddetto attacco XMAS il quale “accende tutte le flag (bandiere)” impostando tutti i valori dei pacchetti su 1 mira ad un tipo di firewall che non sia in grado di controllare o comprendere cosa stia succedendo e lasci passare indisturbati i dati infetti. Uno stateful firewall, invece, mantenendo sotto controllo e registrando tutti i valori dell’header si renderà conto della “fregatura” e bloccherà o riavvierà il sistema poiché non sarà in grado di processare dei pacchetti TCP che dimostrano d’avere tutti il valore impostato su 1 essendo, questo, contro le regole del protocollo.

Così, il momento in cui una connessione viene stabilita tra due sistemi, il firewall controlla tutti i layers del pacchetto (l’intestazione, il suo carico e la sua articolazione). Tutte le informazioni necessarie relative a tale specifica connessione vengono conservate nella state table (sorgente e destinazione degli indirizzi IP e delle porte, il tipo di protocollo, le header flags, sequenze numeriche, marcatura oraria, etc.). Dopo l’ispezione iniziale dei pacchetti il firewall si limita al controllo della rete e delle porzioni di trasporto dell’intestazione: i valori di ogni header vengono comparati all’interno della state table e quest’ultima viene aggiornata per rendere conto del processo della comunicazione.

Non tutti i protocolli, però, funzionano come il TCP. Ad esempio, nel caso del FTP (protocollo di trasferimento file) inizializza lo scambio di dati in maniera diversa, ovvero aprendo non solo una ma due sessioni per la stessa comunicazione: ciò significa che, sebbene si possano rintracciare le due connessioni normalmente, le regole di connessione risultano differenti. Quindi, in tal caso, per configurare uno stateful firewall è necessario comprendere le particolarità di alcuni specifici protocolli altrimenti questi non sarà in grado di ispezionare e controllare propriamente i dati.

Infine, lo stateful firewall ha un’altra particolarità: può tracciare anche connessioni che utilizzano protocollo come l’UDP (user datagram protocol) e l’ICMP (control internet message protocol). Essendo l’UDP un protocollo senza collegamento non vi è un sistema, come invece accade nel caso del TCP, che avverta il mittente nel caso i pacchetti di dati non possano essere processati abbastanza velocemente: è qui che l’ICMP emerge facendo le veci dei valori nell’header presenti nella normale connessione TCP. Questo, però, significa che lo stateful firewall dovrà essere in grado di tracciare e permettere ai pacchetti ICMP associati alla specifica connessione UDP di passare. Nel caso il firewall fallisca a comprendere tutto ciò il sistema potrebbe essere talmente sopraffatto dalla quantità di dati ricevuta da “crashare”.

Lo stateful firewall non è completamente immune dagli attacchi, ne abbiamo fatto un esempio ad inizio di questo post citando l’attacco XMAS ma vi sono anche parecchi attacchi di tipo DoS (qui la spiegazione di cosa sia) che vengono lanciati contro questi firewall; ma non solo, assistiamo anche ad attacchi il cui scopo è riempire le state tables di informazioni errate così da forzare il sistema a riavviarsi o congelarsi e, questo, significa che tutte i dati delle connessioni recenti verranno perse completamente portandolo, così, a negare il passaggio persino a pacchetti dati del tutto legittimi.

ELENCO DELLE CARATTERISTICHE PIÙ IMPORTANTI DELLO STATEFUL FIREWALL

  • Utilizzo e mantenimento di una state table che tracci ogni comunicazione e le relative sessioni.
  • Alto livello di sicurezza e non presenta una perdita delle prestazioni come, invece, avviene nel caso dei Proxy Firewall.
  • Modulare e trasparente per gli utenti.
  • Fornisce dati per rintracciare protocolli senza collegamento come UDP e ICMP.
  • Archivia ed aggiorna lo stato ed il contesto dei dati entro il pacchetto.
Share the love

Comincia la discussione

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.