Translation(s): English - Italiano - Español


Iptables fornisce le funzionalità di filtraggio dei pacchetti, traduzione degli indirizzi di rete (NAT) e altre funzioni di rimaneggiamento dei pacchetti.

Due degli usi più tipici di iptables sono la funzione di firewall e NAT.

La configurazione manuale di iptables può essere impegnativa per i non esperti. Fortunatamente ci sono a disposizioni molti strumenti di configurazione (configurazione guidata) che assistono l'utente: ad esempio, fwbuilder, bastille, ferm (pagina wiki), ufw (Uncomplicated Firewall, da Ubuntu).

Visualizzare la configurazione attuale

Per vedere quali regole siano già configurate, usare questo comando:

 iptables -L

L'output sarà simile al seguente:

 Chain INPUT (policy ACCEPT)
 target     prot opt source               destination

 Chain FORWARD (policy ACCEPT)
 target     prot opt source               destination

 Chain OUTPUT (policy ACCEPT)
 target     prot opt source               destination

Quanto sopra permette a tutti di accedere a tutto.

Archiviare le regole di iptables in un file

Nota: c'è un pacchetto apposito che aiuta in questa operazione: iptables-persistent

Si possono rendere le impostazioni un poco più restrittive creando un file di prova per iptables:

 nano /etc/iptables.test.rules

In questo file inserire alcune regole base:

*filter

# Permette tutto il traffico su loopback (lo0) traffic e elimina tutto il traffico che non usa lo0 verso 127/8
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# Accetta in entrata su tutte le connessioni stabilite
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Permette tutto il traffico in uscita
# Potrebbe essere modificato per permettero solo un certo tipo di traffico
-A OUTPUT -j ACCEPT

# Permette connessioni HTTP e HTTPS da qualsiasi parte provengano (le normali porte per i siti web)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

# Permette le connessioni SSH
# IL NUMERO DI -dport DEVE ESSERE LO STESSO IMPOSTATO NEL FILE SSHD_CONFIG
-A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT

# Ora ci si dovrebbe informare sulle regole di iptables e considerare se l'accesso ssh
# per tutti sia realmente quello che si vuole. Molto probabilmente si preferisce 
# permettere l'accesso solo per alcuni IP.

# Permettere ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# registrare le chiamate negate di iptables (accesso via il comando 'dmesg')
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Respingere tutto il resto del traffico in entrata: politica del negare in modo predefinito quando non esplicitamente permesso
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

Tutto questo potrebbe sembrare complicato, ma provare a guardare una sezione alla volta. Ci si accorgerà che ciò che viene fatto è semplicemente chiudere tutte le porte tranne quelle che sono state permesse: che in questo caso sono le porte 80 e 443 (le porte standard dei browser web) e la porta SSH definita in precedenza.

Attivare queste nuove regole:

 iptables-restore < /etc/iptables.test.rules

e vedere la differenza:

 iptables -L

Ora l'output mostra che solo le porte definite prima sono aperte. Tutte le altre sono chiuse.

Una volta che si è soddisfatti, salvare le regole nel file di configurazione principale di iptables:

 iptables-save > /etc/iptables.up.rules

Per assicurarsi che le regole di iptables vengano usate al prossimo riavvio, creare un nuovo file:

 nano /etc/network/if-pre-up.d/iptables

e aggiungervi queste righe:

 #!/bin/bash
 /sbin/iptables-restore < /etc/iptables.up.rules

Il file deve essere eseguibile, perciò cambiare i suoi permessi:

 chmod +x /etc/network/if-pre-up.d/iptables

Notare: Questo HOWTO è frutto del contributo dell'utente Geejay a wiki.openvz.org e fa parte di un howto sull'installazione.

Vedere anche


CategorySystemAdministration