Packet filtering

Il packet filtering è uno dei metodi più comuni per creare un firewall. Questa tecnica permette di controllare l'ingresso/uscita dei pacchetti IP. Analizzando tali pacchetti esso riesce ad ottenere informazioni fino a livello di trasporto (il payload del pacchetto IP contiene il segmento a livello di trasporto, da cui possono essere analizzati gli header per prendere decisioni anche in base alle porte specificate nel livello di trasporto), tuttavia questo risulta essere anche un limite per questo tipo di firewall poiché non è in grado di ottenere maggiori informazioni dal pacchetto IP, per esempio un packet filter non è in grado di interpretare informazioni relativi al livello di applicazione. Un router che implementa la funzione di filtraggio di pacchetti è anche chiamato screening router.
Pasted image 20231008182046.png
Il packet filtering filtra i pacchetti IP sulla base di un insieme di regole che viene definito in corrispondenza di un router o di un altro dispositivo per l'inoltro dei pacchetti.
Si possono implementare delle regole di packet filtering per una combinazione tra: indirizzo host sorgente, protocollo (TCP, UDP, ...), applicazione (porta), indirizzo host di destinazione e tipo di pacchetto (ACK, SYN).
È opportuno impostare le proprie politiche e regole di packet filtering sulla base di due linee guida.

  1. Per prima cosa, bisogna fare in modo che il software di packet filtering blocchi tutto quello che non viene esplicitamente consentito.
  2. Secondariamente, i filtri dei pacchetti devono essere configurati in modo da proteggere il sito (o altro servizio dell'organizzazione) non soltanto nei confronti di un attacco proveniente da un agente esterno, ma anche in modo da bloccare tutti i pacchetti in partenza che potrebbero essere usati da un agente per sferrare un attacco nei confronti di un altro sito. Se tutti i siti adottassero questo approccio, Internet sarebbe senz'altro molto più sicura.
Address filtering
...

Il packet filtering si basa sull'esame dell'header di un pacchetto IP. L'header contiene:

  • l'indirizzo IP sorgente a 32 bit dell'host che ha inviato il pacchetto e ha generato le informazioni contenute in quest'ultimo;
  • l'indirizzo di destinazione a 32 bit dell'host di destinazione previsto, che dovrebbe ricevere il pacchetto e le informazioni in esso contenute;
  • il protocollo, in cui vi è l'identificatore delle informazioni di protocollo portate dal pacchetto IP (TCP, UDP, ICMP, ...).

Il packet filtering si può basare su uno oppure su tutti questi campi. Usando l'indirizzo sorgente o quello di destinazione, è per esempio possibile bloccare tutti i pacchetti provenienti da un indirizzo o un insieme di indirizzi, oppure instradare verso un insieme di indirizzi i pacchetti che si è deciso di lasciar entrare.

Stateful inspection firewall
...

Un tradizionale firewall a filtraggio di pacchetti, come abbiamo detto, prende decisioni sui pacchetti singoli e non tenendo conto di informazioni del livello più alto (livello di applicazione). Per comprendere meglio perché un normale firewall packet filter è limitato dobbiamo chiarire alcuni aspetti. La maggior parte delle applicazioni standard che girano su TCP seguono un architettura client-server. Per esempio SMTP (Simple Mail Transfer Protocol) le email sono inviate da un client ad un server. Il client genera una nuova mail, tipicamente a partire dall'input inviato da un utente. Il server accetta le nuove email ricevute in entrata e li posiziona nell'appropriata cartella mail dell'utente destinatario. SMTP opera impostando una connessione TCP tra il client e il server, in cui il numero di porta del server, che identifica SMTP lato server è 25. Il numero di porta per SMTP lato client è un numero di porta compreso tra 1024 e 65536 ed è generato dal client SMTP.
In generale, quando una applicazione che usa TCP crea una sessione con un host remoto, crea una connessione TCP in cui il numero di porta per l'applicazione server è un numero inferiore a 1024 e il numero di porta TCP per l'applicazione client è un numero compreso tra 1024 e 65536. I numeri di porta inferiori a 1024 sono numeri di porta ben noti (well known) e sono assegnati ad servizi specifici:

  • 25 per SMTP
  • 80 per HTTP
  • ecc.
    I numeri di porta superiori a 1024, sono generati sul momento e hanno significato solo temporaneamente per il mantenimento della connessione TCP.
    Un firewall packet filter deve consentire il traffico in entrata su tutte le porte con numero di porta superiore a 1024, nel caso in cui si verificasse lo stabilimento di una connessione TCP su una di queste. Questo crea una vulnerabilità che possono essere sfruttate da utenti non autorizzati.
    Uno firewall packet filter stateful inspection (ffiltraggio di pacchetti con ispezione dello stato) restringe le regole per il traffico TCP creando una directory delle connessioni TCP in uscita come mostrato nella tabella di seguito:
    Pasted image 20231008185752.png
    Il packet filter consentirà adesso il traffico in entrata a porte con valore numerico alto solo per quei pacchetti che rientrano nel profilo di una delle righe in questa diretory. Un firewall packet filter stateful inspection esamina un pacchetto allo stesso modo di un packet filter, ma in più, registra informazioni riguardo le connessioni TCP. Alcuni firewall stateful inspection tengono traccia dei numeri di sequenza TCP per prevenire attacchi che dipendono dai numeri di sequenza.
    Pasted image 20231008190847.png

Vantaggi e svantaggi
...

Vantaggio
...
  • Le misure che possono essere definite sono completamente trasparenti per gli utenti della rete interna;
  • le regole possiedono dei meccanismi che consentono ad un utente di stilare facilmente delle regole di filtraggio.
Svantaggi
...
  • Non potendo analizzare i pacchetti a livello di applicazione, non possono evitare l'ingresso di pacchetti che contengono comandi malevoli (a livello applicativo);
  • generalmente sono vulnerabili ad attacchi come lo Spoofing IP, un attaccante può far si che il pacchetto passi i controlli del packet filter manipolando per esempio l'IP sorgente del pacchetto (facendo appunto spoofing). Un attaccante potrebbe creare un pacchetto malevolo in cui cambia l'indirizzo IP sorgente: l'attaccante suppone che il packet filter utilizza una politica in cui consente il transito di pacchetti provenienti dalla rete interna, in questo caso è sufficiente che il packet filter rifiuti completamente i pacchetti che hanno un IP sorgente interno, quando provengono da interfacce esterne;