|
Teoria
Se avete seguito i tutorial precedenti di questo progetto (ReteFaiX3), sapete che siamo giunti al punto in cui le basi per una rete informatica funzionante ci sono tutte: DHCP, DNS, Directory Server. In un prossimo futuro affronteremo l'installazione della posta elettronica. E' quindi giunto il momento di dotare la nostra rete di un collegamento che permetta di comunicare con il mondo. Questo passo comporta un significativo aumento di pericoli: virus, worm, malware, scansioni di rete e di servizi che mirano a trovare possibili exploit per permettere accessi fraudolenti ai nostri dati o ai nostri server/workstation. Dovremo quindi cominciare a difendere l'infrastruttura aziendale. Il primo step, pilone fondamentale per mettere in sicurezza una rete, e' l'introduzione di un bastione che divida la rete internet dalla nostra LAN aziendale: un firewall; ovvero un oggetto dotato di due schede di rete che si faccia carico di analizzare, permettere o bloccare tutto il traffico diretto da e per la nostra rete interna. Inoltre tramite il firewall potremo anche limitare l'accesso ad internet ai nostri utenti che, si sa, non vedono l'ora di videochiamare qualche amico remoto o di scaricare illegalmente l'ultimo film appena uscito nelle sale cinematografiche tramite il P2P, sottraendo tempo prezioso alla produzione.
Per far funzionare adeguatamente il servizio di firewall, sempre che non abbiate una ditta con migliaia di dipendenti, vi sara' sufficiente un vecchio pc riesumato dal fondo del vostro magazzino, che abbia almento due schede di rete. Una verra' collegata alla nostra rete interna, l'altra al dispositivo fornitoci dal provider per connetterci ad internet.
Pratica
Il firewall che stiamo realizzando si basa su Ubuntu server, procediamo quindi con l'installazione dal cd. Per l'occasione, visto che e' periodo di "raccolta" in casa Canonical, cogliamo la palla al balzo ed installiamo la release 9.10 (Karmic Koala).
L'installazione non ha un granche' di diverso da quella gia' fatta per realizzare il primo server del progetto. Quindi, se avete bisogno, fate riferimento alla guida Realizzare un dhcp server, e se proprio non doveste trovarvi, installate tranquillamente la versione 9.04, funzionera' tutto comunque.
Ai fini della realizzazione del firewall bastano poche cose: netfilter (che e' parte integrante del kernel linux), una versione particolarmente minimalista di desktop environment (fluxbox) ed il software di configurazione fwbuilder, che altro non e' che una GUI per agevolare la configurazione di netfilter. Per la cronaca, se avete gia' avuto esperienze in passato con firewall, questa interfaccia ricorda abbastanza quella di checkpoint di qualche anno fa. Comunque e' molto pratica ed immediata. Sicuramente piu' semplice del comando iptables.
In una prossima guida vedremo comunque come utilizzare il comando iptables per fare monitoraggio e problem solving del nostro firewall. In caso di emergenza e' sempre utilissimo saper lavorare al livello piu' basso per poter risolvere qualsiasi problematica.
Questa che andremo ad utilizzare, a quanto pare non e' la soluzione piu' diffusa, ma personalmente la uso da anni, prima su distribuzione Debian, in seguito su Ubuntu ed infine su Redhat, e devo dire che e' molto semplice, completa e funziona in ogni situazione.
Torniamo alla installazione: ci lasciamo guidare dalla wizard di installazione, scegliamo il nome del server, lasciamo configurare automaticamente lo spazio disco usando il LVM; non installiamo nulla in piu' dal tasksel, anche se in seguito vedremo come installare il demone sshd per permettere la configurazione grafica del nostro firewall da un pc remoto. Creiamo un account possibilmente diverso da quelli usati fino ad ora, in modo che l'accoppiata password e utenza sia unica e che sia conosciuta dal minor numero possibile di utenti. La sicurezza informatica incomincia dalle abitudini, non a caso uno dei piu' diffusi metodi per carpire informazioni e' il social engineering o, visto che la guida e' in italiano, ingegneria sociale che consiste in un insieme di tecniche che, raggirando, mentendo, interpretando le abitudini umane aiutano nel reperimento di accessi o informazioni vitali.
Una volta riavviato il server ed effettuata la login, procediamo con l'installazione del motore grafico (Xserver-Xorg) digitando:
sudo apt-get install xorg
Una volta data conferma ed atteso il tempo della installazione, procediamo installando il pacchetto con il gestore delle finestre e della sessione del server X. Digitiamo:
sudo apt-get install fluxbox
A questo punto, dopo la solita conferma, abbiamo installato quanto necessario per far funzionare l'ambiente grafico su di un server linux, in questo caso su Ubuntu karmic koala.
Procediamo adesso installando il server Openssh che ci servira' sia per accedere da remoto al nostro firewall, sia per l'impostazione dello stesso tramite l'interfaccia grafica che utilizzeremo per configurarlo. Digitiamo:
sudo tasksel
e selzioniamo la funzione openssh server.
Diamo conferma selezionando ok e passiamo alla installazione dell'ultimo pacchetto, la GUI che useremo per configurare il nostro firewall. Digitiamo:
sudo apt-get install fwbuilder
Diamo conferma, cosi' facendo abbiamo installato tutti i pacchetti necessari.
Controlliamo la configurazione delle interfacce di rete del nostro server editando il file /etc/network/interfaces
La prima scheda dovreste gia' averla configurata durante l'installazione, se cosi' non fosse accertatevi di assegnare un indirizzo ip pubblico a vostra disposizione alla prima scheda (eth0), mentre dobbiamo assegnare un ip della nostra rete privata alla seconda interfaccia (eth1), io assegnero' il 192.168.1.254/24. Per farlo inserite le seguenti righe, facendo attenzione che non esistano doppioni:
auto eth0
iface eth0 inet static
address <ip pubblico>
netmask <subnet mask>
auto eth1
iface eth1 inet static
address 192.168.1.254
netmask 255.255.255.0
Qualora abbiate la necessita' di configurare l'interfaccia di rete esterna con un indirizzo dinamico, le righe di configurazione per la eth0 dovrebbero essere le seguenti:
auto eth0 iface eth0 inet dhcp
Salviamo e quindi procediamo andando ad impostare la password per l'utente root che utilizzeremo per la compilazione e l'esecuzione delle regole del firewall. Digitiamo:
sudo passwd
inseriamo la nostra password e quindi la password che si vuole associare all'utente root. Piu' e' complessa e piu' il sistema sara' sicuro. In seguito vedremo come impostare un utente dedicato con diritti piu' restrittivi. Ripetiamola per conferma et... voila'.
Siamo pronti per cominciare a configurare il nostro firewall.
Innanzitutto dobbiamo far partire il motore di xserver, non abbiamo volutamente installato l'avvio automatico del motore in quanto si vogliono preservare le risorse del nostro server. Quindi ogni qualvolta si vorra' configurare una regola o qualsiasi inmpostazione dovremo attivare il server grafico, in realta' questo si verfichera' saltuariamente, quindi se state pensando che e' una rottura, non preoccupatevene troppo. Inoltre in una prossima guida vedremo come configurare il firewall da un client senza dover attivare xorg ad ogni accesso.
Digitiamo:
startx
Premiamo ok alla finestra che ci segnala che non riesce a caricare il wallpaper ed eccoci nel nostro gestore windows minimalista. Premiamo il tasto destro del mouse in un punto qualsiasi dello schermo, selezioniamo il sotto-menu
Applicazioni - Sistema - Sicurezza - Firewall Builder
Diamo ok alla finestra che ci segnala la presenza di versioni aggiornate del software, selezioniamo il check per disabilitare la visualizzazione dei consigli e chiudi la finestra dei consigli. Siamo pronti per cominciare:
premiamo il tasto destro sulla voce Firewall a sinistra e selezioniamo dal menu contestuale new firewall.
Impostiamo il nome del firewall, selezioniamo nella casella di selezione choose firewall software it is running la voce iptables, mentre nella casella di selezione choose os the new fierwall runs on scegliamo linux 2.4/2.6. Premiamo next.
Selezioniamo configure interfaces manually in modo da specificare noi la configurazione che vogliamo attuare e premiamo next.
Inseriamo il nome dell'interfaccia (generalmente eth0), una etichetta descrittiva (ad esempio Rete Esterna), un indirizzo Ip (io metto l'ip della rete nat del mio sistema virtuale virtualbox), la subnetmask, e premiamo il bottone ADD.
Ripetiamo la stessa operazione per la seconda scheda di rete, facendo attenzione che le caselle di testo non vengono pulite automaticamente quando si preme il bottone e quindi andranno sovrascritte. Una volta fatto premiamo ADD e quindi FINISH. Ora sotto alla cartella firewalls nel treeview a sinistra potete trovare il vostro firewall che al suo interno conterra' le schede di rete e le pagine di configurazione per le regole di accesso (policy), per le regole di nat (NAT) ed infine per le regole di instradamento dei pacchetti (Routing). Selezioniamo il firewall e premiamo il bottone firewall settings
Nella prima schermata impostiamo il check su Always permit ssh access from the management workstation with this address ed impostiamo il valore della casella di testo a 127.0.0.1
Selezioniamo il tab Installer ed impostiamo la casella Directory on the firewall where script should be installed a /etc/init.d in modo che lo script possa essere eseguito in automatico ad ogni riavvio del firewall. Impostiamo la casella User name used to authenticate to the firewall con il valore root. Premiamo OK.
Ora selezioniamo a sinistra la scheda di rete interna e nella pagina di configurazione impostiamo il check su Management interface e premiamo APPLY.
Procediamo ora con la configurazione della nostra prima regola. Selezioniamo la voce Policy nella vista ad albero a sinistra, clicchiamo sul workspace delle regole a destra con il tasto destro del mouse e selezioniamo insert rule.
Automaticamente viene creata una regola che e' quella piu' restrittiva possibile, da questa si partira' per creare la regola che fa al caso nostro. Essendo questa la prima regola inserita, lasciamola invariata. In questo modo, nel momento in cui applicheremo le regole, il firewall dividera' completamente la nostra rete da quella pubblica, senza eccezioni di sorta. Inoltre il firewall non sara' raggiungibile in nessun modo da nessuno. Fate una prova a pingare il firewall da uno qualsiasi dei vostri pc nella rete interna e constatate che il firewall risponda.
Procediamo ora ad applicare la regola. Anzittutto la regola deve essere compilata, selezioniamo il bottone nella toolbar con la chiave inglese e le palline colorate (il penultimo)
Premiamo il bottone next del wizard, vi verra' chiesto dove salvare il file di configurazione di fwbuilder, digitate un nome e premete il bottone SAVE.
Attendiamo l'esito della compilazione, se va a buon fine premiamo il bottone FINISH.
Ora possiamo procedere con l'installazione della regola, premiamo l'ultimo bottone della toolbar, quello azzurro con le due frecce rosse, ci apparira' una finestra simile a quella della compilazione, premiamo il bottone NEXT,
A questo punto ci verra' richiesta la password dell'utente root
Inseriamola e premiamo il bottone OK.
Provate a pingare il firewall da un altro server o pc e vedrete che adesso non risponde piu'.
Bene, abbiamo erto un muro impenetrabile tra le due reti, quella pubblica e quella interna.
Manca un ultimo dettaglio, dobbiamo rendere permanente l'esecuzione dello script generato da FwBuilder e salvato in /etc/init.d come da impostazioni, ovvero dobbiamo entrare nella cartella digitando nella finestra terminale:
cd /etc/init.d
Ed eseguire la seguente istruzione:
sudo update-rc.d <nome del file script> defaults
Come primo parametro io inserisco ReteFaiX3-Firewall.fw, voi mettete il nome che avete digitato quando avete salvato/compilato le regole.
Nel prossimo tutorial vedremo come configurare oggetti, regole e i consigli per poter utilizzare le reti con il massimo della sicurezza possibile.
Vi lascio ora con alcune ricerche suggerite in caso di errori particolari riscontrati nella messa in opera di questo tutorial.
Per approfondire:
Errori di compilazione delle regole di FWBuilder
Errori in fase di compilazione delle regole in firewall builder (EN)
Errore durante l'installazione di FWBuilder
Errore durante l'installazione di FWBuilder (EN)
Errori in avvio del motore grafico xorg
Configurazione avanzata fluxbox



























