TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
Metti una barriera tra internet e il tuo computer
Tieni alla larga gli intrusi e filtra il traffico da e verso la rete con un Personal Firewall costruito su misura per il tuo PC
(pagina 1 di 2)
Quando si parla di sicurezza, spesso si sentono frasi del tipo: "Un computer sicuro è un computer spento", "Un computer sicuro è un computer che non accede alla rete" e altre cose di questo tipo. Ma la situazione è veramente così drammatica? In effetti, è inutile negarlo, in parte queste affermazioni sono vere. Purtroppo, infatti, quasi sempre gli attacchi più pericolosi arrivano proprio da Internet o dalla stessa rete locale (LAN). D'altro canto è altrettanto vero che un computer senza accesso alla rete è come un'automobile senza strade da percorrere. Allora, qual è la soluzione al problema? Fare finta di niente o cercare di proteggere il PC adeguatamente? Ovviamente, scartiamo senza pensarci due volte la prima soluzione e occupiamoci dell'altra. L'ideale è dotarsi di un sistema che filtri le connessioni (quindi i dati) in transito da e verso la macchina da proteggere. Questi sistemi prendono il nome di firewall (letteralmente muro tagliafuoco) e, nella maggior parte dei casi, si tratta di macchine dedicate installate al “confine” tra la rete locale e Internet, con lo scopo di proteggere i sistemi presenti all'interno della LAN. E se l'obiettivo è proteggere un singolo PC, ad esempio il nostro desktop, dai pericoli di Internet? In questi casi bisogna ricorrere all'uso di un Personal Firewall, noti anche come Firewall Software, derivati dai firewall, ma costituti da programmi che si installano direttamente sulla macchina da proteggere. In realtà, un Personal Firewall può anche fungere da firewall nel momento in cui altri computer accedono alla rete attraverso il PC sul quale è installato.

• Un firewall a protezione di una rete


GNU/Linux ce l'ha già!
A differenza di altri sistemi operativi, tutte le distribuzioni GNU/Linux dispongono di un firewall direttamente integrato nel kernel. Per la precisione si tratta del sistema netfilter/iptables (o ipchains fino alla versione 2.2 del kernel). In pratica, netfilter offre le funzionalità di firewall, mentre iptables è il programma che permette di gestirne la configurazione. Questo sistema, potentissimo ed efficiente, ha il vantaggio di poter essere utilizzato sia come firewall che come Personal Firewall, ma ha anche un “piccolo” difetto: la configurazione non proprio facile da eseguire. Ora, mentre nel primo caso questo aspetto è poco importante perché in genere queste operazioni sono affidate a esperti amministratori di rete, nel secondo sono i normali utenti desktop a dover effettuare tutto il lavoro, trovandosi spesso difronte a difficoltà insormontabili. Per risolvere tale inconveniente, sono stati creati software (grafici e non) per semplificare al massimo la configurazione di netfilter. Uno di questi è Shoreline Firewall, meglio conosciuto come Shorewall. Questo tool ci permette di configurare il firewall Linux nei minimi dettagli appoggiandosi alle stesse utility fornite da iptables, ma in un modo accessibile a chiunque. Inoltre, Shorewall non è avido di risorse e non influenza in modo negativo le prestazioni del PC. In realtà sono disponibili software ancora più facili da utilizzare, un ottimo esempio è costituito da Firestarter (www.fs-security.com), ma nessuno offre la flessibilità e il controllo garantiti da Shorewall.
Prima bisogna installare shorewall
Sul sito di Shorewall sono disponibili i pacchetti precompilati per diverse distribuzioni (anche se le versioni non sono proprio aggiornatissime), ma nel nostro caso installeremo il tutto da sorgenti in modo da avere la massima compatibilità su ogni sistema. Per prima cosa,  copiamo i pacchetti shorewallcommon- 4.0.6.tar.bz2 e shorewall-perl-4.0.6-3.tar.bz2 in una qualsiasi directory, dopodichè apriamo una shell e scompattiamoli:
tar -jxf shorewall-common-4.0.6.tar.bz2
tar -jxf shorewall-perl-4.0.6-3.tar.bz2
A questo punto, come primo step, è necessario installare l'interprete necessario a Shorewall per la compilazione delle regole di firewalling. Spostiamoci all'interno della directory shorewall-perl- 4.0.6 (cd shorewall-perl-4.0.6) ed eseguiamo il comando seguente: ./install.sh. Durante questa fase è indispensabile che all'interno del sistema sia presente Perl, nel nostro caso la versione installata è la 5.8.8. Per verificare l'effettiva presenza di questa piattaforma di sviluppo, è sufficiente eseguire il comando which perl. Mente per verificarne la versione, il comando diventa perl –version. Consigliamo l'utilizzo di Perl in quanto più veloce ed affidabile durante la compilazione delle regole. Terminata l'installazione di questo componente facciamo un salto indietro e spostiamoci nella directory shorewall-common-4.0.6 (cd ../shorewall- common-4.0.6). Da qui, eseguiamo ancora una volta il comando ./install.sh. A questo punto, Shorewall è installato e pronto all'uso. Per verificare che tutto sia andato a buon fine è sufficiente eseguire which shorewall. L'ouput restituito dovrà essere /sbin/shorewall (l'eseguibile di Shorewall è, quindi, presente nel sistema. Come ulteriore controllo possiamo verificare l'esistenza dei file di configurazione di Shorewall eseguendo ls /etc/shorewall.
Configurare il personal firewall

Il Personal Firewall protegge una singola macchina

Da questo punto in poi lavoreremo sempre nella directory /etc/shorewall modificando i file di configurazione in essa contenuti. Apriamo quindi con il nostro editor preferito il file shorewall. conf e modifichiamo la voce
STARTUP_ENABLE=No in STARTUP_ENABLE=Yes.
Questa modifica serve per eseguire Shorewall all'avvio del sistema. Essendo il nostro scopo quello di configurare un Personal Firewall, assumiamo che Shorewall sia installato sullo stesso PC che utilizziamo quotidianamente come desktop, perciò avremo una sola interfaccia di rete da dichiarare al firewall: in genere si tratta di eth0 (la scheda di rete) per connessioni a Internet tramite ADSL o altro, e ppp0 o ippp0 per quelle di tipo analogico. In ogni caso, bisogna sempre indicare l'interfaccia mediante la quale effettuiamo la connessione che, ovviamente, è quella da proteggere mediante il firewall. Per essere sicuri che quello utilizzato sia il nome corretto (alias) dell'interfaccia di rete, eseguiamo il comando ifconfig. A questo punto, per configurare Shorewall, interverremo sostanzialmente su quattro file:
  •  zones - serve per dichiarare i nomi delle zone che il firewall assocerà poi alle interfacce di rete;
  •  interfaces – serve per stabilire a quali interfacce di rete le zone verranno associate;
  •  policy – il file utilizzato per dichiarate le regole che di default verranno applicate sulle diverse "zone";
  •  rules – con questo file si stabiliscono regole " speciali " che agiranno oltre quelle di default precedentemente indicate nel file policy.
A questo punto, se ancora non lo siamo, diventiamo root con su o sudo -s, e apriamo il file zones modificandolo nel modo seguente:
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net ipv4
Così facendo, abbiamo dichiarato una zona che identifica la connessione verso Internet, in altri termini verso il modem (net e ipv4 come protocollo di trasporto ), e una zona che identifica la nostra macchina locale come Stand-Alone-Firewall (fw di tipo firewall). Ricordate che i nomi delle zone non devono mai superare i cinque caratteri. Salviamo le modifiche e passiamo al file interfaces:
#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect
In questo caso, abbiamo associato alla zona net l'interfaccia eth0 (in caso di connessione analogica è necessario cambiare eth0 con ppp0 o ippp0. Inoltre, lasciamo che sia il firewall stesso ad identificare il parametro broadcast della nostra rete settandolo come detect. Salviamo anche queste modifiche e passiamo alle modifiche da apportare al file più importante di Shorewall, policy:
#SOURCE DEST POLICY LOG LIMIT:BURST
# LEVEL
fw net ACCEPT info
net all DROP info
# THE FOLLOWING POLICY MUST BE LAST
#
all all REJECT info

È evidente che le regole che abbiamo definito interessano determinate zone, senza la specifica di IP sorgenti/destinazione e senza dichiarazioni di protocolli/porte. In questo caso specifico abbiamo dichiarato che dalla zona fw a quella net il traffico dei pacchetti è abilitato (ACCEPT); dalla zona net a qualsiasi altra (all), invece, ignoreremo qualsiasi pacchetto in entrata (DROP). L'ultima regola, la più importante, stabilisce, invece, che da tutte le zone a qualsiasi altra verrà applicata una regola di REJECT. In cosa consiste questa regola? REJECT stabilisce che per le richieste su protocollo TCP, il firewall restituirà un "Reset Status". Per tutti gli altri protocolli, invece, restituirà un "unreachable ICMP"( PING request non andato a buon fine ). È bene prestare molta attenzione alle policy che si dichiarano. Non bisogna mai eccedere con le regole di tipo policy in quanto potremmo, a nostra insaputa, aprire il nostro sistema a tutti o bloccare servizi importanti.

 Pronti ad alzare il muro
Con queste piccole modifiche ai file di configurazione il firewall è quasi pronto, quindi possiamo avviarlo. Per farlo, da console eseguiamo shorewall check. Questo comando analizza (parserizza) tutti i file di configurazione e in caso di errori o dichiarazioni errate riporta a video l'anomalia e il punto esatto dove è stata individuata, fornendo anche alcuni consigli per la soluzione del problema. A questo punto, se tutto è andato a buon fine possiamo eseguire Shorewall con il comando shorewall start. In questo caso il firewall, inizierà a compilare le regole dichiarate, effettuando un'ulteriore controllo sulla configurazione. Se non verranno riscontrati errori il firewall sarà subito pienamente funzionante e pronto a “difendere” il PC. È comunque possibile apportare modifiche ai file anche quando Shorewall è in esecuzione. L'unico requisito, è che dopo ogni modifica a shorewall.conf, bisogna eseguire i seguenti comandi per caricare la nuova configurazione: shorewall reload, shorewall check, shorewall restart. Nel caso invece di interventi anche ai file è necessario soltanto un "check" seguito da u successivo "restart" del firewall.

• Firestarter, più semplice ma meno flessibile di Shorewall

Macro e rules. Ecco come funzionano

Schema di richiesta FTP in presenza di un firewall

Ora che abbiamo Shorewall a guardia del sistema possiamo occuparci delle configurazioni più “avanzate”. Precedentemente abbiamo parlato del file rules. All' interno di questo file possiamo dichiarare chi e che cosa potrà avere accesso alla nostra postazione in modo ancora più preciso e puntuale, riferendoci alle singole macchine. Ad esempio, consideriamo il caso in cui abbiamo un server FTP installato sul PC e vogliamo accedere a questo sistema dal nostro ufficio, magari utilizzando il portatile, per prelevare qualche file. Ovviamente, oltre che assicurare l'accesso ai servizi a chi ha il permesso, dobbiamo evitare che possano farlo anche altri. Ma come facciamo, se nelle policy abbiamo dichiarato che dalla zona net a quella fw verrà applicata una regola di tipo DROP? Niente di più facile. Mettiamo il caso che l'IP del PC su cui è installato Shorewall sia 211.11.11.11 e che l'indirizzo del portatile sia 222.22.22.22. Apriamo il file rules e modifichiamolo aggiungendo sotto la sezione SECTION NEW la righe seguenti:
SECTION NEW
#
ACCEPT net:222.22.22.22 fw tcp 21
In questo modo abbiamo indicato al firewall di permettere all'IP sorgente 222.22.22.22 (in questo caso il portatile) di poter accedere alla porta 21 (quella di default del servizio FTP). A questo punto, bastano un check e un restart del firewall e il gioco è fatto. E se non abbiamo un IP sorgente e di destinazione statici come facciamo? A tutto c'è rimedio. Possiamo usare un qualsiasi servizio gratuito di DynamicDNS (ad esempio, www.dyndns.com) per ottenerne uno per il PC desktop, mentre per il portatile è sufficiente individuare il MAC Address della scheda di rete. Per ottenere quello che ci serve, eseguiamo “ifconfig“ sulla macchina che dovrà accedere in remoto (in questo caso il portatile) ed annotiamo da qualche parte la sequenza di caratteri che seguono la voce Hwaddr. A questo punto basta modificare il file rules in questo modo:
ACCEPT net:~00-A0-C9-15-39-78 fw tcp 21
Bisogna solo ricordare di anteporre sempre al MAC Address la tilde " ~ ", altrimenti la nuova regola darà come risultato un errore. Un'altra interessante funzionalità di Shorewall è costituita dalle macro options. Ma in cosa consistono le macro? In pratica si tratta di ruleset (una serie di regole prestabilite) già pronte, che possono essere utilizzate per stabilire le regole di accesso verso servizi di tipo specifico: server web, server di posta, database server ecc., presenti sulla macchina da proteggere tramite il firewall. visualizzare l'elenco delle macro disponibili basta eseguire i comandi seguenti:
cd /usr/share/shorewall
ls macro.*
Per scoprire come funzionano, apriamo, ad esempio, con un qualsiasi editor la macro per il servizio FTP "macro.FTP", che avrà l'aspetto seguente:
#ACTION SOURCE DEST PROTO DEST
SOURCE ORIGINAL RATE USER/
# PORT
PORT(S) DEST LIMIT GROUP
PARAM - -
tcp 21
In questo caso specifico, le direttive inserite nel file stabiliscono che da qualsiasi sorgente verso qualsiasi destinazione, l'accesso al servizio FTP verrà stabilito in base alle regole impostate nel file rules. È importante notare che in tutti i file di configurazione del firewall, il segno " - " identifica qualsiasi cosa. A questo punto, spostiamoci ancora in /etc/shorewall e modifichiamo il file rules per applicare la macro appena creata. Il risultato dovrà essere simile a quello seguente:
SECTION NEW
#
FTP/ACCEPT net:222.22.22.22
Abbiamo quindi abilitato l'accesso FTP alla nostra macchina (il desktop) dall'IP sorgente 222.22.22.22 (il portatile). Ma non finisce qui, con Shorewall è anche possibile costruire macro personalizzate a partire da quelle esistenti mediante piccole modifiche. Basta aprirne una qualsiasi, modificarne i parametri necessari e salvarla con un nome diverso dall'originale. Ad esempio, per abilitare l'accesso ad un application server tipo Tomcat installato sulla macchina ed in ascolto sulla porta 8080, è sufficiente seguire questi semplici passi:
cd /usr/share/shorewall
cp macro.FTP macro.TOMCAT
vi macro.TOMCAT
A questo punto, possiamo modificare la macro come volgiamo:
#ACTION SOURCE DEST PROTO DEST
SOURCE ORIGINAL RATE USER/
#
PORT PORT(S) DEST LIMIT GROUP
PARAM - - tcp 8080
Infine, dopo aver salvato le modifiche, torniamo nel file rules e dichiariamo la macro:
SECTION NEW
#
FTP/ACCEPT net:222.22.22.22 fw
TOMCAT/ACCEPT net:222.22.22.22 fw
Dopo il solito check e restart del firewall, avremo abilitato l'accesso dall'IP sorgente 222.22.22.22 sia al servizio FTP sia al server Tomcat. Da questo esempio, è facile capire quanto siano utili e veloci le macro per applicare regole specifiche per diverse sorgenti/ destinazioni verso servizi attivi su una macchina “controllata” tramite Shorewall.
La lista nera di shorewall
L'ultimo file sul quale è importante prestare attenzione è blacklist (già dal nome si capisce perfettamente il suo scopo). In questo file possiamo dichiarare sia IP sorgente sia richieste verso la nostra macchina che vogliamo bloccare. Il primo passo da compiere per utilizzare la blacklist è dichiararla come opzione sull'interfaccia di rete che ci interessa. Apriamo quindi il file interfaces e al suo interno, sotto la colonna OPTION, aggiungiamo la voce blacklist:
#ZONE INTERFACE BROADCAST
OPTIONS
net eth0
detect blacklist
Supponiamo di voler bloccare qualsiasi richiesta in arrivo verso un server MySQL installato sul nostro PC. Sappiamo che le connessioni MySQL di default vengono stabilite su protocollo UDP e porta 3306. Ecco come bisogna modificare il file blacklist per controllare l'accesso a MySQL:
#ADDRESS/SUBNET PROTOCOLPORT
- udp 3306
In questo caso specifico, l'accesso è negato a tutti (segno -), ma conoscendo l'IP sorgente dal quale queste richieste vengono inviate (ad esempio, 150.15.15.15 ), possiamo specificare la regola più in dettaglio per limitarla ad una sola macchina o indirizzo IP:
#ADDRESS/SUBNET PROTOCOLPORT
150.15.15.15 udp 3306
Mentre per quanto riguarda IP multipli, classi di rete, protocolli e porte, il file va modificato nel modo seguente:
#ADDRESS/SUBNET PROTOCOLPORT
150.15.15.15,160.60.60.60 udp
53,3306,12000:13500
170.60.0.0/24 tcp
21,22,23,80,8080:9000
Per indicare un range di porte in particolare, ad esempio dalla 3000 alla 4000, bisogna inserire come separatore fra il primo e l’ultimo valore il segno “ : “ ( ad esempio, 3000:4000 ).
File di log, gli alleati di shorewall
Shorewall di default scrive i propri log all'interno del file /var/log/messages ma, naturalmente, offre anche la possibilità di salvarli in altre posizioni. Bisogna semplicemente dichiararne il percorso corretto all'interno del file shorewall.conf: la direttiva da modificare è LOGFILE=/var/log/messages. A questo punto, per ottenere una visione chiara sia delle regole applicate, sia di cosa accade al firewall possiamo utilizzare i seguenti comandi:
  • shorewall show - l'esecuzione di questo comando mostra tutti i controlli applicati dal firewall divisi per categorie;
  • shorewall show log – permette di leggere le ultime venti righe di log scritte da Shorewall;
  • shorewall dump – questo comando effettua un dump complessivo dello stato del firewall. In pratica mostra ruleset, log, configurazioni di IP, catene di regole, moduli utilizzati, riassunto del traffico a seconda dell'interfaccia e molto altro.
A questo punto, abbiamo visto come utilizzare Shorewall in modalità standalone come Personal Firewall per proteggere un singolo PC desktop. L'uso di Shorewall, almeno all'inizio, potrà sembrare un po' complicato, ma fatta un po' di esperienza, plasmare il firewall a seconda delle proprie esigenze diventerà un gioco da ragazzi, oltretutto, con la sicurezza che la nostra macchina è protetta a dovere.
Personal firewall in modalità grafica
Nel corso dell'articolo abbiamo accennato a Firestarter (www.fs-security. com), sottolineando il fatto che Shorewall non è l'unico sistema per configurare un Personal Firewall, anzi in molti casi è meglio rivolgere l'attenzione a programmi più semplici da utilizzare. Certo, Firestarter non offre il controllo capillare, la potenza e la flessibilità dei file di Shorewall, ma l'interfaccia grafica molto intuitiva lo rende ideale per tutti quegli utenti che conoscono poco l'argomento e di quello che c'è dietro, ma cercano solo un sistema per proteggere il PC dai pericoli di Internet. Grazie a Firestarter infatti, è possibile bloccare il traffico proveniente anche da singoli indirizzi IP, opure da intere sottoreti. Inoltre, dalla sezioe Policy è possibile stabilire in modo dettagliato le regole di filtraggio del traffico, ad esempio, garantendo l’uso di determinati servizi di rete e il divieto di usarne altri. Molto spesso, ad esempio, nelle LAN aziendali è diffusa l’abitudine di bloccare servizi come P2P, BitTorrent, Instant Messaging, streming audio/video, che oltre a rappresentare un pericolo per l’intera rete aziendale, possono fartne decadere sensibilmente le prestazioni. A questo punto, senza entrare nei dettagli vediamo come è fatto Firestarter, presupponendo che sia già installato nel sistema.
Firestarter il firewall per tutti
Il tool che permette di proteggere il sistema senza dover mettere mano alla riga di comando
Prima configurazione

Avviamo Firestarter, in genere presente nel menu Internet, e premiamo Forward. Nella nuova schermata indichiamo la scheda di rete e se avviare il firewall al momento della connessione.
Internet condivisa

Se il PC fa parte di una rete locale è possibile condividere la connessione con gli altri PC selezionando Enable Internet connection sharing, in caso contrario premiamo Forward e poi Save.
Facile e intuitivo

Terminata la configurazione, Firestarter è pronto per essere utilizzato. Dalla scheda Status è possibile controllare lo stato del firewall, da Events le connessioni bloccate, mentre da Policy le regole di controllo.
Pagina 1/2
Lascia un commento
Tag: Personal Firewall, filtrare, traffico, shorewall
Condividi