Un next generation firewall (NGFW) è un firewall che integra funzioni avanzate rispetto al basilare blocco degli IP, ad esempio considera l'interazione fra i pacchetti nelle connessioni (stateful firewall), abilita blocklist importabili anche da servizi online, attua servizi come IDPS (Intrusion Detection and Prevention System), monitoraggio granulare degli host e delle statistiche di rete, più numerose altre funzioni.
Sebbene Windows abbia già un suo firewall integrato, vedremo come aggiungere un NGFW che segua il dispositivo, ad esempio un portatile quando si connette (per lavoro o per svago) a reti sconosciute, oppure si usa il PC nella propria rete domestica, ma con il desiderio o esigenza di avere maggior controllo e maggiori servizi personalizzati, ad esempio filtri DNS per pubblicità e altre categorie, sicurezza fortificata, log di alcuni eventi specifici, gestione del traffico della rete Tor, etc. senza modificare il router, quindi non condizionando anche gli altri dispositivi della rete.
Un NGFW fra i più noti è OPNsense, derivato da pfSense, basato su FreeBSD, gratuito ed open source, scaricabile da qui, disponibile anche in italiano e utilizzabile, come vedremo, anche in una macchina virtuale non eccessivamente potente.

Le ricche pagine di documentazione ufficiale rendono una vaga idea delle potenzialità e della versatilità di questo NGFW, non certo esauribili con un solo articolo. A fondo pagina, trovate il VIDEO che spiega come configurare l'host in modo che OPNsense funzioni da gateway e da firewall, più esempi di alcune sue funzioni avanzate (DNS con filtri vari, IDPS e alcuni plugin).
Per i dettagli dell'installazione sono disponibili, oltre alla guida ufficiale, anche altre guide online, come questa molto ben fatta in italiano.
Configurazione della rete
La procedura di riferimento nel nostro caso è installare OPNsense su una macchina virtuale e poi usare una connessione di rete virtualizzata che faccia passare il traffico in uscita dall'host (Windows in questo caso) prima in OPNsense, poi nella scheda di rete (connessa wireless nella nostra configurazione) e infine nel router; facendo in modo che il traffico in ingresso all'host faccia il percorso inverso, passando prima per la WAN di OPNsense (rete fra router e OPNsense), poi nella sua LAN (rete fra OPNsense e l'host).
Qui sotto è possibile vedere la differenza fra LAN/WAN per OPNsense (in viola) e LAN/WAN per il router (in bianco).

Chiaramente, da un punto di vista "fisico", i pacchetti passano nella scheda di rete installata in Windows (che gestisce anche gli adattatori di rete virtuali di VMware, nel nostro caso) e la macchina virtuale con OPNsense funziona "dentro" Windows, tuttavia con un'adeguata configurazione è comunque possibile fare in modo che tutto il traffico in entrata e in uscita da Windows passi per OPNsense.
Le applicazioni, come i browser, e i servizi, come gli update di Windows, con connessione internet in uscita dall'host vengono quindi prima filtrati dal firewall di Windows, poi da OPNsense (come fosse un dispositivo esterno) e infine gestiti dal router.

Questa configurazione è da tenere presente soprattutto nelle impostazioni delle singole applicazioni, ad esempio l'uso di Unbound DNS come DNS di sistema (una delle funzioni illustrate nel video e incluso in OPNsense) è efficace solo se i browser non hanno impostazioni particolari per il DNS, ossia seguono le impostazioni di default di sistema. Se invece un browser è impostato per usare un DNS particolare, Unbound DNS si limiterà inizialmente a risolvere solo l'indirizzo di questo DNS (se non è già inserito come IP), ma non quelli dei siti contattati successivamente dall'utente: i loro indirizzi verranno risolti dal DNS impostato nel browser e i filtri di Unbound DNS verranno bypassati.
Una seconda configurazione mostrata nel video è quella in cui l'host con Windows 10 si collega direttamente al router, senza passare stavolta per OPNsense, mentre un'altra macchina virtuale (in questo caso con Windows 11) viene filtrata da OPNsense; ottenendo una configurazione come questa:

Funzioni e plugin
Una volta configurata la rete, non resta che impostare le regole del firewall (in modo piuttosto intuitivo grazie all'interfaccia grafica), da potenziare eventualmente con le funzioni di Intrusion Protection e Intrusion Detection gestite dall'integrazione in OPNsense di Suricata.
Nonostante le funzioni già presenti nativamente nel firewall siano numerose (comprensive, oltre ai filtri DNS citati, anche di protocolli VPN, report dettagliati e diagnostica), possono essere ulteriormente arricchite installando dei plugin. Questi consentono a OPNsense di adattarsi alle nostre esigenze più disparate; ad esempio installare il DNS Bind, o un server C-ICAP per scansionare i download con l'antivirus ClamAV, impostare un un reverse proxy, abilitare i filtri di CrowdSec, usare DNScrypt, attivare un server RADIUS o un load balancer, importare le regole dell'IDS Snort, attivare Maltrail o la VPN peer-to-peer Netbird o un server Nginix, monitorare statistiche della rete con Ntopng, gestire un relay SMTP per le mail o un proxy Squid, usare Tailscale, instradare il traffico sulla rete Tor, impostare l'agente per Wazuh, giovarci della protezione dei Q-Feeds o della versione gratuita di Zenarmor e molto altro.

Per quanto riguarda l'uso dei plugin, che grazie all'apporto anche della community aumentano sensibilmente le funzionalità e la poliedricità di OPNsense, è da considerare che alcuni di questi possono richiedere l'installazione di altri plugin per un completo funzionamento, alcuni presuppongono siano disponibili altri programmi o altre infrastrutture di rete con cui dialogare, inoltre alcuni presuppongono una buona conoscenza settoriale per una completa implementazione delle loro funzionalità. Consultare la documentazione di ciascun plugin è quindi sempre una buona idea.
Da valutare anche che maggiore è il numero di servizi e plugin attivi, maggiore sarà il consumo di risorse per la nostra macchina virtuale, con l'eventuale possibilità, se esageriamo, di avere un po' di latenza nella navigazione, soprattutto se si tratta di servizi di monitoraggio attivo del traffico.
VIDEO
Capitoli
- 0:00 - Introduzione
- 0:47 - Impostare la VM di OPNsense come gateway firewall dell'host
- 08:26 - La GUI di OPNsense
- 10:22 - Unbound DNS
- 13:21 - IDPS Suricata
- 14:10 - Le regole del firewall
- 17:31 - I plugin
- 19:10 - Crowdsec (plugin)
- 21:12 - Impostare OPNsense come gateway firewall di un'altra VM (escludendo l'host)
- 23:35 - Server proxy Squid (plugin)
- 26:14 - Conclusione