pfSense vs OPNsense: Comparazione Tecnica
1. Un po’ di storia
OpnSense è un sistema operativo di firewalling basato su HardenedBSD, nasce come fork di pfSense CE il quale, a sua volta, è un fork di m0n0wall. OpnSense è ora un pacchetto che può essere installato sulla build HardenedBSD.
Il 2 gennaio 2015 venne pubblicato l’annuncio di rilascio della prima release: la 15.1 sul sito ufficiale. In OpnSense le versioni rappresentano rispettivamente l’anno (es. 15) e il mese (es. 1).
La versione 15.1 indica, quindi, gennaio 2015 e sono previsti due minor release l’anno: a gennaio e a luglio (es. 22.1 e 22.7).
pfSense CE basato su FreeBSD, come accennato in precedenza, nasce come fork di m0n0wall nel settembre 2004 da *Chris Buechler e Scott Ullrich per superare alcuni limiti di questo ottimo sistema embedded.
Il sistema m0n0wall era per l’appunto un embedded firewall; questo suo grande punto di forza era anche una limitazione di espandibilità perché sia le applicazioni che il sistema operativo venivano eseguiti interamente in RAM. Perché il progetto si chiama pfSense CE.
Salutiamo anche m0n0wall, il progetto terminato definitivamente il 15 febbraio 2015.
Il suo padre fondatore, Manuel Kasper, sempre sulla pagina ufficiale incoraggia tutti i suoi utenti a “controllare” OpnSense.
*[ndr: aveva contribuito al progetto m0n0wall, ma qui sotto “The following persons have contributed code to m0n0wall” non compare il suo nome.]
2. Perché hanno deciso di fare il fork
Gli sviluppatori di OpnSense, hanno partecipato per anni al progetto pfSense CE ma nel 2014, mossi dal desiderio di voler fare un numero di cose in maniera diversa, decisero di creare un loro progetto che rispecchiasse maggiormente queste loro necessità.
I motivi dichiarati che hanno spinto al fork sono principalmente di tipo tecnico, ma anche di sicurezza e di qualità del codice.
In ultimo (ma non per importanza) anche a causa del cambio di licenza fatto da pfSense CE che causò qualche risentimento anche nella community.
3. pfSense CE: Licenza
Attualmente il numero della versione di pfSense CE rispetta il formato: <major>.<minor>.<patch>, molto simile al formato di FreeBD.
pfSense CE ha cambiato la sua licenza, che era di tipo licenza BSD originale (detta anche licenza BSD con 4 clausole), con una proprietaria nel 2014 (ma sempre open source).
Se volete trovare le informazioni della vecchia licenza potete trovarle nelle vecchie release del software nel file COPYRIGHT.
È stata sostituita (luglio 2016) un’altra volta, ed è ora rilasciato sotto la licenza open source chiamata Apache 2.0 open source license.
Anche questa licenza è di tipo OSI-approved (Open Soruce Initiative – Approved).
pfSense CE richiede a tutti coloro che intendono contribuire al progetto, di sottoscrivere e firmare elettronicamente un ICLA (Individual Contributors License Agreement).
Per avere maggiori informazioni sulla licenza pfSense CE consulta pfSense Documentation e pfSense Legal.
Su Wikipedia (EN) vengono mostrate le tabelle comparative per tutte le licenze open source e free.
pfSense Plus:
Licenza La versione a pagamento di pfSense Plus rispetta il formato delle versioni <year>.<month>.<patch>, la prima versione 21.02 è quindi uscita il febbraio 2021
4. OPNsense Licenza
Ad oggi OPNsense come copyright risulta essere sotto la Open Source Initiative approved license.
OPNsense ricade sotto la BSD 2-Clause “Simplified license, ossia si può redistribuire ed utilizzare rispettando le clausole.
Attenzione, il nome e il logo di OPNsenese può essere utilizzato, seguendo le TRADEMARK POLICY.
Versioni e road maps:
Qui di seguito vediamo l’elenco versioni e relative road maps di
pfSense e OPNsense.
In breve:
pfSense (su Kernel FreeBSD):
pfSense utilizza la licenza Apache 2.0 riassumendo si può usare liberamente il software, non si può rivendere se non previo accordo specifico.
Questo per fare in modo che la soluzione rimanga in qualche modo gratuita.
In particolare facciamo riferimento alla lista delle licenze che coinvolgono pfSense, e una descrizione generale sulla licenza pfSense.
OPNsense (su Kernel HardnessBDS):
OPNsense utilizza la Open Source Initiative approved license, che ne permette l’uso e la redistribuzione sotto determinate condizioni.
5. Tecnicamente cosa cambia
OPNsense dichiara di aver riscritto quasi tutto il codice mantenendo solo una porzione minore del 10% ancora condivisa con quella del suo fratello maggiore.
Dichiarano nella loro documentazione che, per quanto amino il set di funzionalità/caratteristiche di pfSense CE, non gli piace la qualità del codice e il loro metodo di sviluppo.
Proprio per rispettare un criterio di qualità (secondo il loro punto di vista ovviamente – ndr) scelsero di usare un framework con un Model View Controller chiamato Phalcon. La gui è basata su Bootstrap.
6. Quello che cambia meno
Fin dall’inizio la parte di firewalling rimane ad oggi ancora molto simile.
La gestione delle interfacce, delle NAT e delle regole tramite TAB per ogni interfaccia e delle VPN sono differenti quasi esclusivamente per il layout.
In entrambi i sistemi esistono le regole floatting che risultano simili alle regole dei firewall commerciali ed hanno priorità rispetto alle altre regole;
Per ogni interfaccia ci sono tab separati che raggruppano le regole del traffico che arriva in ingresso a quella interfaccia.
La scelta condivisa è giustificata dal fatto che sui firewall, la quasi totalità delle regole si creano su traffico in ingresso.
In questo modo le regole risultano ben strutturate, ordinate e molto più facili da gestire.
Passare dalla configurazione delle regole NAT da PfSense a OpnSense e viceversa, risulta semplice e intuitivo.
7. Differenze di poco impatto sulla funzionalità
Notevole è la differenza del layout, il sistema di ricerca di OpnSense e la gestione dei Report/Status/Diagnostics.
La prima differenza che citiamo riguarda i moduli di analisi del firewall, in particolare OPNSense utilizza il “System Health” come variante dei grafi RRD/Monitoring di pfSense.
Il modulo di OpnSense è interattivo e permetterà di avere un riscontro grafico durante un’eventuale analisi.
Lo strumento è utile quindi per trovare un problema velocemente e in maniera facile o, semplicemente, per guardare le performance.
Una volta entrati nel System Health si potranno rimuovere le voci dalla visualizzazione che non si vogliono guardare in quel momento, e utilizzare il grafico cursore/focus (in basso proprio sotto il grafico) per fare uno zoom della fascia temporale interessata.
È possibile, infine, esportare i dati della tabella (riportati in basso attivando Show Table On) in formato CSV.
Il sistema di pfSense ultimamente ha migliorato il suo sistema di monitoraggio tramite la Status/Monitoring.
Questo sistema permette di selezionare la categoria da analizzare (system status, traffico, pacchetti, quality, ecc.) e creare un grafico e dei dati statistici.
Per esempio scegliendo la categoria traffico, si può scegliere su quale interfaccia analizzare i dati (i.e. LAN,WAN,VPN,ecc.), qui sotto un layout di esempio.
Il layout di accesso ai menu e sottomenu, risulta completamente diverso, pfSense ha un layout prettamente responsive (il layout cambia a seconda della dimensione della finestra) e con un sistema di navigazione dei menu a tendina che si trovano sul lato superiore.
OPNsense ha un sistema di navigazione prettamente con menu ad albero sul lato sinistro della pagina.
Il sistema OPNsense sembra meno accurato, ma in compenso offre un sistema di ricerca molto comodo (campo di ricerca in alto a destra) che permette di trovare i sottomenu senza per forza sapere dove si trovano.
Questo sistema di ricerca, benché molto utile, non ha però una particolare intelligenza, bisogna conoscere il nome del sottomenu desiderato in modo abbastanza preciso; non sembra fare una ricerca di pattern matching.
Anche nella gestione dei reports i due firewall hanno scelto strade diverse, per esempio in OPNsense viene utilizzato netflow, mentre su pfSense utilizza i system logs, anche la scelta di dove si trovano nei menu sono diverse.
Anche se le differenze si incominciano a notare, imparare ad usare uno o l’altro sistema o meglio passare da un sistema all’altro, risulta abbastanza semplice o comunque richiede poco tempo per prendere confidenza.
Una tabella riassuntiva/comparativa (per quanto possibile) di alcuni strumenti di diagnostica
pfSense | OPNense |
---|---|
Status→traffic Graph | Reporting→Traffic |
RRD Summary | Health |
Status→SystemLogs | Reporting→ NetFlow + Insight |
Diagnostic→(i.e.PacketCapture) | Interface→Diagnostics→(i.e.) PacketCapture |
8. Alcuni screenshot: OPNsense – pfSense
9. Differenza con maggior impatto sulle funzionalità
Le differenze che incidono di più sul comportamento del firewall e che di fatto stanno aumentando col passare del tempo riguardano al momento la gestione dei servizi.
OPNsense include nell’installazione base alcuni servizi che pfSense® prevede solo su installazione.
I servizi aggiuntivi su pfSense mantengono spesso una loro struttura più indipendente dal resto del sistema, mentre su OPNsense tendono a venire integrati maggiormente.
In evidenza:
IPS(Suricata incluso in OPNsense), WebProxy(OPNsense incluso Squid), OpenDNS (incluso in OPNsense), Captive Portal, Network Time, Wake-on_LAN(incluso in pfSense).
La gestione e configurazione dei due sistemi, non solo nei servizi citati qui sopra, si differenzia abbastanza da rendere non utile la conoscenza di un sistema per saper configurare lo stesso servizio sull’altro sistema!
Un esempio su tutti è Zenarmor, ovvero un plugin che permette il controllo avanzato del traffico.
Su OPNsense l’installazione è banale ed eseguita dalla GUI, mentre su pfSense, alla data di stesura di questo articolo, l’installazione è possibile solo da riga di comando.
10. Differenze di cui tener conto
Captive portal
Anche in questo caso i sistemi sembrano simili, le differenze si notano quando si incominciano ad utilizzare le configurazioni advanced.
Quella che sembra la più significativa, è la possibilità su pfSense di eseguire degli script sulle landing page di login; tale possibilità è stata inibita da OPNsense per motivi di sicurezza.
Quindi entrambi permettono di personalizzare le pagine di login, mentre solo pfSense permette di eseguire un codice in grado di interagire con l’autenticazione
Attenzione che queste scelte a volte cambiano da versione a versione dello stesso firewall.
QinQ
Su pfSense (non ci risulta su OPNsense) esiste la possibilità di implementare il protocollo QinQ come estensione delle VLAN tag in una network.
Come esempio: posso far passare una Vlan 10 con un tag che non la fa andare in conflitto/la tiene separata con un’altra vlan10 (una specie di doppio tag).
VXLAN
Su OPNsense (non ci risulta su pfSense) è possibile configurare le VXLAN. VXLAN è un protocollo che incapsula il frame layer 2 Ethernet in pacchetti Layer 3 UDP), di fatto offre lo stesso servizio di QinQ ma in modo estendibile
CARP
Benché i due sistemi CARP si assomigliano molto, c’è una grossa differenza nell’implementazione del sistema che riguarda l’implementazione della sincronizzazione.
In pfSense, la sincronizzazione fra il Master e lo Slave avviene nel momento in cui viene applicata una qualsiasi modifica al Master, in breve quando si esegue un “applica” alle configurazioni modificate.
In OPNsense la sincronizzazione viene fatta all’interno del menu del sistema CARP, e va eseguito ogni volta che il sistemista lo desidera.
Non avviene in automatico quando si applicano le configurazioni al Master.
Zenarmor
In OPNsense e’ possibile installare da plugin il sistema di controllo del traffico (stile NGFW) Zenarmor di SunnyValley.
Una volta installato risulta perfettamente integrato col sistema e permette una eccellente gestione del traffico a livello Application, WebFiltering, White e Black list ed un sistema di reporting molto completo.
Ufficiosamente sembra possibile installarlo anche su pfSense ma solo da shell, ma ovviamente l’integrazione è da verificare.
Zenarmor offre una versione Open e altre versioni a pagamento.
NtopNg
NtopNg Il plug-in NtopNG, offre un sistema di verifica ed analisi del traffico di rete, molto approfondito.
Su entrambi i sistemi è installabile, ma solo su OPNsense è possibile passare alla versione a pagamento con possibilità di configurazioni avanzate e blocco del traffico tramite script specifici.
VPN
I due sistemi sono di nuovo molto simili, pfSense offre integrato nel sistema VPN anche un Server L2TP assente in OPNsense.
Su entrambe le piattaforme si possono installare wireguard e tinc, mentre solo su pfSense è installabile Tailscale.
Wireguard risulta più strutturato su pfSense e più semplice da configurare, mentre al momento risulta abbastanza scarno su OPNsense e con configurazioni a volte poco intuitive.
Tabella riassuntiva:
pfSense | OPNsense |
---|---|
OpenVpn (integrato) | OpenVpn (integrato) |
Ipsec (Integrato) | Ipsec (integrato) |
L2TP (integrato) | – |
WireGuard (da installare : sembra meglio strutturato) | WireGuard (da installare) |
tinc (da installare) | tinc (da installare) |
Column 1 Value 6Tailscale (da installare) | – |
Traffic Shaper
Anche la configurazione del traffic shaper è significatamene diversa.
OPNsense usa il sistema di pipe (limiti di traffico) e code (priorità sulle pipe) e delle regole apposite.
Le regole si trovano in un apposito TAB nel menu del Traffic shaper. Le regole sono necessarie per inserire il traffico in una pipe o in una coda.
pfSense offre un sistema di Code e di limiter (scollegati fra di loro).
L’implementazione delle code avviene nelle regole del firewall. È consigliabile utilizzare il tab flatting e usare una regola di match. All’interno della regola si può scegliere in quale coda posizionare il relativo traffico.
Il sistema QoS di pfSense appare ad oggi più completo, ma a volte meno intuitivo. Entrambi i sistemi di QoS non sono semplici da configurare, anche usando i rispettivi wilzard.
Qui sotto uno screenshot fra i due sistemi sul QoS:
11. Configurazioni advanced
Ovviamente non possiamo citare tutte le differenze, in particolare mi riferisco alla parte di configurazioni advanced o miscellaneus.
I menu sono molto diversi a volte per posizionamenti sul menu a volte per nomenclature a volte proprio per scelte tecnologiche diverse.
Per questo i due firewall in questo caso sono diversi e la conoscenza di un sistema non aiuta a conoscere l’altro.
Vi sono anche piccole differenze poco visibili inizialmente.
Faccio pochi esempi per spiegarci meglio.
La creazione dei certificati al momento è praticamente uguale, ma per esempio la durata dei certificati proposta è diversa e su OPNsense ci sono dei limiti che pfSense non impone (in questo caso OPNsense giustifica la scelta per motivi di sicurezza e rispetto degli standard).
L’ Hardware acceleration e’ completamente diverso dal relativo Cryptographic Hardware, non solo per la scelta dei nomi, ma anche delle tecnologie usate.
Invece i Thermal senseor sono praticamente uguali, ma li trovate in posti sul menu completamente diversi.
12. Considerazioni finali
pfSense e’ un firewall molto solido dalla doppia anima, una versione community (quella considerata in questo articolo) e una versione plus che e’ a tutti gli effetti una versione diversa e a pagamento.
OPNsense ha un approccio più open e inizialmente ha pagato questo con qualche problema di stabilità (IDS suricata, Squid e squidguard, CARP) che ad oggi sembrano completamente risolti.
Accetta maggiore integrazione con plug-in di terze parti, anche con versioni a pagamento specifiche di tali plug-in, che ovviamente si possono disdire o disinstallare senza compromettere il resto del firewall.
OPNsense prevede comunque la possibilità di utilizzare un servizio business.