25.3 I firewall

Un firewall (porta taglia-fiamma) è un dispositivo che permette di filtrare il traffico di rete tra due (o più) interfacce, in base a determinate politiche (policy). L’utilizzo di un firewall rende possibile controllare chi accede ai servizi messi a disposizione dal sistema ed a quali altri sistemi si può accedere, offrendo la sicurezza desiderata ed eventualmente tracciando il traffico in un file, per poterlo controllare successivamente.

In commercio esistono apparecchi dedicati a svolgere il compito di firewall, spesso denominati firewall hardware per contraddistinguerli dai software che svolgono tale compito su macchine con sistemi operativi multipurpose, utilizzabili cioè per poterci lavorare in generale, che possono avere, come GNU/Linux, un firewall software. Questo non deve trarre in inganno poiché la politica di firewalling è comunque gestita attraverso un insieme di regole che vengono attuate attraverso un software.

Esistono essenzialmente due tipologie di firewall

Un firewall può essere caratterizzato in base alla possibilità di gestire il controllo sui pacchetti che lo attraversano dipendentemente dallo stato della relativa comunicazione. Si identificano così i seguenti tipi di firewall

I firewall in genere possono implementare funzionalità di NAT (Network Address Translation) e PAT (Port Address Translation), che consentono al firewall di modificare automaticamente l’indirizzo IP o la porta del mittente o destinatario del pacchetto. Queste funzionalità permettono a più sistemi collegati in una rete privata di poter accedere ad Internet attraverso il firewall.


pict
Figura 25.1: Schematizzazione del meccanismo di NAT.

Il firewall infatti provvede a modificare opportunamente gli indirizzi IP del pacchetto. Si supponga che un sistema della rete privata con un interfaccia che ha l’indirizzo IP 192.168.1.15 voglia accedere al sito Internet con indirizzo IP 216.239.37.99 (v. fig. 25.1). Se il firewall fungesse soltanto da router, il pacchetto inviato dall’interfaccia 192.168.1.15 avrebbe appunto 192.168.1.15 come indirizzo IP del mittente e 216.239.37.99 come indirizzo IP di destinazione. Questo funziona fintantoché il pacchetto arriva al server con interfaccia avente indirizzo IP 216.239.37.99. Ma quando questo provvede a rispondere al mittente (192.168.1.15), il pacchetto viene scartato (letteralmente buttato via) dal primo router ben configurato, poiché l’indirizzo IP 192.168.1.15, come illustrato nel cap. 16, si riferisce ad una rete privata e non può essere utilizzato come indirizzo pubblico (per Internet). Quindi, per far comunicare l’interfaccia 192.168.1.15 con il sito 216.239.37.99 il firewall deve essere configurato per funzionare con il meccanismo di NAT: quando il pacchetto con indirizzo IP mittente 192.168.1.15 e destinatario 216.239.37.99 arriva al firewall, questo viene modificato dal firewall stesso che sostituisce l’indirizzo dell’interfaccia del mittente con l’indirizzo IP della sua interfaccia connessa ad Internet (150.145.20.34). Quindi inoltra il pacchetto. Quando l’interfaccia 216.239.37.99 riceve il pacchetto, essa lo elabora e quindi risponde al mittente, cioè all’indirizzo 150.145.20.34 (il firewall), che ricevendo il pacchetto di risposta e ricordandosi che quello si riferisce al pacchetto di richiesta precedentemente inviato dall’interfaccia 192.168.1.15 (questa informazione il firewall se l’aveva precedentemente salvata all’interno della sua tabella di NAT) sostituisce l’indirizzo IP del destinatario del pacchetto con 192.168.1.15 (cioè l’indirizzo IP dell’interfaccia che aveva inviato il primo pacchetto) e quindi inoltra il pacchetto sulla LAN, in maniera tale che l’interfaccia 192.168.1.15 possa ricevere la risposta alla sua richiesta.

In questo modo è possibile far accedere ad Internet un insieme di computer connessi in una rete privata, senza dover assegnare ad ognuna delle loro interfacce un indirizzo IP valido per Internet. È chiaro che questo meccanismo permette a più macchine l’accesso ad Internet, ma questo avviene attraverso un’unica interfaccia e quindi le varie macchine si divideranno la banda di comunicazione a disposizione per tale accesso, cioè se si tratta di un accesso acon un modem a 56 kbit/s e le macchine collegate ad internet sono 3, ognuna di esse avrà un collegamento a circa 18.7 kbit/s (questo è vero se tutte e 3 le macchine stanno inviando o ricevendo dei pacchetti contemporaneamente, altrimenti la banda che ogni macchina può sfruttare è maggiore).

L’utilizzo di NAT implica anche il PAT sulla porta sorgente poiché più macchine comunicano con l’esterno. Si supponga ad esempio che una delle macchine presenti nella rete privata invii un pacchetto verso Internet con indirizzo IP del mittente 192.168.1.43 e porta mittente 5012. Il firewall esegue il NAT sostituendo l’indirizzo IP del mittente con quello della sua porta esterna (es. 194.143.24.15) e quindi tenta di inviare il pacchetto verso il destinatario. Se però un’altra macchina della rete privata avesse già instaurato una comunicazione con lo stesso server remoto dalla stessa porta mittente, il firewall deve cambiare la porta mittente (si ricorda che una connessione è univocamente identificata dalla quaterna <indirizzo_IP_mittente, porta_mittente, indirizzo_IP_destinatario, porta_destinatario>).


  25.3.1 Packet filtering
   25.3.1.1 Esempi
  25.3.2 Screening router e DMZ