Il firefall su un server è una cosa fondamentale.
Per configurarlo occorre sapere a perfezione la sintassi di iptables? No!
Shorewall ci viene incontro grazie ad una sintassi più umana e la possibilità di configurare zone… Ma procediamo per ordine!
La versione di shorewall che installeremo sarà la 4.0.15-1, quella inclusa nella distribuzione Debian Lenny
Il primo passo è l’installazione, consiglio la versione in perl in quanto molto più performante:
apt-get install shorewall-perl
Bene, ora il nostro firewall attivo e possiamo cominciare la configurazione modificando il file /etc/shorewall/shorewall.conf con il nostro programma di editor preferito
pico -w /etc/shorewall/shorewall.conf
Visto che abbiamo installato shorewall-perl, abilitiamo il compilatore perl:
SHOREWALL_COMPILER = perl
Abilitiamo il log per i pacchetti marziani, cioè quei pacchetti che sono su una rete diversa da quella che in cui dovrebbero essere 🙂
LOG_MARTIANS = Yes
Settiamo una directory predefinita /etc/shorewall/localmacros in cui inserire i nostri file delle macro:
CONFIG_PATH=/et/shorewall:/usr/share/shorewall:/etc/shorewall/localmacros
Abilitiamo l’ip forwarding solo se necessario (se il firewall è installato su un sistema isolato oppure se l’accesso verso l’esterno avviene tramite proxy lasciare keep)
IP_FORWARDING = On
Abilitiamo anche il fast accept:
FAST_ACCEPT = Yes
Una breve menzione su ADMINISABSENTMINDED (letteralmente: l’amministratore è assente con la testa): lasciatelo a Yes, questo vi impedirà di bloccare la vostra connessione al sistema per colpa di qualche regola dovuta al troppo caffè 🙂
Per una guida completa ai parametri di configurazione di shorewall consultare la guida digitando
man shorewall.conf
Bene, ora la configurazione di shorewall è a posto! Con shorewall check possiamo testare se la configurazione è ok e non ci sono errori.
Proviamo ad eseguire il comando…
Debian:~# shorewall check Checking... ERROR: No firewall zone defined
Ovviamente da errore perché non abbiamo definito nessuna zona!
Come facciamo a definirla? Dobbiamo creare un file zones nella directory /etc/shorewall. Lo copiamo direttamente dagli esempi del file e lo modifichiamo:
cp /usr/share/doc/shorewall-common/default-config/zones /etc/shorewall pico -w /etc/shorewall/zones
Aggiungiamo quindi la nostra zona internet (massimo 5 caratteri!) di tipo ipv4:
inter ipv4
Riproviamo a dare shorewall check:
Debian:~# shorewall check Checking... Checking /etc/shorewall/zones... ERROR: No network interfaces defined
Mancano le interfacce di rete.
Anche qui copiamo il file interfaces dagli esempi del file e lo modifichiamo:
cp /usr/share/doc/shorewall-common/default-config/interfaces /etc/shorewall pico -w /etc/shorewall/interfaces
ed inseriamo:
inter eth0 - dhcp
stessa cosa per le policy:
cp /usr/share/doc/shorewall-common/default-config/policy /etc/shorewall pico -w /etc/shorewall/policy
ed inseriamo:
all all DROP info
In questo modo qualsiasi connessione viene bloccata e loggata.
Ora eseguendo il check vedremo che tutto è configurato! Non ci resta che farlo partire con shorewall start!
Ovviamente tutte le porte saranno bloccate, quindi non andrà nulla 🙂
Ora dovremmo riempire il file delle regole con le nostre direttive!
Il file si chiama rules e lo troviamo sempre nelle configurazioni di default:
cp /usr/share/doc/shorewall-common/default-config/rules /etc/shorewall pico -w /etc/shorewall/rules
Ecco un tipico file rules per un webserver:
COMMENT Abilito il ping Ping/ACCEPT inter fw - - - - 1/sec COMMENT Abilito http e https Web/ACCEPT inter fw COMMENT Abilito l'accesso via ssh da degli ip specifici SSH/ACCEPT inter:67.27.1.10,27.37.6.7 fw COMMENT Abilito il DNS DNS/ACCEPT fw inter COMMENT Abilito i server mail SMTP/ACCEPT fw inter SMTPS/ACCEPT fw inter POP3/ACCEPT fw inter POP3S/ACCEPT fw inter COMMENT Abilito Webmin Webmin/ACCEPT inter fw COMMENT
Da ricordare che i commenti vanno chiusi con un COMMENT finale.
Un elenco delle macro disponibili si trova eseguendo
shorewall show macros
Ora il vostro firewall è configurato al minimo essenziale!
Per maggiori dettagli leggete la guida di shorewall!
Ottima guida!
Aggiungerei nel titolo “Configurare shorewall per webserver in 10 minuti!”
Grazie!