INTRODUZIONE

Oggi, Internet si è stabilmente insediata come la tecnologia chiave per la comunicazione ed il reperimento di informazioni. Sin dagli inizi, le sue dimensioni si sono moltiplicate e dal 1995 al 2002, la crescita dei domini nel mondo è stata almeno esponenziale.

I sistemi nella rete globale, comunicano tramite la famiglia degli Internet Protocol (IP) , in cui sono inclusi TCP, UDP o ICMP. Gli indirizzi IP rappresentano le basi di questa comunicazione, identificando in maniera univoca tutte le unità disponibili all'interno della rete. 

Internet stessa, è in realtà un'insieme di reti di computer, sparse per il mondo e variabili in topologia, dimensione e velocità. Connettere un singolo computer o una rete privata ad Internet, può esporre i nostri dati confidenziali a potenziali attacchi da ogni parte del mondo. Quindi, dove due o più reti si uniscono, oltre ai normali compiti di gestione della comunicazione, può essere di vitale importanza garantire la sicurezza e la confidenzialità di ognuna della parti connesse. Un firewall è un dispositivo (nel caso in esame, un host), posizionato tra la nostra rete interna ed Internet (fig.1) che non ammette comunicazione diretta tra le due reti e rende sicura la rete interna dagli attacchi esterni.

  fig.1

Ad un firewall sono solitamente connesse tre tipi di reti:

La fig.2, riporta un esempio di configurazione:

  fig.2

I compiti di un firewall per una configurazione come quella di fig.2 sono:

Ci sono diversi componenti di rete che garantiscono queste funzionalità e che vengono accomunati sotto il nome FIREWALL. Di seguito, riportiamo una breve descrizione di alcuni di essi.

 

Network Layer Firewalls: Packet filter

I Packet Filter (PF)sono dei dispositivi che lavorano al livello di rete del modello OSI o al livello IP del modello TCP/IP.

  fig.3

Vengono solitamente posti tra due o più segmenti di rete, classificati come interni, se appartenenti alla rete interna, o esterni, se collegano ad Internet. I PF analizzano i pacchetti IP e decidono se bloccarli o ammetterli al passaggio sulla base di alcune variabili, quali:

Il filtro può essere applicato solo per i pacchetti in entrata, solo per quelli in uscita o per tutti i pacchetti. L'analisi dei pacchetti si basa su un set di regole per ogni porta del PF, e sul seguente algoritmo:

Supponiamo di posizionare un PF a protezione della nostra rete di classe C con indirizzo IP 199.245.180.0 e di configurarlo affinché ammetta il traffico tra la rete interna ed il servizio SMTP (porta 25) di un un qualsiasi host esterno. Siccome tale servizio utilizza il protocollo TCP e quindi necessita di pacchetti ACK in risposta,  avremo la necessità di filtrare i pacchetti in entrambe le direzioni

# Regola Azione Sorgente Porta Sorg. Destinazione Porta Dest. Flag Descrizione
1 allow 199.245.180.0 * * 25 . Inoltra Pacchetti da
199.245.180.0
2 allow * 25 199.245.180.0 * ACK Inoltra gli ACK di ritorno

 

Come si può notare, per ogni regola vengono specificati indirizzi e porte sia per la destinazione che per la sorgente, oltre ai flag che possono essere contenuti nel pacchetto.

La prima regola ha valori per l'host sorgente (199.245.180.0) e per la porta di destinazione (25), tutte le altre colonne contengono l'asterisco, cioè tutti i valori sono ammessi.
Questo può essere tradotto nella seguente maniera:
Permetti la connessione dalla rete 199.245.180.0, originata da qualsiasi porta, alla porta 25 di qualunque host di destinazione.

La seconda regola ha valori per la porta sorgente (25), per l'host destinazione (199.245.180.0) e per il TCP flag che deve contenere l'ACK settato ad 1, tutte le altre colonne contengono l'asterisco.
Questo può essere tradotto nella seguente maniera:
Permetti la connessione da qualsiasi rete originata alla porta 25, con il TCP ACK flag settato, a qualsiasi porta di qualsiasi host della rete 199.245.180.0.

 

I PF sono dei dispositivi che agiscono in maniera trasparente e che non abbassano sensibilmente le prestazioni della rete; d'altra parte, operando al livello di rete, possono essere elusi con diverse tecniche.

Esempio IP Spoofing: La rete135.12.0.0 è connessa ad Internet attraverso un PF. Un host esterno invia pacchetti alla rete cambiando il proprio indirizzo IP con l'indirizzo 135.12.10.201, che appartiene ad un host interno. Il pacchetto è ricevuto dal PF sulla porta esterna. Se il PF opera il filtro anche sui pacchetti in ingresso, riesce a capire l'inganno, poiché i pacchetti con quell'indirizzo sorgente non possono arrivare dalla porta esterna. In caso contrario, il pacchetto viene inviato alla rete interna.

Implementazioni più complesse ed avanzate del processo di filtro dei pacchetti, includono l'interpretazione del carico utile e l'analisi dello stato di ogni connessione. Questo processo viene chiamato stateful inspection.

Il PF registra lo stato di ogni singola connessione e lascia passare solo i pacchetti che rispondono ai criteri della connessione corrente. Per questo, si rivela particolarmente utile per stabilire connessioni tra una rete protetta ed una non protetta:

Se un sistema in una rete protetta stabilisce una connessione, lo Stateful Inspection Packet Filter lascia passare il pacchetto di risposta di un host esterno, all'interno della rete protetta. Se la connessione viene chiusa, nessun sistema della rete non protetta, potrà più inviare pacchetti all'interno della rete protetta, a meno che ciò non venga esplicitamente ammesso.

Application Layer Gateways : Proxies

I Proxy lavorano al livello Applicazione del modello OSI. Piuttosto che contare su un generico strumento di filtro per amministrare il flusso dei servizi Internet attraverso il firewall, viene installato un programma mirato (un servizio proxy), per ogni applicazione desiderata.

  fig.4

Se l'amministratore di rete non installa il programma proxy per un servizio particolare, tale servizio non potrà essere utilizzato. Se il proxy viene implementato per uno specifico servizio, un host (in un applicazione Client-Server) che si vuol connettere a tale servizio si trova a colloquiare con l'Application-level Gateway che effettua un operazione di server nei confronti delle richieste del client e contemporaneamente opera come un client inoltrando le richieste al server vero e proprio.

Gli Application level Gateway garantiscono un maggiore livello di sicurezza rispetto ai Packet Filter; d'altra parte, non operano in maniera trasparente per gli utenti, e abbassano sensibilmente le prestazioni della rete.

I proxy più conosciuti sono, p.e.:

Installare un Application level Gateway è senz'altro molto vantaggioso. Esso fornisce all'amministratore di rete il controllo completo su ogni servizio, poiché il proxy limita il set di comandi e determina quali host interni possono essere raggiunti dal servizio. Inoltre, l'amministratore di rete ha un controllo completo su quali servizi vengono permessi, poiché l’assenza di un proxy per un particolare servizio significa che il servizio è completamente bloccato. Gli Application level Gateway hanno la facoltà di supportare un’autenticazione rigida dell'utente e provvedono alla registrazione particolareggiata delle informazioni. Infine, le regole di filtro sono molto più facili da configurare rispetto a quelle di un Packet Filter.

Il limite più grande di un Application level Gateway è che esso richiede o che gli utenti cambino le loro abitudini o che venga installato software specifico su ciascun sistema che accede ai servizi proxy. Inoltre, le prestazioni della rete vengono sensibilmente ridimensionate.


Meccanismi di Protezione: NAT e VPN

La sicurezza della rete interna può essere aumentata tramite l'utilizzo di indirizzi IP privati, in combinazione con il NAT (Network Address Translation).

Il NAT è una tecnica di traduzione degli indirizzi IP che permette di "nascondere" un'intera rete locale, alle spalle di un unico indirizzo IP ufficiale (solitamente quello del firewall). Ciò significa che l'indirizzo IP di un host interno non verrà mai scoperto e tanto meno sarà scoperta la topologia della rete. Inoltre, il NAT permette di riutilizzare gli stessi indirizzi IP in reti diverse, in modo da allontanare il problema dell'esaurimento dello spazio degli indirizzi.

La Assigned Numbers Authority (IANA) ha riservato i seguenti blocchi di indirizzi IP per le reti private:

Se la rete privata richiede connettività ad Internet, l'adozione del NAT può risultare un'ottima scelta per permettere le connessioni ad Internet senza pregiudicare la sicurezza degli host interni.

Ogni pacchetto IP contiene un indirizzo destinazione ed uno sorgente. Il NAT altera uno (o anche entrambi) degli indirizzi contenuti nell'header del pacchetto IP. Se viene modificato l'indirizzo IP sorgente, si parla di Source NAT o SNAT (utilizzato principalmente per collegare una rete privata ad una pubblica), mentre se viene modificato l'indirizzo IP destinatario, si parla di Destination NAT o DNAT (usato principalmente per nascondere la propria rete privata). Il Masquerading è uno speciale caso di SNAT dove il router rimpiazza l'indirizzo sorgente di un pacchetto in transito con l'indirizzo IP della sua interfaccia in uscita; il router può gestire connessioni multiple, ricordando gli indirizzi IP sorgenti.

Esempio SNAT: Supponiamo di avere una rete con un indirizzo IP di classe C, connessa ad Internet tramite un router.Siccome gli indirizzi IP privati non vengono accettati dai router di Internet, è necessario applicare l'SNAT all'interfaccia esterna del router. Quindi aggiungiamo una regola in modo che il router rimpiazzi l'indirizzo di ogni pacchetto che transita sull'interfaccia esterna, dall'interno verso l'esterno, con il proprio indirizzo IP (in questo caso 1.2.3.4).Quando il router riceve il pacchetto di risposta, lo inoltra al client della rete interna.
  fig.5

 

Esempio DNAT: Supponiamo di avere una rete privata con un host che fornisce il servizio HTTP sulla porta 80. Le richieste dall'esterno avranno come indirizzo di destinazione l'indirizzo del router. Questo modifica tale indirizzo con il reale indirizzo del server HTTP ed instrada il pacchetto all'interno della rete privata. I pacchetti in risposta, vengono manipolati modificandone l'indirizzo sorgente.
  fig.6

 

Un utente (fig.7) con IP 5.4.3.2 e porta 1111 invia una richiesta al web server della DMZ. L'utente conosce solo l'IP esterno (1.1.1.1, porta 80).
Il firewall trasforma l'IP esterno in 10.10.10.99, porta 80 ed invia la richiesta al web server. Quindi il web server invia la risposta col proprio IP (10.10.10.99, porta 80) e l'IP dell'utente. Il firewall riconosce il pacchetto dall'IP dell'utente e trasforma l'IP interno (10.10.10.99, porta 80) nell'IP esterno (1.1.1.1, porta 80).

fig.7

 


Per permettere la comunicazione tra reti o host geograficamente distanti, esistono due possibilità:

La prima possibilità impone l'investimento di grossi capitali per l'acquisto delle infrastrutture e risulta proibitiva per la maggior parte delle società, sopratutto se la distanza tra i punti di comunicazione è notevole (regioni o stati differenti). La seconda possibilità risulta essere economica ma poco sicura, in quanto, chiunque potrà accedere alle informazioni scambiate, pregiudicandone la segretezza o l'integrità.

Una soluzione economica ed allo stesso tempo sicura, è rappresentata dalle reti private virtuali oVPN.

Una VPN rappresenta una connessione sicura tra due parti di una rete privata, che utilizza una rete pubblica quale Internet.

Oggi, molte compagnie con siti dislocati in diverse parti della terra, creano le  proprie VPN per soddisfare le loro esigenze di comunicazione fig.8

 

La maggior parte delle VPN si basano sul tunneling. Questa tecnologia permette di incapsulare il pacchetto inviato da un host della VPN all'interno di un altro pacchetto e di inviarlo sulla rete pubblica. Il protocollo del pacchetto esterno è riconosciuto dalla rete su cui viaggia e viene scartato quando l'altro capo della VPN è stato raggiunto. Il tunneling richiede tre diversi protocolli:

Utilizzando il tunneling, è possibile inserire in un pacchetto IP un pacchetto che usa un protocollo non supportato da Internet ed inviarlo sulla rete globale. Oppure è possibile inviare un pacchetto IP con un indirizzo privato (che verrebbe quindi scartato dai router) in un pacchetto IP che usa un indirizzo IP ufficiale.