Introduzione

Tecnologie dei Firewall su Internet

Con il termine FIREWALL si tende ad identificare in modo generico tutta una serie di funzioni e di apparecchiature che servono a proteggere un determinato dominio o rete privata (es. da LAN privata ad Internet nel suo complesso). Esistono varie versioni di Firewall implementabili con diverse configurazioni, nella cui realizzazione finale si dovrà tener conto di due esigenze spesso opposte, quali costi e prestazioni. La soluzione più efficace (se propriamente implementata) risulta quella dedicata, che include hardware e software appositamente prodotto, con costi che aumentano sensibilmente. Un approccio meno mirato prevede di adattare pacchetti esistenti alle esigenze richieste dal caso.
Vediamo come questa  protezione é applicata.
Quando un client richiede un servizio esterno al suo ambito privato e protetto, il Web crea una connessione  tra la porta della rete, sul computer client e la porta della rete, sul computer server. A questo punto il Firewall controlla e gestisce la connessione tra le due porte. Nella figura 1 viene illustrato un Firewall, situato fra la porta P1 della rete del client, sulla rete privata interna, e la porta P2 della rete del server su Internet. 

  

Fig.1 - Un utente di una rete protetta ottiene un documento da un server Web all'esterno del sistema di Firewall

Il Firewall separa e protegge la rete privata, definendo e rafforzando i metodi strutturati per il traffico di rete in modo che passino attraverso questo. I computer all'esterno del Firewall devono attenersi a questa struttura (definita dal Firewall stesso), per ottenere l'accesso alle risorse, agli host, alla rete ed alle informazioni  interne. Il Firewall delega l'accesso alla rete interna a una determinata serie di computer (macchine sulle quali un modulo del Firewall controlla il flusso di dati da e per la rete stessa), ai singoli (host e server interni) e ai servizi di sistemi che sono stati autorizzati (es. protocolli di smaltimento dati). Il traffico di rete è autorizzato, può quindi attraversare il Firewall, a patto che si attenga alla struttura definita da questo, mentre al traffico casuale non strutturato non è permesso passare. La figura 1 mostra un accesso verso l'esterno, e tale operazione risulta essere quella più comune che gli amministratori di Firewall devono supportare e gestire. Nella figura 2 invece viene illustrato il traffico in entrata alla rete. In questo caso la configurazione del Firewall dovrebbe offrire il servizio Web richiesto, su una macchina interna ad esso. 


   

Fig.2 - Un utente all'esterno della rete protetta ottiene un documento da un sistema di firewall 


Il traffico in entrata è più difficile da gestire in modo sicuro, in quanto il firewall deve impedire ai client remoti, che possono essere inaffidabili, di penetrare nel dominio di protezione per accedere ai documenti Web. Esistono diverse tecnologie che possono essere utilizzate dai firewall per strutturare e incanalare l'accesso agli host sulla rete interna: router, gateway di circuito, proxy e gateway di applicazione.

 Accesso al Web mediante un router che filtra i pacchetti

Funzionamento 

I Firewall packet filter sono dei router posti sul gateway che filtrano i pacchetti in ingresso e in uscita. In genere vengono posti tra due o più segmenti di rete detti interni, se appartengono alla rete, ed esterni se collegano ad Internet. Il filtraggio viene fatto confrontando i dati contenuti nella header del pacchetto con quelli imposti dal gestore del Firewall sulle tabelle di routing , in base all'esito del confronto, il pacchetto potrà attraversare o meno il Firewall. Operando al livello di trasporto (quarto livello OSI), il packet filter è in grado di compiere una selezione dei pacchetti in transito, in base all'indirizzo della sorgente, della destinazione e dei campi di controllo presenti nei pacchetti, scartando quelli che non rispettano la struttura dettata dalla politica di sicurezza in vigore. Il vantaggio di ciò consiste nella perdita poco significativa delle prestazioni  della rete, in quanto vengono analizzati solo gli header di terzo (reti) e quarto livello (trasporto), il che può portare ad una debolezza in presenza di attacchi mirati. 
I principali controlli che possono essere effettuati con un sistema packet filter sono: 

   

Fig.3 - Un pacchetto filtrato da un router funzionante da  firewall per il traffico esterno 

Le regole di filtraggio sono memorizzate in uno specifico ordine. Ogni regola è applicata al pacchetto nell'ordine in cui è scritta. La  prima regola che blocca la trasmissione o la ricezione del pacchetto, causa il rifiuto del pacchetto.

Vantaggi 

Economico. 
Può essere realizzato sia con struttura hardware che software. 
E' un meccanismo trasparente che non ostacola il normale utilizzo della rete. 

Svantaggi 

I controlli vengono eseguiti al livello TCP/IP e non a livello dati (DLC), quindi non sono consentiti monitoraggi molto raffinati. Infatti una possibile impostazione del packet filter, sulle tabelle di instradamento, potrebbe prevedere di ignorare tutto il traffico in uscita e/o in entrata su una determinata porta, oppure permettere il passaggio dei soli dati provenienti da una data rete, questo porta ad avere un sistema poco flessibile e sicuro, data la relativa facilità con cui si possono manipolare i dati della header dei pacchetti. 
Non è sempre facile impostare, testare e gestire le regole di filtro di una tabella di instradamento ed errori in queste fasi potrebbero essere fatali per la sicurezza del sistema. Una volta che un host esterno ha superato il Firewall, esso ha accesso diretto ad ogni host della rete interna. Ed è quindi facile per gli aggressori sfruttare eventuali buchi nei sistemi di sicurezza dei singoli servizi forniti dagli host interni. E' necessario uno sforzo maggiore per mantenere la rete sicura e una particolare attenzione va posta sugli host che prestano servizi all'esterno. 
L'amministratore del firewall non dovrebbe specificare tanto le porte quanto i servizi del sistema che hanno diritto di accesso.
Sono difficili da configurare e da gestire. 
Peggiorano le prestazioni dei dispositivi in cui sono implementati. 
 

Accesso al Web mediante un gateway di circuito

Funzionamento 

Questo tipo di Firewall esegue dei controlli a livello di sistema operativo, quindi a un  livello superiore a quello con packet filter. 
I Firewall gateway di circuito sono composti da due software: uno sulle singole macchine della rete interna detto libreria socks, e uno che risiede sulla macchina del gateway detto programma di relay.
La libreria socks è un pacchetto software ampiamente disponibile che permette appunto di utilizzare un gateway di circuito da parte del browser del client, gestendo le tre chiamate al TCP/IP di quest'ultimo: connect(), socket() e bind().
Quando un client della rete interna esegue una chiamata per un server esterno, il browser web del client reindirizza la chiamata, tramite la libreria socks (che agisce come un proxy il cui funzionamento é illustrato in seguito), al programma di relay sul gateway. Questo reindirizzamento avviene in modo del tutto trasparente per l'utente. Il programma di relay farà in modo che solo i pacchetti autorizzati passino attraverso il Firewall, copiandoli dalla porta interna a cui li aveva indirizzati il browser (libreria socks) alla porta esterna dedicata ai server esterni. 
Procedimento analogo si esegue per i messaggi in ingresso. 
In questo modo la connessione non avviene più direttamente con l'host remoto, ma avviene tramite il programma di relay che funge da "assaggiatore" dei dati. 


    

Fig.4 - Un Gateway di circuito come firewall per il traffico esterno del Web

Vantaggi 

I controlli vengono fatti ad un livello di sistema operativo.
La libreria socks può essere collegata a diverse applicazioni (telnet, ftp,ecc..). 
Il meccanismo di sicurezza è ben nascosto all'utente. 

Svantaggi 

Forma e contenuto di questa libreria variano da sistema operativo a sistema operativo di conseguenza possono nascere problemi di portabilità. Potrebbe essere difficile trovare una versione socks compatibile con tutti i sistemi operativi. 
Occorre che ogni browser della rete interna venga ricompilato con la libreria socks. Nel caso di reti di grandi dimensioni questa operazione può risultare molto complessa e costosa. Alcuni browser sono però venduti già con il supporto socks, quindi non è necessaria la ricompilazione. 

Accesso al Web mediante un gateway di applicazione

Funzionamento 

I Firewall che consentono l'accesso alla rete mediante gateway di applicazione, detti anche proxy, sono sistemi che risiedono sul computer del gateway. Il funzionamento del gateway di applicazione è simile a quello del software di relay (visto in precedenza), esso infatti esegue tutte le operazioni che esegue il software di relay e in più incorpora parte del linguaggio e del protocollo dell'applicazione che permette controlli più approfonditi. Questo  permette al gateway di applicazione di poter esegue controlli sull'accesso a livello più alto , ovvero a livello di applicazione, però impone che ogni servizio specifico (telnet, ftp, http,ecc..) necessiti di un proprio gateway di applicazione. Con questo sistema si possono eseguire filtraggi selettivi in base al tipo di richiesta, cosa che un relay dei gateway di circuito non é in grado di fare in quanto non capace di interpretare i diversi protocolli .Un gateway di applicazione può ad esempio richiedere l'autenticazione dell'utente quando cerca di importare o esportare dati. Per ogni nuova connessione di rete viene creato un nuovo proxy, in quanto ognuno di essi è in grado di controllare solo un singolo flusso di traffico tra due specifici hosts. Se ad esempio viene eseguita una richiesta di connessione FTP, il Firewall creerà un nuovo proxy FTP anche se ne esiste già un altro. 
Vediamo adesso il funzionamento di questo sistema. 
Quando si esegue una connessione ad un server esterno, il browser reindirizza la richiesta in modo trasparente al proxy sul Firewall. Questo reindirizzamento avviene mediante un'impostazione del file di configurazione del browser o mediante una variabile di ambiente sul computer del client. A questo punto il gateway di applicazione esegue i controlli per cui è strato configurato e, in base ai risultati ottenuti, trasmette o meno i pacchetti dalla porta P1 interna del client alla porta P2 esterna del server sul Firewall. 
In questo modo il gateway di applicazione agisce come un server nei confronti del browser e come un client nei confronti del server. 
I gateway di applicazione possono proteggere i sistemi all'interno del Firewall filtrando in modo selettivo i caratteri 'pericolosi' per una determinata applicazione, può quindi essere sfruttata la conoscenza dei protocolli per comprendere l'applicazione in corso e filtrare i motivi di carattere o le sequenze di comandi che non sono normali per quella applicazione, come ad esempio filtrare i caratteri tipo ";" (punto e virgola) che potrebbero danneggiare uno script della shell che contiene una chiamata a system( ).  

 

Fig.5 - Un Gateway applicativo come firewall per il traffico esterno del Web 

Vantaggi  

Consente un filtraggio molto selettivo 
Non si ha più una connessione diretta tra host interni ed esterni, ma solo attraverso il software del proxy scritto per fornire un elevato livello di sicurezza e accuratamente testato per l'eliminazione di eventuali buchi. 
Riduce il carico di lavoro per rendere sicuri i computer interni, in quanto con questo sistema la rete diventa praticamente invisibile dall'esterno, ottenendo così ottimi livelli di protezione. 
Permette di eseguire servizi di auditing (controllo delle connessioni), in quanto è in grado di eseguire analisi accurate del traffico in ingresso e il uscita, mentre le stesse operazioni richiederebbero complesse analisi di tutte le reti esterne accessibile , se eseguite su sistemi packet filter
In genere è una struttura facilmente configurabile e gestibileanche dal software del client. 

Svantaggi

Ogni applicazione richiede uno specifico proxy 
Il software del gateway di applicazione può essere molto complesso, può quindi accadere che contenga errori non rilevati che potrebbero mettere a repentaglio il funzionamento del Firewall. 


 

Fig.6 - L'utilizzo di un proxy con un firewall del circuito di gateway 

Impostazione di un server Web all'interno di un firewall

E' difficile rendere sicura una connessione fra un computer presente in Internet ed uno interno ad un sistema protetto con firewall. Scopo principale di quest'ultimo è quello di bloccare il traffico di rete che non segue le regole strutturate per l'accesso all'esterno del firewall. Il firewall permette le connessioni interne solo se vengono osservate le regole impostate dal router di filtro dei pacchetti, dal relay o dai gateway di applicazione. Se invece un cliente Web (esterno al dominio di protezione) vuole accedere ad un server Web all'interno di un firewall la cosa diviene difficile da impostare perché il firewall non conosce né l'identità della persona che cerca di ottenere l'accesso, né quali sono i servizi ai quali é autorizzato, le uniche cose che "vede" sono gli indirizzi di rete e le porte di origine e destinazione, il che non permette una accurata politica di sicurezza.
Nella maggior parte dei servizi usufruibili, come per esempio  TELNET FTP, gli utenti devono autenticarsi al firewall per stabilire la propria identità, in questa ottica l'amministratore del sistema protetto deve registrare tutti gli utenti, ad esempio creando una voce nel file delle password sulla macchina del firewall, prima che un utente abbia il permesso di accedere ai servizi di sistema sulle macchine interne; in sintesi gli utenti devono sapere in anticipo a quali risorse vogliono accedere in modo da poter richiedere in anticipo (all'atto della registrazione al firewall) i dovuti permessi.
Nel caso in cui il server Web contenga documenti destinati ad un vasto pubblico, non è concepibile che si possa permettere a tutti di eseguire l'autenticazione sulla macchina firewall, dato che l'elenco degli utenti comprenderebbe tutti quelli che stanno utilizzando Internet per consultare il Web.
In queto modo si andrebbe contro lo scopo principale di un firewall che è quello di proteggere l'accesso alla rete interna da client Web che richiedono l'accesso a questa. Per tale motivo è consigliabile collocare il server Web delegato al traffico esterno, al di fuori del firewall. Anche perchè un server Web configurato con una certa attenzione può essere reso sicuro come lo stesso firewall e in questo caso, una violazione di sicurezza rovinerebbe soltanto il server Web e non tutte le risorse protette.
E' possibile utilizzare un firewall anche per la rete secondaria che proteggerà il server Web a spese di un più alto rischio di esposizione per la rete interna.

Requisiti di un Firewall

Per provvedere quindi, efficientemente ad una reale sicurezza, un firewall deve tracciare e controllare il flusso di comunicazione che lo attraversa, raccogliendo il maggior numero di informazioni che lo riguardano(il che dipende dalla tipologia del firewall nella rete). Per prendere il controllo dei servizi TCP/IP, un firewall deve ottenere, memorizzare e manipolare le informazioni provenienti da tutti i livelli di comunicazione e da altre applicazioni. Non è quindi sufficiente esaminare i pacchetti isolati. Lo stato dell’informazione, derivato dalle passate comunicazioni e da altre applicazioni, è un fattore essenziale per prendere una buona decisione di controllo. Entrambi gli stati, di comunicazione (derivati dalla passata comunicazione) e di applicazione (derivato dalle altre applicazioni) possono essere considerati quando vengono prese delle decisioni di controllo. 

Le decisioni di controllo richiedono che un firewall sia capace di accedere, analizzare e utilizzare i seguenti punti: 

 

1.      Informazione delle comunicazioni: informazioni provenienti da tutti e sette i livelli nel pacchetto, e quindi accesso agli header di ognuno, e conoscenza dei protocolli di ognuno di questi. In questo modo é possibile gestire la differenziazione dell'accesso ai diversi servizi dei sette livelli. Viene cioè garantito l'accesso a tutte le risorse accessibili per un determinato host  e il blocco verso tutte le altre, indipendentemente dalla locazione effettiva della risorsa stessa.

2.     Stato communication-derived: con tale termine si intende lo stato derivato dalle precedenti comunicazioni, devono quindi essere mantenuti file di log nei quali un firewall deve memorizzare ogni transazione sulla rete protetta da e verso un client. Per esempio se consideriamo il comando PORT  in uscita di una sessione FTP può essere salvato in modo da verificare, sulla base di questa, una qualsiasi connessione FTP entrante.

3.      Stato application-derived: lo stato dell’informazione derivato da un’altra applicazione permette di avere informazioni di supporto alla politica decisionale. Per esempio ad un utente precedentemente autenticato deve essere  permesso l'accesso attraverso il firewall per i soli servizi autorizzati.

4.      Manipolazione dell’informazione: la capacità di eseguire funzioni logico-aritmetiche sui dati in ogni parte del pacchetto. Esempio l'unione o l'intersezione di più regole di sicurezza.