Visualizzazione post con etichetta firestarter. Mostra tutti i post
Visualizzazione post con etichetta firestarter. Mostra tutti i post

sabato 9 giugno 2012

Firewall Firestarter

Nelle distribuzioni GNU/Linux prettamente rivolte all'utenza desktop, come nel caso di Ubuntu, la configurazione del firewall può risultare nella maggior parte dei casi superflua.



 Tuttavia all'occorrenza, nel caso si trovino eccessive difficoltà a configurare uno strumento potente ma complesso come IPtables, è possibile utilizzare Firestarter, un comodo firewall ad interfaccia grafica basato sulle librerie GTK perfettamente integrato con l'ambiente grafico GNOME.

Per installare Firestarter è sufficiente installare il pacchetto firestarter.

 Il programma sarà disponibile nel menù Sistema → Amministrazione → Firestarter.

 Al primo avvio di Firestarter viene avviata la procedura guidata per configurare il dispositivo di rete al quale si è connessi. Quindi alla voce «Dispositivi rilevati» selezionare nel menù a tendina il proprio dispositivo di rete.





A seconda del tipo di dispositivo di rete utilizzato e delle proprie esigenze, selezionare o meno le altre voci:
  • «Avviare il firewall quando si attiva la connessione»
  • «Indirizzo IP assegnato tramite DHCP»


Nella schermata successiva può essere attivata la condivisione a internet di una eventuale rete LAN selezionando la voce:
  • «Abilitare condivisione connessione internet»




A questo punto è possibile salvare la configurazione e concludere la configurazione guidata avviando Firestarter.





Prima di procedere alla configurazione vera e propria delle regole, dal menù Modifica → Preferenze → Interfaccia è consigliabile selezionare le voci «Abilitare l'icona di notifica» e «Minimizzare a icona alla chiusura della finestra». In questo modo verrà abilitata la comoda icona nell'area di notifica nella barra delle applicazioni.





Firestarter è composto da tre schede: Stato, Eventi e Politica.
  • Stato: dà informazioni riguardo lo stato del firewall e della connessione.
  • Eventi: permette di vedere gli eventuali tentativi di accesso bloccati dal firewall.
  • Politica: permette di impostare le regole firewall.









Particolare attenzione verrà data alla scheda «Politica», essendo la sezione nella quale vengono impostate tutte le regole di accesso. Dal menù a tendina sarà possibile selezionare:






 Selezionando dal menù a tendina «Politica per il traffico in uscita» c'è la possibilità di utilizzare due differenti impostazioni:
  • «Permissivo in modo predefinito, traffico da blacklist»: con questa impostazione tutte le porte in uscita saranno aperte e le applicazioni libere di comunicare con l’esterno fin da subito, eccetto quelle inserite nela "lista nera".
  • «Restrittivo in modo predefinito, traffico da whitelist»: con questa impostazione tutte le porte in uscita saranno chiuse e in seguito verranno aperte quelle necessarie alle applicazioni da utilizzare. 





    Al primo avvio Firestarter ha per predefinito questa impostazione:

  • Traffico in entrata chiuso : i servizi messi a disposizione di altri pc (file condivisi, pagine web, ecc...) sono bloccati. Firestarter consente di aprire le porte da loro utilizzate e di scegliere quale pc della rete LAN possa usufruirne.
    Occorre ricordare che i programmi P2P possono risentire della chiusura del traffico entrante, pertanto dovranno essere aperte le porte da loro utilizzate. 

  •  Traffico in uscita aperto : Permette ai programmi tipo browser, file manager e atri, di poter navigare la rete per visionare pagine web, scaricare posta elettronica, visualizzare dati messi in condivisi, ecc... da altri pc nella rete. Volendo è possibile adottare la soluzione opposta, cioè chiudere in modo predefinito le porte in uscita, però a meno di casi molto particolari in genere non c'è bisogno.

    Per approfondire quest'ultimo aspetto è vivamente consigliata la lettura della guida introduttiva al firewall in ambiente desktop.
I seguenti esempi si rifanno all'aggiunta di regole nella tabella «Politica per il traffico in ingresso» ma si ricorda, qualora ci sia la necessità di settare regole per il traffico in uscita, che le procedure sono pressoché analoghe.


A lato è raffigurata la tabella «Politica» e «Politica per il traffico in entrata».

Nella finestra in basso «Consenti servizio» sono già state impostate alcune regole. Per esempio è presente quella che permette al protocollo SMB la condivisione dati attraverso le porte 137, 139 e 445 con i pc della LAN. Nel caso specifico viene concesso il servizio al pc contraddistinto dall'IP 192.168.0.6. Il medesimo indirizzo è stato riportato anche nell'area «Consenti connessioni dall'host».
Inoltre sono presenti un paio di regole per permettere l'utilizzo di un programma P2P, in questo caso aMule e il protocollo FTP.








Per aggiungere nuove regole occorrerà selezionare l'area «Consenti servizio» e quindi selezionare il menù Politica → Aggiungi regola.















 In modo analogo è possibile aggiungere indirizzi di altri pc collegati alla LAN nell'area «Consenti connessioni dall'host» in modo che possano usufruire dei servizi messi a disposizione.














Aggiungendo una nuova regola appare la finestra mostrata in figura. Dal menù a cascata «Nome» può essere selezionato un servizio da una lista già esistente e automaticamente alla voce















«Porta» verranno inserite le relative porte. In questo caso è stato selezionato il protocollo FTP e automaticamente sono state inserite le porte 20 e 21. Ovviamente è sempre possibile scegliere se concedere il servizio a «Chiunque» o se limitarlo ad un «IP» in particolare.

  In certi casi nel menù a cascata non è presente la voce del protocollo da utilizzare. Sarà comunque sufficiente aggiungere manualmente le porte e a seconda dei casi nel campo «Nome» o verrà automaticamente inserito un nome oppure ne sarà digitato uno qualsiasi dall'utente.



  Se si necessita di un elenco completo e aggiornato delle porte, è possibile consultare la seguente pagina.




Nella scheda «Eventi» è possibile tener traccia delle eventuali connessioni verso il proprio pc.
In questo caso è presente l'indirizzo IP di un altro computer presente nella LAN (192.168.0.6) al quale è possibile concedere di usufruire dei dati messi in condivisione tramite Samba.
È possibile inserire nuove regole anche da questa tabella attraverso il clic destro. Selezionando «Consenti connessioni dalla sorgente» verrà impostato il nuovo IP nella scheda «Politica» / «Consenti connessioni dall'host» e selezionando «Consenti i servizi in ingresso per la sorgente» verrà impostata la regola riguardante il protocollo SMB nella scheda «Politica» / «Consenti servizio».


 Attraverso Firestarter è possibile permettere ad un altro computer di condividere la propria connessione ad internet. Tuttavia la seguente procedura è consigliabile solo a chi ha la necessità di creare particolari regole di firewalling.

  Chi fosse interessato solo ed esclusivamente a condividere la propria connessione può farlo in maniera molto più semplice attraverso Network Manager, sia via ethernet, sia via wireless.

Verrà chiamato server il computer connesso ad internet e client il computer al quale verrà concesso di condividere la connessione. Ovviamente occorre che i due pc siano forniti di una scheda di rete ciascuno.

Dal menù Sistema → Preferenze → Network Configuration è possibile configurare le schede di rete dei due pc, in modo che risultino per esempio così:



Server

Client

Indirizzo IP
192.168.0.1

Indirizzo IP
192.168.0.2

Subnet Mask
255.255.255.0

Subnet Mask
255.255.255.0

Gateway
(lasciare vuoto)

Gateway
192.168.0.1

DNS
xxx.xxx.xxx.xxx

DNS
xxx.xxx.xxx.xxx


I DNS sono forniti dal provider e variano a seconda della ditta che offre la connessione ad internet.
Una volta predisposte le schede di rete dei due pc, sul pc server occorre configurare Firestarter


  1. Dalla procedura guidata nella sezione «Configurazione dispositivo di rete» alla voce «Dispositivi rilevati» selezionare nel menù a tendina l'interfaccia di rete connessa ad internet. 

  2. Nella schermata successiva «Configurazione per la condivisione della connessione internet» selezionare l'interfaccia di rete configurata in precedenza, ossia la scheda di rete del server e quindi concludere la procedura.
A questo punto nella scheda «Politica» e «Politica per il traffico in entrata» basta inserire nella tabella «Consenti connessioni dall'host» l'IP del pc client nel nostro esempio 192.168.0.2. 

 Samba, è un programma per la condivisione dati, mette già attraverso i suoi strumenti di configurazione alcuni metodi per imporre all'interno di una rete LAN delle restrizioni su chi può accedere ai dati condivisi. A seconda delle esigenze però Firestarter può rivelarsi un'alternativa piuttosto pratica per impostare attraverso regole sugli IP statici chi può accedere ai dati messi in condivisione.

 Si presuppone che la rete LAN sia impostata con indirizzi statici e che il pc che funge da server abbia Firestarter installato.

Per prima cosa dal menù Modifica → Preferenze → Firewall → Opzioni avanzate → Traffico broadcast occorre deselezionata la voce «Bloccare trasmissioni broadcast dalla rete esterna». Quindi per permettere l'accesso ad uno degli utenti della rete LAN con indirizzo IP del tipo 192.168.x.x, inserire in «Politica per il traffico in ingresso» le seguenti regole:

Consenti connessioni dall'host

Consenti servizio
Porta
Per

192.168.x.x

Samba (SMB)
137-139 445
192.168.x.x

 In questo stesso modo possono essere aggiunti altri indirizzi IP. Ovviamente nella tabella «Eventi» è possibile tenere d'occhio i tentativi di accesso provenienti degli indirizzi IP che non hanno il permesso.


Gufw guardiamo in faccia iptables

Gufw è un'interfaccia grafica per Ufw, l'applicazione predefinita di Ubuntu per la configurazione del firewall.

 Installare il pacchetto gufw.



 Una volta terminata l'installazione sarà possibile trovare il programma all'interno del menù Applicazioni → Amministrazione → Configurazione firewall.










Il firewall è inizialmente disabilitato e bloccato per sbloccarlo cliccare su unlock ed inserire la password di root.













Per attivarlo, fare clic su Attivato.

 In via predefinita, il traffico in uscita sarà consentito e il traffico in entrata sarà bloccato.













Per configurare il firewall bisogna aggiungere delle regole. È sufficiente fare clic sul pulsante Aggiungi e verrà aperta una nuova finestra in cui sarà possibile farlo.









 Si potranno configurare le regole per le porte TCP e UDP. In generale, le opzioni disponibili per la creazione delle regole sono:

 Allow (Permetti): il sistema consentirà il traffico in entrata su una porta.

 Deny (Nega): il sistema bloccherà il traffico in entrata su una porta.

 Reject (Rifiuta): il sistema bloccherà il traffico in entrata su una porta e informerà il richiedente che la connessione è stata rifiutata.
  
Limit (Limita): il sistema bloccherà le connessioni se un indirizzo IP tenta di avviare 6 o più connessioni negli ultimi 30 secondi.

 Di seguito, una breve panoramica delle sezioni del programma.

In tutti i casi elencati, facendo clic su Mostra azioni estese, sarà possibile aggiungere ulteriori impostazioni per le quali si rinvia alla lettura della seguente pagina.

Sezione Preconfigurate

In questa sezione, sono già disponibili e preconfigurati alcuni programmi e sevizi per rendere facile la creazione delle regole.

Selezionando Permetti, Dentro, Servizio, ssh il firewall sarà configurato per consentire il traffico ssh in ingresso.

 Sezione Semplice


In questa sezione è possibile aggiungere delle regole specifiche (oltre a quelle preconfigurate).

Selezionando Permetti, Dentro, TCP, inserendo la porta 22 nell'apposito campo, facendo clic su Aggiungi il firewall sarà configurato per consentire il traffico in ingresso sulla porta 22.

Sezione Avanzate


In questa sezione è possibile configurare il firewall per consetire l'accesso a determinati indirizzi IP o intervalli.

Selezionando Permetti, Dentro, TCP, inserendo nel campo Da 192.168.1.100 e nel campo A 192.168.1.150, inserendo negli appositi campi la porta 22, facendo clic su  
Aggiungi il firewall sarà configurato per consentire il traffico in ingresso sulla porta 22 per gli utenti della rete locale appartenenti all'intervallo indicato.

Opzioni e preferenze

 

Nel menù Modifica → Preferenze è possibile:

 

 Attivare il rapporto d'ascolto: nella schermata principale verranno mostrate le porte attualmente in ascolto.

Attivare la registrazione in Gufw e Ufw impostandone il livello. Per impostazione predefinita, il programma ha attivata la registrazione per Ufw e disattivata quella per Gufw.




Abbiamo  2 possibilità di scelta per avere i report meno dettagliati (logging) e più completi Listening report, quest'ultima voce riporterà anche i valori del carico della cpu












Il Registro se attivato sarà disponibile nel menù File, abbiamo nel registro 5 opzioni Spento, Basso, Medio, Alto e Completo.








Facendo clic su Ripristina configurazione... nel menù Modifica sarà possibile cancellare tutte le regole impostate e ripristinare la configurazione iniziale.






Ufw, gestire iptables da riga di comando

Ufw (Uncomplicated firewall) è l'applicazione predefinita in Ubuntu per la configurazione del firewall. Sviluppato per semplificare la configurazione di iptables, Ufw offre un modo semplice per creare un firewall basato su protocolli IPv4 e IPv6 da riga di comando.


Ufw è inizialmente disabilitato.

 E' consigliato impostare la modalità predefinita di Ufw prima di abilitarlo.

 Per bloccare tutto il traffico in entrata :

 sudo ufw default deny

 Per consentire tutto il traffico in entrata :

sudo ufw default allow

 Per abilitare Ufw  :


sudo ufw enable

 A meno che Ufw non si sia impostato inizialmente su deny, sarà in modalità allow e consentirà tutto il traffico in entrata e in uscita se prima non si è impostato il set di regole.

 Per disabilitare Ufw :

sudo ufw disable


 In generale, la sintassi è la seguente :

sudo ufw allow/deny porta/protocollo (facoltativo)


 Per consentire i pacchetti tcp e udp in ingresso sulla porta 53 :

sudo ufw allow 53


 Per consentire i pacchetti tcp in ingresso sulla porta 53 :

sudo ufw allow 53/tcp


 Per consentire i pacchetti udp in ingresso sulla porta 53 :


sudo ufw allow 53/udp

 Per bloccare i pacchetti tcp e udp sulla porta 53 :

sudo ufw deny 53


Per bloccare i pacchetti tcp sulla porta 53 :


sudo ufw deny 53/tcp

  Per bloccare i pacchetti udp sulla porta 53 :

sudo ufw deny 53/udp

  E' anche possibile utilizzare una sintassi più completa specificando l'origine e la destinazione degli indirizzi e delle porte.

 In generale, la sintassi è la seguente:


sudo ufw allow/deny from indirizzo_ip to protocollo port numero_porta (protocollo e numero_porta facoltativi)

 Per consentire il traffico proveniente dall'indirizzo IP 207.46.232.182 :


sudo ufw allow from 207.46.232.182


Per bloccare il traffico proveniente dall'indirizzo IP 207.46.232.182 :


sudo ufw deny from 207.46.232.182


 Per consentire il traffico proveniente dall'indirizzo IP 192.168.0.4 alla porta 22 per tutti i protocolli :


sudo ufw allow from 192.168.0.4 to any port 22

 Per bloccare il traffico proveniente dall'indirizzo IP 192.168.0.4 alla porta 22 per tutti i protocolli:


sudo ufw deny from 192.168.0.4 to any port 22


 Per consentire il traffico proveniente dalla sottorete 192.168.1.0/24 :


sudo ufw allow from 192.168.1.0/24

 Per bloccare il traffico proveniente dalla sottorete 192.168.1.0/24


sudo ufw deny from 192.168.1.0/24

 Per eliminare una regola, usare delete seguito dalla regola.


 Per esempio, se la regola originale era:


ufw deny 80/tcp


 Usare questo comando per cancellarla :

sudo ufw delete deny 80/tcp

 Verificare lo stato di Ufw permetterà di sapere se il firewall è attivato o disattivato e verrà mostrato l'elenco delle regole attualmente applicate da Ufw a iptables.

 Per visualizzare lo stato del firewall, digitare il seguente comando in una finestra di terminale:


sudo ufw status

 Se abilitato, un possibile output sarà il seguente:


Firewall attivato

 To                         Action  From
 --                         ------  ----
 22:tcp                     DENY    192.168.0.1
 22:udp                     DENY    192.168.0.1
 22:tcp                     DENY    192.168.0.7
 22:udp                     DENY    192.168.0.7
 22:tcp                     ALLOW   192.168.0.0/24
 22:udp                     ALLOW   192.168.0.0/24

 Viceversa, il risultato sarà il seguente:


Stato: inattivo

I registri del firewall sono molto utili per riconoscere gli attacchi, migliorare le regole del firewall e per verificare attività inusuali nella propria rete. 

 Per attivare la registrazione, digitare il seguente comando in una finestra di terminale: 


sudo ufw logging on

 Per disabilitare la registrazione, digitare il seguente comando in una finestra di terminale:


sudo ufw logging off

Firewall predefinito in Ubuntu Iptables

Iptables è il firewall, da linea di comando, installato in modo predefinito su Ubuntu. Questo how to mostrerà brevemente come avere un firewall minimale ma robusto.

Come abbiamo visto,  un computer connesso ad internet scambia continuamente dati col resto del mondo.

 I dati che dal mondo esterno entrano nel nostro computer possono essere di tipo "buono", come ad esempio una pagina di un sito che abbiamo richiesto, un amico che ci contatta in chat o un file che stiamo scaricando con un programma di filesharing, e di tipo "cattivo", come ad esempio un cracker che ci contatta in vari modi e a nostra insaputa per cercare di entrare nel nostro computer.

 Il compito del firewall è riconoscere il traffico buono da quello cattivo, e bloccare il traffico cattivo. Per farlo, ha bisogno che siamo noi a dirgli cosa è buono e cosa no, mediante delle regole per fare i controlli sul traffico di dati.

 Iptables raggruppa tutti i controlli che può fare sul traffico in entrata, nella cosiddetta Chain INPUT, catena di input. I controlli sul traffico in uscita sono invece raggruppati nella Chain OUTPUT. La Chain FORWARD serve per esempio quando il traffico di dati non è indirizzato a noi ma passa comunque per il nostro computer.

 Ognuna di queste catene ha una policy, una politica, cioè un'azione predefinita da eseguire quando tutti gli altri controlli della catena hanno fallito nel riconoscere se il dato era buono o meno.

 A seconda delle proprie esigenze può tornare comodo l'utilizzo di alcuni software che semplificano il settaggio di Iptables:

 Firestarter: tool con interfaccia grafica.

 Ufw: tool da linea di comando con comandi semplificati per le impostazioni di Iptables.

 Gufw: interfaccia grafica per Ufw.

 Il firewall è incluso in Ubuntu ed è attivo all'avvio del sistema senza richiedere alcuna azione da parte dell'utente. Anche iptables è incluso in Ubuntu, e bisogna usarlo da riga di comando per configurare il firewall.

Per usare iptables sono necessari i privilegi di amministrazione.

Dal momento che i comandi che trovate in questa guida servono a modificare la configurazione del firewall "a caldo", senza scrivere niente in file di configurazione, ma caricando direttamente le impostazioni in memoria, al successivo avvio del computer la configurazione fatta non sarà più disponibile.

Per ovviare a questo problema si possono inserire i comandi in uno script da lanciare all'avvio del computer.

 Per avere sott'occhio in ogni momento la configurazione del firewall, è sufficiente digitare in un terminale:

sudo iptables -L

Per esempio, con Ubuntu appena installato, il firewall è sì attivo, ma non ha ancora una vera configurazione, perciò l'output dovrebbe essere:


Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

In modo predefinito il firewall lascia passare tutto, come indicano le scritte "policy ACCEPT" e l'assenza di altre regole.

 A volte le informazioni mostrate non sono sufficienti; in questi casi basta aggiungere -v oppure -vv al precedente comando. Per esempio:

sudo iptables -vv -L

 Per iniziare, possiamo bloccare tutto il traffico proveniente dal mondo esterno (per poi in seguito consentire solo il traffico che riteniamo buono), impostando una policy che faccia scomparire nel nulla tutti i pacchetti in entrata:

sudo iptables -P INPUT   DROP

 In questo momento non possiamo navigare nel web, e più in generale il nostro PC non si accorgerà di qualsiasi dato ci venga spedito da chicchessia. Niente paura, fra qualche riga vedremo come istruire iptables a lasciare passare il traffico a cui siamo interessati.

 Un'altra buona policy da impostare è:

sudo iptables -P FORWARD   DROP

  Per quanto riguarda il traffico che dal nostro PC esce verso il mondo esterno, possiamo benissimo permetterlo senza preoccuparci troppo; infatti, se MS Windows è succube di programmini malefici che una volta insediatisi in un PC tentano di comunicare (dati sensibili, attacchi informatici, eccetera) col mondo esterno, ciò in GNU/Linux non avviene, o meglio la probabilità che avvenga è del tutto risibile.

 Innanzitutto dobbiamo consentire tutto il traffico interno al nostro computer, che passa per l'interfaccia di loopback "lo". Quindi da terminale digitiamo:

sudo iptables -A INPUT  -i lo -j ACCEPT


 La seconda cosa che potremmo voler fare è navigare nel web e più in generale lasciare entrare tutto il traffico che è stato da noi richiesto:


 sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


 Ci sono situazioni in cui vogliamo permettere a un utente esterno di contattare il nostro PC e di inviarci dati, per esempio se abbiamo installato un server SSH, un server web o un programma che per svolgere il suo compito deve fungere anche da server, ad esempio un programma di filesharing come aMule.

 Il nostro server SSH usa la porta 22 (a meno che non lo abbiamo configurato diversamente), quindi dobbiamo dire a iptables di lasciare entrare il traffico tcp sulla porta 22 (il relativo traffico di risposta lo abbiamo già permesso prima), quindi:


sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

 In ogni momento possiamo controllare come abbiamo configurato il firewall, come spiegato precedentemente.
 Il server web usa la porta 80 (anche qui, a meno di configurazioni personalizzate), quindi consentiamo tutto il traffico che dall'esterno chiede di entrare attraverso la nostra porta 80:


sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

 Il programma di filesharing aMule deve accettare connessioni in entrata per poter funzionare al meglio. Per impostazione predefinita usa le porte 4662(con protocollo tcp) e 4672(con protocollo udp), quindi le seguenti regole indicano al firewall di accettare il traffico in ingresso su quelle due porte:


sudo iptables -A INPUT -p tcp --dport 4662 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 4672 -j ACCEPT


 Abbiamo così ottenuto un piccolo firewall che lascia uscire tutti i dati dal nostro computer verso l'esterno, e lascia entrare tutti i dati che abbiamo richiesto controlliamo:

sudo iptables -vv -L


L'output di risposta dovrebbe essere: 
Chain INPUT (policy DROP)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh 
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:www 

Chain FORWARD (policy DROP)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT)
 pkts bytes target     prot opt in     out     source               destination  



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.