Il firewall stateful (o stateful inspection firewall) è la seconda generazione di firewall, introdotta a metà degli anni ‘90. A differenza del packet filter stateless, mantiene una tabella di stato (connection tracking table o state table) che registra le informazioni sulle sessioni TCP/UDP/ICMP attive. Ogni pacchetto viene valutato non solo in base alle sue intestazioni, ma anche in relazione al contesto della connessione a cui appartiene.
La tabella di stato
Per ogni connessione attiva, il firewall stateful registra una riga nella tabella di stato con almeno:
| Campo | Esempio |
|---|---|
| IP sorgente | 192.168.1.10 |
| IP destinazione | 93.184.216.34 |
| Porta sorgente | 54321 |
| Porta destinazione | 443 |
| Protocollo | TCP |
| Stato | ESTABLISHED |
| Timeout | 3600s |
Tracciamento del three-way handshake TCP
Per le connessioni TCP, il firewall traccia il ciclo di vita completo:
- Il client invia
SYN→ il firewall crea una entry con statoSYN_SENT - Il server risponde
SYN-ACK→ lo stato passa aSYN_RECEIVED - Il client invia
ACK→ la connessione èESTABLISHED - Al
FINoRSTla entry viene rimossa dopo un timeout
Un pacchetto con flag ACK che non corrisponde a nessuna entry nella tabella di stato viene scartato — blocca attacchi di port scanning stealth (Xmas scan, FIN scan) e tentativi di session hijacking che il packet filter non riconoscerebbe.
Vantaggi rispetto al packet filter
Il firewall stateful risolve i limiti strutturali del packet filter. Non è necessario aprire range di porte per le risposte: il pacchetto di risposta viene accettato automaticamente perché corrisponde a una connessione uscente già tracciata. Il traffico asimmetrico (pacchetti senza handshake precedente) viene rifiutato. I protocolli con connessioni di controllo e dati separate (FTP, SIP) possono essere gestiti tramite ALG (Application Layer Gateway) che aggiornano dinamicamente la tabella di stato.
Limiti
Il firewall stateful opera ai livelli 3 e 4 del modello OSI: non analizza il contenuto del payload applicativo. Non distingue tra una richiesta HTTP legittima e una SQL injection che transita sulla stessa porta 80. Non ispeziona il traffico cifrato (HTTPS, SMTPS). Per queste capacità è necessario il firewall applicativo o il NGFW. La tabella di stato è anche un vettore di attacco: un DDoS SYN flood satura la tabella esaurendo la memoria del firewall (mitigato con SYN cookies).