Apr 042013
 

pfSense

Vista la mia innata predilezione per l’open source, una tra le mie appliances preferite negli ultimi anni è stata ENDIAN.

Si tratta di un buon progetto italiano che riunisce in un’ambiente LINUX i “soliti noti” nel campo della sicurezza e del networking  (SNORT, iptables, SQUID, Dansguardian, ClamAV…) dando la possibilità di controllare tutto per mezzo di un’accattivante interfaccia web. E’ molto facile da configurare, anche se alcune funzionalità vengono sacrificate proprio per aumentarne la facilità di configurazione.

E disponibile una versione “community” con pochissime limitazioni e scaricabile gratuitamente.

Purtroppo il team ENDIAN ha deciso di effettuare quello che secondo la mia modestissima opinione è un vero suicidio tecnologico/commerciale mancando di supportare IPV6.

Infatti al momento non viene rilasciata alcuna notizia ufficiale circa una futura implementazione del nuovo protocollo. Qualche “voce”  indica come possibile l’adozione di IPV6 con il rilascio della versione 3.0. (tra diversi anni, con l’attuale ciclo di release….). Ogni richiesta in merito sui vari forum viene sistematicamente ignorata.

Immagino siano pochi gli amministratori di sistema che dovendo scegliere oggi un nuovo firewall optino per una soluzione priva di IPV6.

Io ho iniziato a cercarne uno che almeno nella roadmap abbia un’implementazione totale di tutti i servizi con il nuovo protocollo.

Mi sono imbattuto in pfSense una soluzione open source basata su FreeBSD.

Siamo alla versione 2.01, ma è già disponibile uno snapshot beta 2.1 con un pieno supporto IPV6.

Tra le caratteristiche a mio avviso più interessanti:

  • Totalmente gratuito. Solo l’asitenza è a pagamento per chi lo desidera.
  • Auto update direttamente dalla GUI 
  • Supporta direttamente 4 tipi di VPN
  • Load balancing in entrata e uscita
  • Normalizzazione di pacchetto direttamente da kernel  (vi ricordate il mio articolo sulle AET di qualche mese fa??)
  • WIFI captive portal 
  • Traffic shaping

Inoltre esiste una versione a 64 bit. Questa può sembrare una caratteristica secondaria, ma non lo è:  dobbiamo renderci conto che i tempi nei quali il firewall veniva installato su un PC obsoleto dismesso sono finiti.

Oggi, vista la complessità dei potenziali attacchi, una soluzione firewall veramente efficace per poter fornire un’adeguata larghezza di banda ad una rete trafficata deve disporre di una notevole potenza di calcolo e, se vogliamo parlare seriamente di DPI e normalizzazione di pacchetti, anche di una quantità di memoria non indirizzabile con una normale architettura a 32 bit. Per fare un esempio alcune tecniche di evasione (si veda mio articolo precedente) contano proprio sul fatto di riuscire a saturare la tabella degli stati (la cui dimensione è limitata dalla memoria disponibile) creando frammentazione dei pacchetti ad arte.

La prova su strada.

Ho installato la versione a 64 della beta 2.1 bit in ambiente virtualizzato.

Il setup con solo 2 interfacce (WAN e LAN) è stato portato a termine senza problemi. Ho avuto immediato accesso al pannello di controllo web, ma, cosa per me più importante, sono riuscito ad accedere alla VM con SSH in console. FreeBSD non è molto diverso da LINUX 🙂

Sicuramente il pannello di controllo è meno accattivante di quello di ENDIAN, ma ho notato immediatamente una maggiore ricchezza di opzioni. E’ possibile ad sempio segmentare la rete in modo diverso dal solito schema WAN-DMZ-LAN creando un numero arbitrario di connessioni che verranno poi gestite in maniera separata dai vari servizi.

IPV6

Direttamente dall’interfaccia web sono riuscito a configurare un tunnel IPV6 grazie a HE ottenendo una rete /48 ed ho assegnato alla LAN una sottorete /64. Per motivi di sicurezza non ho attivato sulla LAN sistemi per la distribuzione automatica della connettività (RADVD, DHCPv6) 

Ho creato nel firewall le policy per garantire l’accesso SSH e WEB al mio PC su IPV6 e le ho testate accedendo “dall’esterno” senza problemi.

In pochi minuti era tutto in funzione!

DPI con snort

snortpig

Passiamo alle configurazioni avanzate. Non volendo rinunciare alla DPI ho cercato  l’apposita configurazione. Non è presente!

Ma scorrendo l’elenco dei pacchetti installabili con un semplice click, ho trovato il ben noto simpatico porcello (SNORT).

Una volta installato ed inserito il mio OinkCode ho aggiornato le policy e attivato il servizio avvalendomi dalla semplice registrazione. Si raccomanda la sottoscrizione per un servizio migliore (vedi sito). Da notare che la configurazione è assolutamente granulare: abbiamo un pannello separato per ogni connessione (3 nel mio caso: LAN WAN e tunnelIPV6).

La WebUI di configurazione di SNORT è veramente molto completa. Oltre alla gestione delle regole, il preprocessore consente di attivare la normalizzazione su layer 7 su molti protocolli vanificando teoricamente alcune delle tecniche di evasione più diffuse.

Purtroppo il servizio è caduto dopo pochi minuti proprio sulla WAN. Ma come spesso succede nel mondo dell’open source dove è presente un’attiva community, è bastato googlare per trovare la soluzione. Tale soluzione richiede l’accesso alla console con SSH e la copia di alcuni file.

Copiando tutti i *.rules da  /usr/pbi/snort-amd64/etc/snort/preproc_rules/ alle cartelle delle interfacce (snort_xxxx ) in  /usr/local/etc/snort/  e riavviando il servizio è tornato tutto a posto.

Un po’ macchinoso, ma non dobbiamo dimenticare che parliamo di una versione BETA.

Riattivato il servizio ho notato che nonostante l’IP  assegnato sulla WAN sia “nuovo” dopo pochi secondi sono iniziati gli ALERT per attacchi provenienti dai soliti network cinesi o est europei e la lista degli IP bloccati si è allungata :-).

Unica nota positiva per tutta la prova non ci sono stati attacchi su IPV6. Non mi stupisce più di tanto perché una semplice scansione su un netblock /48 può richiedere parecchio tempo :-)Quindi per provare l’efficacia del nostro porcellino SNORT anche su IPV6 ho lanciato un portscan da un server esterno direttamente all’IP del mio PC. Il blocco è stato praticamente immediato!

Essendo in fase di TEST ho attivato indiscriminatamente tutte le regole, riuscendo in pochi minuti a far bloccare il mio IP della LAN  inibendomi così l’accesso al firewall.

Dopo un veloce cambio di IP sono riuscito a riaccedere e a disattivare le regole che avevano causato i falsi/positivi. Se conoscete un po’ SNORT saprete che il rischio di falsi positivi è dietro l’angolo e che conviene attivare solo le regole che servono!

Altri servizi

Le opzioni disponibili come moduli sono tantissime. Sicuramente interessanti i proxy e l’antivirus, ma non ho ancora avuto modo di testarli.

In conclusione

Una scoperta veramente interessante. Pochi fronzoli e molta sostanza. Di gran lunga più completo di ENDIAN a discapito della facilità di configurazione. 

Per chi volesse testare IPV6 sulla sua rete può essere un’alternativa alla linux box proposta da Luigi

Condivido la scelta di offrire come moduli opzionali determinate caratteristiche rendendo così molto flessibile il prodotto. Per esempio opportunamente configurato può funzionare da router/firewall o da proxy aziendale, due utilizzi completamente diversi che richiedono configurazioni diverse.

Ovviamente in ambiente enterprise sarebbe raccomandabile attendere il rilascio ufficiale della 2.1, anche se molti a quanto pare la stanno già utilizzando senza grossi problemi.

Fabrizio Vettore

  Una risposta a “pfSense firewall appliance con supporto IPV6”

  1. […] tempo fa in un articolo su questo blog avevo esplorato alcune delle caratteristiche di questo […]

 Lascia un commento

Puoi usare questi tag e attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)