[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 739.   Filtro IP

Il firewall è un componente che serve a proteggerne una parte rispetto al resto, collocato generalmente tra una rete interna e una rete esterna, come Internet, per evitare un accesso indiscriminato alla rete interna da parte di nodi collocati all'esterno di questa.

firewall

Per svolgere il suo compito, il firewall deve essere munito di almeno due interfacce di rete: una per l'accesso alla rete esterna e una per la rete interna.

Si distinguono due tipi fondamentali di firewall: filtri di pacchetto IP e serventi proxy. Nel caso del filtro di pacchetto, se la rete da proteggere può disporre solo di indirizzi IP privati, si devono integrare anche le funzionalità di trasformazione degli indirizzi e delle porte (NAT/PAT).

739.1   Caratteristiche comuni

In condizioni normali, il filtro di pacchetto può intervenire al terzo o al quarto livello del modello ISO-OSI. In altri termini, è in grado di identificare e filtrare i pacchetti in base agli indirizzi IP, alle porte utilizzate e a poche altre informazioni. Tuttavia, un firewall che usa il filtro di pacchetto IP, potrebbe essere più evoluto e intervenire anche al livello di sessione.

filtro

Caratteristiche tipiche dei pacchetti che possono essere prese in considerazione per il filtro:

Caratteristica Annotazioni
interfaccia di rete l'interfaccia interessata nel nodo locale
indirizzo IP di origine
indirizzo IP di destinazione
protocollo TCP, UDP, ICMP
porta di origine TCP o UDP
porta di destinazione TCP o UDP
messaggio ICMP rappresentato da un numero
pacchetto frammentato frammentazione a livello IP
pacchetto SYN richiesta inizio di connessione TCP

I pacchetti frammentati a livello di protocollo IP, possono essere identificati come frammenti, mentre diventa impossibile conoscere le altre caratteristiche (TCP o UDP).

739.2   Punti di intervento

Teoricamente, quando il firewall è un elaboratore completo, si può intervenire in tre punti differenti: nel transito dei pacchetti da un'interfaccia a un'altra, nei pacchetti in arrivo attraverso una data interfaccia e nei pacchetti in uscita.

filtro

I pacchetti intercettati possono essere trattati in modi differenti:

A seconda dell'organizzazione logica del firewall, può darsi che l'intercettazione di un pacchetto in ingresso, implichi la stessa cosa sia per i pacchetti destinati al firewall, sia per i pacchetti che lo attraverserebbero per raggiungere altre destinazioni, oppure le due cose potrebbero essere distinte. Nello stesso modo potrebbe esserci una differenza di funzionamento nell'intercettazione in uscita. È evidente che, nel momento in cui si usa un certo tipo di firewall, deve essere chiarito in modo preciso il raggio di azione di ogni filtro.

739.3   Pacchetti frammentati

Un nodo di rete che svolge funzioni di firewall dovrebbe trovarsi in un passaggio obbligato della rete, per evitare che i pacchetti possano utilizzare percorsi alternativi. In questo senso, è opportuno che tale nodo possa ricomporre i pacchetti frammentati a livello IP, in modo da riunire assieme tutte le informazioni necessarie a identificare i pacchetti, proprio per poter attuare effettivamente il controllo che il firewall deve fare.

In mancanza della possibilità di ricomporre i pacchetti frammentati, il firewall può individuare nei frammenti solo gli indirizzi IP, del mittente e del destinatario, oltre al riconoscere che si tratta di frammenti. Diventa impossibile l'identificazione delle porte TCP o UDP e dei messaggi ICMP.

739.4   Schema degli esempi astratti

Azione Pos. Prot. IP srg IP dst ICMP Int.
1 2 3 4 5 6 7 8 9 10

I campi del record hanno il significato descritto nell'elenco che segue, tenendo conto che i valori mancanti vengono considerati indifferenti:

  1. azione del filtro: blocco, rifiuto o altro;

  2. posizione del filtro: in ingresso, in uscita, in transito o altro;

  3. protocollo: TCP, UDP, ICMP;

  4. indirizzi IP di origine;

  5. porte TCP o UDP di origine;

  6. indirizzi IP di destinazione;

  7. porte TCP o UDP di destinazione;

  8. messaggio ICMP, indicando il tipo e il codice eventuale
    (tipo[/codice]);

  9. interfaccia di rete coinvolta;

  10. altre caratteristiche.

Gli indirizzi IP si indicano nella forma indirizzo/maschera, dove la maschera si esprime attraverso un intero che rappresenta una quantità iniziale di bit da impostare a uno. Inoltre, gli indirizzi e le porte possono essere prefissati da un punto esclamativo che indica la negazione logica, ovvero tutti gli altri indirizzi o tutte le altre porte.

739.5   Preparazione all'utilizzo di IPTables

Si azzerano tutte le tabelle (chain) standard di IPTables, con i comandi seguenti:

iptables -t filter -F[Invio]

ip6tables -t filter -F[Invio]

iptables -t filter -X[Invio]

ip6tables -t filter -X[Invio]

iptables -t mangle -F[Invio]

ip6tables -t mangle -F[Invio]

iptables -t mangle -X[Invio]

ip6tables -t mangle -X[Invio]

iptables -t nat -F[Invio]

iptables -t nat -X[Invio]

Per definire una politica predefinita che consenta il transito di tutto il traffico, si usano i comandi seguenti:

iptables -t filter -P FORWARD ACCEPT[Invio]

ip6tables -t filter -P FORWARD ACCEPT[Invio]

iptables -t filter -P INPUT ACCEPT[Invio]

ip6tables -t filter -P INPUT ACCEPT[Invio]

iptables -t filter -P OUTPUT ACCEPT[Invio]

ip6tables -t filter -P OUTPUT ACCEPT[Invio]

Per definire una politica predefinita che impedisce il transito di tutto il traffico, si usano i comandi seguenti, dove di solito rimane consentita l'uscita:

iptables -t filter -P FORWARD DROP[Invio]

ip6tables -t filter -P FORWARD DROP[Invio]

iptables -t filter -P INPUT DROP[Invio]

ip6tables -t filter -P INPUT DROP[Invio]

iptables -t filter -P OUTPUT ACCEPT[Invio]

ip6tables -t filter -P OUTPUT ACCEPT[Invio]

Per controllare la situazione complessiva si possono usare i comandi seguenti:

iptables -L -n -v[Invio]

ip6tables -L -n -v[Invio]

739.6   Esempi astratti

739.7   Protocolli ICMP, UDP e DNS

Non si deve bloccare il transito dei pacchetti del protocollo ICMP. Il messaggio di tipo 3 (destinazione irraggiungibile), è indispensabile nei protocolli TCP e UDP per sapere che un certo indirizzo non è raggiungibile; bloccandolo, si attende senza sapere il perché.

Il protocollo ICMP viene usato anche nella determinazione automatica della dimensione massima dei pacchetti (MTU discovery). Mancando la possibilità di ricevere questi pacchetti ICMP, il funzionamento delle comunicazioni potrebbe essere compromesso seriamente.

I protocolli che si basano su UDP sono usati frequentemente nell'ambito di servizi locali, come NIS e NFS. Tra le altre cose, questi servizi tendono a fare viaggiare informazioni particolarmente delicate che non dovrebbero essere accessibili dall'esterno. Per questa ragione, è normale che venga impedito il transito dei pacchetti UDP. Tuttavia, capita che proprio il servizio DNS (per la risoluzione dei nomi), possa averne bisogno.

Azione Pos. Prot. IP srg IP dst ICMP Int.
blocco transito UDP 0/0 0/0

Il servizio DNS può usare pacchetti UDP o connessioni TCP, a seconda della dimensione di questi. Così, il blocco eventuale di tale servizio si avvertirebbe solo in modo intermittente, complicando l'individuazione del problema.

Generalmente, un servizio DNS collocato in una posizione tale per cui non possa inviare o ricevere pacchetti UDP dall'esterno, si deve avvalere necessariamente di un altro collocato al di fuori di tale blocco. Infatti, in questo modo userebbe solo il protocollo TCP.

Eventualmente, il firewall potrebbe essere configurato espressamente per consentire il transito di questi pacchetti legati al servizio DNS. Nell'esempio seguente si suppone che il servizio DNS in questione sia collocato nel nodo 196.1.2.3:

Azione Pos. Prot. IP srg IP dst ICMP Int.
accetta transito UDP 0/0 53 196.1.2.3
accetta transito TCP 0/0 53 196.1.2.3
accetta transito UDP 196.1.2.3 0/0 53
accetta transito TCP 196.1.2.3 0/0 53

739.8   Esempi pratici con IPTables

739.9   Simulazione di un firewall per esercizio

Si dispone di una rete locale in cui si possono configurare gli elaboratori per simulare la protezione da parte di un firewall. Per ottenere questo, il firewall dispone di una sola interfaccia di rete, a cui si abbinano due indirizzi IPv4 distinti:

router e firewall didattico

I nodi a sinistra del firewall sono configurati per utilizzare indirizzi appartenenti alla rete 192.168.7.*, mentre i nodi alla destra, compreso il router che immette all'esterno, utilizzano indirizzi appartenenti alla rete 172.17.*.*. Il router che consente di comunicare con l'esterno ha l'indirizzo 172.17.1.254. Ecco la configurazione del router-firewall didattico, a partire dalla configurazione delle interfacce e dell'instradamento predefinito verso l'esterno:

ifconfig eth0 down[Invio]

ifconfig eth0:0 down[Invio]

route del -net default gw 172.17.1.254[Invio]

ifconfig eth0 172.17.1.253 netmask 255.255.0.0[Invio]

ifconfig eth0:0 192.168.1.254 netmask 255.255.255.0[Invio]

route add -net default gw 172.17.1.254[Invio]

Si abilita espressamente la funzionalità di router:

echo 1 > /proc/sys/net/ipv4/ip_forward[Invio]

Si abilita la sostituzione degli indirizzi della rete 192.168.7.* quando le comunicazioni escono da quella rete:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE[Invio]

Si inizializzano i filtri e si definiscono le politiche predefinite:

iptables -t filter -F[Invio]

iptables -t filter -P FORWARD DROP[Invio]

iptables -t filter -P INPUT DROP[Invio]

iptables -t filter -P OUTPUT ACCEPT[Invio]

Si accetta tutto il traffico in ingresso e in attraversamento proveniente dalla rete «locale» (192.168.7.*) e si accetta anche il traffico in ingresso proveniente dall'interfaccia virtuale locale:

iptables -t filter -A INPUT -s 192.168.1.0/24 -j ACCEPT[Invio]

iptables -t filter -A FORWARD -s 192.168.1.0/24 -j ACCEPT[Invio]

iptables -t filter -A INPUT -s 127.0.0.1 \
  \-j ACCEPT
[Invio]

Si accetta il traffico in ingresso e in attraversamento che riguarda comunicazioni già iniziate in qualche modo:

iptables -t filter -A INPUT -m state \
  \--state ESTABLISHED -j ACCEPT
[Invio]

iptables -t filter -A FORWARD -m state \
  \--state ESTABLISHED -j ACCEPT
[Invio]

Al termine la rete 192.168.7.* e il firewall stesso risultano protetti dall'esterno (la rete 172.17.*.* e il resto del mondo), inoltre le comunicazioni che hanno origine dalla rete 192.168.7.* e sono dirette all'esterno, sono modificate attraverso il meccanismo del NAT e ciò lo si può verificare agevolmente con un programma come IPTraf.

Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome filtro_ip.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]

Valid ISO-HTML!

CSS validator!