Capitolo 17. iptables

Installato con Red Hat Enterprise Linux, vi sono dei tool avanzati per la rete filtraggio dei pacchetti —, ovvero il processo di controllo dei pacchetti di rete bloccati nel kernel che cercano di accedere, transitare e uscire dalla rete. Le versioni di kernel precedenti alla 2.4 si affidavano al comando ipchains per il filtraggio e utilizzavano elenchi di regole applicabili ai pacchetti in ogni fase del processo di filtraggio. Con il Kernel 2.4 è stato introdotto il comando iptables, (chiamato anche netfilter), che è simile a ipchains, ma permette di ampliare notevolmente le possibilità di controllo in fase di filtraggio dei pacchetti.

Questo capitolo si concentra sugli aspetti di base del filtraggio dei pacchetti, evidenzia le differenze tra ipchains e iptables, spiega le varie opzioni disponibili con i comandi iptables, e spiega come preservare le regole di filtraggio tra un riavvio del sistema e l'altro.

Se necessitate di istruzioni su come creare regole iptables o configurare un firewall basato su tali regole, consultate la la Sezione 17.7.

AttenzioneAvvertenza
 

Il meccanismo firewall di default per il kernel 2.4 è iptables, il quale, tuttavia, non può essere utilizzato se ipchains sono già in esecuzione. Se ipchains sono presenti al momento dell'avvio, il kernel emette un messaggio di errore e non sarà in grado di avviare iptables.

Questo genere di errori non hanno ripercussioni sul funzionamento di ipchains.

17.1. Filtraggio dei pacchetti

Il kernel di Linux possiede la capacità integrata di filtrare i pacchetti, concedendo o negando loro l'accesso al sistema. Il netfilter del kernel 2.4 ha tre tabelle integrate dette anche elenchi delle regole. Eccole riportate:

SuggerimentoSuggerimento
 

In aggiunta a queste tabelle integrate, possono essere create tabelle specializzate e conservate nella directory /lib/modules/<versione-kernel>/kernel/net/ipv4/netfilter/ (dove <versione-kernel> corrisponde al numero della versione del kernel).

Ogni tabella ha un gruppo di catene integrate, che corrispondono alle azioni effettuate da netfilter sul pacchetto.

Le catene integrate per la tabella filter sono le seguenti:

Le catene integrate per la tabella nat sono le seguenti:

Le catene integrate per la tabella mangle sono le seguenti:

Ogni pacchetto di rete ricevuto o inviato da un sistema Linux è soggetto ad almeno una tabella. Tuttavia, un pacchetto può essere soggetto a numerose regole all'interno di ogni tabella prima di raggiungere la fine della catena. La struttura e lo scopo di queste regole possono variare, ma di norma si occupano di identificare un pacchetto proveniente da o diretto verso un determinato indirizzo IP o gruppo di indirizzi tramite un protocollo e un servizio di rete particolari.

Indipendentemente dalla sua destinazione, quando un pacchetto soddisfa una particolare regola contenuta in una delle tabelle, gli viene attribuito un determinato target o azione. Se la regola decide di assegnargli il target ACCEPT, il pacchetto può saltare i controlli legati alle restanti regole ed è autorizzato a procedere verso la sua destinazione. Se invece la regola opta per il target DROP, il pacchetto viene abbandonato, ossia gli viene negato l'accesso al sistema, e all'host mittente non viene rispedito indietro nulla. Se vi é una regola che specifica un target QUEUE, il pacchetto deve essere passato ad uno spazio-utente. Nel caso in cui la regola decida di applicare al pacchetto il target REJECT, il pacchetto viene comunque abbandonato, ma al nodo mittente viene recapitato un pacchetto di errore.

Ogni catena ha una policy di default per accettare ACCEPT, abbandonare DROP, rifiutare REJECT, o per accodarlo QUEUE verso lo spazio utente. Quando nessuna delle regole della catena risulta applicabile al pacchetto, è la policy di default a decidere come gestirlo.

Il comando iptables vi consente sia di configurare questi elenchi di regole, sia di impostare nuove catene e nuove tabelle.