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.
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:
Controllo dell'indirizzo del mittente e del destinatario
Verifica di prima connessione
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.
Economico.
Può essere
realizzato sia con struttura hardware che software.
E' un meccanismo
trasparente che non ostacola il normale utilizzo della rete.
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.
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
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.
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.
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
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.
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
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 o 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.
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
3.
Stato
application-derived: lo stato dell’informazione derivato da un’altra
applicazione
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.