Cos’è iptables
Iptables è un software che opera nello spazio utente del sistema operativo Linux. Consente a un amministratore di sistema di configurare le regole applicate nel filtraggio dei pacchetti IP ricevuti dalla macchina. Quando una connessione non va a buon fine, è spesso a causa di una regola del firewall.
Struttura di iptables
Iptables è composto da una serie di regole organizzate in tabelle e catene.
Le tabelle sono le seguenti:
filter
: è la tabella predefinita e viene utilizzata per il filtraggio dei pacchetti.nat
: viene utilizzata per la traduzione degli indirizzi di rete.mangle
: viene utilizzata per modificare i pacchetti.raw
: viene utilizzata per lavorare con i pacchetti prima che vengano modificati da altre tabelle.security
: viene utilizzata per la gestione dei controlli di accesso obbligatori (MAC).
Ogni tabella contiene una serie di catene predefinite:
INPUT
: contiene le regole per i pacchetti in ingresso.OUTPUT
: contiene le regole per i pacchetti in uscita.FORWARD
: contiene le regole per i pacchetti che vanno reindirizzati altrove.PREROUTING
: contiene le regole per i pacchetti che devono essere instradati,POSTROUTING
: contiene le regole per i pacchetti già instradati.
Loading diagram...
Tutte le catene contengono un numero arbitrario di regole che vengono valutate in sequenza, fino a quando le condizioni di una regole vengono soddisfatte.
Questa determinerà l’azione da intraprendere, che può essere ACCEPT
, DROP
, REJECT
, LOG
, RETURN
, ecc.
Una default policy
stabilisce cosa fare con i pacchetti per cui non viene trovata una corrispondenza.
La sequenza di valutazione delle regole può essere sintetizzata con le seguenti immagini:
Loading diagram...
Loading diagram...
Comandi base
Elenco delle regole
# Elenco delle regole
iptables -L [catena] [opzioni]
# Esempio
# Elenco di tutte le regole INPUT
iptables -L INPUT
# Elenco di tutte le regole con numeri di riga
iptables -L -n --line-numbers
# Elenco di tutte le regole con output dettagliato
iptables -L -v
Aggiungere una regola
# Aggiunge una regola alla fine di una catena
iptables -A <catena> <regola>
# Esempio
# Accetta tutto il traffico in ingresso sull'interfaccia di loopback
iptables -A INPUT -i lo -j ACCEPT
# Accetta tutto il traffico tcp in ingresso sulla porta 80
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Inserisce una regola in una posizione specifica in una catena
iptables -I <catena> [indice] <regola>
# Esempio
# Accetta il traffico dall'interfaccia eth0. Inserito in cima alla catena (l'indice è 1 di default)
iptables -I INPUT -i eth0 -j ACCEPT
# Accetta il traffico in ingresso da un indirizzo IP specifico sulla porta 22
iptables -I INPUT 2 -s 192.168.1.1 -p tcp --dport 22 -j ACCEPT
# Accetta le connessioni stabilite in precedenza
iptables -I INPUT 3 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Eliminare una regola
# Elimina una regola da una catena
iptables -D <catena> [indice | regola]
# Esempio
# Elimina la regola all'indice 2 dalla catena INPUT
iptables -D INPUT 2
# Elimina tutte le regole che corrispondono a un determinato criterio
iptables -D INPUT -m conntrack --ctstate INVALID -j DROP
# Elimina tutte le regole da una catena
iptables -F <chain>
# Esempio
# Elimina tutte le regole dalla catena INPUT
iptables -F INPUT
Salvare e ripristinare le regole
# Salva le regole in un file
iptables-save > /etc/iptables/rules.v4
# Ripristina le regole da un file
iptables-restore < /etc/iptables/rules.v4