188680 Letture

OpenVPN: la guida passo-passo per creare una rete virtuale privata e sicura

Sinora abbiamo visto un semplice esempio di connessione VPN che faceva uso unicamente di una chiave crittografica condivisa. Un approccio simile non è la soluzione migliore. Ecco quindi che ci accingiamo a spiegare com'è possibile utilizzare i certificati X.509 con OpenVPN in modo da fidare su di un livello di sicurezza molto più elevato.
Il lavoro da compiere, in questo caso, è maggiore dal momento che è indispensabile seguire una più lunga serie di passaggi.

In prima battuta è necessario portarsi nella cartella \Programmi\OpenVPN\easy-rsa e creare, al suo interno una nuova directory: keys. In essa si dovranno copiare i file serial.start ed index.txt.start. I due file dovranno essere rinominati, rispettivamente, in serial ed index.txt.
Le chiavi ed i certificati generati da easy-rsa saranno memorizzati nella cartella appena creata.

Adesso, si dovrà fare doppio clic sul file batch init-config.bat.


Si clicchi, quindi, con il tasto destro del mouse sul file vars.bat e si scelga il comando Modifica: verrà così aperto il Blocco Note di Windows. Qui 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.
In questo file, generalmente, non si deve cambiare nulla a parte le ultime cinque righe. Esempio:

set KEY_COUNTRY=IT
set KEY_PROVINCE=IT
set KEY_CITY=Milano
set KEY_ORG=MiaAzienda
set [email protected]

Dopo aver effettuato le modifiche del caso, è possibile salvare il file vars.bat.

A questo punto, è necessario aprire il prompt dei comandi, portarsi all'interno della cartella easy-rsa (cd\programmi\openvpn\easy-rsa) e digitare vars seguito dalla pressione del tasto Invio.

Creazione delle chiavi Diffie-Hellman

E' il momento di produrre le chiavi che saranno utilizzate nelle comunicazioni cifrate. Grazie al protocollo Diffie-Hellman, due "interlocutori" possono scambiarsi una chiave segreta in modo sicuro. Nel caso della soluzione a chiave simmetrica utilizzata nel primo esempio di "tunnel" VPN, il file key.txt doveva essere necessariamente trasmesso all'altro computer attraverso un canale di comunicazione "sicuro". Non certo attraverso la rete Internet. Grazie a Diffie-Hellman è possibile superare brillantemente l'ostacolo.
Uno speciale algoritmo garantisce infatti che solo gli interlocutori coinvolti nella comunicazione conoscano la chiave utilizzata per crittografare i "messaggi".

Grazie al protocollo crittografico Diffie-Hellman, due interlocutori possono così accordarsi sull'utilizzo di una chiave condivisa e segreta utilizzando un canale di comunicazione pubblico e quindi da considerarsi potenzialmente insicuro (rete Internet).

Digitando al prompt dei comandi build-dh.bat, verrà generata una chiave Diffie-Hellman. L'operazione, per poter essere portata a completamento, può richiedere qualche minuto di attesa.

Il passo seguente consiste nell'avvio della procedura di creazione di un certificato che sarà impiegato per creare e firmare altri certificati e quindi autenticare altre macchine.


Per dare il via all'operazione, è sufficiente digitare build-ca al prompt dei comandi (sempre dalla cartella easy-rsa di OpenVPN).
A seconda delle informazioni specificate poco fa nel file vars.bat, potrebbe essere o meno necessario inserire i vari parametri richiesti.

Com'è possibile notare, avendo modificato secondo le esigenze il file vars.bat, possiamo accettare molte delle impostazioni di default premendo semplicemente il tasto Invio.

Non appena comparirà la dizione Common name, è bene indicare un nome facile da ricordare che servirà per la configurazione dei client VPN.

A conclusione di questa fase, la sottocartella keys si sarà popolata di altri file. Il certificato ca.crt risulterà necessario per tutte le macchine remote che vorranno collegarsi al server VPN mentre il file dh2048.pem, contenente la chiave Diffie-Hellman, deve essere disponibile solo sul server OpenVPN.
Il file ca.key deve essere mantenuto assolutamente segreto e non va inviato a nessuno.


Generazione delle chiavi server


Così come un passaporto è inutilizzabile se non vidimato dalle autorità locali, anche i certificati OpenVPN non possono essere usati se non siano stati preventivamente "autorizzati" dal gestore del server.

Si digiti, quindi, al prompt dei comandi quanto segue: build-key-server.bat Server. Il parametro Server indica il nome che sarà attribuito ai file prodotti.
Il file batch provvederà a produrre una chiave RSA privata da 2048 bit. Ancora una volta, i valori derivati dal file vars.bat vengono offerti come predefiniti: per accettarli è sufficiente premere il tasto Invio.
Alla comparsa della stringa Common name si dovrà aver cura di introdurre esattamente lo stesso nome specificato in precedenza.

Ogniqualvolta viene richiesta la enerazione di una coppia di chiavi (pubblica e privata) per il server VPN ricorrendo a build-key-server.bat, nel campo Common name va specificato l'esatto nome della macchina server sulla quale si intende usare il certificato.

Si possono anche inserire parametri aggiuntivi come una password che deve essere indicata ogniqualvolta si desideri usare il certificato. Nel caso in cui si decida di indicare una password, niente e nessuno potrà connettersi alla VPN senza l'uso della parola chiave specificata.
Alla comparsa del messaggio Sign the certificate si dovrà rispondere in modo affermativo digitando "y" e premendo Invio.
Analoga risposta va fornita alla visualizzazione del messaggio "1 out of 1 certificate requests certified, commit?".


Nella sottocartella keys saranno così aggiunte anche le informazioni relative alle chiavi utilizzate dal server VPN.

In \Programmi\OpenVPN\config\keys vanno copiati i seguenti file, provenienti dalla cartella \Programmi\OpenVPN\easy-rsa\keys:
Server.crt
Server.key
ca.crt
dh1024.pem



Impostazione dei certificati client

Per la generazione delle chiavi da impiegare sui client, è necessario usare il comando build-key.bat 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 va introdotta, questa volta, la stringa client1 richiedendo successivamente, al solito, l'apposizione della firma.

I file client1.* che saranno creati nella directory keys potranno essere trasmessi al sistema client che deve potersi connettere al server VPN (in realtà, i file strettamente necessari sono client1.crt e client1.key).


Sul sistema client, è necessario accedere alla cartella \Programmi\OpenVPN\config\keys e copiarvi i seguenti file:
client1.crt
client1.key
ca.crt



Modifica dei file di configurazione lato server e client

Come ultimo passo, è necessario fare in modo che OpenVPN utilizzi i certificati X.509 e sappia dove trovarli.
Per far ciò, bisogna aprire il file di configurazione di OpenVPN (tasto destro sull'icona di OpenVPN GUI nella traybar, comando Edit config).

Per prima cosa è necessario commentare ossia "neutralizzare" la riga secret key.txt anteponendovi il carattere # (cancelletto).

In calce al file di configurazione, lato SERVER, vanno poi aggiunte le seguenti righe:
tls-server
dh keys/dh1024.pem
ca keys/ca.crt
cert keys/Server.crt
key keys/Server.key


In fondo al file di configurazione, lato CLIENT, vanno aggiunte le seguenti (avendo cura, sempre, di commentare la riga secret key.txt):
tls-client
dh keys/dh1024.pem
ca keys/ca.crt
cert keys/client1.crt
key keys/client1.key


Il comando build-key.bat potrà essere invocato per generare certificati "ad hoc" per ciascun macchina che dovrà connettersi al server VPN (es.: build-key.bat client2; build-key.bat client3,...).


A questo punto, dovrebbe essere possibile accedere alle risorse condivise del server e degli altri computer così come se i sistemi client remoti facessero parte della medesima rete locale. Cliccando, quindi, sull'icona Risorse di rete si dovrebbe ottenere, ad esempio, 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.x.x). Nel caso in cui fossero attestati su reti con IP differenti, dovrà essere necessariamente attivata la modalità “routed” di OpenVPN (dev tun).

In uno dei prossimi articoli evidenzieremo le possibilità più avanzate offerte da OpenVPN.


OpenVPN: la guida passo-passo per creare una rete virtuale privata e sicura - IlSoftware.it - pag. 2