Configurare Netfilter con Shorewall: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(Si procede lugo l'estate)
Nessun oggetto della modifica
Riga 56: Riga 56:
</pre>
</pre>


{{Box|Nota 1|<tt>shorewall</tt> viene installato senza alcuna configurazione predefinita. In <tt>/usr/share/doc/shorewall/examples</tt> sono presenti alcuni file di configurazione a cui è possbile riferirsi per iniziare la configurazione del firewall.}}
{{Box|Nota|<tt>shorewall</tt> viene installato senza alcuna configurazione predefinita. In <tt>/usr/share/doc/shorewall/examples</tt> sono presenti alcuni file di configurazione a cui è possbile riferirsi per iniziare la configurazione del firewall.}}


Terminata la configurazione, prima di avviare il servizio, è necessario editare <tt>/etc/default/shorewall</tt> per impostare la variabile <tt>startup</tt>:
Terminata la configurazione, prima di avviare il servizio, è necessario editare <tt>/etc/default/shorewall</tt> per impostare la variabile <tt>startup</tt>:
Riga 67: Riga 67:


==Dichiarazione delle Interfacce di Rete==
==Dichiarazione delle Interfacce di Rete==
Le interfacce di rete sono dichiarate nel file <tt>/etc/shorewall/interfaces</tt>:
<pre>
#ZONE INTERFACE BROADCAST OPTIONS
net  eth0      detect    blacklist,norfc1918,nosmurfs,routefilter
loc  eth1      detect
</pre>
Sono state dichiarate due interfacce: l'interfaccia publica sta sulla <tt>eth0</tt>, mentre la ''LAN'' sulla <tt>eth1</tt>.
Alle interfacce sono associate le etichette '''net''' e '''loc'''.
Nel campo ''OPTIONS'' sono specificate delle opzioni attive sull'interfaccia '''net''':
; blacklist: all'interfaccia è associato il file <tt>/etc/shorewall/blacklist</tt>, in cui si specificano gli indirizzi IP da bloccare
; norfc1918: l'interfaccia non deve accettare pacchetti il cui indirizzo sorgente è specificato nell'RFC1918 (principalmente indirizzi privati
; nosmurfs: filtra i pacchetti per gli ''smurfs'', cioè quelli che hanno come sorgente un indirizzo di broadcast
; routefilter: contro misura per spoofing
Per maggiori informazioni riferirsi a [http://www.shorewall.net/manpages/shorewall-interfaces.html interfaces(5)].


==Zone==
==Zone==
Le zone della rete sono dichiarate in <tt>/etc/shorewall/zones</tt>:
<pre>
#############################################################
#ZONE  TYPE    OPTIONS    IN                      OUT
#                          OPTIONS                OPTIONS
fw      firewall
net    ipv4
loc    ipv4
</pre>
Sono dichiarate una zona ''firewall'', ''net'' (internet) e ''loc'' (la rete locale).
Il campo ''TYPE'' individua il tipo di zona:
; firewall: è il firewall stesso e deve essere presente una sola zona di questo tipo
; ipv4: è il tipo standard predefinito
; ipsec: la comunicazione con gli host presenti in questa zona è criptata
Per maggiorni informazioni riferirsi a [http://www.shorewall.net/3.0/manpages/shorewall-zones.html zones(5)].


==Politiche Predefinite==
==Politiche Predefinite==
Le politiche predefinite specificano la politica di interconnessione delle zone dichiarate in <tt>/etc/shorewall/zones</tt>.
Si dichiarano nel file <tt>/etc/shorewall/policy</tt>:
<pre>
#SOURCE  DEST  POLICY    LOG          BURST:LIMIT
#                          LEVEL
loc      net    REJECT    info
net      all    DROP      info
all      all    REJECT    info
</pre>
Sorgente e destinazione possono essere:
; zone: un nome di zona definito nel file <tt>/etc/shorewall/zones</tt>
; $FW: è il firewall stesso
; all: tutte le zone
Le politiche più comuni:
; ACCEPT: la connessione viene accettata
; DROP: la connessione viene ignorata silenziosamente
; REJECT: per le connessioni TCP il firewall risponde con RST, per le altre connessioni il firewall risponde con un ICMP "unreacheable"


Se il campo ''LOG'' è impostato, la connessioni sono registrate secondo il ''log level'' dichiarato. È possibile anche l'utilizzo di ULOG per
la gestione dei log del firewall tramite l'infrastruttura ''ULOG''.
==Parametrizzazione==
==Parametrizzazione==



Versione delle 12:24, 9 set 2008

Introduzione

Netfilter è il framework di filtraggio pacchetti presente nei Kernel Linux (>= 2.4). Il software userspace associato a Netfilter è iptables ed è utilizzato per configurare le regole di filtraggio dei pacchetti. Shorewall è uno strumento ad alto livello per configurare Netfilter.

La guida si rivolge a chi come me deve amministrare quotidianamente un cospicuo numero di firewall Linux e si rende conto della difficoltà oggettiva a farlo con i classici shell script iptables.

iptables

iptables(8) è lo strumento base per costruire firewall.

Si utilizza il comando iptables per specificare le politiche predefinite, le regole di INPUT, quelle di OUTPUT e quelle di FORWARDING. Solitamente si raccoglie la serie di comandi in uno shell script destinato quasi sempre a crescere nel tempo man mano che le politiche di firewalling divengono più specifiche o devono descrivere nuove esigenze. Spesso ci si trova ad amministrare un firewall descritto da uno shell script anche complesso, ma sicuramente lungo che oggettivamente può creare difficoltà nella manutenzione del firewall. Inoltre è sicuramente più difficile stabilire, leggendo lo script, se le politiche di firewalling sono implementate correttamente.

Shorewall

Shoreline Firewall (in breve Shorewall) rientra nella categoria degli strumenti ad alto livello per configurare Netfilter.

Questo tipo di strumenti permettono di specificare regole di firewalling ad un livello d'astrazione più elevato di quello offerto da un semplice shell script iptables, utilizzando un linguaggio spesso vicino al modo in cui si definisce la politica di firewalling.

Per specificare una politica di firewalling si potrebbe procedere come segue:

  1. Individuazione delle zone di rete, p.e. rete locale, pubblica e DMZ.
  2. Politiche predefinite per il traffico da una zona all'altra.
  3. Regole di firewalling (non sono altro che delle eccezioni alle politiche predefinite di cui sopra.
Politiche di Firewalling per XYZ

Reti
 - locale
 - pubblica
 - DMZ

Politiche di traffico predefinite
 pubblica -> locale   DROP
 pubblica -> DMZ      DROP
 locale   -> pubblica REJECT
 locale   -> DMZ      ACCEPT
 DMZ      -> locale   DROP
 DMZ      -> pubblica REJECT

Regole
 locale -> pubblica:any:web ACCEPT
 locale -> pubblica:application_server:81 ACCEPT
 [...]

Ovviamente si tratta solo di un breve esempio, tuttavia si vedrà di seguito come Shorewall utilizzi una procedura analoga e una sintassi simile a quella mostrata qui sopra.

Il funzionamento di Shorewall consiste nel leggere dei file di configurazione, compilarli in una serie di comandi iptables ed eseguirli. Quindi non si tratta di un demone e il firewall funziona nello esattamente come quando lo si costruisce con il classico shell script.

Installazione in Debian GNU/Linux

L'installazione è semplicissima:

~# apt-get install shorewall
Info.png Nota
shorewall viene installato senza alcuna configurazione predefinita. In /usr/share/doc/shorewall/examples sono presenti alcuni file di configurazione a cui è possbile riferirsi per iniziare la configurazione del firewall.


Terminata la configurazione, prima di avviare il servizio, è necessario editare /etc/default/shorewall per impostare la variabile startup:

# prevent startup with default configuration
# set the below varible to 1 in order to allow shorewall to start
startup=1

A questo punto procedere con l'usuale:

/etc/init.d/shorewall start

Dichiarazione delle Interfacce di Rete

Le interfacce di rete sono dichiarate nel file /etc/shorewall/interfaces:

#ZONE INTERFACE BROADCAST OPTIONS
net   eth0      detect    blacklist,norfc1918,nosmurfs,routefilter
loc   eth1      detect

Sono state dichiarate due interfacce: l'interfaccia publica sta sulla eth0, mentre la LAN sulla eth1. Alle interfacce sono associate le etichette net e loc. Nel campo OPTIONS sono specificate delle opzioni attive sull'interfaccia net:

blacklist
all'interfaccia è associato il file /etc/shorewall/blacklist, in cui si specificano gli indirizzi IP da bloccare
norfc1918
l'interfaccia non deve accettare pacchetti il cui indirizzo sorgente è specificato nell'RFC1918 (principalmente indirizzi privati
nosmurfs
filtra i pacchetti per gli smurfs, cioè quelli che hanno come sorgente un indirizzo di broadcast
routefilter
contro misura per spoofing

Per maggiori informazioni riferirsi a interfaces(5).

Zone

Le zone della rete sono dichiarate in /etc/shorewall/zones:

#############################################################
#ZONE   TYPE    OPTIONS     IN                      OUT
#                           OPTIONS                 OPTIONS
fw      firewall
net     ipv4
loc     ipv4

Sono dichiarate una zona firewall, net (internet) e loc (la rete locale). Il campo TYPE individua il tipo di zona:

firewall
è il firewall stesso e deve essere presente una sola zona di questo tipo
ipv4
è il tipo standard predefinito
ipsec
la comunicazione con gli host presenti in questa zona è criptata

Per maggiorni informazioni riferirsi a zones(5).

Politiche Predefinite

Le politiche predefinite specificano la politica di interconnessione delle zone dichiarate in /etc/shorewall/zones. Si dichiarano nel file /etc/shorewall/policy:

#SOURCE   DEST   POLICY     LOG           BURST:LIMIT
#                           LEVEL
loc       net    REJECT     info
net       all    DROP       info
all       all    REJECT     info

Sorgente e destinazione possono essere:

zone
un nome di zona definito nel file /etc/shorewall/zones
$FW
è il firewall stesso
all
tutte le zone

Le politiche più comuni:

ACCEPT
la connessione viene accettata
DROP
la connessione viene ignorata silenziosamente
REJECT
per le connessioni TCP il firewall risponde con RST, per le altre connessioni il firewall risponde con un ICMP "unreacheable"

Se il campo LOG è impostato, la connessioni sono registrate secondo il log level dichiarato. È possibile anche l'utilizzo di ULOG per la gestione dei log del firewall tramite l'infrastruttura ULOG.

Parametrizzazione

Regole

Macro predefinite

Regole definite dall'utente

Aggiungere Macro

Blacklist

Abilitare il forwarding

Eseguire il DNAT

Gestire una DMZ

Dichiarazione dell'interfaccia

Politica Predefinita

Regole

Il comando shorewall