Un firewall personale per Linux
Il concetto di personal firewall sotto Linux è legato a due software: netfilter e iptables. La loro unione definisce il sottosistema di firewalling relativo ai kernel 2.4.x e 2.5.x, ovvero il cuore di praticamente tutte le distribuzioni da quasi due anni a questa parte.Netfilter e iptables abilitano il filtraggio dei pacchetti di rete, i vari tipi di Nat (Network Address Translation, una tecnica nota anche come masquerading) e la suddivisione dei pacchetti stessi; entrambi sono compresi nel kernel Linux standard. I concetti appena citati possono risultare impegnativi, tanto nell’analisi quanto nella realizzazione pratica; per renderne più chiara la comprensione, è necessario fare qualche accenno alle tipologie di firewall esistenti in ambiente Linux e al funzionamento di netfilter e iptables.
Uno dei migliori documenti per comprendere le tipologie di firewall realizzabili con Linux - anche se un po’ datato - è “Firewall and Proxy Server HOWTO” di Mark Grennan. Possiamo dividere i firewall in due categorie: firewall a filtraggio di pacchetto e proxy server. I primi si occupano di bloccare i pacchetti di rete selezionati mediante regole; i secondi si occupano di stabilire autonomamente le connessioni di rete.
È noto come il firewall si interponga tra l’ambiente Internet e - almeno - la zona locale di un elaboratore. A seconda dell’hardware di quest’ultimo e della presenza di altri dispositivi, si configurano quattro tipologie di firewall: per architetture dial-up o a router singolo/modem Dsl (ambito workstation), firewall con proxy server e configurazioni ridondate. In un’ottica di impiego su un sistema domestico ci focalizzeremo sulle prime due architetture, analizzando la realizzazione di un firewall a filtraggio di pacchetto su una macchina Linux: con buona approssimazione, è lo stesso ambiente in cui operano i personal firewall sotto Windows.
Senza pretese di completezza, accenniamo innanzitutto al funzionamento di netfilter e iptables. Il primo, che è un componente del kernel, si occupa di filtrare i pacchetti Tcp/Ip, nell’ambito di una connessione di rete, suddividendoli in tre chains (letteralmente: catene): input (pacchetti in entrata), output (pacchetti in uscita) e forward (pacchetti in transito). Le regole in base alle quali netfilter elabora i pacchetti vengono definite e gestite da iptables e dai comandi collegati iptables-save e iptables-restore (che si occupano rispettivamente del salvataggio e del richiamo delle regole stabilite dall’utente).
Per ogni catena è possibile definire una politica di default. Le azioni previste sono tre: accept, drop e reject. Nel primo caso, il pacchetto viene accettato, nel secondo viene scartato e nell’ultimo viene rifiutato. La differenza tra drop e reject risiede in un messaggio di notifica (realizzato con un pacchetto Icmp) che viene inviato solo in caso di reject. Il firewalling sotto Linux parte da un semplice presupposto: viene proibito (scartato o rifiutato) tutto ciò che non è esplicitamente permesso: in altre parole, accept rappresenta un caso particolare, applicabile a pacchetti definiti per tipologia o provenienza.
|
Le opzioni avanzate di Guarddog permettono di abilitare o meno un’interfaccia Dhcp, così come di importare ed esportare le impostazioni personalizzate, e di ripristinare quelle originarie. | |
Iptables, invece, è richiamabile tramite shell a linea di comando, portando con sé - oltre alla sua potenza - una serie di problematiche legate al suo uso, prima di tutte la scarsa intuitività. Ricordiamo che tutti i comandi relativi al networking vanno eseguiti con privilegi di superutente. Un front-end visuale per iptables
Sviluppatori e aziende cercano di ovviare alle difficoltà derivanti dall’uso della linea di comando con la costruzione di front-end grafici. Iptables (e, indirettamente, netfilter) non sfuggono a questa regola: esistono infatti svariati front-end grafici che permettono di stabilire le regole di firewalling in maniera visuale.
Uno dei migliori è senza dubbio Guarddog, scaricabile gratuitamente a questo indirizzo, e fa parte di un insieme di software per il networking che comprende utilità per il routing/masquerading (Guidedog) ed il monitor del traffico in tempo reale (Watchdog).
Guarddog 2.0.0 (la versione disponibile al momento in cui scriviamo) ha licenza Gpl e funziona in ambiente grafico Kde2 o Kde3. È consigliato il kernel 2.4.x. L’installazione è molto semplice: è possibile compilare i sorgenti o scaricare binari precompilati per distribuzioni Linux RedHat 7.2-8.0, Mandrake 8.1-9.0 e SuSE 7.2. L’unica lacuna riscontrabile è la mancanza di binari precompilati per SuSE Linux 7.3, 8.0 e 8.1.
Guarddog si incarica di gestire automaticamente i moduli del kernel relativi al filtraggio dei pacchetti e di scrivere le regole di firewalling mediante iptables. Questo tool richiede l’accesso univoco ad iptables. Pertanto, chi ha già installato un firewall basato su ipchains (il comando per impostare regole, specifico del kernel 2.2.x e mantenuto anche nel kernel 2.4.x), dovrà rimuovere le regole impostate con ipchains -F; rimuovere il modulo ipchains con modprobe -ripchains ed evitare l’avvio del servizio al boot. È questo il caso degli utenti RedHat che abbiano installato il Personal Firewall: basta lanciare lo script redhat-config-services e togliere il segno di spunta ad ipchains.
Guarddog funziona secondo il concetto di “zone”, al pari Zone Alarm (un diffuso firewall personale per Windows). Vengono definite per default una zona locale (relativa alla macchina su cui è installata l’applicazione) e una per Internet. È possibile aggiungere zone che comprendono un Ip singolo o un gruppo di Ip definiti da una sottomaschera di rete.
L’interfaccia utente (purtroppo non ancora disponibile in lingua italiana) è suddivisa in quattro sezioni, cui corrispondono altrettante etichette, che permettono rispettivamente di agire sulle opzioni relative alle zone, al protocolli, al logging e alle funzioni avanzate.
La sezione Protocols consente di scegliere quali connessioni accettare in entrata ed in uscita, o - meglio - quali protocolli autorizzare tra le zone definite. I protocolli (dei quali non sono evidenziate le porte relative) sono raggruppati per categorie: chat, dati relativi a servizi (quali database locali e remoti), trasferimento di file (gestisce, tra gli altri, http, https, ftp e nfs), giochi, sessioni interattive (quali telnet, ssh, rlogin, linuxconf e swat), posta (pop e imap), streaming multimediale, servizi di rete (ping, Dns, traceroute e NetBios) e servizi definibili dall’utente. Impostare le regole è molto semplice: i protocolli trattati sono molteplici, e il ricorso alla configurazione manuale (sezione Advanced) è necessario, nella maggioranza dei casi, solo per i servizi che usano porte diverse da quelle standard (ad esempio, un server Web che non gira sulla porta 80).
Nella sezione relativa alle opzioni avanzate è possibile - oltre che definire nuovi protocolli - disabilitare il firewall ed impostare il Dhcp in entrata e in uscita. L’ultima sezione, Logging, fa diretto riferimento ai messaggi di log: è possibile tenere nota dei pacchetti rifiutati e scartati, tracciare azioni di port scanning (anche parziali) e compiere operazioni complesse, quali tracciare le opzioni Tcp, Ip e le sequenze dei pacchetti Tcp in entrata ed uscita. I log sono legati alla funzione di syslog, e sono di difficile accesso per l’utente medio: nelle prossime versioni sarebbe auspicabile trovare un’opzione per il loro reindirizzamento su un file di testo. A dire il vero, Watchdog esegue il monitoraggio del traffico di rete in tempo reale e produce un’ottima reportistica, ma risulta - in termini pratici - scarsamente utile perché non ancora compatibile con i kernel 2.4.x e le librerie Qt di Kde 3.
Infine, segnaliamo che modalità operative avanzate quali il routing e il masquerading (non previste da Guarddog), possono invece essere gestite tramite tool Guidedog citato in precedenza.
I front-end per Gnome
Uno dei limiti principali di Guarddog è il suo stretto legame con Kde; anche in ambiente Gnome, tuttavia, esistono alcuni front-end per iptables in grado di semplificare la vita all’utente finale aiutandolo ad impostare regole per via grafica.
LnxFire è un progetto datato e concepito per Gnome 1.2.
Lokkit è un front-end minimale per iptables che porta la firma di Alan Cox, nome storico nel mondo Linux, e costituisce il firewall in dotazione alle distribuzioni RedHat fino alla 7.3.
FireStarter è il progetto più avanzato sotto Gnome: supporta Gnome 2.0 ed 1.4 ed è dichiarato stabile.
I personal firewall integrati
Sono ormai molte le distribuzioni Linux che integrano un personal firewall, e la loro impostazione, tesa a semplificare la configurazione di regole, ha un approccio molto simile a quella che ha portato Microsoft a concepire Icf per Windows Xp: le impostazioni sono sì immediate, ma il prezzo da pagare è un livello di funzionalità piuttosto basso.
Linux Mandrake 9.0 incorpora nel proprio Control Center un front-end grafico per Shorewall, un’applicazione a linea di comando di incredibile versatilità, ma di difficile configurazione. Il firewall personale di Mandrake si occupa del solo traffico in entrata da Internet, e offre tre livelli di sicurezza preimpostati: è possibile autorizzare o meno la connessione ad un server Web o Dns locale, il collegamento via telnet, ssh o ftp, e l’accesso ad un server per l’invio e la ricezione di posta. L’opzione Advanced prevede l’inserimento della porta su cui impedire l’accesso ed il relativo protocollo: il rimando al file /etc/services indica come - per una protezione maggiormente selettiva - l’unica soluzione sia il ricorso alla configurazione manuale (e a linea di testo) di shorewall o iptables.








Ancora nessun commento.