Intervista (EN) Copertina Boot

Articoli


Cosa sono i firewall

Internet è diventato un boccone veramente appetibile per molti, tanto che intere reti private sono state collegate alla mamma di tutte le reti. Questo collegamento ha però portato ad alcuni problemi, primo fra tutti il problema della sicurezza: i computer che formavano le reti private connesse alla grande rete erano punti vulnerabili per e costituivano un serio problema. Da qui l'idea di nascondere dietro ad un muro queste macchine, sprotette, e di presentare al grande pubblico di internet solo macchine sicure, server pronti a contrastare gli attacchi dei pirati informatici.... il firewall.

Pronti.. attenti... VIA

Un firewall è una macchina dotata di due interfaccie di rete, una posta sulla rete da proteggere e una collegata alla rete pubblica. I casi più frequenti sono firewall ethernet-ethernet o ethernet-PPP nel caso la rete privata sia collegata a quella pubblica attraverso un ISP. I kernel di Linux implementano le funzioni di firewall già dalla v1.2. Per programmare il firewall è necessario installare sulla propria macchina una piccola utility ipfwadm (IP ForWard ADMinistation), che permette di programmare il vostro firewall. Per costruire un firewall sicuro è però consigliabile installare una versione più recente di kernel, tutte le prove che ho fatto le ho condotte utilizzando la v2.0.30 del Linux Kernel e la versione 2.0.3 dell'ipfwadm. In questo articolo analizzeremo i tipi di protezione più diffusi ed implementabili sotto Linux, il filtraggio dei pacchetti IP, l'utilizzo di un proxy, e la tecnica del mascheramento degli IP (IP masquerading) Vedremo poi un caso di firewall un pò particolare, quello funzionante presso la Rete Civica di Cremona (www.rccr.cremona.it), in cui ad essere protetta non è la rete privata ma internet stessa.... leggere per credere!!!

La configurazione della rete privata

Nella costruzione della rete privata è necessario porre una certa attenzione nella distribuzione degli IP. Vista la scarsità di quelli disponibili il nostro ISP non ci fornirà una serie infinita di indirizzi, ma ce ne darà un numero molto limitato. Al fine di ``aumentare'' il numero di IP assegnabili si può ricorrere all'utilizzo di IP appartenenti ad un un sottoinsieme dello spazio di indirizzamento TCP/IP riservato all'utilizzo di reti private, ovvero non connesse direttamente ad internet. Per questi indirizzi non è previsto un indirizzamento diretto e di questo è neccessario tenerne conto al fine di evitare che pacchetti appartenenti a queste reti transitino su internet, quindi nella configurazione del vostro router inserite clausole che blocchino l'uscita di questi pacchetti. Gli indirizzi scelti per questo scopo sono contenuti in un RFC ufficiale (per l'esattezza il 1597) e sono i seguenti:

Classe dell'indirizzo
Minimo valore assegnabile
Massimo valore assegnabile
A
10.0.0.0
10.255.255.255
B
172.16.0.0
172.31.255.255
C
192.168.0.0
192.168.255.255


IP masquerading

L'IP masquerading è sicuramente la funzione di firewall più semplice da installare e da configurare, presenta pochi problemi di sicurezza ed può essere tranquillamente installato senza problemi anche dall'utente inesperto. Consiste nella possibilità di mascherare gli indirizzi TCP/IP di una rete privata in modo da renderla completamente nascosta all'esterno. Per fare questo sarà sufficiente configurare le macchine della rete interna affinchè utilizzino come default router la macchina Linux che svolge la funzione di firewall, in questo modo tutte le connessioni effettutate dalle macchine della rete interna sembreranno essere state generate da una porta del router. Linux provvederà a rimettere a posto i pacchetti di ritorno e a spedirli alla corretta macchina nascosta. Naturalmente l'uso dell' IP masquerading presenta anche dei problemi, primo fra tutti il fatto che questo tipo di protezione funziona solo con pacchetti di tipo TCP e UDP. Ma un problema più serio è costituito dal fatto che alcune applicazioni, quali ad esempio IRC o FTP inseriscono nei pacchetti di risposta l' indirizzo della macchina che ha spedito il pacchetto stesso oppure tentano di spedire direttamente alla nostra macchina i pacchetti di risposta, nel caso la nostra macchina sia dietro un firewall questo tipo di connessione fallisce, in quanto i pacchetti vengono spediti ad una macchina con un indirizzo fittizio e comunque privo di routing. La risoluzione al problema è fornita direttamente dagli autori del kernel, possono essere compilati ed installati alcuni moduli che ci permettono di utilizzare questo particolare tipo di applicazioni. Questi moduli possono essere compilati solo sottoforma di moduli ed inseriti con uno dei comandi predisposti (modprobe insmod), la lista di tutti i moduli disponibile è reperibile all'indirizzo http://www.wwonline.com/~achau/ipmasq un altro problema che non è trascurabile è costituito dal fatto che, a causa del modo in cui il protocollo TCP/IP è stato concepito, un singolo pacchetto IP può essere frammentato in più pacchetti, questo fenomeno si verifica quando si tenta di fare il forward di pacchetti molto grandi, tra interfaccie con MTU/MRU (MTU e MRU indicano rispettivamente la massima dimensione dei pacchetti trasmissibili e ricevibili da parte di un'interfaccia) tra di loro differenti. Si può arginare, anche se solo in parte, questo problema facendo in modo che il kernel di Linux tenti di deframmentare i pacchetti in ricezione prima di mascherarli e di spedirli facendone il forward, per far questo è necessario ricompilare il kernel con l'opzione CONFIG_IP_ALWAYS_DEFRAG, è anche molto utile attivare questa opzione per evitare che qualche mal intenzionato riesca a imbrogliare le regole stabilite per il forward facendo passare pacchetti ``indesiderati''. Per evitare totalmente il ``blocco critico'' dovuto alla frammentazione dei pacchetti è neccessario porre molta attenzione agli MTU/MRU impostati sul router.

Due considerazioni sulla macchina firewall

La macchina che costituirà il firewall deve essere scelta in modo un pò particolare, intanto le due schede di rete, è meglio se sono uguali. Il FIREWALL ha la particolarità di essere un mangia risorse, quindi è necessario predisporre una macchina (anche in base al traffico) con molte di queste risorse, per esempio la RAM più ne avete meglio è, il disco fisso può essere di dimensioni normali (1Gb), naturalmente dovete chiudere ftp e telnet su quella macchina, uno perchè meno operazioni fate eseguire alla macchina meglio è, due perchè ftp e telnet sono due punti deboli per la sicurezza della macchina e quindi del sistema stesso. Nel fissare le regole di forwarding (vedremo come farlo nella prossima puntata) partire da regole generali e scendete via via nel particolare, in questo modo potrete meglio rendervi conto, in caso di errore, dove avete sbagliato. Controllate il log del vostro firewall costantemente e armatevi di santa pazienza!!!

Conclusioni....

In questa prima parte dell'articolo abbiamo solo ``grattato'' la superficie del problema firewall, vedremo di approfondirlo, con un caso pratico, quello della Rete Civica di Cremona, nella prossima puntata!!!!

di Corrado Ignoti


Intervista (EN) Copertina Boot