Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "IpTablesHowTo"
Differenze tra le versioni 4 e 5
Versione 4 del 16/11/2006 16.19.10
Dimensione: 5528
Commento:
Versione 5 del 17/12/2006 18.25.21
Dimensione: 6969
Autore: DavideLuigi
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 4: Linea 4:
Iptables è un firewall, installato di default su Ubuntu Iptables è un firewall, installato di default su Ubuntu, che sostituisce il vecchio ipchains.
Linea 6: Linea 6:
Ci sono molte informazioni disponibili per iptables, ma la maggior parte di esse abbastanza complicate; questo howto è indirizzato a chi ha la necessità di configurare un firewall semplice. Ci sono molte informazioni disponibili per iptables, ma per la maggior parte sono abbastanza complicate; questo howto mostrerà invece come avere un firewall minimale ma robusto.
Linea 8: Linea 8:
== Comandi di base ==
== Mostrare la configurazione attuale ==
Linea 14: Linea 15:
# iptables -L $sudo iptables -L
Linea 18: Linea 19:
mostra la configurazione attuale di. Dopo l'installazione, non ci sono regole impostate e l'output dovrebbe essere mostra la configurazione attuale di iptables.

Ad esempi
o, con Ubuntu appena installato, il firewall non ha una vera configurazione, perciò l'output dovrebbe essere
Linea 35: Linea 38:

cioè di default il firewall lascia passare di tutto, come indicano le scritte "policy ACCEPT" e l'assenza di altre regole.

== I concetti di base ==

Un computer connesso ad internet scambia continuamente dati col resto del mondo.

I dati che dal mondo esterno entrano nel nostro computer possono essere di tipo "buono", come ad esempio una pagina di un sito che abbiamo richiesto, o un amico che ci contatta in chat, e di tipo "cattivo", come ad esempio un cracker che ci contatta in vari modi e a nostra insaputa, per cercare di entrare nel nostro computer.

Il compito del firewall è riconoscere il traffico buono da quello cattivo, e bloccare il traffico cattivo. Per farlo, ha bisogno che siamo noi a dirgli cosa è buono e cosa no, mediante delle regole per fare i controlli sul traffico di dati.
Iptables raggruppa tutti i controlli che può fare sul traffico in entrata, nella cosiddetta Chain INPUT, catena di input; i controlli sul traffico in uscita sono invece raggruppati nella Chain OUTPUT. La Chain FORWARD serve ad esempio quando il traffico di dati non è indirizzato a noi ma passa comunque per il nostro computer.

Ognuna di queste catene ha una policy, cioè un'azione predefinita da eseguire quando tutti gli altri controlli della catena hanno fallito nel riconoscere se il dato era buono o meno.

Configurare Iptables

BR

Iptables è un firewall, installato di default su Ubuntu, che sostituisce il vecchio ipchains.

Ci sono molte informazioni disponibili per iptables, ma per la maggior parte sono abbastanza complicate; questo howto mostrerà invece come avere un firewall minimale ma robusto.

Mostrare la configurazione attuale

Il comando

$sudo iptables -L

mostra la configurazione attuale di iptables.

Ad esempio, con Ubuntu appena installato, il firewall non ha una vera configurazione, perciò l'output dovrebbe essere

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

cioè di default il firewall lascia passare di tutto, come indicano le scritte "policy ACCEPT" e l'assenza di altre regole.

I concetti di base

Un computer connesso ad internet scambia continuamente dati col resto del mondo.

I dati che dal mondo esterno entrano nel nostro computer possono essere di tipo "buono", come ad esempio una pagina di un sito che abbiamo richiesto, o un amico che ci contatta in chat, e di tipo "cattivo", come ad esempio un cracker che ci contatta in vari modi e a nostra insaputa, per cercare di entrare nel nostro computer.

Il compito del firewall è riconoscere il traffico buono da quello cattivo, e bloccare il traffico cattivo. Per farlo, ha bisogno che siamo noi a dirgli cosa è buono e cosa no, mediante delle regole per fare i controlli sul traffico di dati. Iptables raggruppa tutti i controlli che può fare sul traffico in entrata, nella cosiddetta Chain INPUT, catena di input; i controlli sul traffico in uscita sono invece raggruppati nella Chain OUTPUT. La Chain FORWARD serve ad esempio quando il traffico di dati non è indirizzato a noi ma passa comunque per il nostro computer.

Ognuna di queste catene ha una policy, cioè un'azione predefinita da eseguire quando tutti gli altri controlli della catena hanno fallito nel riconoscere se il dato era buono o meno.

Consentire il traffico per sessioni iniziate

Possiamo consentire che sessioni iniziate possano ricevere dati:

# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Consentire l'ingresso su porte specifiche

Potete iniziare bloccando il traffico, ma se state lavorando con SSH, avete bisogno di permettere il traffico su SSH prima di bloccare tutto.

Per consentire il traffico in ingresso sulla porta 22 (porta standard per il protocollo SSH), potete dire a iptables di consentire tutto il traffico TCP sulla porta 22 per la vostra scheda di rete.

# iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT

Specificatamente, questo comando aggiunge (-A) alla catena di INPUT la regola che tutto il traffico TCP (-p) sulla interfaccia (-i) eth0 per la porta di destinazione ssh venga consentito (-j ACCEPT).

Ricontrolliamo le impostazioni: (solo le prime linee, l'output mostra altre linee)

# iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination        

ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED  

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh 

Ora, consentiamo tutto il traffico web

# iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT

Ricontrollando le regole, avremo

# iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination        

ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED  

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh 

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www 

Abbiamo consentito il traffico TCP sulle porte ssh e web, ma siccome non abbiamo bloccato niente, tutto il traffico può ancora entrare.

Bloccare il traffico

Iptables, quando trova una regola che soddisfa un pacchetto, non controlla altre regole. Siccome le nostre regole per consentire il traffico ssh e web sono le prime, delle regole per bloccare tutto il traffico, possiamo continuare a ricevere il traffico che vogliamo. Quello che ci serve è impostare una regola che blocchi tutto il traffico alla fine. Il comando -A dice ad iptables di aggiungere la regola alla fine, quindi usiamo lo stesso comando.

# iptables -A INPUT -j DROP

# iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination        

ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED  

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh 

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www 

DROP       all  --  anywhere             anywhere 

Siccome non abbiamo specificato una interfaccia o un protocollo, tutto il traffico per qualsiasi interfaccia verrà bloccato, eccetto quello per le porte ssh e web.

Editare le regole di Iptables

L'unico problema con le impostazioni effettuate è che anche la porta loopback è bloccata. Potevamo impostare la regola DROP solo per l'interfaccia eth0 specificando -i eth0, ma possiamo anche aggiungere una regola per l'interfaccia loopback. Aggiungendo ora la regola in append, sarebbe inutile in quanto la regola precedente ha già bloccato tutto il traffico. Abbiamo la necessità di inserire la nuova regola nella quarta linea.

# iptables -I INPUT 4 -i lo -j ACCEPT

# iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination        

ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED  

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh 

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www

ACCEPT     all  --  anywhere             anywhere            

DROP       all  --  anywhere             anywhere

Le ultime due linee sembrano simili, quindi chiediamo a iptables di elencare maggiori dettagli.

# iptables -L -v

Ulteriori informazioni

[http://iptables-tutorial.frozentux.net/iptables-tutorial.html Guida a Iptables]

[http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO.html How-To per Iptables]

[http://www.netfilter.org/documentation/ Documentazione in varie lingua per Netfilter e Iptables]

Traduzione di BeniaminoCaputo

[http://www.ubuntulinux.org/wiki/IptablesHowTo Versione originale]