Sinistra <- Monitoraggio di sistemi - parte 3 - Indice Generale - Copertina - Guida per il traduttore di ILDP -> Destra

Sistemi Liberi


Realizzazione di un firewall con pfSense

Realizzazione di un firewall con pfSense

di Stefano Sasso

L'articolo...

Nel mio precedente articolo è stato descritto, passo passo, come installare e configurare un semplice firewall con IpCop, facendo notare come IpCop, per la mancanza di determinate caratteristiche, non fosse la soluzione migliore per situazioni più complesse di una classica rete. In questo articolo vedremo invece la realizzazione di un firewall un po' più complesso del precedente con pfSense, una distribuzione firewall con più caratteristiche rispetto a IpCop.



Cos'è pfSense

pfSense[1] è una distribuzione firewall basata su FreeBSD[2] (pfSense deriva da m0n0wall, che è basato su FreeBSD).

Rispetto a IpCop, che consentiva anche a persone senza nozioni di configurazioni di rete di creare un firewall, pfSense richiede un minimo di conoscenza sull'argomento configurazione reti.

Caratteristiche tecniche di pfSense

Come si può evincere dal nome, pfSense usa l'ottima implementazione firewall pf (importata da OpenBSD[3]). Tra le sue principali caratteristiche, ha la possibilità di agire da captive portal, ossia da un sistema di monitoraggio degli accessi Wi-Fi in luoghi pubblici o come server DHCP, DNS e PPPoE, di effettuare limitazione di banda e di essere di supporto a numerosi tipi di VPN, come PPTP, IPSEC e per ultima, ma non meno importante, a OpenVPN. Tra le caratteristiche più importanti che si possono evidenziare, ci sono il supporto a CARP e pfSync, che consentono di creare cluster di firewall e inoltre che pfSense supporta più di una connessione ad internet, con la possibilità quindi di bilanciare il carico.

Tutto questo però ha un prezzo: pfSense infatti necessita di almeno 128 MB di RAM per rendere al meglio le proprie potenzialità.

Cosa faremo

In seguito vedremo come configurare il nostro firewall per fare NAT verso internet dei client LAN e per rendere pubblici dei servizi disponibili in alcuni server posizionati in DMZ.

Per realizzare il firewall sarà quindi necessario un elaboratore con tre interfacce di rete: una per il lato WAN, una per la LAN e una per la DMZ.

La nostra rete

Immaginiamo che la nostra rete sia così composta:

[Schema di Rete]

Sottoreti:

Installazione

Prima di procedere con l'installazione, assicuriamoci che il disco che vogliamo utilizzare non contenga dati importanti, poiché in seguito dovrà essere formattato.

Sul sito di pfSense cerchiamo l'immagine ISO del CD. Dopo averla trovata e masterizzata saremo pronti per iniziare l'installazione.

Avvio del CD

Assicuriamoci innanzitutto di aver abilitato il boot con avvio da CD. A questo punto inseriamo nel computer il CD che fungerà da firewall. Comparirà una schermata simile alla seguente:

Possiamo attendere il timeout del timer o premere il tasto "1". Dopo il caricamento del kernel FreeBSD verrà fatta partire un'istanza di pfSense da CD.

Sta per iniziare la prima configurazione del nostro firewall.

Viene mostrato un elenco delle schede di rete disponibili, e ci viene chiesto se si vuole eseguire la configurazione delle VLAN adesso ("Do you want to setup VLAN now?"). Questo perché è possibile fare in modo che un interfaccia del nostro firewall sia disponile su più VLAN, ovviamente previa opportuna configurazione di switch con supporto VLAN. Se si dovesse decidere di non utilizzare VLAN digitare n, a seguire INVIO (opzione valida nella maggior parte dei casi).

Essendo pfSense basata su FreeBSD, la nomenclatura delle interfacce di rete è un po' diversa rispetto ai sistemi GNU/Linux. Mentre su Linux le interfacce di rete vengono nominate come eth0, eth1, ethX qualsiasi sia il tipo di scheda, sui sistemi *BSD il nome di un'interfaccia di rete dipende dal driver utilizzato.
Ad esempio: nella schermata catturata durante l'installazione si notano le interfacce di rete ed0, ed1, ed2 che utilizzano il driver "ed", per schede di rete NE2000, SMC Ultra, 3c503, DS8390 .
È possibile trovare tutte le interfacce supportate (ed i loro nomi) nel FreeBSD Handbook[3] all'indirizzo web http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html.

A questo punto ci verrà chiesto quale tra le interfacce di rete precedentemente visualizzate dovrà essere usata per collegare la rete LAN. Digitare quindi il nome dell'interfaccia (in questo caso "ed0") e a seguire INVIO.

Successivamente verrà chiesto quale dovrà essere l'interfaccia per il collegamento a internet (collegamento al router/modem ethernet) (WAN), nel nostro esempio "ed1". Digitiamo il nome dell'interfaccia e a seguire INVIO.

Nella prossima schermata la richiesta sarà se si desidera configurare delle ulteriori interfacce di rete. Si vuole configurare anche l'interfaccia per la DMZ? Inseriamo quindi il nome dell'interfaccia (ed2) e a seguire, INVIO. Se non si dispone di ulteriori interfacce di rete è sufficiente premere INVIO alla successiva domanda "Enter the optional interface name...".

A questo punto verrà presentato un riassunto delle associazioni delle schede di rete. Se il tutto soddisfa le vostre esigenze è necessario digitare "y", seguito da INVIO.

Verrà completata l'inizializzazione del sistema. Se il vostro router non utilizza le indicazioni da server DHCP, la configurazione dell'interfaccia WAN potrebbe richiedere un po' di tempo, questo perché lo stesso cercherà le informazioni necessarie di un indirizzo IP dinamico.

Nota bene: se disponete di una serie di IP statici (come si presuppone in questo articolo) dovrete configurare il vostro router perché conduca le richieste per la sottorete della DMZ verso il firewall.

Installazione su hard disk

Al termine dell'inizializzazione del sistema verrà prospettato un menù. Per installare il sistema su hard disk digitare "99".

Verrà avviata la procedura di installazione. ATTENZIONE: con il percorso qui descritto, l'intero contenuto del disco verrà formattato e quindi tutti i dati cancellati.

Comparirà una schermata simile a questa.

Posizioniamoci con l'utilizzo del tasto tab su <Accept these Settings>, a seguire INVIO. Sulla successiva schermata selezioniamo <Install pfSense> e premiamo il tasto INVIO.

Ci verrà ora chiesto su quale hard disk installare pfSense. Selezioniamo il disco sul quale vogliamo installare il sistema e a seguire digitiamo INVIO.

La schermata che apparirà sarà la seguente.

Se il disco non è mai stato utilizzato per un firewall pfSense, scegliamo <Format this Disk>, e a seguire digitiamo INVIO.

Verrà presentata la geometria del disco rilevata.

Se è corretta posizioniamoci su <Use this Geometry> e a seguire premiamo INVIO.

Ci verrà ora chiesta l'ultima conferma per la formattazione del disco. Selezioniamo <Format ...> e digitiamo il tasto INVIO.

Il sistema ci chiederà se vogliamo partizionare il disco. Se desideriamo che tutto il disco del nostro firewall sia dedicato a pfSense, scegliamo <Skip this Step>, a seguire INVIO.

Ci verrà chiesto di installare il blocco di boot:

selezioniamo <Accept and Install Bootblocks> e a seguire premiamo INVIO.

La schermata successiva riguarderà la creazione di alcune sottopartizioni (root e swap):

Possiamo accettare le scelte di default selezionando <Accept and Create> (a seguire di nuovo INVIO).

Ora tutti i file verranno copiati. Al termine del processo di copia possiamo effettuare il reboot del computer. Al riavvio assicuriamoci che il CD non sia più nel lettore.

Primo avvio

Dopo aver effettuato l'avvio senza CD-ROM verrà avviata un'istanza di pfSense dal disco fisso. Quando vedremo comparire il menù di configurazione testuale significherà che il sistema è stato avviato.

Come possiamo vedere all'interfaccia LAN è stato assegnato di default l'indirizzo 192.168.1.1

Configurazione del firewall

pfSense mette a disposizione un'ottima interfaccia web per la sua configurazione. È possibile raggiungere l'interfaccia di configurazione andando a visionare il sito web all'indirizzo http://192.168.1.1 e inserendo come nome utente admin e come password pfsense.

Dai vari menù sarà ora possibile configurare tutte le impostazioni del vostro nuovo firewall.

Iniziamo subito, cambiando le impostazioni di base del firewall. Posizioniamoci sul menù alla voce "System -> General Setup".

Cambiamo ora l'hostname del firewall, il dominio e il server DNS da utilizzare. Possiamo anche decidere di mettere in ascolto l'interfaccia di amministrazione web solo su https, in modo che lo scambio di informazioni avvenga in modo cifrato.
Sarebbe meglio anche cambiare la password per l'accesso all'interfaccia di amministrazione, scegliendone una più sicura di quella di default.

A questo punto clicchiamo quindi su save per salvare le informazioni inserite.

Procediamo ora ad assegnare gli indirizzi IP alle schede della WAN e della DMZ. Cominciamo con la WAN, quindi posizioniamoci sul menù fino a raggiungere la voce "Interfaces->WAN".

Come "Type" selezionare "Static". Inseriamo ora l'indirizzo IP, bit della maschera di rete e gateway di default (in questo esempio: 195.135.12.2, 30, 195.135.12.1).

Clicchiamo quindi su save per salvare le impostazioni.

Procediamo quindi a configurare l'interfaccia DMZ, andando su "Interfaces->OPT1".

Selezioniamo "Enable Optional 1 interface" per abilitare l'interfaccia e gli assegnamogli un nome più user-friendly, ad esempio DMZ. Possiamo ora inserire l'indirizzo IP e maschera di rete, in questo esempio 138.122.45.14 e 29 (255.255.255.248).

Prima di impostare le opportune regole di firewalling configuriamo qualche servizio per la rete LAN.

Possiamo impostare il nostro firewall perché funga da piccolo server DNS/DNS forwarder, semplicemente andando su "Services->DNS". Sarà anche possibile configurare il servizio DHCP per la LAN andando su "Services->DHCP Server".

Possiamo procedere ora a configurare le nostre regole di filtraggio di base. Andiamo su "Firewall->Rules" (il NAT per la LAN e' abilitato di default).

NOTA: Una sicurezza in più per gli host presenti in DMZ può consistere nell'abilitare in uscita dalla DMZ stessa solo i servizi necessari, ad esempio porta 25 verso qualsiasi host e porta 80 solo verso server per gli aggiornamenti dei pacchetti; tutto dovrà risultare bloccato. Questo per evitare che un attaccante possa sfruttare una vulnerabilità dei nostri server per scaricare qualcosa da internet ed eseguirlo.

Procediamo quindi ricordandoci la nota precedente. Clicchiamo sulla tab DMZ per gestire i pacchetti in ingresso da quell'interfaccia, ed aggiungiamo quindi la regola che consenta al nostro server di posta (138.122.45.10) di connettersi alla porta 25 di qualsiasi host. Successivamente consentiamo ai nostri server di connettersi via http all'host 62.90.12.193 (ipotizziamo che sia l'host per gli aggiornamenti dei pacchetti dei nostri server).

Per applicare le modifiche dalla pagina che elenca tutte le regole clicchiamo su "Apply changes".

Decidiamo ora quali servizi debbano essere disponibili nella nostra DMZ: portiamoci nella tab WAN per gestire i servizi accessibili dalla WAN (utilizzare la tab LAN per gestire i servizi visibili dalla LAN)

Consentiamo l'accesso alla porta SMTP del nostro server di posta, dopodiché configuriamo tutti i servizi sull'esempio di questo.

Ricordiamoci sempre di applicare le modifiche al termine della configurazione.

Ecco fatto, il nostro firewall e' pronto e servito.

Riferimenti bibliografici

[1] pfSense:http://www.pfsense.com/

[2] FreeBSD: http://www.freebsd.org/

[3] OpenBSD:http://www.openbsd.org/



L'autore

Stefano Sasso è appassionato di informatica, utilizza Linux dal 2000 e si diverte a programmare in Java, PHP, Perl e Python. A tempo perso è consulente informatico su piattaforme Open Source.


Sinistra <- Monitoraggio di sistemi - parte 3 - Indice Generale - Copertina - Guida per il traduttore di ILDP -> Destra