Installare Zenarmor su OPNsense

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 DevicesMaximum WAN BandwidthMinimum MemoryMinimum CPU
0-50300 Mbps1 GBA Dual-Core CPU (x86_64 compatible, single core PassMark score of 200)
50-100500 Mbps – 10 Kpps4 GBIntel Dual-Core i3 2.0 GHz (2 Cores, 4 Threads) or equivalent
100-2501 Gbps – 20 Kpps8 GBIntel Dual-Core i5 2.2 GHz (2 Cores, 4 Threads) or equivalent
250-10001-2 Gbps 40 Kpps16 GBIntel Dual-Core i5 3.20 GHz (2 Cores, 4 Threads) or equivalent
1000-20001-2 Gbps32 GBIntel Quad-Core i7 3.40 GHz (4 Cores, 8 Threads) or equivalent
2000+2-4.5 Gbps64 GBIntel 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
Impostazioni di offloading corrette per un firewall OPNsense.
Impostazioni di offloading corrette per un firewall OPNsense.

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:

Installazione del plugin che abilita il repository Sunny Valley Networks
Installazione del plugin che abilita il repository Sunny Valley Networks

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

Informazioni riguardanti il repository di Zenarmor

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:

Plugin Sensei (Zenarmor) pronti per l’installazione

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:

  1. os-sensei-updater
  2. 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:

Schermata iniziale del 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:

  1. un database Elasticsearch remoto (che al momento non ho)
  2. 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.

Selezione del database per gli event log

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:

  1. Passive Mode (solo reporting)
  2. Routed Mode con driver netmap nativo
  3. Routed Mode con driver netmap emulato
  4. Bridge Mode
Modalità di deployment del firewall

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:

Plugin che installa il driver Realtek ufficiale

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

Informazioni sul driver Realtek fornito dal vendor

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.

Assegnazione delle security zone

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:

Scelta della subscription

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:

Fine della configurazione iniziale del plugin Zenarmor

Facciamoci un giro

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

Dashboard di Zenarmor sull’interfaccia web di OPNsense

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.

Default application control settings

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

Eventi che mostrano il blocco delle connessioni a Roblox (ho censurato alcuni dati potenzialmente sensibili)

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:

Decryption settings – solo con subscription 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.

Powered by atecplugins.com