OpenVPN Road Warrior#

Road Warrior si riferisce a una configurazione specifica di OpenVPN VPN pensata per utenti remoti, che consente loro di accedere in modo sicuro a una rete privata da qualsiasi luogo su Internet. Questa configurazione è particolarmente utile per aziende e organizzazioni con dipendenti o collaboratori distribuiti in diverse sedi, garantendo comunicazioni cifrate e la privacy dei dati.

OpenVPN è un protocollo supportato dalle piattaforme più diffuse, con client gratuiti disponibili per sistemi Windows, MacOS, Linux, Android e iOS.

Nota

Prima di configurare OpenVPN Road Warrior, assicurarsi di aver letto il capitolo relativo al database utenti.

Configurazione del server#

Un server OpenVPN è in esecuzione su NethSecurity in attesa che i client remoti lo contattino e stabiliscano una connessione. Deve essere raggiungibile da internet sulla sua porta specifica (predefinita: 1194/UDP). Più client possono connettersi al server, autenticarsi e ottenere l’accesso alla rete privata; non è necessario che i client siano raggiungibili da internet. Ogni client che si connette, dopo l’autenticazione, riceve un indirizzo IP con cui si presenterà alla rete remota.

Un server OpenVPN su NethSecurity è strettamente collegato a un database utenti, che può essere locale o remoto. L’associazione con il database viene definita durante la creazione del server e non può essere modificata successivamente.

La configurazione del server è semplificata perché NethSecurity imposta automaticamente la maggior parte dei campi su valori predefiniti adeguati, che di solito richiedono solo una verifica.

Per configurare un nuovo server OpenVPN, fare clic sul pulsante Crea server e configurare i campi proposti:

  • Nome del server: assegnare un nome a questo server OpenVPN

  • Database utenti: scegliere il database utenti da utilizzare per l’autenticazione; può essere un database locale oppure uno remoto (ad esempio LDAP o Active Directory)

  • Crea un account per ogni utente: questo è un campo speciale e non verrà mostrato nuovamente in futuro; consente di creare automaticamente un account VPN per ogni utente presente nel database. Tutti gli account creati avranno un certificato valido per 3650 giorni.

  • Modalità: bridged o routed; la modalità routed è quella predefinita e la più comune, consente di creare una rete virtuale in cui i client sono connessi al server e possono comunicare tra loro. La modalità bridged è meno comune e permette di collegare i client al server come se fossero connessi alla stessa LAN; questa modalità è utile quando i client devono accedere a risorse che non sono direttamente accessibili dal server. In caso di dubbio, selezionare la modalità routed.

  • Modalità di autenticazione: sono supportate diverse modalità di autenticazione:

    • Utente e password: il client che si connette deve fornire un nome utente e una password validi; solo gli utenti con una password impostata possono utilizzare questa modalità

    • Certificato: il client che si connette deve disporre di un proprio certificato per autenticarsi; questa è la modalità consigliata nella maggior parte dei casi

    • Utente, password e certificato: il client che si connette deve fornire un nome utente, una password e un certificato validi

    • Nome utente, certificato e OTP: il client che si connette deve fornire un nome utente valido, un certificato e anche un codice OTP utilizzato come password. Questa modalità richiede una configurazione aggiuntiva nel client per ricevere il codice OTP.

  • Rete VPN: la rete virtuale utilizzata dai client; a ogni client verrà assegnato un indirizzo IP prelevato da questa rete. NethSecurity suggerisce già una rete poco comune per evitare sovrapposizioni con altre reti utilizzate dal firewall.

  • Inizio intervallo IP dinamico: il primo indirizzo IP che verrà assegnato ai client che si connettono al server; l’indirizzo deve far parte della rete VPN. Quando si aggiunge una prenotazione IP a un client, assicurarsi che l’indirizzo IP sia al di fuori dell’intervallo dinamico.

  • Fine intervallo IP dinamico: l’ultimo indirizzo IP che verrà assegnato ai client che si connettono al server

  • Indirizzo IP/hostname pubblico di questa unità: NethSecurity compila automaticamente questo campo con l’indirizzo IP pubblico di ciascuna interfaccia WAN configurata. Questi IP/hostname verranno inseriti nella configurazione del client. L’ordine degli elementi è fondamentale perché il client che si connette inizierà a contattare gli IP/hostname partendo dal primo nella lista e proseguendo con i successivi in caso di indisponibilità.

Fare clic sul pulsante Crea per creare il server. Successivamente, i dettagli principali del server verranno mostrati nell’interfaccia Web.

Impostazioni avanzate#

Se necessario, è anche possibile personalizzare alcune opzioni avanzate:

  • Protocollo: UDP (predefinito), TCP

  • Porta: 1194 (predefinita)

  • Instrada tutto il traffico attraverso la VPN: se abilitata, tutto il traffico proveniente dal client verrà instradato all’interno del tunnel VPN, incluso il traffico internet standard. Può essere utilizzata per scopi di monitoraggio e controllo, ma solitamente è disabilitata perché introduce una maggiore latenza e consuma larghezza di banda.

  • Instrada queste reti sulla VPN: un elenco di reti che il client deve instradare nel tunnel VPN; le reti LAN vengono aggiunte automaticamente, ma possono anche essere rimosse e altre reti possono essere aggiunte allo stesso modo

  • Consenti il traffico tra i client: consente a tutti i client connessi di scambiarsi traffico tra loro; si consiglia di lasciarlo disabilitato.

  • Compressione: comprime il traffico del tunnel OpenVPN per risparmiare larghezza di banda. Tuttavia, attualmente questa opzione è meno utile e, in alcuni casi, può essere dannosa. Si raccomanda vivamente di lasciarla disabilitata. Quando questa opzione viene modificata, è necessario scaricare nuovamente la configurazione del client.

  • Digest: il digest autentica i pacchetti del canale dati (SHA 256 predefinito)

  • Cipher: cifrario di crittografia utilizzato (predefinito AES-256-GCM)

  • Imporre una versione minima di TLS: consente la connessione solo ai client che utilizzano una versione di TLS uguale o superiore a quella specificata.

  • Opzioni DHCP personalizzate: consente di passare opzioni DHCP specifiche al client (ad esempio DOMAIN, DNS, WINS e così via)

Opzioni DHCP#

Le opzioni DHCP vengono utilizzate per trasmettere parametri di configurazione specifici al client. Le opzioni DHCP disponibili sono:

  1. DNS [addr]: imposta gli indirizzi del server DNS primario e secondario (IPv4 o IPv6). Ripetere l’opzione per impostare più indirizzi.

  2. WINS [addr]: imposta gli indirizzi del server Windows Internet Name Service primario e secondario (server dei nomi NetBIOS su TCP/IP). Ripetere l’opzione per impostare più indirizzi.

  3. NBDD [addr]: imposta gli indirizzi del server di distribuzione datagrammi NetBIOS primario e secondario (NetBIOS over TCP/IP Datagram Distribution Server). Ripetere l’opzione per impostare più indirizzi.

  4. NTP [addr]: imposta gli indirizzi dei server Network Time Protocol primario e secondario. Ripetere l’opzione per impostare più indirizzi.

  5. NBT [type]: imposta il tipo di modalità NetBIOS over TCP/IP

    • 1: Trasmissione

    • 2: Punto-a-punto (usa WINS)

    • 4: Misto (broadcast, poi query al name server)

    • 8: Ibrido (interroga il name server, poi trasmette in broadcast)

  6. NBS [scope-id]: imposta l’ID di ambito NetBIOS per isolare il traffico NetBIOS e consentire nomi di computer univoci tra ambiti diversi.

  7. DISABLE-NBT [1]: Disattiva NetBIOS su TCP/IP. Il parametro è semplicemente 1 per abilitare l’opzione.

Account VPN#

Ora che il server è stato configurato, è necessario creare gli account per i client che si connetteranno. Per fare ciò, fare clic su Aggiungi account VPN e compilare il modulo:

  • Utente: ogni account è associato a un solo utente dal database selezionato; selezionare l’utente per questo account

  • IP riservato: specificare un indirizzo IP che faccia parte della rete VPN definita ma che sia al di fuori dell’intervallo dinamico. L’indirizzo IP inserito verrà sempre assegnato a questo specifico account; ciò può essere molto utile per creare regole firewall. Lasciare vuoto per assegnare un indirizzo IP casuale a ogni connessione.

  • Scadenza certificato (giorni): specificare una durata del certificato (predefinito 3650 giorni)

Una volta creato l’account, è necessario esportare la configurazione e caricarla nel client che deve connettersi. Per fare ciò, è sufficiente cliccare sul menu dell’account specifico e scegliere Scarica configurazione. Questa azione scarica il file pronto all’uso, semplicemente da caricare nel client. Questo file viene generato dinamicamente in base alla configurazione attuale del server OpenVPN e contiene già tutte le informazioni necessarie, inclusi i dettagli di configurazione (indirizzi del server, porta, ecc.) e i certificati richiesti. Nel caso in cui venga modificata la modalità operativa del server (ad esempio, se viene cambiata la modalità di autenticazione), è necessario scaricare nuovamente il file.

Altre azioni disponibili sono:

  • Disabilita: disabilita l’account; l’account può essere riabilitato in qualsiasi momento.

Nota

Se un client è già connesso al server roadwarrior, l’azione Disabilita sull’account corrispondente provoca una disconnessione immediata dal server, interrompendo la comunicazione.

  • Rigenera certificato: ricrea il certificato personale per l’account; se il certificato attuale non è scaduto, verrà revocato e sarà necessario utilizzare quello nuovo. Dopo aver ricreato il certificato, è necessario aggiornarlo sul client scaricando nuovamente l’intera configurazione oppure solo il certificato.

  • Elimina: elimina l’account e il relativo certificato; questa operazione è irreversibile e il certificato non è recuperabile.

Comportamento del client#

Alcune informazioni sul comportamento dei client:

  • I client connessi alla VPN Road Warrior vengono assegnati alla zona rwopenvpn, che è considerata intrinsecamente attendibile. Per impostazione predefinita, questa zona dispone di accesso privilegiato sia alle zone LAN che WAN all’interno dell’infrastruttura di rete.

  • Backup della connessione: in caso di più WAN, i client si connetteranno utilizzando il primo IP/nome host della configurazione del server; se questo non è disponibile, verrà utilizzato il secondo IP/nome host e così via.

  • Per motivi di sicurezza, non è possibile connettere più client con lo stesso account. Ogni account può essere utilizzato da un solo client alla volta. Se un nuovo client tenta di connettersi con un account già connesso al sistema, il primo account verrà disconnesso.

Client software#

Tutte le principali piattaforme sono supportate. Ecco alcuni riferimenti per scaricare il software necessario:

Gestione della scadenza dei certificati#

Un’istanza OpenVPN Road Warrior utilizza certificati TLS per l’autenticazione. Per evitare problemi di connettività, è fondamentale monitorare le date di scadenza dei certificati utilizzati in tutta l’infrastruttura.

Quando viene creato un nuovo server OpenVPN Road Warrior, il sistema genera una nuova PKI (Public Key Infrastructure), che è composta da:

  • un certificato CA (Certificate Authority)

  • un certificato server

I certificati client vengono generati per ogni utente nel database selezionato durante la configurazione del server o quando un utente viene aggiunto successivamente.

Ciascuno di questi elementi (client, server e CA) possiede il proprio certificato con una specifica data di scadenza, e tutti devono essere validi per consentire la connessione.

È possibile verificare le date di scadenza direttamente nell’interfaccia utente. Le date della CA e del server (che appartengono all’istanza OpenVPN) sono visualizzate nella sezione dei dettagli del server, mentre quelle dei client (che appartengono agli account utente creati per quell’istanza) sono mostrate nella tabella dei client.

Accanto a ciascuna data possono essere visualizzate due icone diverse:

  • un’icona a triangolo giallo con punto esclamativo, che indica che il certificato scadrà entro 30 giorni

  • un’icona a cerchio rosso con punto esclamativo, che indica che il certificato è già scaduto.

Per impostazione predefinita, tutti i certificati vengono generati con una validità di 3650 giorni (10 anni).

Una connessione tra il server OpenVPN Road Warrior e i suoi client verrà interrotta quando almeno un certificato scade, quindi è importante monitorare le date di scadenza e rinnovare i certificati prima che scadano. In particolare, questi sono gli scenari possibili:

  • il certificato CA è scaduto

  • il certificato del server è scaduto

  • il certificato client è scaduto

Di seguito sono riportati i passaggi per rinnovare i certificati in ciascuno scenario e ripristinare la connessione.

Certificato client scaduto#

In questo scenario, il certificato client deve essere rigenerato utilizzando l’opzione Rigenera certificato sul lato server (come menzionato sopra). Successivamente, la nuova configurazione/certificato client deve essere scaricata e importata sul lato client.

Certificato del server scaduto#

In questo scenario, il certificato del server deve essere rinnovato lato server.

Il certificato server può essere rinnovato utilizzando l’opzione dedicata Rinnova certificato server, disponibile nel menu a destra della sezione dei dettagli del server.

Questa operazione revocherà il certificato server esistente, ne creerà uno nuovo senza influire sul certificato CA e quindi riavvierà il servizio openvpn per applicare le modifiche. In questo scenario, se i certificati client sono ancora validi, è possibile continuare a utilizzare la configurazione client esistente.

Avvertimento

Quando si rigenera il certificato del server, i certificati dei client rimangono validi (se non scaduti). Se il rinnovo del certificato viene effettuato mentre i client sono connessi, è necessario che il client si disconnetta e poi si riconnetta al server per ripristinare la connessione. Se il rinnovo del certificato viene effettuato mentre i client sono disconnessi (modalità consigliata), la connessione verrà ripristinata automaticamente quando tenteranno nuovamente di connettersi.

Certificato CA scaduto#

In questo scenario, la rigenerazione del certificato non è possibile perché il certificato CA è quello che firma sia i certificati del server che quelli del client. Pertanto, è necessario generare una nuova PKI completa.

Per generare una nuova PKI, l’opzione Rigenera tutti i certificati è disponibile nel menu a destra della sezione dei dettagli del server. È quindi necessario digitare il nome del server per confermare l’operazione.

Questa operazione genererà un nuovo certificato CA, oltre a nuovi certificati server e client firmati dalla nuova CA. In questo scenario, è obbligatorio scaricare e importare la nuova configurazione client sul lato client per ripristinare la connessione, quindi assicurarsi di eseguire questa operazione il prima possibile per ridurre al minimo i tempi di inattività.

Avvertimento

Quando il certificato CA è scaduto, l’unico modo per ripristinare la connessione è generare una nuova PKI e importare la nuova configurazione client sul lato client. Se i certificati client e server sono ancora validi (ad esempio, è stato rigenerato il certificato client utilizzando l’opzione Rigenera certificato e rinnovato il certificato server utilizzando l’opzione Rinnova certificato server sopra), ma il certificato CA è scaduto, la connessione non verrà ripristinata finché non verrà generato un nuovo certificato CA e importata la nuova configurazione client sul lato client. Pertanto, se il client non riesce più a connettersi al server a causa della scadenza di un certificato, assicurarsi di verificare quale certificato è scaduto e seguire la procedura corretta per ripristinare la connessione.

Problema MTU e Frammentazione dei Pacchetti#

Per impostazione predefinita, le istanze server OpenVPN Road Warrior create su NethSecurity vengono inizializzate con i seguenti valori:

  • Unità Massima di Trasmissione - tun_mtu = 1500

  • Dimensione massima del segmento - mssfix = 1450.

Questi sono i valori predefiniti di OpenVPN, generalmente adatti alla maggior parte degli ambienti di rete, che dovrebbero essere modificati solo in caso di problemi di connettività dovuti alla frammentazione dei pacchetti.

Gli utenti VPN possono riscontrare problemi di connettività a causa della frammentazione dei pacchetti. L’interfaccia LAN ha un MTU di 1500 per impostazione predefinita, ma quando i pacchetti vengono criptati per la trasmissione tramite VPN, la dimensione aumenta, causando la perdita di pacchetti. Per risolvere questo problema, è necessario abbassare l’MTU e l’MSS sul server OpenVPN RW. Non sono richieste modifiche lato client.

I valori di MTU e MSS possono essere regolati direttamente tramite l’interfaccia utente, sia durante la creazione iniziale del server OpenVPN RW sia successivamente modificandolo tramite il pulsante Modifica, nella sezione Opzioni avanzate del drawer. In alternativa, è possibile regolare i due valori di configurazione utilizzando l’interfaccia a riga di comando sul firewall:

uci set openvpn.ns_<name>.tun_mtu='1300'
uci set openvpn.ns_<name>.mssfix='1250'
uci commit openvpn.ns_<name>
/etc/init.d/openvpn restart ns_<name>

I valori di tun_mtu e mssfix potrebbero dover essere regolati in base al proprio ambiente di rete specifico. Un MTU più basso garantisce che i pacchetti rientrino nei limiti del tunnel OpenVPN senza frammentazione. A seconda di fattori come la latenza di rete o l’overhead, si potrebbe riscontrare che valori leggermente diversi funzionano meglio per la propria configurazione.

Per informazioni più specifiche, consultare la documentazione ufficiale di OpenVPN.

Cronologia delle connessioni#

Ogni volta che un client si connette o si disconnette dal server, l’evento viene salvato all’interno di un database SQLite. La cronologia di tali eventi può essere visualizzata facendo clic sulla scheda Connection History disponibile nella parte superiore della pagina.

Per impostazione predefinita, la pagina visualizzerà tutte le connessioni del giorno corrente, ma è possibile filtrare i risultati per data e ora e per nome account.

Per scaricare tutta la cronologia in formato CSV, fare clic sul pulsante Scarica la cronologia del server. L’intestazione del file CSV spiega il significato di ciascuna colonna, incluse le unità di misura.

La cronologia viene letta da un database SQLite che può essere memorizzato in:

  • RAM: memorizzato in RAM (non persistente); andrà perso al riavvio del firewall.

  • Archiviazione: archiviato su storage persistente; sopravviverà a un riavvio.

Per impostazione predefinita, se uno storage persistente è disponibile e configurato, gli eventi di connessione vengono memorizzati nel database di storage, altrimenti vengono memorizzati nel database RAM.

Se un server RoadWarrior è già configurato e viene collegato un nuovo dispositivo di storage, la cronologia viene automaticamente spostata dalla RAM allo storage, diventando persistente e in grado di sopravvivere ai riavvii. Al contrario, se lo storage viene rimosso, i nuovi eventi di connessione saranno memorizzati nel database RAM e saranno visibili nella sezione Connections History. Se successivamente lo storage viene ricollegato, le cronologie presenti in RAM e nello storage vengono unite senza perdita di dati.

Se il server è connesso a un Controller, la cronologia viene inviata al controller e può essere visualizzata all’interno della sezione Storico monitoraggio.