Debian e iptables
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione a IPTables/Netfilter
Questo semplice HOW-TO è rivolto a tutti coloro che usano iptables (molti, credo) con Debian GNU/Linux.
Il tool iptables è (a partire dalla serie 2.4.x) il comando in user-space - a livello utente - che permette all'amministratore di interagire con netfilter ovvero il programma a livello kernel che si occupa del filtraggio dei pacchetti.
Per quanto riguarda Debian, Netfilter è presente in tutti i kernel installabili durante il setup di Debian. È pertanto sufficiente per iniziare ad utilizzare il proprio firewall installare il programma IPTables:
# apt-get install iptables
Attenzione che se avete un kernel ricompilato per conto vostro dovrete assicuratevi di avere abilitato tutte le opzioni ed i moduli necessari.
Risorse in rete
Per chi avesse la necessità di approfondire gli argomenti quivi trattati evidenzio da subito i seguenti link contenenti preziosa documentazione:
- sez. "Comunicare 5" di Appunti di informatica libera;
- homepage degli sviluppatori di netfilter: sono presenti una ottima mailinglist (consigliata) e ricca documentazione.
Iniziamo
Ovviamente, trattandosi di GNU/Linux, vi sono più modi differenti per ottenere i risultati desiderati. Lasciando ad ognuno il suo, ecco un excursus per vedere da dove iniziare.
Come interagire con Netfilter
Se Netfilter è il cuore del kernel che fa per noi il lavoro sporco di spulciarci/forwardare i pacchetti, IPTables è il potente tool User-space con il quale eseguire la configurazione. Oltre all'uso di IPTables sono nati anche varie GUI nel tentativo di fornire un approccio più user-friendly.
IPTables
Il comando IPTables, da dare con privilegi di root, ci permette di modificare le regole di netfilter. A grandi linee il comando è così schematizzabile:
# iptables [-t table] {A|I|D|R|P|N|X|S|E|L...} [chain] rule-specification [option]
Tradotto in Italiano: indichiamo a iptables su quale tabella se aggiungere/eliminare una nuova catena [di regole] o se inserire/appendere/eliminare in una data catena una certa regola. Per esempio, se inseriamo le seguente regola:
# iptables -I OUTPUT -d 127.0.0.1 -j DROP
indichiamo a iptables di inserire [-I] nelle regole di uscita [OUTPUT] per tutti i pacchetti indirizzati all'interfaccia di loop back [-d 127.0.0.1] la regola [-j] di bloccarli [DROP]. Pertanto non sarà più possibile pingarsi (ping 127.0.0.1). Potete vedere le regole appena inserite con
iptables -L [-n --> per avere i dati in formato numerico]
Fatta la prova possiamo ripristinare la situazione iniziale cancellando tutte le regole:
iptables -F
GUI - Grafical User Interfaces
Queste alternative non hanno avuto un enorme successo, forse perché si fa prima a capire come funzione Netfilter piuttosto che un programma che configura Netfilter. In ogni caso ecco una breve lista di possibili alternative, a discrezione dell'utente (l'ordine è puramente casuale):
- shorewall <-- guida debianizzata;
- fwbuilder <-- guida debianizzata;
- Turtle Firewall Project;
- Integrated Secure Communications System;
- Tanti, tanti altri.
Salvare la configurazione del firewall
Questa parte presenta una particolarità rispetto a quanto solitamente abituati nell'impostare le configurazioni. Infatti, lavorando a livello di kernel (netfilter) non è possibile salvare in modo permanente la configurazione del proprio firewall ma è necessario richiamarla volta per volta. Anche qui, a seconda dei gusti, propongo due differenti soluzioni che consiglio magari da utilizzare entrambi.
Tools di IPTables
Dopo aver creato la directory di configurazione (suggerisco /etc/iptables/) è possibile, dopo che si hanno inserito tutte le opzione tramite shell, salvare il lavoro svolto nel seguente modo:
# iptables-save > /etc/iptables/firewall.config
In questo modo, al riavvio successivo, sarà sufficiente richiamare il file di configurazione appena creato:
# iptables-restore /etc/iptables/firewall.config
Sarà ovviamente possibile creare uno script che in automatico attivi la configurazione del firewall all'accensione.
I vantaggi di questo metodo sono la rapidità di esecuzione del comando iptables-restore ma obbligano, qualora si volesse effettuare delle modifiche alle regole, ad intervenire per forza tramite shell.
Script di Bash
Questo metodo consente, secondo personale parere, un maggiore ordine delle regole. Infatti l'idea è di creare uno script di Bash che, eseguendolo, imposti tutte le regole del firewall.
Versione 0.1 - obsoleta
Per prima cosa assicuriamoci che iptables venga attivato all'avvio del sistema:
# dpkg-reconfigure -plow iptables
Fatto questo possiamo usare iptables per creare le nostre regole di filtraggio. Quando siamo soddisfatti del rule-set creato, possiamo salvarlo e fare in modo che venga attivato automaticamente. Per memorizzare le impostazioni è sufficiente usare il comando:
# /etc/init.d/iptables-save
Per chi è abituato a configurare il firewall attraverso file di configurazione (e per i curiosi), queste impostazioni vengono memorizzate in /var/lib/iptables
.
happy filtering!
Autore: Keltik
Autore adottivo: Risca