| HOME PAGE | CONTATTI | COLLABORA | ASP | PHP | HTML | CSS | PERL | JAVA | TCP/IP | RETI | LINUX | MANUALI| SPAZIO WEB |
|
I FIREWALLPrima
di cominciare a parlare di firewall, è bene fare una premessa, chi vi scrive
non è Bruce Schneier (riconosciuto come il maggior esperto mondiale in tema di
sicurezza), quanto piuttosto, una persona che ha letto molti libri e che
vorrebbe contribuire (a suo modo) alla diffusione dell’informazione in merito
agli argomenti trattati. Non
garantisco ovviamente per quanto sarà fatto in conseguenza della lettura di
questo articolo. Ulteriore
avviso, riguarda i contenuti di questa guida, essa non può e non vuole essere
“una bibbia” per il sistemista o l’amministratore di rete, vuole soltanto
cercare di chiarire i canoni di base, da cui si partirà per ottenere maggiori
conoscenze. Passiamo
dunque a dare una definizione di Firewall,
“il muro di fuoco”: Computer che filtra tutti i pacchetti entranti
ed uscenti, da e verso una rete o un computer, garantendo la sicurezza della
stessa. I
più attenti avranno notato una piccola incongruenza nella definizione, infatti,
esistono firewall che si occupano di filtrare (ipchains, iptables) ed altri che
per consentire la sicurezza, consentono un accesso alla rete esterna, solo
indirettamente (proxy server)
I
FIREWALL FILTRANTI Un firewall
FILTRANTE, ha la funzione di “filtrare"
(appunto) tutti i pacchetti, come appena illustrato, con una pecca: non tiene
traccia dei log,
ovvero non registra l’attività di nessuno dei suoi sottoposti.
Ma questo cosa vuol dire ai fini pratici? Significa che, da parte
dell’amministratore di sistema, non si avrà modo di intercettare eventuali
bachi di configurazione, se non con delle prove sul campo, mentre, per
l’utente finale, si risolverà più o meno come segue: quando aprirà un
Browser per visualizzare una pagina web, farà partire una richiesta dal suo
computer (la pagina web), verso Internet, da Internet, a sua volta, viene
inviata la risposta (la pagina web che vuole visualizzare), in comodi pacchetti,
ovvero: la pagina web richiesta, viene divisa in tanti piccoli pezzi, questi
vengono segnati e trasmessi uno alla volta, questi pacchetti saranno analizzati
dal firewall che deciderà in base alla destinazione e alla provenienza, se
farli passare o bloccarli. Il
sistema “pacchettizzato",
consente di raggiungere velocità nettamente superiori, in quanto, qualora un
pacchetto non dovesse raggiungere la destinazione, sarebbe reinviato da capo,
lui soltanto, non tutto il plico.... chiaro? I
pacchetti possono dunque essere di diverso tipo, visto che i protocolli sono
diversi (il tcp/ip è in realtà una souite di protocolli e non uno soltanto) si
pensi ad esempio al tcp, all'icmp e all'udp, oltre a tutte le porte verso i
quali sono diretti. Il
firewall lascia passare soltanto i pacchetti richiesti o quelli autorizzati, o
meglio, dovrebbe, se lo settate a puntino. In
Windows, non si hanno dei firewall “incorporati”,
si possono tuttavia acquistare diversi “pacchetti”
che ne contengono alcune versioni. La
stessa Microsoft, distribuisce un suo firewall, ovviamente a pagamento. La
struttura di un buon firewall, vorrebbe un computer con il solo S.O. ed il
programma per il filtraggio dei pacchetti (il firewall), sistemato tra una linea
esterna e la rete aziendale, di modo da porsi come scudo per gli attacchi
esterni. Questa
struttura consente infatti ad un aggressore, il solo accesso al firewall stesso,
impedendogli una corsa sfrenata verso il suo vero obiettivo. Con
Linux si hanno diversi sistemi per la protezione di una rete aziendale e, ad
oggi, un firewall realizzato con tecnologia Linux (o *BSD) è assolutamente
preferibile per diversi motivi: tutto
il software è assolutamente gratuito, dunque si abbatte il costo di acquisto
delle licenze si
hanno due diversi tipi di protezione da firewall - ipchains o iptable (nuova
edizione, se vogliamo, del passato ipchains) al livello stesso del kernel, i
tcp_wrappers a livello applicativo (rappresentano un ulteriore filtraggio dei
pacchetti in base a chi li spedisce o chi li riceve) si
ha la possibilità di implementare con un semplice applicativo, la funzione di
masquerading, ovvero, nascondere a possibili aggressori, gli indirizzi ip
privati della vostra rete. (in genere questo può essere realizzato anche
attraverso un router, avendo a disposizione degli ip dinamici, il cui costo è
sempre da tener presente) non
si necessita di macchine costose, basterà un vecchio 486 con 500 Mb e 16 Mb di
ram.
Avremo
dunque un computer con due schede di rete, di cui una riceve informazioni da
Internet, mentre l’altra le trasmette dalla rete interna. Ognuna delle due
schede avrà un indirizzo ip statico, di modo tale che si possa consentire
l’accesso ad un possibile server web (re-indirizzando le richieste che
giungono verso la porta 80 o 8080) ed allo stesso tempo, si possa far uscire
tutte le richieste che vengono dalla rete interna, come se fosse il firewall
stesso a generarle, ovvero, come se - per assurdo - 2 persone usassero lo stesso
pc, ricevendo posta e leggendo articoli in Internet.
La
protezione a livello del kernel è ovviamente la più sicura, tuttavia necessita
di un ottima conoscenza dello strumento che si sta usando. Poniamo
per assurdo di voler negare l’accesso agli indirizzi privati della rete
amministrativa, eccetto per il computer che emette fatture, esso sarà a sua
volta collegato con un pc che dalla nostra stanza fornirà indicazioni sui
clienti. Qualora la regola venisse indicata nel seguente ordine:
nega
accesso a tutti coloro che hanno indirizzo compreso tra 192,168.0.1 e
192.168.0.255
e
poi inserissimo una seconda regola per dare accesso al pc amministrativo che
emette fatture, con una regola del tipo
consenti
l’accesso alla porta TCP ...... dall’indirizzo 192.168.0.15
la
seconda regola verrà scartata, in quanto soppiantata dalla prima! in
poche parole, il programma viene letto in ordine e, quando una regola aggiunta
successivamente, contrasta con una precedente, viene ignorata.
Ecco
dunque che si deve conoscere a fondo il proprio lavoro per poter lavorare bene.
Le
regole di ipchains ed iptables sono identiche ed ovviamente lo è anche la
sintassi. Per
chiarire meglio andiamo ad analizzare la sintassi delle regole:
iptables
- viene indicato sempre ovviamente, per indicare il programma i
comandi di seguito vengono sempre indicati con il - avanti, non per
impaginazione, ma perchè dovranno essere così indicati all’atto della
specifica della regola.
-A
- sta per Append, ovvero aggiungi la regola alla precedenti -D
- sta per Delete, ovvero cancella la regola che andrete ad indicare di seguito -L
- richiede la lista delle regole elencate -F
- Flush, ovvero cancella tutte le regole una ad una
i
parametri
-p
- protocollo, con questo parametro, potrete indicare quale protocollo bloccare,
per quali macchine o per quali indirizzi ip -s
- source, sorgente, da quale indirizzo di provenienza si deve rifiutare,
bloccare o lasciar passare una data cosa -i
- interface, interfaccia in ingresso, attraverso cui devono passare o meno
determinate cose. Questo torna molto utile, se come dicevamo, potete usare più
schede di rete -o
- output, interfaccia in uscita, attraverso la quale si devono operare le regole
di cui sopra.
Come
si vede dunque, è sufficientemente semplice configurare delle regole per la
protezione aziendale, pur se da sole non bastano. Ricapitolando,
dunque, qualora decideste di adottare un firewall di questo tipo (filtrante) è
necessario, per avere una discreta protezione, seguire alcuni passi di base:
analizzare
a priori quali siano le regole principali, che maggiormente si addicono
all’azienda si cui siamo parte;
riassumere
le regole, in un numero abbastanza basso, in modo tale che, se si dovesse porre
la necessità di riscriverle, non dovremo sacrificare un lungo lavoro;
ordinare
le regole in modo da non creare confusione e da rendere il firewall pienamente
funzionante;
organizzare
un Pc con il solo kernel Linux ed una interfaccia testuale (senza dunque
installare X o altre utility che non avranno scopo sul firewall)
installare
e configurare due schede di rete, una in ingresso ed una in uscita, ricordando
bene che sbagliando interfaccia rischieremo di tagliare fuori la nostra rete;
strutturare
una rete di Pc (anche mista, con Linux, *BSD, Mac ecc...) in modo tale che
possano navigare in Internet solo attraverso il nostro firewall;
strutturare
il masquerading, di modo che all’esterno non sia visibile la nostra rete in
alcun modo (l’unica macchina visibile sarà il firewall)
Ben
chiaro, non stiamo enunciando regole universali, tuttavia, una buona
rete, viene realizzata “generalmente”
con una simile configurazione.
Ma
andiamo avanti e vediamo altri gradi di protezione offerti da Linux:
|
|
|
|