Avanti Indietro Indice

5. iptables

5.1 Introduzione

La seconda novità riguarda il tool designato per impostare le regole di filtraggio che è ora iptables. Questo programma sostituisce ipchains, che comunque sarà ancora supportato, e si integra e adegua alle novità introdotte con l'infrastruttura Netfilter (tabelle, moduli, ...).

5.2 Differenze rispetto alle versioni 2.0 e 2.2 del kernel

La caratteristica principale introdotta è la modularità, in passato con ipchains si impostavano tutte le regole riguardanti non solo il filtraggio ma anche il mascheramento, i bit TOS (Type of Service), il log dei pacchetti rendendo difficile lo sviluppo e l'impostazioni delle regole.

Ora invece è possibile caricare solo i moduli che si intendono utilizzare e in qualsiasi momento. Si potranno inoltre aggiungerne di nuovi sviluppati ad esempio per svolgere compiti precisi, ciò amplia le possibilità e facilita l'introduzione di nuove caratteristiche ed opzioni.

Tabelle

Con Netfilter, per migliorare e facilitare le impostazioni delle regole, sono state introdotte le seguenti tre tabelle che si possono gestire e impostare correttamente solo con iptables:

filter

Tabella contenente inizialmente le tre catene preesistenti INPUT, FORWARD e OUTPUT. Tutte le regole riguardanti il filtraggio dovranno essere inserite in questa tabella.

nat

Tutte le regole riguardanti masquerading, redirezione, port forwarding, proxy trasparente che ora sono raggruppate sotto il termine NAT (Network Address Translation) dovranno essere inserite all'interno di questa tabella che contiene le seguenti catene PREROUTING, POSTROUTING e OUTPUT.

mangle

In quest'ultima tabella invece si dovranno inserire le regole riguardanti il "manipolamento" dei pacchetti (bit TOS, marcamento dei pacchetti, ...). Le catene disponibili sono: PREROUTING e OUTPUT.

Queste tabelle possono essere richiamate con l'opzione '-t' (es. '-t nat'). Non è necessario specificare la tabella filter con '-t filter' in quanto è quella di default.

Criteri per il filtraggio

I criteri per il filtraggio sono aumentati rispetto ad ipchains e si può ora filtrare in base a:

interfaccia

E' possibile filtrare i pacchetti in base all'interfaccia di ingresso (-i) e di uscita (-o). Rispetto ad ipchains ora l'opzione '-i' serve per specificare esclusivamente l'interfaccia di ingresso, per quella di uscita è necessario utilizzare l'opzione '-o'.

indirizzo sorgente e destinazione

Come in ipchains è possibile filtrare i pacchetti in base all'indirizzo sorgente e/o quello di destinazione.

numero di porta

Anche in questo caso nulla di nuovo rispetto ad ipchains tranne per il fatto che ora è necessario indicare la porta (numero o nome) specificando esplicitamente l'opzione --sport o --dport.

indirizzo MAC

E' possibile filtrare anche in base all'indirizzo fisico di un'interfaccia ethernet.

protocollo IP

E' possibile indicare nelle proprie regole il tipo di protocollo: TCP, UDP, ICMP.

flag dei pacchetti

I pacchetti che transitano hanno dei flag (SYN, RST, FIN, ...) che possono essere utilizzate nelle regole di filtraggio. Particolarmente interessante è il flag SYN utilizzato per richiedere una connessione.

opzioni tcp

E' possibile filtrare i pacchetti tcp anche in base alle opzioni presenti.

Obiettivi

Per quanto riguarda gli obiettivi (target) ora sono disponibili:

ACCEPT

E' utilizzata in una regola per accettare i pacchetti che la soddisfano, può essere usata inoltre anche come tattica (policy) di una catena.

DROP

Sostituisce DENY presente in ipchains e come scopo ha sempre quello di scartare il pacchetto che soddisfa la regola. Anche questo obiettivo può essere utilizzato come tattica.

REJECT

Stessa funzione di DROP con la differenza che viene inviato un pacchetto di errore ('port unreachable') all'altra macchina.

QUEUE

Utilizzato per accodare i pacchetti per elaborazioni userspace.

RETURN

Se la catena in cui si trova la regola con l'obiettivo RETURN è stata definita dall'utente allora la RETURN causa il ritorno alla catena precedente, altrimenti se la catena è predefinita (INPUT, OUTPUT, ...) viene eseguita la tattica.

MIRROR

Questo obiettivo è utilizzato per rispedire un pacchetto alla macchina che lo ha inviato.

LOG

Questo obiettivo permette di registrare i pacchetti che soddisfano la regola, consente inoltre di specificare diverse opzioni per migliorare la gestione e la leggibilità. Sostituisce e completa l'opzione '-l' utilizzata con ipchains.

SNAT, DNAT, MASQUERADE

Questi obiettivi sostituiscono e completano l'obiettivo MASQ presente in ipchains. Vedi capitolo sul NAT (Network Address Translation).

Per indicare questi obiettivi come per ipchains è necessario utilizzare il comando '-j' (es. -j ACCEPT).

Varie

Le operazioni classiche sono rimaste invariate rispetto ad ipchains, ci sono comunque le seguenti differenze:

5.3 Compilare e installare iptables

iptables è disponibile in formato bz2 al seguente indirizzo http://netfilter.kernelnotes.org. Sono disponibili anche i formati rpm e deb, ma è necessario visitare il sito della propria distribuzione Linux.

Una volta completato il download è necessario assicurarsi di avere nella directory /usr/src/linux/ gli include del kernel e poi impartire i seguenti comandi:

# bzip2 -d iptables-1.1.0.tar.bz2
# tar -xvf iptables-1.1.0.tar
# cd iptables-1.1.0
# make
# make install

Se si ottengono dei messaggi di errore o se si vuole solo cambiare la directory in cui saranno collocati i comandi leggere il file di testo INSTALL.

Se iptables sembra non funzionare correttamente controllare di aver eseguito il comando 'make install' e di aver caricato con insmod o modprobe tutti i moduli necessari (iptable_filter.o, ...).

5.4 Aggiornare iptables

iptables è ancora in fase di sviluppo, quindi periodicamente sono rilasciate delle patch che risolvono alcuni errori riguardanti iptables stesso, gli altri moduli e la documentazione.

L'ultima versione disponibile di iptables al momento è la 1.1.0, la documentazione invece è alla versione 1.0.1. Per aggiornare è sufficiente eseguire le seguenti operazioni:

1. Accedere al server CVS di SAMBA come utente 'anonymous':

    cvs -d :pserver:cvs@cvs.samba.org:/cvsroot login

2. Quando è richiesta la password digitare 'cvs'

3. Verificare il codice utilizzato:

    cvs -d :pserver:cvs@cvs.samba.org:/cvsroot co netfilter

4. Per effettuare l'aggiornamento vero e proprio utilizzare il seguente comando:

    cvs update -d -P

Si possono consultare le patch, la documentazione aggiornata, una lista TODO delle cose ancora da implementare, utilizzando anche il web, è sufficiente visitare l'indirizzo cvs.samba.org/cgi-bin/cvsweb/netfilter/.

5.5 Documentazione, mailing list

E' possibile consultare le complete manpage con il comando:

# man iptables

Sono comunque disponibili le "Rusty's Unreliable Guides", quattro documenti completi che introducono ai concetti di rete, al filtraggio dei pacchetti, al mascheramento e alla realizzazione dei moduli di estensione.

I suddetti documenti si trovano in vari formati (SGML, TXT, PS) al seguente indirizzo: http://netfilter.kernelnotes.org.

Sempre a questo indirizzo si trovano due link alle mailing list ufficiali di netfilter.


Avanti Indietro Indice