iptables – parte 1
Prima parte di un post relativo all’uso di Iptables in Linux. Come molto spesso succede lascio queste note come mio promemoria e per un eventuale uso da parte di altri che si trovano nella necessità di consulatre rapidamente indicazioni pratiche edirette per risolvere un problema o imparare qualcosa.
Iptables sono le tabelle che permettono di definire un semplice firewall, controllando il traffico in entrata e in uscita da/per altri computer di una rete. E’ generalmente preinstallato sulla gran parte delle distribuzioni, quindi non dovremmo avere problemi a configurarlo anche prima di conneterci ad internet.
Impostare un semplice firewall
Queste indicazioni si riferiscono all’impostazione di un firewall con Iptables su un singolo computer.
NB: i comandi devono essere utilizzati rispettando esattamente la sintassi riportata, ciò significa maiuscole, minuscole e spazi come da esempi.
Aprire un terminale e digitare
>> iptables -L
Con questo comando vengono visualizzate le regole impostate.
Anche se non c’è nessuna regola già operativa vengono mostrate le intestazioni. In pratica vediamo le catene:
INPUT si riferisce a ciò che è in ingresso nel computer
FORWARD è usato in rete e si riferisce a ciò che viene passato a/da altri computer
OUTPUT si riferisce a ciò che è in uscita dal computer
Per iniziare ad impostare delle regole possiamo digitare:
>> iptables -A INPUT -i lo -j ACCEPT
Questo comando dice a Iptables di aggiungere una regola alla catena di INPUT accettando il loopback.
Il loopback si riferisce a tutto ciò che parte dal tuo computer e finisce sul tuo computer, passando attraverso Iptables. Di fatto non ha nulla a che fare con ciò che succede fuori dal tuo computer.
“-A INPUT” ha il significato di Aggiungere (Append) una regola alla catena di input.
“-i lo” si riferisce all’interfaccia di loopback.
“-j” significa jump, ovvero salta, e indica cosa deve essere fatto quando si applica questa regola.
Usando ancora il precedente comando
>> iptables -L
possiamo vedere che ora le tabelle prevedono la regola appena inserita.
Si può usare anche il comando
>> iptables -L -v
che introduce la visualizzazione più dettagliata delle regole.
Con il comando
>> iptables -A INPUT -p tcp --sport 80 -j ACCEPT
Con questo comando diciamo a Iptables di aggiungere una regola alla catena di INPUT accettando qualunque pacchetto di protocollo tcp che provenga dalla porta 80.
Dato che la porta 80 è quella normalmente usata per il www, di fatto questa regola ci permette di accettare i dati del web.
Un’altra regola:
>> iptables -A INPUT -p udp --sport 53 -j ACCEPT
In questo modo aggiungiamo una regola alla catena di INPUT per accettare i pacchetti sul protocollo udp che provengono dalla porta 53, che è quella del DNS.
Con la regola:
>> iptables -A INPUT -j DROP
Questa dice di scaricare qualunque pacchetto sia in ingresso.
Quando arriva un pacchetto, Iptables lo analizza secondo l’ordine con cui sono state inserite le regole.
Se è loopback, viene accettata. Se è su tcp dalla porta 80, viene accettata. Se è su udp dalla porta 53, viene accettata.
Se non è nessuna di queste, viene scaricata. E ciò blocca qualunque altra cosa cerchi di entrare sul tuo computer.
Il che costituisce un firewall.
Il tutto può essere visualizzato di nuovo con il solito comando
>> iptables -L
Sebbene il firewall sia impostato e operativo per consultare il web, se il computer verrà spento si perderanno tutte le regole impostate.
iptables -A INPUT -p tcp –sport 80 -j ACCEPT
Manca un – prima di sport, il comando dovrebbe essere
iptables -A INPUT -p tcp –-sport 80 -j ACCEPT
Grazie Matteo per la segnalazione. In effetti si trattava di un problema di visualizzazione del carattere. Con la nuova formattazione si vede bene e non si rischiano errori.