Il plugin Zenarmor consente di aggiungere funzionalità di NGFW (Next Generation Firewall) a un normale firewall OPNsense. Il servizio Zenarmor prevede un piano gratuito e diverse tipologie di sottoscrizioni a pagamento, adatte a diversi ambienti di utilizzo (Home, SOHO, business, ecc.).
Attenzione! Zenarmor è un progetto commerciale il cui codice non viene rilasciato con licenze libere o open source.
Installazione
Zenarmor può essere installato su vari sistemi operativi, tra i quali OPNsense, pfSense, Debian e altre distribuzioni Linux. In questo caso vediamo come integrarlo su un firewall OPNsense.
La procedura di installazione è perfettamente documentata sui siti ufficiali di OPNsense (qui) e Zenarmor (qui).
Prerequisiti hardware
Per poter installare Zenarmor (precedentemente noto come Sensei), sono necessari alcuni requisiti hardware. In base alle caratteristiche, l’installer classificherà l’hardware come “compatibile”, “low-end” oppure “incompatibile”. Se il responso è “incompatibile”, non sarà possibile procedere oltre.
# Active Devices | Maximum WAN Bandwidth | Minimum Memory | Minimum CPU |
---|---|---|---|
0-50 | 300 Mbps | 1 GB | A Dual-Core CPU (x86_64 compatible, single core PassMark score of 200) |
50-100 | 500 Mbps – 10 Kpps | 4 GB | Intel Dual-Core i3 2.0 GHz (2 Cores, 4 Threads) or equivalent |
100-250 | 1 Gbps – 20 Kpps | 8 GB | Intel Dual-Core i5 2.2 GHz (2 Cores, 4 Threads) or equivalent |
250-1000 | 1-2 Gbps 40 Kpps | 16 GB | Intel Dual-Core i5 3.20 GHz (2 Cores, 4 Threads) or equivalent |
1000-2000 | 1-2 Gbps | 32 GB | Intel Quad-Core i7 3.40 GHz (4 Cores, 8 Threads) or equivalent |
2000+ | 2-4.5 Gbps | 64 GB | Intel Quad-Core i9 3.0 GHz (24 Cores, 48 Threads) or equivalent |
Come si può osservare nella tabella precedente, Zenarmor richiede almeno 1 GB di memoria. L’installer non continua se si ha meno di 1 GB di RAM. È raccomandato disporre di 8 GB di RAM per avere la migliore esperienza di reporting usando Elasticsearch come backend.
Se non si può usare Elasticsearch direttamente sul dispositivo (in caso di hardware low-end) e se non si dispone di un server/cluster Elasticsearch esterno, si può optare per il più leggero MongoDB.
Lo spazio disco da dedicare ai log varia in funzione del throughput della connessione e del tempo di attività. Il calcolo va fatto considerando almeno 5 MB di spazio per ora per megabit/s di throughput.
Ad esempio, considerando un ufficio che lavora prevalentemente dalle 9 alle 18, avendo una connessione Internet di 50 Mbps, lo spazio di archiviazione necessario quotidianamente sarebbe:
5 MB x 50 Mb/s x 9 ore = 2250 MB
ovvero poco più di 2 GB di spazio per ogni giorno di retention dei log.
Altri requisiti
Affinché Zenarmor possa funzionare correttamente, è necessario anche disabilitare alcune funzioni di offloading, come spiegato qui. In genere, le impostazioni predefinite di un’installazione di OPNsense sono già compatibili con questo requisito. Ad ogni modo, bisogna assicurarsi di disabilitare:
- Hardware CRC
- Hardware TSO
- Hardware LRO
- VLAN Hardware Filtering

Installazione da interfaccia web
La tipologia di installazione più semplice, nonché quella raccomandata, è quella tramite interfaccia web.
Per prima cosa bisogna abilitare il repository Sunny Valley Networks installando il corrispondente plugin:

Cliccando sulle informazioni del plugin, si possono visualizzare alcuni dettagli:

Dopo aver installato il plugin che abilita il repository, è il momento di installare il plugin Zenarmor vero e proprio. Ricaricando la pagina dei plugin, infatti, si troveranno alcune nuove voci:

os-sensei
Questo è il plugin che attiva le funzionalità next-generation firewall per OPNsense ed è quello che dobbiamo installare necessariamente.
os-sensei-agent
Questo plugin consente di gestire il proprio firewall tramite una console in cloud (Cloud Central Management); richiede ovviamente un account per il corrispondente servizio.
os-sensei-updater
Questo plugin si preoccupa di mantenere sempre aggiornato os-sensei.
L’installazione del plugin os-sensei comporta l’installazione di altri due plugin:
- os-sensei-updater
- ubench
Tra i messaggi di log mostrati in conseguenza dell’installazione, spiccano i seguenti:
31 application categories added.
12 web 2.0 categories added.
2538 applications added.
Web category max id is 1051
80 web categories added.
L’installer informa anche che, prima di utilizzare Zenarmor, sarà necessario procedere con il wizard di configurazione:
Just click on Zenarmor from OPNsense main menu, and you’ll be provided with the initial configuration wizard.
Un ulteriore messaggio avvisa anche che il port su FreeBSD di ubench attualmente non ha un maintainer e che quindi è molto probabile che vi siano problemi non risolti o che il plugin possa non essere aggiornato se non addirittura rimosso in futuro.
Installation wizard
Dopo aver installato il plugin os-sensei, nella barra laterale comparirà una nuova voce denominata, molto prevedibilmente, Zenarmor.
Cliccando sulla corrispondente dashboard, si aprirà la schermata che avvia il wizard di configurazione:

Scelta del database per gli eventi
Procedendo con la seconda fase, il wizard si assicurerà che l’hardware in uso sia sufficiente ad eseguire Zenarmor. Nel mio caso sto utilizzando una piattaforma APU di PCEngines che ha un processore AMD dual core e 4 GB di RAM, con un disco SSD di 120 GB. Il wizard classifica questo hardware come “Low-end” e quindi mi offre di usare due sole alternative come backend per gli eventi:
- un database Elasticsearch remoto (che al momento non ho)
- un database SQLite locale
Stando alla documentazione presente sul sito di OPNsense, mi sarei aspettato anche la possibilità di scegliere MongoDB, ma evidentemente qualcosa di recente è cambiato.

Come si può osservare dall’immagine, con SQLite c’è un limite massimo di 100 dispositivi gestibili.
Attenzione! La scelta del corretto database è fondamentale. Se si prevede di usare un cluster Elasticsearch remoto, ciò va fatto subito in quanto questa opzione non potrà essere modificata successivamente.
Inoltre, se prevedete di utilizzare un cluster Elasticsearch esterno come collettore per gli eventi di diversi dispositivi Zenarmor e disponete di una sottoscrizione SOHO o superiore, le informazioni di licenza vanno inserite prima di concludere il wizard, in modo tale da preparare adeguatamente il database. In caso contrario, una singola istanza Elasticsearch potrà gestire gli eventi di un singolo firewall.
Deployment mode
La terza fase prevede di scegliere il modello di funzionamento del firewall, proponendo le seguenti scelte:
- Passive Mode (solo reporting)
- Routed Mode con driver netmap nativo
- Routed Mode con driver netmap emulato
- Bridge Mode

Il wizard su OPNsense mi propone di default la terza opzione, mentre sul sito di Zenarmor la scelta predefinita è quella con driver nativo. La questione del driver dipende molto dall’hardware delle schede di rete presenti sul dispositivo. La mia APU utilizza schede di rete RTL8111E, che in teoria sono supportate, tuttavia ottengo il seguente avviso:

In realtà il warning è dovuto al fatto che sto utilizzando i driver generici inclusi nel kernel di FreeBSD. A questa cosa si può ovviare installando il plugin Realtek:

A proposito di questo plugin, il sistema ci informa di quanto segue:

Scelta delle security zone
Sistemata la questione driver, riavviato il dispositivo e tornati al wizard di configurazione di Zenarmor, è giunto il momento di scegliere le interfacce da proteggere, assegnandole alle corrispondenti security zone. Si possono usare le security zone predefinite (lan, wan, dmz, ecc.), oppure si possono definire delle zone custom. Nella mia configurazione ho tre interfacce, che assegno rispettivamente alla lan, alla dmz e alla wan.

Nel mio caso, l’interfaccia re1 risulta non assegnata, tuttavia è l’interfaccia fisica sulla quale è configurata l’interfaccia PPPoE che si connette ad Internet ed è pertanto la mia interfaccia WAN. Non so ancora se questa modalità è supportata da Zenarmor e forse è per questo motivo che, quando seleziono re1, mi compare l’avviso relativo al driver Netmap.
Subscription
Il quarto ed ultimo passo è quello relativo alla licenza; qui si può decidere se inserire una licenza esistente, avvalersi dei 15 giorni di prova della licenza Business oppure se proseguire con l’edizione gratuita. Io opto per quest’ultima, non essendo al momento interessato a provare la versione Business:

Quando si seleziona la versione gratuita, bisogna anche specificare il numero massimo di dispositivi connessi alla propria rete; questo numero non può essere superiore a 100.
Cliccando su Next e poi su Complete, si conclude il wizard di installazione:

Facciamoci un giro
Al termine dell’installazione, la dashboard di Zenarmor dovrebbe apparire più o meno così:

Log
Sbirciando nella sezione “Live Sessions” si possono già vedere delle cose interessanti.
La tab delle minacce (Threats), ad esempio, potrebbe mostrare già qualche evento. Nel mio caso, vedo classificate come minacce (ma al momento non bloccate) le connessioni verso Nextdns (link affiliato), sia quelle su porta 443 (DNS over HTTPS, o DoH), sia quelle su porta 853 (DNS over TLS, o DoT).
Questo avviene in quanto attualmente è presente una sola security policy, che è quella di default.
È importante sottolineare che la possibilità di aggiungere policy custom richiede una subscription premium.
Policy
Nel menu di Zenarmor, cliccando su Policy si accede alla sezione che permette di gestire le security policy del firewall. Come detto, in questo caso è presente la sola policy di default, in merito alla quale il sistema ci informa che:
Default policy is the fallback policy which will be assigned to your connections if no other policy is matching.
This policy configuration is mostly static and you can configure a limited set of parameters depending on your subscription.
In questo articolo, che è prevalentemente dedicato all’installazione di Zenarmor e non alla sua gestione, mi limito a mostrare una panoramica delle potenzialità senza entrare nei dettagli di come configurare le policy.
Security
Aprendo la tab Security di questa policy, le impostazioni predefinite sono le seguenti:

Come si può osservare, sia nella sezione “Essential Security” che in quella “Advanced”, tutte le categorie di traffico sono consentite, ma si può intervenire su quelle “Essential” per bloccare quelle che si ritengono rischiose. L’azione per le categorie riportate nella sezione “Advanced” possono essere modificate solo se si dispone di una subscription a pagamento.
Gestione delle applicazioni
Come detto inizialmente, il plugin Zenarmor trasforma il firewall OPNsense in un Next Generation Firewall (NGFW), che può quindi lavorare ad un livello superiore rispetto ad un tradizionale firewall layer 4, essendo in grado di distinguere il traffico di rete fino al livello 7 (ovvero il livello applicativo).
La tab “App Controls” consente di controllare quali applicazioni consentire oppure bloccare; le applicazioni sono classificate per categorie, consentendo quindi di permettere/bloccare intere categorie oppure le singole applicazioni in esse contenute.

Ad esempio, se volete fare un dispetto ai vostri figli, nella categoria “Gaming” potreste decidere di bloccare Roblox! 😛

Sulla sinistra si nota uno scudo rosso con la X, che sta ad indicare un’azione di blocco.
Web Control
La tab “Web Control” consente di applicare filtri al traffico web, in modo da bloccare o consentire categorie specifiche di siti, oltre a forzare il safe search per i motori di ricerca:

Anche in questo caso, il safe search e il filtraggio custom sono possibili solo con una subscription a pagamento, mentre con quella free potete esclusivamente scegliere il tipo di profilo da applicare:
- Permissive consente tutte le categorie
- Moderate Control blocca le categorie Adult, Advertisement, Hate/Violence/Illegal, Illegal Drugs e Pornography
- High Control restringe ulteriormente le categorie consentite, bloccando anche i social networks, i siti di video on line, ecc.
TSL inspection (o decryption)
Veniamo adesso ad una delle funzioni che sono ormai imprescindibili per un firewall di nuova generazione, ovvero la capacità di decrittare il traffico TLS per poterlo analizzare alla ricerca di virus, esfiltrazione di dati o altre minacce. Anche questa funzione non viene abilitata con la versione Free di Zenarmor, a meno di attivare una subscription di tipo SSE:

Peccato, perché mi avrebbe fatto veramente comodo, se non altro per finalità di test.
Conclusioni
Come si può evincere da questo articolo, l’installazione di Zenarmor su un firewall OPNsense è piuttosto semplice. Disporre di hardware modesto non compromette la possibilità di testare il prodotto, mentre hardware più “dotati” consentono di accedere a tutto il potenziale di questo interessante plugin, in particolare per quanto concerne le funzionalità di reporting.
Purtroppo i limiti della versione free sono del tutto evidenti, e questo ne rende l’utilizzo adatto esclusivamente per testing o, al più, per proteggere una rete casalinga dalle minacce più comuni.
In futuro non escludo di testare nuovamente questo prodotto su un hardware maggiormente compatibile e di attivare una subscription (trial o a pagamento) per approfondirne le caratteristiche e le potenzialità, anche se i piani previsti non mi convincono più di tanto.
Addendum 17 ottobre 2024
Dopo circa una settimana di utilizzo, ho notato che la mia APU Board non era molto stabile, manifestando frequenti e improvvisi riavvii. Disabilitando Zenarmor, il problema di è risolto. Purtroppo non ho avuto tempo di approfondire le cause di questo comportamento. Nei prossimi giorni replicherò l’installazione su hardware più recente e performante per vedere se l’anomalia si ripete.