back to top

Creare una VPN con OpenVPN

Obiettivo di questo articolo è indicare come realizzare una Rete Privata Virtuale (VPN) (cioè una rete con le caratteristiche di una rete locale, ma realizzata tramite internet) tra due o più computer. Ipotizzeremo che tali computer siano dotati del sistema operativo Windows XP, in ogni caso le istruzioni indicate sono sostanzialmente identiche anche per altre versioni più recenti di Windows.

Sebbene già Windows XP sia dotato di supporto nativo per le VPN e integri anche le funzionalità di Server VPN, il limite evidente di questa soluzione è rappresentato dal fatto di poter avere, simultaneamente, soltanto una connessione VPN attiva.

Ci serviremo invece di soluzioni open-source che consentono di superare questi limiti e che non obbligano tuttavia ad acquistare un costoso sistema operativo server come ad esempio Windows Server 2003.

Utilizzeremo dunque il software OpenVPN, in particolare una versione dotata di interfaccia grafica, ovvero OpenVPN GUI. OpenVPN è un software open-source che consente di creare VPN sicure facendo ricorso ai protocolli SSL/TLS ed implementando l’autenticazione utente basata su Certificati Digitali, Smart Card oppure semplice combinazione di username e password.

Per comprendere meglio le operazioni di configurazione di OpenVPN sia lato server che lato client saranno necessarie alcune precisazioni, specie per chi si cimenta per la prima volta con questa tipologia di software. Prima di tutto però, procediamo all’installazione.

Installazione

Prima di tutto è necessario installare OpenVPN, ad esempio tramite l’installer Windows scaricabile gratuitamente a questa pagina. Sarà sufficiente a questo punto seguire la procedura guidata, eventualmente modificando alcuni parametri come la directory di installazione del programma, se necessario.

Schermata di installazione di OpenVPN, è possibile selezionare la directory di installazione

Per l’installazione del già citato OpenVPN GUI scarichiamo il file di installazione (corrispondente alla versione di OpenVPN installata) dal sito openvpn.se ed eseguiamo il programma, seguendo ancora una volta la procedura guidata.

Una volta terminata l’installazione, per un corretto funzionamento sarà necessario anche inserire un file di configurazione all’interno della directory di installazione di OpenVPN, più precisamente nella sottodirectory "config". Un file di configurazione di esempio è disponibile nella directory "sample-config". A questo punto possiamo concentrarci sulle modalità di funzionamento del programma, in particolare sulle possibili modalità di collegamento tra i vari computer che costituiscono la rete.

Modalità di collegamento

OpenVPN supporta due modalità di collegamento differenti tra client e server: Bridged e Routed. In questo tutorial verrà esaminata la prima modalità che ha i seguenti vantaggi sulla seconda:

  • I messaggi broadcast, destinati cioè a tutti, vengono comunque inoltrati tramite la VPN, attraversandola. Questo consente l’utilizzo di protocolli quali NetBIOS e la conseguente possibilità di elencare le risorse di rete condivise sui vari computer della VPN;
  • Non è necessario configurare manualmente percorsi statici (che non si modificano cioè in conseguenza delle modifiche apportate alla rete) di inoltro dei pacchetti dati;
  • E’ possibile utilizzare qualsiasi protocollo di livello 3: ad esempio IPv4, IPv6, Netware IPX, AppleTalk;
  • La procedura di configurazione risulta relativamente semplice.

Prima di descrivere un semplice esempio di utilizzo del software però, è necessario mettere in evidenza alcune operazioni preliminari da effettuare e può essere interessante descrivere con attenzione i meccanismi che consentono a questo programma di garantire una comunicazione sicura attraverso la rete.

Operazioni preliminari

Indichiamo ora alcune operazioni non direttamente connesse all’utilizzo del software OpenVPN (e che dunque non approfondiremo in questo articolo), ma utili per un corretto funzionamento. Risulta necessario procedere con l’installazione di un certificato proprio di una CA (Certification Authority), la generazione della chiave pubblica e della chiave privata master sulla macchina server, per garantire la sicurezza delle successive comunicazioni. Sempre con questo scopo, è necessario poi generare i certificati e le chiavi private per server e client e firmarli con le chiavi create in precedenza.

Affinchè la sicurezza sia garantita però, è necessario anche poter generare chiavi temporanee, che vengano rigenerate e modificate frequentemente (chiavi di sessione), in modo da impedire un’analisi statistica dei pacchetti in transito sulla rete. Tale operazione potrebbe infatti rivelare a un hacker esperto le chiavi segrete, consentendo accessi indesiderati.

Interessante a questo punto esaminare più nel dettaglio in che modo OpenVPN garantisca proprio la sicurezza nelle comunicazioni, dato che si tratta di un aspetto chiave per la generazione di una rete virtuale che viene, per l’appunto, definita "privata".

Sicurezza

Proprio per garantire la sicurezza, risulterà opportuno calcolare i parametri Diffie-Hellmann, parametri di funzionamento dell’omonimo algoritmo, utilizzato proprio per ottenere la cosiddetta “Session Key” (o chiave di sessione) che per default viene rigenerata ogni ora. L’algoritmo RSA viene invece utilizzato per firmare i certificati del server e dei client e anche per l’autenticazione, mentre non viene utilizzato per generare la chiave di sessione per ragioni di performance.
Rispetto al più conosciuto algoritmo RSA (utilizzato per firmare i certificati del server e dei client, oltre che per l’autenticazione) il Diffie-Hellmann consente un calcolo molto rapido delle chiavi. L’operazione più onerosa è relativa al calcolo dei parametri, ma viene svolta molto meno frequentemente.

Dopo aver generato i parametri Diffie-Hellmann creiamo quindi una chiave statica a 2048 bit che verrà utilizzata per aggiungere un ulteriore livello di protezione alla nostra VPN. OpenVPN prevede infatti l’aggiunta di una firma (signature) a tutti i pacchetti SSL/TLS scambiati tra client e server. Qualsiasi pacchetto che non abbia la corretta signature, verrà eliminato senza ulteriori processi. Questa soluzione ci protegge efficacemente dai seguenti attacchi:

  • Attacchi di tipo Denial of Service (DoS)
  • Port Scanning
  • Vulnerabilità di tipo Buffer Overflow nell’implementazione dei protocolli SSL/TLS
  • Negoziazioni SSL/TLS iniziate da computer non autorizzati

Per attivare questa funzionalità è sufficiente abilitare la direttiva tls-auth nel file di configurazione di server e client. Da notare anche che OpenVPN utilizza per default il protocollo UDP, più rapido rispetto al TCP e in grado di garantire una maggiore protezione proprio contro attacchi di tipo Denial of Service. A questo punto, esaurite le premesse, è possibile valutare un semplice esempio di utilizzo del software sin qui descritto.

Esempio di utilizzo

Procediamo dunque all’operazione di bridging tra la nostra scheda di rete e la connessione creata da OpenVPN. I certificati e le chiavi private per server e client, come già accennato, devono essere generati sul computer che funge da server. Successivamente, sarà necesasrio copiare su ogni client la coppia di chiavi di accesso pubblica/privata (diversa per ciascuno), oltre naturalmente al certificato master della CA (file di nome ca.crt).

Avendo scelto proprio la modalità Bridged (vedi paragrafo "Modalità di collegamento") client e server devono appartenere alla stessa sottorete. Nel caso in cui client e server si trovino su due sottoreti diverse, il bridge (che corrisponde al collegamento) tra le due schede di rete si deve creare soltanto sul server. In alternativa, per risolvere questo tipo di problema, sarebbe possibile anche configurare OpenVPN nella modalità Routed.

Ipotizziamo che server e client si connettano entrambi alla rete tramite un router. Sul server è necessario effettuare, prima di procedere al bridging, un’operazione di port forwarding della porta UDP scelta (ipotizziamo, ad esempio, la porta 1174) verso l’indirizzo IP del computer che funge da server VPN. Sui client invece è sufficiente mettere in bridging la connessione LAN con quella installata da OpenVPN ed assegnare alla connessione bridged gli stessi parametri della connessione LAN originaria.

Se sui client o sul server si utilizza un modem e non un router, allora non è necessario creare il bridge, ma è indispensabile disabilitare tutte le connessioni di rete non necessarie. Sul server è necessario poi abilitare le direttive dev tun e server avendo cura di disabilitare le corrispondenti direttive necessarie invece per la modalità Bridged, ad esempio tramite i comandi:

dev tap
dev tun
server 10.8.0.0 255.255.255.0
server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

Nel suddetto esempio i client riceveranno un indirizzo IP compreso tra 10.8.0.2 e 10.8.0.254 mentre il server si auto-assegnerà l’indirizzo IP 10.8.0.1. La classe di indirizzi IP utilizzata nella direttiva server deve essere diversa da qualsiasi altra classe di IP presente sia lato client che lato server. Sui client è sufficiente abilitare la sola direttiva dev tun:

dev tap
dev tun

Ora dobbiamo impostare a 1 la chiave di registro IPEnableRouter sia sui client che sul server VPN e infine riavviare i computer affinché la modifica abbia effetto e la VPN creata diventi utilizzabile:

Percorso.: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
Nome Voce: IPEnableRouter
Valore   : 1
Tipo     : DWORD

Altri contenuti interessanti

Pubblicitร 

Leggi anche...

Cavo Ethernet cat 6, cat 7 e cat 8: quale scegliere?

I cavi Ethernet sono un elemento fondamentale nelle reti...

Mbps, Megabit, Gigabit, Megabyte e Gigabyte: che differenza c’รจ?

Quando si parla di connessioni Internet e velocitร  di...

Handshake: cos’è e come funziona il processo di handshaking nella comunicazione di Rete

Con il termine Handshake (letteralmente "stretta di mano") si...

DNS_PROBE_FINISHED_NXDOMAIN: cos’è e come risolvere questo errore di Chrome

DNS_PROBE_FINISHED_NXDOMAIN è un messaggio di errore tipico del browser...

DNS Google 8.8.8.8 – come funzionano e perché usarli

Il DNS primario 8.8.8.8 e il DNS secondario 8.8.4.4...

Traceroute: cos’è, come funziona e come eseguirlo su Windows, Linux e Mac

I sistemi informatici comunicano attraverso lo scambio di pacchetti...
Pubblicitร