Un filtro dei pacchetti (packet filter) è un pezzo di software che guarda le intestazioni dei pacchetti, e ne decide il destino. Potrebbe decidere di scartare (DROP) il pacchetto (ossia eliminarlo come se non fosse mai stato ricevuto), accettarlo (ACCEPT) (ossia lasciare che il pacchetto prosegua), o di fare qualcos'altro di più complicato.
In Linux, il filtro dei pacchetti è contenuto nel kernel (come modulo o come parte integrante) e ci sono diverse cose delicate che si possono fare, ad ogni modo il principio generale è sempre quello di guardare l'intestazione di un pacchetto e di deciderne il destino.
Controllo. Sicurezza. Vigilanza.
quando si utilizza una Linux box per connettere la propria rete interna ad un'altra (diciamo Internet) si ha l'opportunità di consentire un certo tipo di traffico, e di vietarne dell'altro. Per esempio, l'intestazione dei pacchetti contiene l'indirizzo di destinazione, quindi si può impedire che certi pacchetti arrivino ad una certa parte della rete esterna. Un altro esempio: uso Netscape per accedere agli archivi di Dilbert, nella pagina ci sono avvisi pubblicitari di doubleclick.net, e Netscape spreca allegramente tempo a scaricarli. Per risolvere il problema è sufficiente indicare al filtro dei pacchetti di non accettare alcun pacchetto diretto o proveniente dall'indirizzo di doubleclick.net (sebbene ci siano metodi migliori: vedi Junkbuster).
quando la tua Linux box è la sola cosa tra il caos di Internet e la propria bella ed ordinata rete, è bene sapere che si può limitare quel che viene a bussare alla propria porta. Per esempio, si potrebbe permettere a qualsiasi cosa di uscire dalla propria rete, ma certamente non si è ben disposti verso i cosiddetti "Ping della Morte" provenienti da chissà quale posto malvagio. Altro esempio: potresti voler impedire che estranei effettuino dei telnet alla tua Linux box, anche se tutti i tuoi account sono dotati di password. Potresti voler ancora (come molte altre persone) essere solo un osservatore di Internet, e non un server (volontario o no): semplicemente non si lasci a nessuno la possibilità di connettersi, a questo scopo basta impostare il filtro dei pacchetti in modo che rifiuti i pacchetti usati per richiedere una connessione.
qualche volta una macchina della rete locale configurata male, può decidere di "sparare" pacchetti al mondo esterno. E' buona cosa chiedere al filtro dei pacchetti che ti faccia notare se qualcosa di anormale sta accadendo; forse si potrebbe fare qualcosa per risolvere il problema o forse si potrebbe essere solo curiosi di natura.
I kernel Linux hanno il filtraggio dei pacchetti sin dalla versione 1.1. La prima generazione, basata su ipfw della BSD, è stata introdotta da Alan Cox verso la fine del 1994. Successivamente è stata migliorata da Jos Vos ed altri per Linux 2.0; il tool `ipfwadm' controllava le regole di filtraggio del kernel. Nella metà del 1998, per Linux 2.2, ho rielaborato il kernel piuttosto pesantemente, con l'aiuto di Michael Neuling, e ho introdotto il tool `ipchains'. Quindi finalmente nella metà del 1999 sono arrivati il tool di quarta generazione `iptables' e un'altra riscrittura del kernel, ed è proprio su iptables che questo HOWTO si concentra.
E' necessario un kernel contenente l'infrastruttura netfilter: netfilter è un framework generico, presente nel kernel, dove possono essere inserite varie cose (ad esempio il modulo di iptables). Ciò richiede almeno un kernel 2.3.15 o più recente, e di rispondere `Y' durante la configurazione del kernel alla voce CONFIG_NETFILTER.
Il tool iptables
dialoga con il kernel e gli indica quali
pacchetti filtrare. Se non sei un programmatore, o un curioso, allora
è attraverso questo tool che controllerai il filtraggio dei pacchetti.
Il tool iptables
inserisce e rimuove le regole dalla tabella
di filtraggio del kernel.
Questo significa che tutte le regole impostate andranno perse al reboot;
leggi la sezione
Rendere le regole permanenti
per capire come assicurarsi che le regole siano reimpostate al successivo
avvio di Linux.
iptables
è il sostituto di ipfwadm
e di ipchains
:
leggi la sezione
Usare ipchains e ipfwadm
per imparare come usare iptables senza troppi sforzi,
se abituati ad usare uno di questi tool.
Le tue impostazioni correnti per il firewall sono memorizzare nel kernel, e quindi andranno perse al reboot. Scrivere iptables-save e iptables-restore è nella mia lista delle cose da fare. Quando saranno pronte, saranno eccezionali, promesso.
Nel frattempo colloca i comandi che impostano le regole in uno script di inizializzazione. Assicurati che sia effettuato qualcosa di intelligente se uno dei comandi dovesse fallire (di solito `exec /sbin/sulogin').