sabato 9 giugno 2012

Firewall serve in ambiente GNU/LINUX?

Buona parte degli utenti che arrivano da Windows sono abituati a dare per scontato l'utilizzo del firewall sul proprio sistema operativo, dove lo si usa indiscriminatamente per "barricare" il sistema e poi consentire via via l'accesso alla rete ai programmi che si vogliono utilizzare.

Questo perché c'è sempre la paura che alcuni servizi si attivino all'insaputa dell'utente e facciano in modo che il proprio pc e i suoi dati sensibili possano essere esposti alla rete.

Nei sistemi GNU/Linux il firewall ritorna ad essere lo strumento da utilizzare nel caso l'utente decida d'installare programmi per mettere a disposizione servizi dal suo pc verso altri pc con regole ben precise.

Per l'utilizzo desktop così come lo troviamo per predefinito su Ubuntu, escludendo alcuni casi specifici, si può affermare che il firewall sia spesso superfluo.

 Le principali vie del traffico di rete sono in entrata e uscita. Più nello specifico il traffico è costituito da:

  • Connessioni in entrata 
  • Connessioni in uscita
Quello che spesso risulta essere poco chiaro è la differenza fra questi due tipi di connessione.

 Per chiarire queste differenze : INPUT, OUTPUT e FORWARD  termini fondamentali per capire quale è il compito di un firewall all'interno di una rete, sia preso come esempio un singolo pc connesso ad una rete più o meno grande (che può essere anche tutta internet).

È possibile pensare al funzionamento della propria rete come a una serie di tubi lungo la quale l'acqua si muove solo in una direzione.
Esisterà un flusso di dati in entrata nel pc e un flusso di dati uscenti.

 Dati in entranta: ottenuti dall'esterno visualizzando una pagina web, oppure scaricando un file.

 Dati in uscita: informazioni spedite dal nostro pc come: una e-mail, una richiesta di accesso ad una pagina web, etc...

 Per le connessioni invece il discorso è diverso. Mentre i dati grezzi viaggiano secondo le direttive precedentemente esposte, la logica che sta dietro a questi movimenti funziona in modo leggermente differente.

Sia preso ad esempio il caricamento di una pagina web.
Digitando un indirizzo nella barra del nostro browser, viene messa in moto una serie di meccanismi che portano alla serie di dati uscenti (la richiesta della pagina) ed entranti (i dati della pagina) che fanno parte tuttavia di un'unica connessione.
Dal momento che la richiesta iniziale che genera il traffico di dati parte dal nostro pc, tale connessione viene detta connessione in uscita.

 Le connessioni in uscita rappresentano praticamente la totalità delle connessioni effettuate da un comune pc preposto alla navigazione, alla spedizione/ricezione delle e-mail, etc...

 Per continuare con lo stesso esempio, sia considerato ora un server che ospita una pagina web.
Su questo pc gira un programma detto server (tipicamente Apache su macchine Unix) che si prende l'incarico di accettare le richieste di connessione provenienti dai pc che navigano in internet e fornire loro la pagina web desiderata ospitata localmente.
In questo caso la richiesta iniziale che genera il traffico di dati parte da un altro pc. Quindi la connessione viene definita connessione in entrata.

 I pc adibiti a questo utilizzo server sono solitamente riservati ad un utilizzo professionale, tuttavia anche nei pc di molti utenti si trovano programmi che fanno cose simili. Ad esempio i programmi p2p funzionano come dei veri e propri server, ascoltando le richieste degli altri utenti della rete interessati ad un file ospitato sul proprio hard disk.

 Dal momento che un pc può ospitare innumerevoli programmi server, è previsto che ciascun programma si metta in ascolto su una diversa porta, il cui numero va da 1 a 65535.
Qualsiasi richiesta di connessione deve specificare, oltre all'indirizzo ip del server, anche la porta a cui ci si connette. I browser tipicamente si connettono alla porta 80, quella dove si mettono in ascolto i server web. Nella tabella vengono riportati alcuni esempi: 

Porte standard

HTTP
SSH
FTP
Telnet
HTTPS

80/tcp
22/tcp
21/tcp
23/tcp
443/tcp

 Per avere un elenco completo delle porte standard consultare la seguente pagina

 Le porte dalla 1 a 1024 sono tutte standardizzate e sono dette porte privilegiate. Il programma che ascolta su una di queste porte deve per forza avere i permessi di root.
Le porte sopra la 1024 vengono usate dai programmi server lanciati dagli utenti normali, come ad esempio i programmi p2p (ciascuno usa specifiche porte sopra la 1024). 

Ci sono anche alcuni computer che fanno qualcosa di ancora diverso. I router, ad esempio veicolano le connessioni in entrata su una presa (Internet) verso i pc della rete interna (LAN) e viceversa. Questo "passaggio di mani", senza che venga fatto niente con i dati in transito, si chiama forwarding, e le connessioni di questo tipo si dicono connessioni di forward.

 Tipicamente un utente di un pc non deve trafficare con simili connessioni, ma in ambito server sono molto comuni.

Capire la differenza e il funzionamento di queste connessioni INPUT, OUTPUT e FORWARD, è utile per capire poi il funzionamento della rete e le regole dei firewall, che altro non sono che strumenti avanzati per manipolare le connessioni del proprio pc.

Gli applicativi installati in modo predefinito nella versione Desktop di Ubuntu sono pensati essenzialmente per consentire di uscire su internet alla ricerca di informazioni, file o quant'altro, piuttosto che per accettare connessioni in entrata dall'esterno.

 I programmi che accettano connessioni dall'esterno sono detti server. Questa categoria comprende per fare alcuni esempi i server web che ospitano le pagine HTML, oppure i server ssh o telnet, i quali consentono l'apertura di una shell su di un pc remoto.

Nella versione Desktop di Ubuntu sono presenti alcuni server, ma volti principalmente all'utilizzo delle periferiche hardware come X (grafica video), cups (stampa), sane (scanner), ecc.., di default chiusi verso connessioni esterne.

Chiunque desideri offrire un servizio di rete ad utenti remoti deve necessariamente installare un apposito programma server sul proprio pc; questo programma si mette in ascolto su una porta, e tutte le connessioni INPUT entranti si connettono a questa porta per entrare in comunicazione con il server.

 Non è possibile connettersi da remoto ad un pc se non c'è almeno un server in ascolto su una qualsiasi porta. Per fare un esempio banale è come bussare ad una casa disabitata: nessuno verrà ad aprire.

I server menzionati in precedenza (tipo web, ssh, telnet..) di default non vengono installati, pertanto è perfettamente inutile installare un firewall per regolamentare l'accesso a porte sulle quali nessun programma è in ascolto (come avere un poliziotto in un quartiere deserto).
Anche nel caso in cui si installi esplicitamente un programma server, come ad esempio tutti i programmi p2p è ancora inutile utilizzare un firewall allo scopo di chiudere le porte. Difatti questo avrebbe il solo scopo di impedire ai server installati di accedere alla rete e compiere il loro dovere! 

 Solitamente gli utenti di Windows sono abituati ad utilizzare un firewall, questo sostanzialmente per due motivi: 

 Windows tende ad effettuare molte operazioni all'insaputa dell'utente, e di default ha attivi molti server in ascolto sulla rete (connessioni INPUT). Visto che le porte di questi server sono, per ovvi motivi, quelle più attaccate dai bot automatici su internet, molti utenti cercano un minimo di sicurezza impedendo l'accesso dall'esterno a questi server che non è possibile "disattivare" o "disinstallare". 

 Non solo Windows agisce come server all'insaputa dell'utente, ma spesso si connette automaticamente ad internet per eseguire operazioni poco chiare. Inoltre molti virus o spyware cercano automaticamente di connettersi all'esterno per eseguire i loro loschi compiti. Per questi motivi gli utenti di Windows sono soliti tenere sotto controllo anche le connessioni in uscita (OUTPUT), visto che la natura closed-source del loro sistema operativo e la sua naturale tendenza ad essere infettato da tutto e tutti lo rendono privo delle necessarie garanzie di trasparenza su cui fare affidamento. 

 Nel primo caso spesso il firewall integrato nella maggior parte dei router è sufficiente a bloccare il traffico in entrata.
Mentre nel secondo caso per tenere a bada le connessioni "indesiderate" in uscita, risulta più agevole l'utilizzo di un firewall installato sul sistema operativo stesso. 

 I vantaggi di GNU/Linux sotto questi aspetti sono piuttosto evidenti. Il sistema non effettua alcuna operazione sospetta o nascosta all'utente e proprio per la sua natura opensource (e quindi di trasparenza), eventuali comportamenti anomali sarebbero facilmente individuabili dalla comunità che lavora al suo sviluppo.
Inoltre la sua proverbiale immunità ai virus fa sì che le sue connessioni in uscita siano considerate con abbondanti margini sicure. 

 Molti utenti di internet si trovano già ad usufruire, anche inconsapevolmente, degli effetti di un firewall.
Ad esempio i router che la maggior parte degli utenti usano per connettersi tramite una connessione ADSL, integrano nella maggior parte dei modelli un firewall (in genere basato su Iptables, incluso nelle distribuzioni Linux-embedded contenute nella maggior parte dei router). 

 In genere di default i firewall dei router bloccano tutte le connessioni in entrata ma permettono quelle in uscita, pertanto interferiscono solo con il funzionamento dei programmi server. La maggior parte degli utenti si rende conto di essere dietro ad un firewall quando prova ad usare programmi p2p (come ad esempio Amule) e scopre che non funzionano correttamente, oppure vanno a rilento. 

 Il firewall incluso in questi dispositivi ha effetto su tutti i pc che vi si connettono, pertanto a meno che non ci sia la necessità di configurazioni particolari, risulta inutile configurare un firewall diverso su ciascun dispositivo. Oltre che ridondante come soluzione vi è il rischio di eccessive complicazioni. 

  Occorre ricordare che il firewall, ancor prima che un vero e proprio dispositivo di sicurezza (tipo gli antivirus, antispyware...), è uno strumento per regolare il traffico di rete.

Il suo utilizzo può entrare in gioco quando dalla propria macchina c'è la necessita di mettere "qualcosa" a disposizione di altri pc e a seconda dei casi quando occorrono delle regole ben precise sul "come" regolare il relativo traffico di rete. 

 Può essere necessario quando occorre condividere una connessione ad internet. In questo caso saranno proprio le regole per le connessioni di FORWARD che permetteranno ad un altro pc di sfruttare la connessione ad internet. 

 A volte si tratta di mettere a disposizione dati o servizi dal proprio pc, ma solo verso uno o un solo gruppo di pc presente in una rete. Le regole del firewall possono venire incontro a queste esigenze, tuttavia vale la pena ricordare che a seconda dei casi alcuni software offrono dei tool che possono o rendere non necessario l'uso del firewall o comunque essere preferiti a quest'ultimo. In questo caso Samba, software per la condivisione di file noto anche all'utenza desktop ne è un buon esempio. 

 In alcune configurazioni il firewall potrebbe ancora essere utile come strumento per ottimizzare la banda in entrata/uscita ed effettuare quello che viene comunemente detto traffic shaping, tuttavia questo genere di configurazioni sono solitamente molto complesse, e fuori dalla portata dell'utente comune.

 In definitiva i casi in cui anche in ambiente desktop si arrivi ad utilizzare il firewall possono sussistere. È comunque evidente come la casistica sia piuttosto ristretta.


Nessun commento:

Posta un commento

Non sei daccordo? Dite la Vostra...