Differences between revisions 6 and 8 (spanning 2 versions)
Revision 6 as of 2014-11-02 12:47:48
Size: 5134
Comment: sync with English master
Revision 8 as of 2019-06-06 14:57:52
Size: 6427
Comment: sync with English master v.35
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
'''NOTA BENE: iptables viene sostituito da [[nftables]] a partire da Debian Buster'''
Line 10: Line 12:

== Stato attuale ==

'''NOTA BENE: Debian Buster usa in modo predefinito l'infrastruttura nftables'''.

A partire da Debian Buster, nf_tables è il backend predefinito quando si usa iptables, attraverso il livello iptables-nft (cioè usando la sintassi iptables syntax con il sottosistema nf_tables del kernel).
Questo ha effetti anche su ip6tables, arptables e ebtables.

Si può passare da uno all'altro, tra iptables-nft e iptables-legacy usando update-alternatives (lo stesso vale per arptables ed ebtables):

{{{
# update-alternatives --set iptables /usr/sbin/iptables-legacy
# update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
}}}
Line 102: Line 118:
Ora l'output mostra che solo le porte definite prima sono aperte. Tutte le altre sono chiuse. Ora l'output mostra che solo le porte definite prima sono aperte. Tutte le altre sono chiuse. Se la macchina è sotto controllo remoto si può volere stabilire una nuova connessione ssh a questo punto.
Line 104: Line 120:
Una volta che si è soddisfatti, salvare le regole nel file di configurazione principale di iptables: == Rendere le modifiche permanenti ==

Dato che le tabelle IP (IP-Table) non sono persistenti, vengono cancellate ("ripulite") all'avvio successivo.

Una volta che si è soddisfatti del proprio insieme di regole, salvare le regole nel file di configurazione principale di iptables:
Line 129: Line 149:
Un altro metodo è quello di usare il pacchetto DebianPkg:iptables-persistent. Le regole possono essere memorizzate usando comandi del tipo:

{{{
  iptables-save > /etc/iptables/rules.v4
  ip6tables-save > /etc/iptables/rules.v6
}}}}
Line 137: Line 164:
   * Nozioni base su iptables: ~-<<BR>>.  http://www.justlinux.com/nhf/Security/IPtables_Basics.html -~    * Nozioni base su iptables: ~-<<BR>>. http://forums.justlinux.com/showthread.php?70876-iptables-basics -~

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


NOTA BENE: iptables viene sostituito da nftables a partire da Debian Buster

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).

Stato attuale

NOTA BENE: Debian Buster usa in modo predefinito l'infrastruttura nftables.

A partire da Debian Buster, nf_tables è il backend predefinito quando si usa iptables, attraverso il livello iptables-nft (cioè usando la sintassi iptables syntax con il sottosistema nf_tables del kernel). Questo ha effetti anche su ip6tables, arptables e ebtables.

Si può passare da uno all'altro, tra iptables-nft e iptables-legacy usando update-alternatives (lo stesso vale per arptables ed ebtables):

# update-alternatives --set iptables /usr/sbin/iptables-legacy
# update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

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:

 editor /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 --dport e' lo stesso di quello in /etc/ssh/sshd_config
-A INPUT -p tcp -m state --state NEW --dport 22 -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
# notare che bloccare altri tipi di pacchetti icmp è considerata da alcuni una cattiva idea
# rimuovere -m icmp --icmp-type 8 da questa riga per permettere tutti i tipi di icmp:
# https://security.stackexchange.com/questions/22711
-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. Se la macchina è sotto controllo remoto si può volere stabilire una nuova connessione ssh a questo punto.

Rendere le modifiche permanenti

Dato che le tabelle IP (IP-Table) non sono persistenti, vengono cancellate ("ripulite") all'avvio successivo.

Una volta che si è soddisfatti del proprio insieme di regole, 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:

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

e aggiungervi queste righe:

 #!/bin/sh
 /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

Un altro metodo è quello di usare il pacchetto iptables-persistent. Le regole possono essere memorizzate usando comandi del tipo:

  iptables-save > /etc/iptables/rules.v4
  ip6tables-save > /etc/iptables/rules.v6

}

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

Vedere anche


CategorySystemAdministration