Una VPN (acronimo di Virtual Private Network) può essere considerata come un’estensione di una rete privata che si occupa di instaurare dei “collegamenti” tra due o più sistemi che debbono scambiarsi dati in modo sicuro, utilizzando una rete condivisa o comunque pubblica qual è Internet.
Una rete VPN permette di scambiare dati in modo simile a quanto accade in una connessione privata punto-punto. L’approccio utilizzato dà modo di rendere il computer remoto parte di una rete privata interna alla struttura aziendale creando un “tunnel” virtuale attraverso la rete Internet.
Per simulare un collegamento punto-punto, i dati vengono incapsulati con l’aggiunta di un’intestazione che fornisce le informazioni di routing e cifrati in modo da renderne possibile la lettura da parte di eventuali aggressori, sprovvisti delle necessarie chiavi crittografiche.
Tutti i sistemi Windows integrano il supporto per le reti VPN: lo stesso Windows XP può operare sia in modalità client che fungere da server VPN. Purtroppo, però, configurato in questa seconda modalità, Windows XP non accetta più di una connessione in ingresso.
OpenVPN è una valida soluzione opensource, disponibile per svariati sistemi operativi, che consente di implementare una VPN a costo zero senza quindi doversi necessariamente rivolgere a Windows Server. Precisiamo subito che la configurazione di OpenVPN non è per nulla intuitiva ed è da considerarsi esclusivamente appannaggio degli utenti più esperti che dispongano già di un buon bagaglio di conoscenze informatiche.
Configurazione lato server
La procedura di installazione della versione di OpenVPN per Windows si occupa di caricare sul sistema tre componenti: il software opensource OpenVPN vero e proprio, un’interfaccia grafica sviluppata appositamente per il sistema operativo Microsoft (OpenVPN GUI) e My Certificate Wizard, strumento che consente di gestire i certificati. Per installare quest’ultimo componente è indispensabile spuntare la casella My Certificate Wizard.
Innanzi tutto, per tradurre in italiano l’interfaccia di OpenVPN, è necessario fare clic con il tasto destro del mouse sull’icona del programma visualizzata nell’area della traybar, generalmente in basso a destra quindi selezionare Exit.
A questo punto, è necessario accedere alla cartella c:programmiopenvpnin
e cancellare il file openvpn-gui.exe
. Dopo aver scaricato questo file, si dovrà memorizzarlo sempre nella cartella c:programmiopenvpnin
rinominandolo in openvpn-gui.exe
.
Per riavviare OpenVPN basterà fare nuovamente doppio clic sul file eseguibile openvpn-gui.exe
oppure cliccare su Start, Tutti i programmi, OpenVPN, OpenVPN GUI.
I passi da compiere sono i seguenti:
– fare doppio clic su init-config.bat
. Tale file provvederà a creare due file (openssl.cnf
e vars.bat
) a partire dagli analoghi file con estensione .sample
, memorizzati nella stessa directory.
– aprire il file vars.bat
(non vi si faccia doppio clic) con un qualunque editor di testo. E’ possibile utilizzare, ad esempio, un programma come TextPad.
– in calce al file vars.bat
, sono riportate alcune variabili precedute dal comando SET. Tale comando, ben noto a coloro che anni fa utilizzavano il DOS, consente di visualizzare, impostare o rimuovere le cosiddette “variabili di ambiente”, utilizzate dal sistema per attingere a delle informazioni di validità generale. Le variabili KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG e KEY_EMAIL verranno impiegate da OpenVPN per generare un certificato digitale. E’ necessario impostare correttamente ciascuna delle cinque variabili facendo attenzione a non lasciarne alcuna bianca. Ecco un esempio:
set KEY_COUNTRY=IT
set KEY_PROVINCE=IT
set KEY_CITY=Milano
set KEY_ORG=MiaAzienda
set KEY_EMAIL=miaemail@miaazienda.it
A questo punto, è possibile fare doppio clic sul file batch vars.bat per configurare tutte le variabili d’ambiente necessarie quindi avviare il file clean-all.bat
.
Queste due operazioni servono per inizializzare l’ambiente di lavoro utilizzato da OpenVPN.
Il passo successivo consiste nell’aprire il prompt dei comandi (ad esempio digitando cmd
in Start, Esegui…) quindi portarsi all’interno della cartella easy-rsa (cdprogrammiopenvpneasy-rsa
). Qui, basterà digitare build-ca
e premere Invio per avviare la procedura di creazione di una coppia di chiavi crittografiche, l’una pubblica (mostrata nel certificato in corso di creazione), l’altra privata da mantenere sempre segreta.
Per procedere, è sufficiente premere Invio più volte in modo tale da confermare tutte le impostazioni di default (country name, state or province, locality name, organization name, organizational unit name, email address). Non appena comparirà la voce Common name, è invece bene indicare un nome facile da ricordare che servirà per la configurazione dei client VPN, ad esempio cert-openvpn
.
A conclusione di questa fase, è possibile notare come il file batch abbia creato una sottocartella denominata keys
.
Digitando build-key-server server
al prompt dei comandi, verrà avviata una procedura analoga a quella appena vista con la differenza che, in questo caso, saranno prodotte chiave pubblica e privata per il server VPN. Alla comparsa della stringa Common name si dovrà aver cura di introdurre esattamente lo stesso nome specificato in precedenza (nel nostro caso, cert-openvpn
).
Più avanti, l’indicazione Sign the certificate richiederà se il certificato digitale debba essere firmato impiegando le informazioni “master” prodotte in precedenza. Per rispondere affermativamente, è sufficiente digitare il tasto “y” e premere Invio. Successivamente si dovrà rispondere ancora “y”.
All’interno della sottocartella keys
saranno così aggiunte anche le informazioni relative alle chiavi utilizzate dal server VPN.
Per la generazione delle chiavi da impiegare sui client, è necessario usare il comando build-key client1
ove client1
è il nome del sistema client. Tale appellativo può essere scelto liberamente senza però utilizzare spazi o caratteri speciali. In corrispondenza della stringa Common name introduciamo, questa volta, la stringa client1 richiedendo successivamente, al solito, la l’apposizione della firma.
Come ultimo passo, è necessario digitare build-dh
e premere il tasto Invio. “DH” è l’acronimo di Diffie-Hellman, un protocollo crittografico che permette a due “interlocutori” di accordarsi sull’utilizzo di una chiave condivisa e segreta utilizzando un canale di comunicazione pubblico e quindi da considerarsi potenzialmente insicuro (rete Internet).
Per fidare su un livello di protezione aggiuntivo, è possibile generare una chiave OpenVPN statica cliccando su Start, Tutti i programmi…, OpenVPN, Generate a static OpenVPN key. Questa procedura produrrà una chiave a 2048 bit che verrà conservata nel file key.txt
(cartella ProgrammiOpenVPNconfig
).
Da ultimo, si dovranno copiare i file ca.crt, dh1024.pem, server.crt
e server.key
dalla sottocartella easy-rsakeys
nella sottocartella config
di OpenVPN. Così facendo si indicheranno al programma il certificato master, il certificato server e la chiave privata del server da utilizzare.
Dalla sottocartella sample-config
è necessario copiare il file server.ovpn posizionandolo, anch’esso, all’interno della sottodirectory config
.
Ora è possibile avviare l’interfaccia grafica di OpenVPN (Start, Tutti i programmi…, OpenVPN, OpenVPN GUI) in modo da concludere l’ultima parte della configurazione del programma. Cliccando con il tasto destro del mouse sull’icona di OpenVPN mostrata nella traybar quindi selezionando la voce Modifica configurazione, verrà mostrato il contenuto del file server.ovpn
.
Per prima cosa è bene optare per dev tap
togliendo il punto e virgola posto per default dinanzi all’impostazione. Il punto e virgola (che viene impiegato per trasformare qualsiasi riga in un commento rendendola di fatto inefficace) va invece posto innanzi al parametro dev tun
.
In corrispondenza di dev-node
è poi necessario specificare il nome dell’interfaccia di rete per la connessione VPN: si digiti OpenVPN
. Anche in questo caso deve essere rimosso il punto e virgola posta all’inizio dell’indicazione dev-node
.
Davanti alla direttiva server è bene porre un punto e virgola in modo tale da renderla un commento.
Va invece abilitato il parametro server-bridge togliendo il punto e virgola quindi specificando, al posto degli indirizzi IP specificati, rispettivamente, l’indirizzo del server VPN, la relativa netmask, l’indirizzo IP assegnato al primo client ed, infine, l’IP che verrà attribuito al client attraverso il protocollo DHCP.
Da ultimo, è bene togliere il commento dalla voce client-to-client
: essa permette ai client di riconoscersi tra di essi e di avere la possibilità di accedere alle risorse condivise dai vari sistemi.
E’ consigliabile anche decommentare la direttiva tls-auth
in modo tale da sfruttare la chiave statica di OpenVPN generata precedentemente così da aumentare il livello di sicurezza della rete. La riga deve essere modificata in tls-auth key.txt 0
.
L’impostazione max-clients
consente invece di definire il numero massimo di sistemi client che possono connettersi al server VPN.
Alla fine dell’intervento, si dovrà salvare il file di testo server.ovpn
.
In ultima istanza, è necessario creare un “bridge” tra la connessione di rete locale e l’interfaccia di rete virtuale aggiunta in Windows da parte di OpenVPN.
E’ bene accertarsi di quale sia la connessione aggiunta all’atto dell’installazione di OpenVPN (spesso è indicata come Connessione alla rete locale (LAN) 2 o con dizioni simili): per averne la certezza, è possibile fare clic con il tasto destro del mouse sulle varie connessioni di rete in lista, selezionare Proprietà, quindi verificare che il nome del dispositivo correlato sia TAP-Win32 Adapter V8. Una volta individuata la connessione associata ad OpenVPN, è necessario rinominarla in OpenVPN
.
Dopo aver selezionato entrambe le connessioni dalla finestra Connessioni di rete di Windows, facendo clic con il tasto destro del mouse si dovrà scegliere Connessioni con bridging. Dopo la comparsa del messaggio Realizzazione del ponte sulle connessioni in corso, si troverà in elenco una nuova voce, battezzata Bridge di rete che dovrà essere rinominata in OpenVPN Bridge.
Nelle proprietà TCP/IP di OpenVPN Bridge, è bene indicare le stesse impostazioni definite nella finestra delle proprietà TCP/IP relativa alla connessione di rete “fisica”.
Facendo clic con il tasto destro del mouse sull’icona di OpenVPN nella traybar quindi cliccando su Connetti, il programma – dopo una manciata di secondi di attesa – dovrebbe mostrare il messaggio Server è ora connesso.
Configurazione lato client
Conclusa la configurazione del server, si può passare all’impostazione dei sistemi client che dovranno successivamente connettersi alla rete VPN.
Come primo passo, si dovrà installare OpenVPN sul client utilizzando il medesimo file impiegato per il server.
Poi, è necessario copiare i file client1.crt, client1.key
e ca.crt
dalla cartella OpenVPNeasy-rsakeys
del server nella cartella OpenVPNconfig
del client. Sempre nella directory OpenVPNconfig
del client dovrà essere posizionato il file key.txt
proveniente dalla cartella OpenVPNconfig
del sistema server.
Infine, si dovrà copiare il file client.ovpn
dalla cartella OpenVPNsample-config
del client in OpenVPNconfig
, sempre sul client.
Il file di configurazione OpenVPNconfigclient.ovpn
deve essere aperto con un editor di testo e modificato attivando – come nel server – solo la direttiva dev tap
; abilitando dev-node
inserendo OpenVPN quale denominazione dell’interfaccia di rete.
In corrispondenza della voce remote
, va indicato l’IP del server VPN. Se al server è associato un IP statico, nella direttiva remote
deve essere specificato tale indirizzo. Nel caso in cui il provider Internet assegni al server un indirizzo IP in modo dinamico, si potrà ricorrere a servizi quali DynDNS.
Più sotto, in luogo delle impostazioni di default, vanno specificate le seguenti direttive:
ca ca.crt
cert client1.crt
key client1.key
Ancora più sotto, va abilitata la voce ne-cert-type server
e tls-auth
. In corrispondenza di quest’ultima l’indicazione del file ta.key
va sostituita con key.txt
.
Finalmente, dopo aver effettuato il “bridging” tra la scheda di rete “fisica” e l’interfaccia di rete virtuale aggiunta sul client da OpenVPN (quest’ultima dovrà essere rinominata in OpenVPN, così come già fatto in precedenza lato server), sarà possibile instaurare una connessione sicura con il sistema server remoto.
Per gli altri client dovranno essere copiati i file client2.crt, client2.key, ca.crt
dal server, creati con il comando build-key client2
, build-key client3
e così via.
Dopo aver cliccato con il tasto destro del mouse sull’icona di OpenVPN quindi su Connetti, il client tenterà la connessione al server VPN remoto, specificato in precedenza mediante l’uso della direttiva remote.
A questo punto, dovrebbe essere possibile accedere alle risorse condivise del server e degli altri computer così come se il sistema client remoto facesse parte della medesima rete locale. Cliccando, quindi, sull’icona Risorse di rete si dovrebbe ottenere l’elenco delle risorse condivise ed accessibili.
Nel caso in cui il sistema server fosse collegato alla rete Internet mediante un router, sarà necessario effettuare il forwarding dei dati in transito sulla porta UDP 1194 verso l’IP locale associato alla macchina che fungerà da server VPN.
Va altresì sottolineato che nella modalità “bridged” (dev tap
) sia il server che il client devono appartenere alla stessa sottorete (ad esempio, 192.168.0.0). Nel caso in cui fossero attestati su reti con IP differenti, dovrà essere necessariamente attivata la modalità “routed” di OpenVPN (dev tun
).