Il firewall è un insieme di componenti software e/o hardware che consentono di stabilire delle regole per filtrare il traffico in ingresso/uscita da e verso una rete privata.
Un application level gateway funge da ponte a livello del traffico applicativo.
Questo firewall è noto anche come application proxy.
Con questo firewall si superano i limiti del packet filter, ovvero possono essere analizzati pacchetti anche a livello applicativo.
In genere vengono configurati per essere processati dal proxy pochi servizi mirati (quelli necessari). I pacchetti contenti richieste per servizi non supportati vengono scartati.
I firewall di tipo packet filter analizzano i pacchetti a livello IP. Un pacchetto a livello IP contiene come payload l'header del segmento a livello di trasporto. Quindi un packet filter può accedere agli header del datagramma e agli header del segmento TCP/UDP stabilendo del regole per il filtraggio di pacchetti basati su indirizzi sorgente/destinazione e porte sorgente/destinazione.
Un packet filter opera a livello di rete, avendo la possibilità di analizzare anche gli header dei segmenti a livello di trasporto.
IP sorgente, IP destinatario, Porta sorgente, Porta di destinazione, Tipo, Consentire/Negare
Il tipo serve per specificare il tipo di pacchetto trasportato dal datagramma: ACK, SYN.
Soluzione per spoofing: un attaccante può suppore che il traffico proveniente da un indirizzo della reta interna venga inoltrato dal firewall, l'attaccante potrebbe dunque creare un datagramma cui l'indirizzo IP è stato falsificato utilizzandone uno della rete interna. In questo caso il packet filter potrebbe negare il transito di pacchetti con IP interni che provengono da interfacce esterne.
Nonostante la contromisura descritta sopra lo spoofing è ancora possibile con il source routing (un funzione a livello di trasporto che consente al mittente di scegliere il percorso che deve seguire il pacchetto), per evitare tale evenienza è consigliato rifiutare i pacchetti con source routing abilitato.
In questa architettura un router separa la rete interna e la rete esterna. Sul router è installato un packet filter e sono impostate delle regole di filtraggio.
In quest'architettura la rete esterna e la rete interna sono separati da un host con due interfacce di rete. L'interfaccia di rete esterna è direttamente collegata al router, mentre quella interna è collegata alla rete interna. In questo host la funzione di instradamento è disattivata in modo che non transitino direttamente pacche tra la rete interna e quella esterna. I servizi presenti sull'host sono utilizzabili da entrambi le reti.
Con questa architettura abbiamo:
Il packet filter fa si che tutti i pacchetti provenienti dall'esterno vengano inoltrati al proxy che in seguito a dei filtraggi inoltra i pacchetti alla rete interna, e dalla rete interna verso l'esterno.
Il proxy risulta essere un unico punto di rottura per penetrare verso la rete interna.
In questa architettura abbiamo un router che separa la rete esterna dalla rete interna. Nello switch del router è installato un packet filter che filtra il traffico, se il traffico è diretto verso la sottorete esposta (DMZ) allora viene inoltrato direttamente. Mentre quando il traffico è diretto alla rete interna viene bloccato, o filtrato in un certo modo.
Con quattro interfacce il proxy può originare tre sottoreti, davanti cui il proxy è posto:
Il filtro in questo caso è un proxy ed è migliore.
Esempio:
un router instrada su un proxy davanti ad una DMZ (tramite uno switch), se il traffico è diretto alla rete interna si deve passare da un secondo proxy.
Dei firewall possono essere configurati in modalità High Availability, ovvero in modo che quando uno dei due non funziona, per non lasciare la rete scoperta, entra in funzione l'altro (modalià fail over).
Esempio: un router collegato ad uno switch a cui sono connessi due proxy (che sono tra di loro connessi). Entrambi poi sono entrambi connessi ad un altro switch verso la rete interna.
Un proxy è posto davanti alla rete privata.
Nella rete privata connessa ad un proxy vi sono i client. Le richieste dei client vengono inoltrate al proxy. I client devono configurare il loro dispositivo per inoltrare i pacchetti al proxy. Il proxy poi gestisce la richiesta per il client.
La rete privata posta davanti ad un reverse proxy sono uno o più server che vogliono che il traffico in entrata venga filtrato. In questo caso per i client che effettuano richieste ai server le richieste avvengono in modo trasparente (il client non deve configurare nulla).
Se il firewall usato ha due interfacce, nella maggior parte dei casi si tratta di un host che funge da proxy, in questo modo si possono avere due livelli di protezioni per la rete interna.
La rete DMZ è esposta a connessioni dirette ad essa vengono automaticamente inoltrate.
Mentre le connessioni dirette alla rete interna vengono inoltrate (automaticamente) al proxy (posto davanti la rete interna).
Il filtro davanti alla rete interna è un proxy d'applicazione quindi è migliore di un packet filter.
Noto anche come PAT, associa un IP locale ad un IP pubblico in modo univoco, utilizzando i numeri di porta.
Tali associazioni sono memorizzate nella NAT table.
Diciamo di avere tre host connessi alla stessa sottorete che condividono l'IP pubblico 98.131.22.101.
L'indirizzo locale di tali host è: 10.0.0.1, 10.0.0.2, 10.0.0.3.
Quando uno di questi vuole mandare una richiesta all'esterno prepara il pacchetto inserendo il proprio IP e scegliendo dei numeri di porta sorgente. Quando invia il pacchetto il router abilitato al PAT, associa il numero di porta scelto dall'host con un altro numero di porta, detto pubblico.
Inoltre vengono associati anche IP locale e IP pubblico a questi numeri di porta. Si viene a formare una tabella del genere:
IP locale | Porta locale | IP pubblico | Porta pubblica |
---|---|---|---|
10.0.0.1 | 3345 | 98.131.22.101 | 5001 |
... | ... | ... | ... |
In tal modo si consente il mascheramento degli IP privati non esponendoli direttamente a internet, rendendo difficile agli attaccanti mirare ad un host specifico per un qualche attacco.
Il PAT è un tipo di NAT.
Il NAT associa un IP privato ad un certo IP pubblico. Se ci sono più IP privati non possono essere associati tutti allo stesso IP pubblico.
Il NAT consentiva l'associazione uno-a-uno tra IP privati e IP pubblici.
Un firewall packet filter puro è normalmente stateless, ovvero non mantiene lo stato delle connessioni stabilite.
In questo contesto scrivere regole può essere più difficile.
Un firewall packet filter stateful mantiene lo stato delle connessioni stabilite in una tabella.