Sicuramente se avete sentito parlare di linux e di firewalling, avete anche sentito parlare di ipchains e di ipfwadm. Questi comandi consentivano l'impostazione delle regole di firewalling rispettivamente nei kernel 2.2 e 2.0. Nei kernel dal 2.4 in poi è stato introdotto un nuovo comando: iptables, anche se il supporto sia per ipchains che ipfwadm è rimasto.
Dovendo parlare di iptables, è indispensabile una piccola introduzione. Il parente più stretto di iptables è sicuramente ipchains. ipchains aveva introdotto il concetto di ``catena''. iptables ha ripreso il concetto di catena per estenderlo tramite l'introduzione di tabelle.
Prima di parlare di tabelle però, ci conviene chiarire il concetto di catena. L'idea di base è abbastanza semplice: un computer collegato in rete con una o più interfacce ha a che vedere con tre tipi di pacchetti:
In un firewall invece, i pacchetti transiterebbero da una scheda di rete all'altra, passando quindi attraverso la catena di forward.
Ogni catena è poi costituita da un insieme di regole. Ad ogni regola, è associata un'azione (target). Ogni volta che un pacchetto transita per una catena, tutte le regole vengono controllate in ordine, dalla prima inserita fino all'ultima. Quando una regola risulta applicabile al pacchetto (viene trovato un match) viene applicata al pacchetto l'azione specificata e viene interrotto il processo di ricerca.
Se non viene trovata una regola applicabile al pacchetto, la sua sorte (l'azione d'applicare) viene scelta in base alla politica (policy) della catena stessa. In pratica, la policy indica cosa fare di tutti i pacchetti che non rientrano in nessuna regola.
Sia ipchains che iptables poi, consentono di creare o rimuovere catene e di specificare come azione quella di percorrere un'altra catena.
Detto così può sembrare tutto molto complesso, ma vedrete che poi nella pratica diventerà molto più semplice.