Difference between revisions of "Iptables (Italiano)"

From ArchWiki
Jump to: navigation, search
m (fixed some errors)
(aggiornati i template)
Line 10: Line 10:
 
{{Article summary end}}
 
{{Article summary end}}
  
iptables è un potente [[firewalls (Italiano)|firewall]] integrato nel kernel Linux ed è una parte del progetto [[Wikipedia:it:Netfilter|netfilter]]. Può essere configurato direttamente, oppure usando uno dei vari [[Firewalls (Italiano)#iptables_front-ends|frontends]] oppure una delle [[Firewalls (Italiano)#iptables_GUIs|GUI]]. {{Codeline|iptables}} è utilizzato per gli [[Wikipedia:it:Ipv4|ipv4]] mentre {{Codeline|ip6tables}} è usato per gli [[Wikipedia:it:Ipv6|ipv6]].
+
iptables è un potente [[firewalls (Italiano)|firewall]] integrato nel kernel Linux ed è una parte del progetto [[Wikipedia:it:Netfilter|netfilter]]. Può essere configurato direttamente, oppure usando uno dei vari [[Firewalls (Italiano)#iptables_front-ends|frontends]] oppure una delle [[Firewalls (Italiano)#iptables_GUIs|GUI]]. {{ic|iptables}} è utilizzato per gli [[Wikipedia:it:Ipv4|ipv4]] mentre {{ic|ip6tables}} è usato per gli [[Wikipedia:it:Ipv6|ipv6]].
  
 
== Installazione ==
 
== Installazione ==
 
 
{{Nota| Il proprio kernel dovrà essere compilato con il supporto per iptables. Tutti i kernel stock di Arch Linux hanno il supporto per iptables.}}
 
{{Nota| Il proprio kernel dovrà essere compilato con il supporto per iptables. Tutti i kernel stock di Arch Linux hanno il supporto per iptables.}}
  
Per prima cosa, installare il pacchetto {{Package Official|iptables}}:
+
Per prima cosa, installare il pacchetto {{Pkg|iptables}}:
  
 
  # pacman -S iptables
 
  # pacman -S iptables
  
Successivamente, aggiungere {{Codeline|iptables}} all'array [[daemon (Italiano)|DAEMONS]] nel file {{filename|/etc/rc.conf}} per far caricare le impostazioni personalizzate durante il boot:
+
Successivamente, aggiungere {{ic|iptables}} all'array [[daemon (Italiano)|DAEMONS]] nel file {{ic|/etc/rc.conf}} per far caricare le impostazioni personalizzate durante il boot:
  
{{File|name=/etc/rc.conf|content=.....
+
{{hc|/etc/rc.conf|2=.....
 
DAEMONS=(... '''iptables''' network ...)}}
 
DAEMONS=(... '''iptables''' network ...)}}
  
Line 28: Line 27:
  
 
=== tabelle ===
 
=== tabelle ===
 
+
iptables contiene quattro tabelle: {{ic|raw, filter, nat}} e {{ic|mangle}}.
iptables contiene quattro tabelle: {{Codeline|raw, filter, nat}} e {{Codeline|mangle}}.
+
  
 
=== catene ===
 
=== catene ===
 
+
Le catene sono utilizzate per indicare una serie di regole. Un pacchetto viene comparato dall'inizio della catena fino a che non soddisfa una regola. Ci sono tre catene principali: {{ic|INPUT, OUTPUT}} e {{ic|FORWARD}}. Tutti i pacchetti generati dal sistema ed in uscita, passano attraverso la catena {{ic|OUTPUT}}, tutti i pacchetti in entrata e destinati al sistema stesso passano attraverso la catena {{ic|INPUT}}, mentre i pacchetti che transitano per il sistema ma sono destinati ad altri sistemi passano dalla catena {{ic|FORWARD}}. Queste catene hanno destinazioni di default nel caso nessuna regola venga soddisfatta. Catene personalizzate dagli utenti possono essere aggiunte per aumentare l'efficienza delle regole.
Le catene sono utilizzate per indicare una serie di regole. Un pacchetto viene comparato dall'inizio della catena fino a che non soddisfa una regola. Ci sono tre catene principali: {{Codeline|INPUT, OUTPUT}} e {{Codeline|FORWARD}}. Tutti i pacchetti generati dal sistema ed in uscita, passano attraverso la catena {{Codeline|OUTPUT}}, tutti i pacchetti in entrata e destinati al sistema stesso passano attraverso la catena {{Codeline|INPUT}}, mentre i pacchetti che transitano per il sistema ma sono destinati ad altri sistemi passano dalla catena {{Codeline|FORWARD}}. Queste catene hanno destinazioni di default nel caso nessuna regola venga soddisfatta. Catene personalizzate dagli utenti possono essere aggiunte per aumentare l'efficienza delle regole.
+
  
 
=== destinazione ===
 
=== destinazione ===
 
+
Una destinazione è il risultato che si ottiene quando un pacchetto soddisfa una regola. Le destinazioni sono specificate mediante l'uso di {{ic|jump}} ({{ic|-j}}). Le destinazioni più comuni sono {{ic|ACCEPT, DROP, REJECT}} oppure {{ic|LOG}}.
Una destinazione è il risultato che si ottiene quando un pacchetto soddisfa una regola. Le destinazioni sono specificate mediante l'uso di {{Codeline|jump}} ({{Codeline|-j}}). Le destinazioni più comuni sono {{Codeline|ACCEPT, DROP, REJECT}} oppure {{Codeline|LOG}}.
+
  
 
=== moduli ===
 
=== moduli ===
 
+
Esistono diversi moduli che possono essere usati per rafforzare {{ic|iptables}}, come {{ic|connlimit, conntrack, limit}} e {{ic|recent}}. Questi moduli forniscono funzionalità aggiuntive per permettere l'uso di regole di filtraggio più complesse.
Esistono diversi moduli che possono essere usati per rafforzare {{Codeline|iptables}}, come {{Codeline|connlimit, conntrack, limit}} e {{Codeline|recent}}. Questi moduli forniscono funzionalità aggiuntive per permettere l'uso di regole di filtraggio più complesse.
+
  
 
== Configurazione ==
 
== Configurazione ==
  
 
=== Da linea di comando ===
 
=== Da linea di comando ===
 
 
Sarà possibile controllare le regole in uso ed il numero di pacchetti che hanno soddisfatto le regole usando il comando:
 
Sarà possibile controllare le regole in uso ed il numero di pacchetti che hanno soddisfatto le regole usando il comando:
  
{{Command|name=iptables -nvL|output=Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
+
{{hc|# iptables -nvL|2=<nowiki>Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 
  pkts bytes target    prot opt in    out    source              destination   
 
  pkts bytes target    prot opt in    out    source              destination   
 
      
 
      
Line 56: Line 50:
 
      
 
      
 
Chain OUTPUT (policy ACCEPT 0K packets, 0 bytes)
 
Chain OUTPUT (policy ACCEPT 0K packets, 0 bytes)
  pkts bytes target    prot opt in    out    source              destination|prompt=#}}
+
  pkts bytes target    prot opt in    out    source              destination</nowiki>}}
  
 
Se l'output ottenuto è simile a quello nell'esemprio, allora non sono state configurate regole.
 
Se l'output ottenuto è simile a quello nell'esemprio, allora non sono state configurate regole.
Line 69: Line 63:
  
 
=== File di configurazione ===
 
=== File di configurazione ===
 +
Nel file di configurazione {{ic|/etc/conf.d/iptables}} vengono definite le locazioni dei file di configurazione delle regole. Le regole vengono caricate quando il demone viene avviato.
  
Nel file di configurazione {{filename|/etc/conf.d/iptables}} vengono definite le locazioni dei file di configurazione delle regole. Le regole vengono caricate quando il demone viene avviato.
+
{{hc|/etc/conf.d/iptables|2=<nowiki># Configuration for iptables rules
 
+
{{File|name=/etc/conf.d/iptables|content=# Configuration for iptables rules
+
 
IPTABLES_CONF=/etc/iptables/iptables.rules
 
IPTABLES_CONF=/etc/iptables/iptables.rules
 
IP6TABLES_CONF=/etc/iptables/ip6tables.rules
 
IP6TABLES_CONF=/etc/iptables/ip6tables.rules
Line 83: Line 76:
 
# * net.ipv6.conf.default.forwarding=1
 
# * net.ipv6.conf.default.forwarding=1
 
# * net.ipv6.conf.all.forwarding=1
 
# * net.ipv6.conf.all.forwarding=1
#IPTABLES_FORWARD=0}}
+
#IPTABLES_FORWARD=0</nowiki>}}
  
 
Per salvare le regole dopo una modifica usare il comando:
 
Per salvare le regole dopo una modifica usare il comando:
Line 94: Line 87:
  
 
=== Salvare i contatori ===
 
=== Salvare i contatori ===
 
+
Sarà possibile, opzionalmente, salvare i contatori di pacchetti e dei byte. Per poterlo fare, modificare il file  {{ic|/etc/rc.d/iptables}}
Sarà possibile, opzionalmente, salvare i contatori di pacchetti e dei byte. Per poterlo fare, modificare il file  {{filename|/etc/rc.d/iptables}}
+
  
 
Nella sezione '''save)''' cambiare la linea:
 
Nella sezione '''save)''' cambiare la linea:
Line 112: Line 104:
  
 
=== Guide ===
 
=== Guide ===
 
 
*[[Simple stateful firewall]]
 
*[[Simple stateful firewall]]
 
*[[Router]]
 
*[[Router]]
  
 
== Log ==
 
== Log ==
 +
La destinazione {{ic|LOG}} può essere utilizzata per registrare i pacchetti che soddisfano una regola. Diversamente dalle altre destinazioni come {{ic|ACCEPT}} o {{ic|DROP}}, il pacchetto continua a muoversi sulla catena dopo essere passato dalla destinazione {{ic|LOG}}. Questo significa che per registrare tutti i pacchetti bloccati, sarà necessario aggiungere una regola duplicata con destinazione {{ic|LOG}} prima di ogni regola con destinazione {{ic|DROP}}. Dato che questo riduce l'efficienza e rende le cose meno semplici, una catena {{ic|LOGDROP}} potrà essere creata al suo posto.
  
La destinazione {{Codeline|LOG}} può essere utilizzata per registrare i pacchetti che soddisfano una regola. Diversamente dalle altre destinazioni come {{Codeline|ACCEPT}} o {{Codeline|DROP}}, il pacchetto continua a muoversi sulla catena dopo essere passato dalla destinazione {{Codeline|LOG}}. Questo significa che per registrare tutti i pacchetti bloccati, sarà necessario aggiungere una regola duplicata con destinazione {{Codeline|LOG}} prima di ogni regola con destinazione {{Codeline|DROP}}. Dato che questo riduce l'efficienza e rende le cose meno semplici, una catena {{Codeline|LOGDROP}} potrà essere creata al suo posto.
+
{{hc|/etc/iptables/iptables.rules|2=<nowiki>## /etc/iptables/iptables.rules
 
+
{{File|name=/etc/iptables/iptables.rules|content=## /etc/iptables/iptables.rules
+
  
 
*filter
 
*filter
Line 140: Line 130:
 
-A INPUT -m state --state INVALID -j LOGDROP
 
-A INPUT -m state --state INVALID -j LOGDROP
  
... altre regole ...}}
+
... altre regole ...</nowiki>}}
  
 
=== Limitare le dimensioni del log ===
 
=== Limitare le dimensioni del log ===
 +
Il modulo {{ic|limit}} viene usato per impedire che il log di {{ic|iptables}} cresca troppo o causi inutili scritture sul disco. Senza usare limiti, un attaccante potrebbe riempire il disco (oppure la sola partizione {{ic|/var}}) facendo scrivere log ad {{ic|iptables}}.
  
Il modulo {{Codeline|limit}} viene usato per impedire che il log di {{Codeline|iptables}} cresca troppo o causi inutili scritture sul disco. Senza usare limiti, un attaccante potrebbe riempire il disco (oppure la sola partizione {{Filename|/var}}) facendo scrivere log ad {{Codeline|iptables}}.
+
{{ic|-m limit}} viene usato per attivare il modulo {{ic|limit}}. Si può utilizzare l'opzione {{ic|--limit}} per impostare un lasso di tempo  medio, l'opzione {{ic|--limit-burst}} serve per impostare il limite di pacchetti per i log. Ad esempio:
 
+
{{Codeline|-m limit}} viene usato per attivare il modulo {{Codeline|limit}}. Si può utilizzare l'opzione {{Codeline|--limit}} per impostare un lasso di tempo  medio, l'opzione {{Codeline|--limit-burst}} serve per impostare il limite di pacchetti per i log. Ad esempio:
+
  
 
  -A LOGDROP -m limit --limit 5/m --limit-burst 10 -j LOG
 
  -A LOGDROP -m limit --limit 5/m --limit-burst 10 -j LOG
  
Questo aggiunge una regola alla catena {{Codeline|LOGDROP}} che registrerà nel log tutti i pacchetti che passano da essa. I primi 10 pacchetti verranno registrati, e dopo di essi solo 5 pacchetti per minuto verranno registrati. Il {{Codeline|limit-burst}} viene ripristinato ogni volta che il non viene superato il tempo di {{Codeline|limit}}.
+
Questo aggiunge una regola alla catena {{ic|LOGDROP}} che registrerà nel log tutti i pacchetti che passano da essa. I primi 10 pacchetti verranno registrati, e dopo di essi solo 5 pacchetti per minuto verranno registrati. Il {{ic|limit-burst}} viene ripristinato ogni volta che il non viene superato il tempo di {{ic|limit}}.
  
 
=== syslog-ng ===
 
=== syslog-ng ===
 
+
Presumendo che si utilizzi [[syslog-ng]], come di default su Archlinux, è possibile controllare dove sarà salvato il log di {{ic|iptables}} in questo modo:
Presumendo che si utilizzi [[syslog-ng]], come di default su Archlinux, è possibile controllare dove sarà salvato il log di {{Codeline|iptables}} in questo modo:
+
 
  filter f_everything { level(debug..emerg) and not facility(auth, authpriv); };
 
  filter f_everything { level(debug..emerg) and not facility(auth, authpriv); };
 
in
 
in
 
  filter f_everything { level(debug..emerg) and not facility(auth, authpriv) and not filter(f_iptables); };
 
  filter f_everything { level(debug..emerg) and not facility(auth, authpriv) and not filter(f_iptables); };
  
Questo fermerà il log di {{Codeline|iptables}} nel file {{filename|/var/log/everything.log}}.
+
Questo fermerà il log di {{ic|iptables}} nel file {{ic|/var/log/everything.log}}.
  
Se si desidera che i log di {{Codeline|iptables}} vadano in un file diverso da {{filename|/var/log/iptables.log}}, basterà modificare il valore di destinazione di {{Codeline|d_iptables}} (sempre nel file {{filename|syslog-ng.conf}})
+
Se si desidera che i log di {{ic|iptables}} vadano in un file diverso da {{ic|/var/log/iptables.log}}, basterà modificare il valore di destinazione di {{ic|d_iptables}} (sempre nel file {{ic|syslog-ng.conf}})
  
 
  destination d_iptables { file("/var/log/iptables.log"); };
 
  destination d_iptables { file("/var/log/iptables.log"); };
  
 
=== ulogd ===
 
=== ulogd ===
 
+
[http://www.netfilter.org/projects/ulogd/index.html ulogd] è uno demone eseguito in userspace il suo scopo è quello di effettuare il log dei pacchetti per netfilter, questo demone può rimpiazzare la destinazione di default {{ic|LOG}}. Il pacchetto {{Pkg|ulogd}} è disponibile nel repository {{ic|[community]}}
[http://www.netfilter.org/projects/ulogd/index.html ulogd] è uno demone eseguito in userspace il suo scopo è quello di effettuare il log dei pacchetti per netfilter, questo demone può rimpiazzare la destinazione di default {{Codeline|LOG}}. Il pacchetto {{Package Official|ulogd}} è disponibile nel repository {{Codeline|[community]}}
+
  
 
== Ulteriori risorse ==
 
== Ulteriori risorse ==
 
 
* [[Wikipedia:it:Iptables|Articolo di Wikipedia su Iptables]]
 
* [[Wikipedia:it:Iptables|Articolo di Wikipedia su Iptables]]
 
* [http://www.netfilter.org/projects/iptables/index.html Homepage di Iptables]
 
* [http://www.netfilter.org/projects/iptables/index.html Homepage di Iptables]

Revision as of 20:07, 7 November 2011

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Iptables (Italiano)#)

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Template:Article summary start

Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary end

iptables è un potente firewall integrato nel kernel Linux ed è una parte del progetto netfilter. Può essere configurato direttamente, oppure usando uno dei vari frontends oppure una delle GUI. iptables è utilizzato per gli ipv4 mentre ip6tables è usato per gli ipv6.

Installazione

Nota: Il proprio kernel dovrà essere compilato con il supporto per iptables. Tutti i kernel stock di Arch Linux hanno il supporto per iptables.

Per prima cosa, installare il pacchetto iptables:

# pacman -S iptables

Successivamente, aggiungere iptables all'array DAEMONS nel file /etc/rc.conf per far caricare le impostazioni personalizzate durante il boot:

/etc/rc.conf
.....
DAEMONS=(... iptables network ...)

Concetti di base

tabelle

iptables contiene quattro tabelle: raw, filter, nat e mangle.

catene

Le catene sono utilizzate per indicare una serie di regole. Un pacchetto viene comparato dall'inizio della catena fino a che non soddisfa una regola. Ci sono tre catene principali: INPUT, OUTPUT e FORWARD. Tutti i pacchetti generati dal sistema ed in uscita, passano attraverso la catena OUTPUT, tutti i pacchetti in entrata e destinati al sistema stesso passano attraverso la catena INPUT, mentre i pacchetti che transitano per il sistema ma sono destinati ad altri sistemi passano dalla catena FORWARD. Queste catene hanno destinazioni di default nel caso nessuna regola venga soddisfatta. Catene personalizzate dagli utenti possono essere aggiunte per aumentare l'efficienza delle regole.

destinazione

Una destinazione è il risultato che si ottiene quando un pacchetto soddisfa una regola. Le destinazioni sono specificate mediante l'uso di jump (-j). Le destinazioni più comuni sono ACCEPT, DROP, REJECT oppure LOG.

moduli

Esistono diversi moduli che possono essere usati per rafforzare iptables, come connlimit, conntrack, limit e recent. Questi moduli forniscono funzionalità aggiuntive per permettere l'uso di regole di filtraggio più complesse.

Configurazione

Da linea di comando

Sarà possibile controllare le regole in uso ed il numero di pacchetti che hanno soddisfatto le regole usando il comando:

# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination   
     
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination    
    
Chain OUTPUT (policy ACCEPT 0K packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Se l'output ottenuto è simile a quello nell'esemprio, allora non sono state configurate regole.

Le regole possono essere resettate alle impostazioni di default usando questi comandi:

# iptables -P INPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -F
# iptables -X

File di configurazione

Nel file di configurazione /etc/conf.d/iptables vengono definite le locazioni dei file di configurazione delle regole. Le regole vengono caricate quando il demone viene avviato.

/etc/conf.d/iptables
# Configuration for iptables rules
IPTABLES_CONF=/etc/iptables/iptables.rules
IP6TABLES_CONF=/etc/iptables/ip6tables.rules

# Enable IP forwarding (both IPv4 and IPv6)
# NOTE: this is not the recommended way to do this, and is supported only for
# backward compatibility. Instead, use /etc/sysctl.conf and set the following
# options:
# * net.ipv4.ip_forward=1
# * net.ipv6.conf.default.forwarding=1
# * net.ipv6.conf.all.forwarding=1
#IPTABLES_FORWARD=0

Per salvare le regole dopo una modifica usare il comando:

# rc.d save iptables

Per caricare le nuove regole, usare il seguente comando:

# rc.d restart iptables

Salvare i contatori

Sarà possibile, opzionalmente, salvare i contatori di pacchetti e dei byte. Per poterlo fare, modificare il file /etc/rc.d/iptables

Nella sezione save) cambiare la linea:

/usr/sbin/iptables-save > $IPTABLES_CONF

in

/usr/sbin/iptables-save -c > $IPTABLES_CONF

Nella sezione stop), aggiugnere le seguenti linee per salvare prima dello stop del demone:

stop)
     $0 save
     sleep 2

Nella sezione start), cambiare la linea:

/usr/sbin/iptables-restore < $IPTABLES_CONF

in

/usr/sbin/iptables-restore -c < $IPTABLES_CONF

e salvare il file.

Guide

Log

La destinazione LOG può essere utilizzata per registrare i pacchetti che soddisfano una regola. Diversamente dalle altre destinazioni come ACCEPT o DROP, il pacchetto continua a muoversi sulla catena dopo essere passato dalla destinazione LOG. Questo significa che per registrare tutti i pacchetti bloccati, sarà necessario aggiungere una regola duplicata con destinazione LOG prima di ogni regola con destinazione DROP. Dato che questo riduce l'efficienza e rende le cose meno semplici, una catena LOGDROP potrà essere creata al suo posto.

/etc/iptables/iptables.rules
## /etc/iptables/iptables.rules

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

... altre catene definite dall'utente ..

## catena LOGDROP
:LOGDROP - [0:0]

-A LOGDROP -m limit --limit 5/m --limit-burst 10 -j LOG
-A LOGDROP -j DROP

... regole ...

## effettua il log ED effettua il drop dei pacchetti che soddisfano questa regola:
-A INPUT -m state --state INVALID -j LOGDROP

... altre regole ...

Limitare le dimensioni del log

Il modulo limit viene usato per impedire che il log di iptables cresca troppo o causi inutili scritture sul disco. Senza usare limiti, un attaccante potrebbe riempire il disco (oppure la sola partizione /var) facendo scrivere log ad iptables.

-m limit viene usato per attivare il modulo limit. Si può utilizzare l'opzione --limit per impostare un lasso di tempo medio, l'opzione --limit-burst serve per impostare il limite di pacchetti per i log. Ad esempio:

-A LOGDROP -m limit --limit 5/m --limit-burst 10 -j LOG

Questo aggiunge una regola alla catena LOGDROP che registrerà nel log tutti i pacchetti che passano da essa. I primi 10 pacchetti verranno registrati, e dopo di essi solo 5 pacchetti per minuto verranno registrati. Il limit-burst viene ripristinato ogni volta che il non viene superato il tempo di limit.

syslog-ng

Presumendo che si utilizzi syslog-ng, come di default su Archlinux, è possibile controllare dove sarà salvato il log di iptables in questo modo:

filter f_everything { level(debug..emerg) and not facility(auth, authpriv); };

in

filter f_everything { level(debug..emerg) and not facility(auth, authpriv) and not filter(f_iptables); };

Questo fermerà il log di iptables nel file /var/log/everything.log.

Se si desidera che i log di iptables vadano in un file diverso da /var/log/iptables.log, basterà modificare il valore di destinazione di d_iptables (sempre nel file syslog-ng.conf)

destination d_iptables { file("/var/log/iptables.log"); };

ulogd

ulogd è uno demone eseguito in userspace il suo scopo è quello di effettuare il log dei pacchetti per netfilter, questo demone può rimpiazzare la destinazione di default LOG. Il pacchetto ulogd è disponibile nel repository [community]

Ulteriori risorse