|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Traduzione e adattamento: ADaM
"unno"
Pubblicato sul numero 8 di NetRunners, la e-zine degli spippolatori, e su Networking Italia. |
Originale By: GBoZ Of The
Cybernetic Techno Ninjas - Tuesday 2/16/99 |
1) Che cos'è un firewall?
2) Perchè dovrei volere un firewall?
3) Contro che cosa può proteggere un firewall?
4) Contro che cosa non può proteggere un firewall?
5) Risorse in rete sui firewall
6) Come scegliere un firewall
7) Cosa sono i proxy server e come funzionano
8) Regole logiche di filtraggio per il mio Cisco
9) Come far lavorare DNS e firewall
10) Come far lavorare un FTP attraverso un firewall
11) Come far lavorare un Telnet attraverso un firewall
12) Come far lavorare Finger e whois attraverso un firewall
13) Come far lavorare gopher, archie e altri servizi
attraverso un firewall
14) X-Window attraverso un firewall
15) Glossario di termini riferiti ai firewall
Un firewall è uno dei tanti modi per proteggere una rete
da altre reti di
cui non ci si fida o comunque sconosciute. Il reale meccanismo con
cui è
realizzato varia fortemente, ma il principio è che il firewall
può essere
pensato come una coppia di meccanismi: uno serve a bloccare il traffico
e
l'altro per veicolarlo. Alcuni firewall mettono più enfasi nel
bloccarlo,
altri nel permetterlo.
Internet, come ogni altra società, è piena di babbei
che sono l'equivalente
elettronico del teppistello che imbratta i muri con lo spray. Alcune
persone
cercano di lavorare su Internet e altre hanno dati sensibili o di loro
proprietà da difendere. Un proposito del firewall è tenerci
lontano dalla
rete una volta lasciato il lavoro.
Molti enti e centri dati hanno politiche di sicurezza informatica e
procedure
che vengono rispettate rigidamente. Il firewall diventa a volte espressione
della politica aziendale di proteggere i dati. Spesso, la parte più
ardua
per connettersi ad Internet, se sei una grande azienda, non è
giustificare
la spesa o lo sforzo, ma convincere i manager che non ci sono pericoli
di
sicurezza. Un firewall provvede non solo alla reale sicurezza, ma gioca
anche un importante ruolo come schermo di sicurezza per il management.
Infine, un firewall può agire come ambasciatore dell'azienda
su Internet.
Molte aziende usano i loro firewall come un posto dove mettere informazioni
pubbliche sui prodotti e i servizi dell'azienda, file da scaricare,
correzioni e così via. Molti di questi sistemi stanno avendo
importanza per
le strutture di servizi per Internet (ad es.: UUnet.uu.net,
gatekeeper.dec.com) e hanno avuto un buon riflesso sui loro finanziatori
aziendali.
Qualche firewall permette solo il passaggio di email, proteggendo
quindi la
rete da attacchi diversi da quelli mirati al servizio di email. Altri
firewall provvedono a una meno stretta protezione e bloccano servizi
che
tradizionalmente hanno problemi di sicurezza.
Di solito, i firewall sono configurati per proteggere contro i login
non
autenticati dall'esterno. Questo aiuta a prevenire il login di vandali
in
macchine della rete. Firewall più complicati bloccano il traffico
dall'esterno all'interno, ma permettono agli utenti interni di comunicare
liberamente con l'esterno. Il firewall ti può proteggere contro
qualsiasi
tipo di attacco mediato dalla rete come se fossi disconnesso.
I firewall sono anche importanti perchè possono provvedere a
un singolo
punto di blocco dove la sicurezza e il controllo possono essere imposte.
Diversamente, in una situazione in cui un sistema è attaccato
da qualcuno
che usa un modem, il firewall può agire come un rubinetto telefonico
e uno
strumento di monitoraggio.
I firewall non possono proteggere da attacchi che non vi passano
attraverso.
Molte aziende connesse ad Internet sono preoccupate dalla
fuoriuscita di dati riservati attraverso qualche via. Sfortunatamente
per
questi preoccupati, un nastro magnetico può essere usato per
trasportare
dati all'esterno. Le politiche dei firewall devono essere realistiche
e
riflettere il livello di sicurezza dell'intera rete. Se un sistema
contiene
dati riservati sarebbe meglio non connetterlo al resto della rete.
I firewall non possono proteggere bene da cose come i virus. Un firewall
non
può rimpiazzare la coscienza, la consapevolezza e la prudenza
dei suoi
utenti. In generale, un firewall non può proteggere contro un
attacco
guidato di dati, attacchi nei quali qualcosa è postato o copiato
all'interno dell'host dove è eseguito. Questa forma di attacco
è avvenuta
nel passato contro varie versioni di Sendmail.
Ftp.greatcircle.com - Firewall
mailing list (archivi).
Directory: pub/firewalls
Ftp.tis.com - Strumenti e documenti
sui firewall Internet.
Directory: pub/firewalls
Research.att.com - Documenti
sui firewall e le violazioni di sicurezza.
Directory: dist/internet_security
Net.Tamu.edu - Texas AMU security
tools.
Directory: pub/security/TAMU
Le mailing list per i firewall sono forum per amministratori e
implementatori. Per sottoscriverle, manda "subscribe firewalls" nel
corpo
del messaggio (non nel soggetto) a "Majordomo@GreatCircle.COM".
>N.d.T.
>Una ottima esposizione in italiano la potrete
trovare a:
>http://telemat.die.unifi.it/book/Internet/Security/Firewall/
>
>La versione in inglese più aggiornata
e più completa di questo testo
>la potrete trovare su Internet Firewalls FAQ:
>http://www.clark.net/pub/mjr/pubs/fwfaq/
>http://www.interhack.net/pubs/fwfaq/
>
>Firewalling and Proxy Server HOWTO
>http://okcforum.org/~markg/Firewall-HOWTO.html
>http://sunsite.unc.edu/LDP/HOWTO/Firewall-HOWTO.html
>con traduzione in italiano a cura del Pluto
su:
>http://www.pluto.linux.it/ildp
>
>http://www.clark.net/pub/mjr/pubs/index.shtml
>Publicazioni di Marcus Ranum sui firewall
Allo sfortunato a cui è affidato il compito toccheranno tante
letture. In
generale occorre rispettare il modo in cui l'azienda vuole operare
sul
sistema: il firewall esiste per negare esplicitamente tutti i servizi
eccetto quelli critici per cui ci si è connessi alla rete oppure
serve per
verificare e controllare i metodi di accesso in modo non minaccioso.
Ci
sono diversi gradi di paranoia tra queste posizioni. La configurazione
del
tuo firewall sarà effetto più delle tue politiche che
delle decisioni
tecniche.
Inoltre, quanto monitorare e controllare? Occorre quindi decidere che
cosa
monitorare, permettere e negare. Devi coniugare obiettivi e analisi
del
rischio.
Infine c'è la questione finanziaria: quanto costa comprare e
implementare
il sistema. Si va da 200 milioni a soluzioni gratuite. Per ciò
che riguarda
le soluzioni gratuite, configurare un Cisco o simili non costerà
niente, ma
solo tempo-uomo e caffè. Implementare un firewall impegnativo
costerà molti
mesi-uomo. Bisogna quindi considerare non solo il costo di acquisto
ma
anche di supporto nel tempo.
Dal lato tecnico, c'è un paio di decisioni da prendere, basate
sul fatto che
per tutti i fini pratici di cui stiamo parlando occorrerebbe un servizio
di
routing (instradamento) statico del traffico messo tra il provider
della
rete e la rete interna. Il servizio di routing del traffico deve essere
implementato a livello di IP attraverso regole di protezione in un
router,
o a livello di applicazione attraverso un proxy che faccia da gateway
e dei
servizi.
La decisione da prendere qui è se mettere una macchina che può
essere
colpita all'esterno della rete per far girare un proxy per i servizi
di
telnet, ftp, news, etc., o se è meglio settare un router difensivo
che
faccia da filtro, permettendo comunicazioni con una o più acchine
interne.
Ci sono i pro e i contro a entrambi gli approcci, con la macchina proxy
si provvede a un più alto livello di controllo e potenzialmente
di
sicurezza contro più alti costi di configurazione e una diminuzione
nel
livello di servizi erogati (poichè occorre sviluppare un proxy
per ogni
servizio desiderato). La forbice tra facilità d'uso e sicurezza
ci
perseguita.
Un proxy server (riferito a volte a una applicazione che permette
il
passaggio o che spedisce dati) è una applicazione che si occupa
del traffico tra
una rete protetta e Internet. I proxy sono spesso usati invece di router
per il controllo del traffico, per non permettere al traffico di passare
direttamente tra le reti. Molti proxy hanno log supplementari o supportano
l'autenticazione dell'utente. Poichè i proxy devono capire quale
protocollo
sta per essere usato, possono anche implementare specifici protocolli
di
sicurezza (ad es., un proxy FTP potrebbe essere configurato per permettere
l'FTP in entrata e bloccare l'FTP in uscita).
I proxy server sono applicazioni specifiche. Per supportare un nuovo
protocollo attraverso un proxy, questo deve essere sviluppato per quel
protocollo.
SOCKS è un sistema proxy generico che può essere compilato
in una
applicazione sul lato client per farlo lavorare attraverso un firewall.
Il
vantaggio è che è facile da usare, ma non supporta l'aggiunta
di
connessioni con autenticazione o protocolli con logging specifico.
Per
maggiori informazioni su SOCKS, cfr. ftp.nec.com/pub/socks/
Il seguente esempio mostra una possibile configurazione per usare
il Cisco
come un router di filtraggio. E' un esempio che mostra l'implementazione
di
una specifica linea di condotta. La tua linea di condotta sarà
sicuramente
diversa.
In questo esempio, una compagnia ha una Classe B di indirizzi di rete
128.88.0.0 e sta usando 8 bit per le subnet. La connessione Internet
è
sulla sottorete rossa 128.88.254.0. Tutte le altre sottoreti sono
considerate di fiducia o sottoreti blu.
+---------------+
+---------------+
| IP provider
| | Gateway |
| 128.88.254.1
| | 128.88.254.2 |
+------+--------+
+------+--------+
|
Rete rossa
----------+-----------------+---------------------
|
+------+--------+
| Cisco |
| 128.88.254.3 |
|...............|
| 128.88.1.1 |
+---------------+
|
----------------------------+--------------------
|
Rete blu
+------+--------+
| mail router
|
| 128.88.1.2
|
+---------------+
Tieni in mente i seguenti punti perchè ti aiuteranno a capire
i pezzi della
configurazione:
1. I Cisco applicano i filtri ai soli pacchetti in uscita.
2. Le regole sono testate in ordine e si fermano quando la prima
occorrenza è stata trovata.
3. C'è una implicita regola di rifiuto alla fine di una lista
di accesso
che nega ogni cosa.
L'esempio sotto tratta il filtraggio delle porte di una configurazione.
I numeri di linea e la formattazione sono state aggiunte per leggibilità.
Le linee guida per l'implementazione sono:
- Niente non esplicitamente permesso è negato.
- Il traffico tra la macchina esterna che fa da gateway e l'host della
rete
blu è permesso.
- I servizi permessi sono originati dalla rete blu.
- Assegna un range di porte alla rete blu per le informazioni di ritorno
della connessioni dati FTP.
1 no ip source-route
2 !
3 interface Ethernet 0
4 ip address 128.88.1.1 255.255.255.0
5 ip access-group 10
6 !
7 interface Ethernet 1
8 ip address 128.88.254.3 255.255.255.0
9 ip access-group 11
10 !
11 access-list 10 permit ip 128.88.254.2 0.0.0.0
128.88.0.0 0.0.255.255
12 access-list 10 deny tcp 0.0.0.0
255.255.255.255
128.88.0.0 0.0.255.255
lt 1025
13 access-list 10 deny tcp 0.0.0.0
255.255.255.255
128.88.0.0 0.0.255.255
gt 4999
14 access-list 10 permit tcp 0.0.0.0 255.255.255.255
128.88.0.0 0.0.255.255
15 !
16 access-list 11 permit ip 128.88.0.0 0.0.255.255
128.88.254.2 0.0.0.0
17 access-list 11 deny tcp 128.88.0.0
0.0.255.255
0.0.0.0 255.255.255.255
eq 25
18 access-list 11 permit tcp 128.88.0.0 0.0.255.255
0.0.0.0 255.255.255.255
Linea Spiegazione
===== ===========
1 Benchè non sia una regola di
filtraggio, è buona cosa includerla
qui.
5 Ethernet 0 è nella rete rossa.
La lista estesa 10 di permessi di
accesso sarà applicata
all'output su questa interfaccia. Puoi anche
pensare l'output dalla rete
rossa come input nella rete blu.
9 Ethernet 1 è nella rete blu.
La lista estesa 11 di permessi di
accesso sarà applicata
all'output su questa interfaccia.
11 Permette tutto il traffico dalla macchina gateway alla rete blu.
12-14 Permette connessioni originarie della rete rossa che
entrano tra le
porte 1024 e 5000.
Ciò avviene per permettere alle connessioni dati
in FTP di dialogare
alla rete blu.
>N.d.T.: permessi e richieste nella connessione
FTP avvengono su una
>porta diversa da quella dove vengono scambiati
i dati, cfr. il
>relativo RFC oppure Internet
News, Maggio 1997, Tecnica)
>5000 è stato scelto come limite superiore
ed è dove OpenView parte.
Nota: si assume che questo è accettabile per la supposta linea
di condotta. Non c'è nessun modo per dire a Cisco di filtrare
sulla
porta sorgente. Le versioni più recenti del firmware Cisco
supporteranno il filtraggio sulla porta sorgente.
Da quando le regole sono testate fino alla prima occorrenza dobbiamo
usare
questa sintassi piuttosto ottusa.
16 Permette l'accesso a tutti i pacchetti della
rete blu alla macchina
gateway.
17 Nega l'SMTP (porta tcp 25) mail alla rete rossa.
18 Permette a tutto l'altro traffico TCP di accedere alla rete rossa.
Cisco.com ha un archivio di esempi per costruire firewall usando i router
Cisco, disponibile per ftp da:
ftp://ftp.digital.de/pub/FireWalls/Cisco/acl-examples.tar.Z
Alcune organizzazioni vogliono nascondere i nomi DNS dall'esterno.
Molti
esperti sono in disaccordo sul fatto che sia o meno utile, ma se il
sito o
l'azienda decide di nascondere i nomi dei domini, questo è un
approccio che
è funzionale.
Questo approccio è uno dei tanti, ed è utile per le organizzazioni
che
vogliono celare i loro nomi di host a Internet. Il successo di questo
approccio nasconde dal fatto che i client DNS in una macchina non
comunicano con un server DNS nella stessa macchina. In altre parole,
proprio
perchè c'è un server DNS su una macchina, non c'è
niente di sbagliato (e
spesso ci sono vantaggi a farlo) nel ridirezionare l'attività
di client DNS
di quella macchina su un server DNS in una altra macchina.
Per prima cosa, devi settare un server DNS nel bastion host
in modo che il mondo esterno può comunicare con questo. Setta
questo server così che sia autorevole per i tuoi domini. Infatti,
ognuno
di questi server sa ciò che vuoi che il mondo esterno sappia;
i nomi e gli
indirizzi dei tuoi gateway, i tuoi wildcard MX records, e così
via.
Questo è un server "pubblico".
>N.d.T. per wildcard MX records: Vedi RFC1034
e RFC974 per i dettagli.
>In breve nella notazione del DNS indica un Mail
eXchanger, cioe' una
>macchina destinata a scambiare posta.
>Supponiamo che voglia mandare posta a pippo@tin.it.
"tin.it" è una rete e
>non una macchina, quindi nelle tabelle del DNS
di tin.it si indica quale
>macchina fa da mail eXchanger per il dominio,
ad es.: MX posta.tin.it
>Quindi ogni volta che c'è posta per le
rete tin.it ci pensa la macchina di
>posta.tin.it a smistarla.
Quindi, configura un server DNS in una macchina interna. Questo server
pretende anch'esso di essere autorevole per i tuoi domini; diversamente
dal server pubblico, questo sta dicendo la verità. Questo è
il tuo
nameserver "normale", nel quale mettere tutto le cose "normali" che
riguardano il DNS. Devi configurare anche questo server in modo che
trasferisca le domande a cui non può rispondere al server pubblico
(usando
una linea che faccia da "spedizioniere" in /etc/named.boot in una macchina
Unix, per esempio).
Infine, configura tutti i tuoi client DNS (il file /etc/resolv.conf
in una
Unix box, per esempio), includendoli in una macchina con il server
pubblico, per usare il server interno. Questa è la chiave.
Un client interno che interroga un host interno, interroga il server
interno, e ottiene una risposta; un client interno che interroga un
host
esterno interroga il server interno, che interroga il server pubblico.
Un
client nel server pubblico lavora proprio nello stesso modo. Un client
esterno, comunque, che interroga un host interno ottiene come risposta
"restricted" (cioè limitata) dal server pubblico.
Questo approccio presuppone che ci sia un filtraggio dei pacchetti da
parte
del firewall tra questi due server che permetterà a loro di
comunicare il
DNS a ogni altro, ma altrimenti limita il DNS tra gli altri host.
Un altro trucco che è utile in questo schema è impiegare
wildcard PTR
records (N.d.T. PTR è un puntatore ad
un altra parte dello spazio del nome
di dominio) nei tuoi domini IN-ADDR.ARPA.
Questo causa una ricerca (tabellare)
da indirizzo a nome per ciascuno dei tuoi host non pubblici e restituisce
qualcosa come sconosciuto.TUO.DOMINIO piuttosto che un errore.
Questo soddisfa siti con ftp anonimo come ftp.uu.net che insiste
nell'avere un nome per le macchine con cui comunica. Questo fallisce
quando
comunica con siti che fanno un controllo incrociato del DNS nel quale
il
nome dell'host è verificato a fronte del suo indirizzo e viceversa.
Nota che nascondere i nomi nei DNS non risolve il problema dei nomi
di host
fuoriusciti con gli headers delle mail, articoli di news, etc.
Di solito, il far lavorare l'FTP attraverso il firewall è
realizzato o
usando un server proxy o permettendo connessioni in entrata in una
rete su
un ristretto range di porte, e altrimenti restringendo le connessioni
in
entrata usando qualcosa come regole di monitoraggio stabilite. Il client
FTP è allora modificato per congiungere la porta dei dati alla
porta
all'interno del range. Questo implica il fatto di essere capaci di
modificare l'applicazione che fa da client FTP sugli host interni.
Un approccio differente è usare l'opzione "PASV" dell'FTP per
indicare che il
server FTP remoto dovrebbe permettere al client di iniziare la connessione.
L'approccio con PASV assume che il server FTP sul sistema remoto supporti
tale operazione. (Vedi l'RFC1579 per ulteriori informazioni).
Altri siti preferiscono costruire versioni di client del programma di
FTP
che sono linkate alla libreria SOCKS.
Telnet è generalmente supportato o per usare una applicazione
che fa da
proxy, o semplicemente per configurare un router per permettere connessioni
in uscita usando qualcosa come regole di monitoraggio stabilite. Le
applicazioni proxy potrebbero essere nella forma di un proxy standalone
che
gira su un bastion host, o nella forma di un server SOCKS e un
client modificato.
Permettere connessioni alla porta finger dalle sole macchine fidate,
che
possono emettere richieste di finger nella forma di:
finger user@host.domain@firewall .
Questo approccio funziona solo con le versioni standard del finger di
Unix.
Qualche server finger non permette la connessione finger su user@host@host.
Molti siti bloccano le richieste finger dirette verso l'interno per
una
varietà di ragioni, di cui la più importante è
la presenza di buchi nella
sicurezza del server finger (il worm Morris ha reso questi bug famosi)
e il
rischio che informazioni riservate o proprietarie siano rivelate nelle
informazioni finger dell'utente.
Questa è ancora un'area di ricerca attiva nella comunità
dei firewall.
Molti amministratori di firewall supportano questi servizi solo attraverso
l'interfaccia a linea di comando fornita da telnet.
Sfortunatamente, molti dei servizi
di rete più provocanti fanno connessioni a sistemi remoti multipli,
senza trasmettere nessuna informazione di cui un proxy potrebbe prenderne
vantaggio, e spesso i più nuovi sistemi di recupero delle informazioni
trasmettono dati agli host e dischi locali con la sola sicurezza minima.
C'
è il rischio che (per esempio) i client WAIS possano richiedere
file
codificati in uuencode, che decifrano e modificano i file relativi
alla
sicurezza nella directory home dell'utente. Al momento, c'è
molta
incertezza tra gli amministratori di firewall che sono responsabili
della
sorveglianza dei perimetri della rete, e gli utenti, che vogliono
avvantaggiarsi di questi davvero attraenti e utili strumenti.
X Windows è un sistema davvero utile, ma sfortunatamente
ha qualche grande
difetto di sicurezza. I sistemi remoti che possono guadagnare o spufare
l'accesso a una workstation con X possono monitorare la pressione dei
tasti
degli utenti, scaricare copie dei contenuti delle loro finestre, etc.
Mentre tentativi sono stati fatti per superarli (ad es., MIT "Magic
Cookie") è ancora troppo facile per un aggressore impicciarsi
del display
di un utente di X.
Molti firewall bloccano tutto il traffico di X. Qualcuno permette il
traffico di X attraverso applicazioni proxy come il proxy DEC CRL X
(FTP
crl.dec.com).
- Firewall basato su un host: un firewall dove la sicurezza è
implementata
in un software che gira in un computer non dedicato di qualunque tipo.
La
sicurezza nei firewall basati su un host è generalmente al livello
di
applicazione piuttosto che al livello della rete.
- Firewall basato su un router: un router che è usato per implementare
parte della sicurezza di un firewall configurandolo per permettere
selettivamente o per negare il traffico a livello della rete.
- Bastion host (host che si affaccia all'esterno): un sistema host che
è
un punto forte nel perimetro della sicurezza del sistema. I bastion
host
dovrebbero essere configurati per essere particolarmente resistenti
agli
attacchi. In un firewall basato su host, il bastion host è la
piattaforma
nella quale il software firewall gira. I bastion host sono anche chiamati
gateway host.
- Dual-Homed Gateway: un firewall di un bastion host con 2 interfaccie
di
rete, una delle quali è connessa per proteggere la rete, l'altra
è connessa
a Internet. L'inoltro del traffico IP è di solito disabilitato,
limitando
tutto il traffico tra le due reti a qualunque cosa passi attraverso
qualche
tipo di applicazione proxy.
- Applicazione proxy: una applicazione che instrada il traffico delle
applicazioni attraverso un firewall. I proxy tendono a essere specifici
per
il protocollo per cui sono progettati per inoltrare, e possono provvedere
un
aumentato controllo di accesso o verifica.
- Subnet monitorata: una architettura firewall nel quale una rete "sand
box"
o "zona smilitarizzata" è configurata tra la rete protetta
e Internet,
con traffico bloccato tra la rete protetta e Internet.
Concettualmente, è simile a un dual-homed gateway, eccetto che
una intera
rete, piuttosto che un singolo host è raggiungibile dall'esterno.