Configurare Netfilter con Shorewall
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:
- Individuazione delle zone di rete, p.e. rete locale, pubblica e DMZ.
- Politiche predefinite per il traffico da una zona all'altra.
- 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
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