COMPUTING > Virtual Private Cloud > VMware Cloud Director > Come realizzare una connessione VPN con OpenVPN

3.10.1 Come realizzare una connessione VPN con OpenVPN

Consulta la documentazione ufficiale VMware su come creare una VPN con OpenVPN.

OpenVPN è una soluzione SSL VPN che implementa l'estensione di rete sicura di livello OSI 2 o OSI 3, utilizzando il protocollo SSL/TLS standard del settore ed accoglie un'ampia gamma di configurazioni. OpenVPN supporta client con sistemi operativi Windows, Linux, FreeBSD, OpenBSD, macOS, iOS e Android.

Supporta metodi di autenticazione client flessibili basati su certificati, smart card e/o credenziali nome utente/password e consente a utenti e/o gruppi politiche di controllo degli accessi mediante regole firewall applicate all'interfaccia virtuale VPN.

Di seguito sono esposti i concetti generali con i passaggi per la realizzazione di una connessione VPN utilizzando OpenVPN; al termine sono riportati i link alle guide di esempio per la configurazione/implementazione nel caso di sistema operativo Windows Server 2019 ed Ubuntu 20.04.
 
La configurazione di una VPN spesso implica il collegamento di sottoreti private da posizioni diverse. L'IANA (Internet Assigned Numbers Authority) ha riservato i seguenti tre blocchi dello spazio degli indirizzi IP per le Internet private (codificate in RFC 1918):
  • 10.0.0.0 – 10.255.255.255 (prefisso 10/8)
  • 172.16.0.0 – 172.31.255.255 (prefisso 172.16/12)
  • 192.168.0.0 – 192.168.255.255 (prefisso 192.168/16)
É importante selezionare indirizzi che riducano al minimo la probabilità di conflitti di indirizzi IP o di sottorete. Ci sono alcuni aspetti della configurazione di rete del server che devono essere ottimizzati in modo che possano instradare correttamente il traffico attraverso la VPN:
  • inoltro degli indirizzi IP - la capacità di un sistema operativo di accettare i pacchetti di rete in entrata su un'interfaccia, riconoscere che non sono pensati per il sistema stesso, ma che dovrebbero essere passati a un'altra rete e quindi inoltrati di conseguenza;
  • configurazione del firewall - deve essere eseguita sulla macchina virtuale che funge da server VPN di accesso remoto:
    • porta SSH;
    • porte utilizzate dalle soluzioni VPN (ad esempio, la porta UDP/1194 predefinita per OpenVPN);
É necessario assicurarsi che le VM nella rete vDC (virtual Data Center) a cui ci si vuole connettere, utilizzando la VPN, instradino il traffico della rete al server VPN. Una soluzione è implementare un NAT one-to-many per i client connessi.
Il primo passo nella creazione di una configurazione OpenVPN è stabilire una PKI (infrastruttura a chiave pubblica). La PKI è composta da:
  • un certificato separato (noto anche come chiave pubblica) e una chiave privata per il server e ciascun client;
  • un certificato e una chiave dell'autorità di certificazione (CA) master utilizzati per firmare ciascuno dei certificati server e client;
OpenVPN supporta l'autenticazione bidirezionale basata sui certificati, il che significa che il client deve autenticare il certificato del server e il server deve autenticare il certificato del client. Per la gestione delle PKI, OpenVPN suggerisce l'uso di easy-rsa, una CLI (Command-Line Interface) per creare e gestire una CA PKI. I passaggi che descrivono come configurare la propria autorità di certificazione e generare certificati e chiavi sono disponibili nella documentazione di OpenVPN.

Implementazione lato Server

Il server OpenVPN utilizza la porta 1194 e il protocollo UDP per impostazione predefinita per accettare le connessioni client. Se è necessario utilizzare una porta diversa a causa di ambienti di rete restrittivi in cui potrebbero trovarsi i client, è possibile modificare le opzioni di porta e protocollo. La porta 1194 è il numero di porta ufficiale assegnato da IANA per OpenVPN, ma qualsiasi numero di porta compreso tra 1 e 65535 funzionerà se non è già utilizzato sul server. La porta 443 è la scelta più comune, poiché di solito è consentita dalle regole del firewall.

La configurazione è archiviata nel file server.conf e contiene informazioni quali l'indirizzo IP e la porta su cui il servizio è in ascolto, l'elenco di crittografia del servizio, il relativo certificato di servizio e così via.

Come punto di partenza per la tua configurazione, si consiglia l'utilizzo dei file di configurazione di esempio di OpenVPN, che possono essere trovati su:
  • la directory sample-config-files della distribuzione di origine OpenVPN
  • la directory sample-config-files in /usr/share/doc/packages/openvpn o /usr/share/doc/openvpn se installato da un pacchetto RPM o DEB
  • Start Menu > All Programs > OpenVPN > OpenVPN Sample Configuration Files su Windows
Utilizzando i file di configurazione di esempio di OpenVPN sarà creata una VPN utilizzando un'interfaccia di rete virtuale TUN (modalità instradata), che ascolterà le connessioni Client sulla porta UDP 1194 e distribuirà indirizzi virtuali ai Client di connessione dalla sottorete 10.8.0.0/24. Modificando i parametri dei file presenti nella directory sopra descritta è possibile cambiare il relativo comportamento.
 
Prima di utilizzare il file di configurazione di esempio, è necessario modificare i parametri ca, cert, key e dh (Diffie hellman) in modo che puntino ai file che sono stati generati nella sezione PKI. A questo punto, il file di configurazione del server è utilizzabile.

Implementazione lato Client

I passaggi successivi sono relativi alla configurazione del client: generazione del certificato e della coppia di chiavi, e alla creazione del file di configurazione del client.

Il passaggio finale riguarda i file di configurazione del client che rispecchia le direttive predefinite impostate nel file di configurazione del server:
  • come per il file di configurazione del server, innanzitutto modificare i parametri ca, cert, key e dh in modo che puntino ai file generati in precedenza. Si noti che ogni client dovrebbe avere la propria coppia certificato/chiave. Solo il file ca è universale sul server OpenVPN e su tutti i client.
  • modifica la direttiva remota in modo che punti al nome host/indirizzo IP e al numero di porta del server OpenVPN: usa l'indirizzo IP pubblico che è NAT al server VPN.

Esempi di come realizzare una connessione VPN con OpenVPN: