Introduzione
Shorewall (Shoreline Firewall) è un tool per Linux che consente di configurare in modo semplice e potente iptables, trasformando una macchina Linux in un firewall in grado di proteggere una sola postazione o un'intera rete locale (LAN). In quest'articolo descriveremo la procedura per installarlo sulla distribuzione Linux Centos 5.x e successivamente, vedremo alcuni script per la configurazione dello stesso.
Installazione di Shorewall
Per installare Shorewall utilizzeremo il comando yum, in questo modo limiteremo i problemi relativi alle dipendenze dei pacchetti da installare singolarmente, ciò di cui abbiamo bisogno sono principalmente tre pacchetti rpm da scaricare tramite il comando wget lanciato da terminale, nello specifico digiteremo:
wget http://www.invoca.ch/pub/packages/shorewall/RPMS/ils-5/noarch/shorewall-4.5.12.0-1.el5.noarch.rpm
wget http://www.invoca.ch/pub/packages/shorewall/RPMS/ils-5/noarch/shorewall-core-4.5.12.0-1.el5.noarch.rpm
wget http://www.invoca.ch/pub/packages/shorewall/RPMS/ils-5/noarch/shorewall-init-4.5.12.0-1.el5.noarch.rpm
Ultimato il download possiamo passare all'installazione del pacchetto vera e propria, in questo caso possiamo seguire due strade alternative, la prima consiste nel lanciare sempre da terminale il comando
yum localinstall shorewall*.rpm
Così da poter installare tutti gli rpm precedentemente scaricati. La seconda possibilità invece ci viene in soccorso se durante la fase d'installazione viene generato un errore del tipo "Package shorewall-core-4.5.12.0-1.el5.noarch.rpm is not signed", in tal caso possiamo risolvere il problema lanciando il comando:
yum install --nogpgcheck shorewall *
La verifica dell'installazione può essere eseguita digitando alla fine dell'operazione il comando shorewall version, se tutto è andato a buon fine il sistema ci risponderà con la versione attualmente installata sul nostro sistema, nel nostro caso sul sistema è stata installata la versione 4.5.12.
![Visualizziamo la versione di Shorewall installata](https://static.html.it/app/uploads/2013/02/01.png)
Impostazioni Shorewall
Per iniziare ad utilizzare le funzionalità esportate da shorewall occorre avviarlo, ma prima si ha la necessità di abilitare lo startup del firewall impostando la direttiva STARTUP_ENABLED, contenuta in /etc/shoewall/shorewall.conf sul valore "Yes" tramite l'ausilio di un qualsiasi editor testuale come ad esempio gedit o vim, così come mostrato in figura 2. L'impostazione di tale direttiva su "Yes" permetterà anche l'avvio automatico del firewall ogni qualvolta il sistema viene avviato.
![Impostiamo l'avvio automatico di Shorewall](https://static.html.it/app/uploads/2013/02/02.png)
Ultimata e salvata la modifica possiamo procedere all'avvio del firewall utilizzando il comando: shorewall start, il corretto startup sarà eseguito, esclusivamente se sono state definite le "IP zone", la configurazione delle zone viene agevolata dalla presenza di alcuni file di configurazione standard da poter modificare a seconda delle proprie esigenze, i file sono contenuti in /usr/share/doc/shorewall-4.0.11/Samples/, il sistema ne mette a disposizione ben tre da utilizzare a seconda del numero di zone da configurare, nello specifico potremo scegliere tra: one-interface/, two-interfaces/ o three-interfaces/, individuato il file da utilizzare per la configurazione del nostro sistema occorrerà copiarlo dalla directory /usr/share/doc/shorewall-4.5.12.0/Samples/three-interfaces/{interfaces,policy,masq,routestopped,rules,zones} alla cartella /etc/shorewall/, naturalmente utilizzando il comando cp, nel nostro caso si è deciso di configurare shorewall con tre interfacce di rete, una per la LAN, una per WAN ed infine una per la DMZ.
La configurazione delle zone
Come in ogni firewall una delle operazioni fondamentali consiste nel'andare a definire le zone, shorewall ne permette la configurazione avvalendosi del file zones contenuto in /etc/shorewall/, in esso andremo ad inserire le specifiche delle zone, la nostra Linux box verrà identificata con la stringa fw, mentre le tre zone LAN, WAN E DMZ saranno identificate rispettivamente con le etichette loc, net e dmz, sarà necessario anche specificare il tipo di interfaccia che si va ad inserire, nel nostro caso firewall e ipv4.
![zone di Shorewall](https://static.html.it/app/uploads/2013/02/03.png)
Configurazione delle interfacce
Configurate le zone, si passa alla configurazione delle interfacce, resa possibile tramite l'utilizzo del file interfaces contenuto in /etc/shorewall/ , in esso dovremo associare le interfacce presenti sul nostro sistema con le zone precedentemente configurate, per ogni interfaccia dovremo fornire le zone, il nome dell'interfaccia, l'indirizzo di brodcast ed eventualmente delle opzioni, ad esempio nel campo options potremo inserire se l'interfaccia utilizza il protocollo dhcp, se si avvale del tcpflags ecc.
![interfacce rete Shorewall](https://static.html.it/app/uploads/2013/02/04.png)
Policy di configurazione standard
Arriviamo finalmente ad uno degli aspetti cardine di un firewall, la configurazione delle policy predefinite, tali policy sono applicate se non vengono specificate restrizioni specifiche per il servizio o la richiesta ricevuta, si dovrà quindi essere molto restrittivi in questa fase, in particolare potremo scegliere tra REJECT o DROP. L'impostazione delle policy di default avviene con l'ausilio del file policy presente all'interno della directory /etc/shorewall/. Ogni riga del file rappresenta una policy da applicare, per ogni policy si dovrà specificare la sorgente della richiesta e la destinazione (in termini di zona), la policy da applicare (accept,drop,reject) ed il livello di log da utilizzare, così da poter tracciare le attività svolte.
![Le policy da applicare nel filtraggio delle connessioni](https://static.html.it/app/uploads/2013/02/05.png)
Le regole di Shorewall
Definite le policy di configurazione standard procediamo nel raffinamento della sicurezza, andando a specificare le regole, denominate "rules", per le diverse richieste, che vogliamo gestire con accuratezza. Le regole possono essere gestite tramite il file di configurazione rules, presente sempre in /etc/shorewall/.
Avvio del firewall
Ultimate le configurazioni siamo pronti per avviare il nostro firewall, tramite il comando "shorewall start", all'avvio vengono processati i file di configurazione, caricati i vari moduli e compilati, se non vengono riscontrati errori digitando il comando "shorewall status" il sistema ci risponderà con "State:Started" indicandoci la data e l'ora di avvio, così come mostrato nella figura seguente.
![Shorewall è attivo e funzionante](https://static.html.it/app/uploads/2013/02/06.png)
Non solo riga di comando
Per coloro i quali non sono amanti della riga di comando, e vogliono avvalersi di una GUI semplice ed intuitiva è possibile utilizzare webmin interface for Shorewall, scaricabile dal link ufficiale ed integrabile in webmin attraverso la sezione Webmin Configurazion > Webmin modules > Install Modul from file, ad installazione ultimata all'interno del menù networking troveremo la nuova voce Shorewall Firewall (figura 7).
![Shorewall configurazione Webmin](https://static.html.it/app/uploads/2013/02/07.png)