Gentili utenti vi informiamo che il team di MyTech si è spostato sul canale Hitech & Scienza di Panorama.it

      non hai uno username? regìstrati   /   recupera la password

apple / google / microsoft
unmapped

Un firewall personale per Linux

Scritto da Guido Sintoni

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.
Guarddog è un comodo e gratuito front-end che permette di stabilire in modalità visuale le regole di firewalling su un sistema Linux basato su kernel 2.4.x e 2.5.x e dotato di Kde 2 o 3. In figura vediamo la schermata che permette di abilitare (o disabilitare) con un semplice clic il traffico relativo ai protocolli di rete predefiniti.
Parlando di firewall “personali”, restringiamo il campo ai firewall a filtraggio di pacchetto. Essi presentano alcune peculiarità. Innanzitutto, lavorano a basso livello, sullo stesso strato della rete. I dati partono dal sistema solo se una regola lo permette; il traffico di rete viene filtrato per tipologia, indirizzo di provenienza, indirizzo di destinazione e porta relativa al servizio richiesto, relativamente ad ogni pacchetto.

È 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.
Netfilter lavora nell’ambito del meccanismo a tre fasi, noto come three-way handshake, alla base di ogni connessione Tcp; la sua azione è visibile mediante il comando /usr/sbin/tcpdump, che serve per l’analisi del traffico di rete.

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.
FireStarter è probabilmente il migliore front-end grafico per iptables sotto Gnome. L’approccio è differente da quello di Guarddog: non opera per zone, ma consente un monitoraggio delle connessioni in entrata ed uscita in tempo reale.
Firestarter si basa su un’interfaccia grafica molto gradevole e ha funzioni di reportistica in tempo reale, colmando una lacuna di Guarddog. Apre e chiude porte al volo, è in grado di operare in modalità stealth e di escludere l’Ip dell’attaccante dai collegamenti di rete della macchina. Anche se meno noto di Guarddog, FireStarter presenta alcuni interessanti vantaggi: un wizard per la configurazione assistita (anche se piuttosto spartano), la compatibilità con Kde ed i kernel 2.2.x e 2.4.x ed una nazionalizzazione in 25 lingue, tra le quali è presente anche l’italiano. Oltre ai sorgenti, sono disponibili i binari precompilati per RedHat 7.3-8.0 e Debian. Anche se è meno intuitivo di Guarddog e non agisce per zone, FireStarter è molto apprezzato dagli utenti evoluti, e ricorda - nel funzionamento - la versione 2 di Tiny Personal Firewall per Windows, o il suo clone Kerio Personal Firewall 2.1.

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.
Al pari di SuSE, le più recenti distribuzioni Linux di RedHat e Mandrake presentano un firewall incorporato. Pur basate su applicazioni differenti, il risultato per l’utente finale è simile: semplicità d’uso e scarse possibilità di configurazione avanzata.
Sulla stessa strada scelta da SuSE 8, il cui Personal Firewall 2 è direttamente richiamabile dal centro di controllo YaST, si è avviata RedHat la cui release 8 comprende un firewall richiamabile tramite lo script redhat-config-securitylevel o accessibile dal menu grafico Impostazioni di sistema/Livello di sicurezza. Anche qui è possibile controllare, per via grafica, le sole connessioni in entrata, con un livello di profondità paragonabile a quello di Mandrake; i livelli di sicurezza previsti sono tre. Le regole possono essere associate al livello scelto o configurate manualmente sulla base di soli sei protocolli preimpostati. La configurazione avanzata passa, giocoforza, per l’uso di iptables o - come auspicabile per un utente non smaliziato - per quello di Guarddog o FireStarter.

Commenti   (Inserisci un commento)

Ancora nessun commento.

Effettua il login