Connessione VPN in Windows con OpenVPN

Come creare una connessione VPN in Windows con OpenVPN: tutti i passaggi e gli ostacoli che bisogna superare per collegarsi da remoto alle risorse condivise in rete locale.

Molti utenti conoscono le reti VPN perché sono soliti appoggiarsi a servizi di terze parti per eludere limitazioni geografiche o per collegarsi a una rete WiFi pubblica o aperta in modo sicuro.
Una connessione VPN, però, è particolarmente utile allorquando ci si volesse collegare da remoto alla rete dell’azienda, dell’ufficio o di casa – anche a migliaia di chilometri di distanza – esattamente come se si fosse attestati sul router locale.
La connessione VPN, una volta stabilita, consentirà di scambiare i dati in modo sicuro grazie all’utilizzo della crittografia: si potrà quindi ad esempio attingere da remoto ai documenti conservati all’interno della propria rete locale, senza che il loro contenuto possa essere letto – lungo il percorso – da soggetti non autorizzati.
Di base Windows consente di creare una connessione VPN ma utilizza protocolli meno sicuri: Reti VPN: differenze tra PPTP, L2TP IPSec e OpenVPN.
Il protocollo OpenVPN è invece la soluzione universalmente apprezzata per creare una connessione VPN sicura e affidabile, a patto che si utilizzi il componente server aggiornato all’ultima versione (quindi certamente esente da qualunque vulnerabilità nota). Purtroppo ad oggi Windows non supporta direttamente OpenVPN.

Connessione VPN: attivarla sul router, anche mediante l’installazione di un firmware custom oppure su workstation e Mini PC

Per creare un server OpenVPN e consentire ai client remoti di collegarsi in sicurezza alla propria rete locale, la migliore soluzione consiste nell’utilizzare un router moderno che supporta la configurazione e l’attivazione di una VPN OpenVPN.
In alternativa, si può verificare la compatibilità del router con un firmware personalizzato come DD-WRT o altri (Come trasformare un router in un access point WiFi): tali firmware consentono di estendere notevolmente le funzionalità originali del router (quelle previste dal produttore) e godere di un server OpenVPN facile da configurare.
Coloro che non disponessero di un router capace di attivare un server OpenVPN, possono installare il componente server di OpenVPN su qualunque macchina collegata alla rete locale quindi aprire la porta in ingresso sul router per il collegamento al server VPN (vedere anche Come rendere la rete sicura sia in azienda che a casa).
Per evitare di tenere sempre accesa una workstation, suggeriamo l’utilizzo di un Mini PC con dissipatore passivo così da ridurre al minimo i consumi energetici e non causare rumore.
Il Mini PC potrà essere collegato al proprio router (anche via WiFi) e posizionato ove più si preferisce.

Come creare una connessione VPN in Windows, affidabile e sicura, in 20 passi

Installare OpenVPN server su PC Windows non è un’operazione semplicissima. Anche perché Windows mette un po’ i bastoni tra le ruote complicando l’applicazione di certe impostazioni che dovrebbero necessariamente essere più intuitive.
Seguendo i passaggi che vi proponiamo nel seguito, però, si potrà raggiungere l’obiettivo prefisso.

1) Scaricare e installare OpenVPN per Windows nella sua versione più recente.
Durante l’installazione, ci si assicuri di autorizzare l’installazione di tutti i componenti software che formano il pacchetto di OpenVPN server.
Va spuntata anche la casella EasyRSA 2 Certificate Management Scripts.
Alla comparsa della richiesta “Installare questo software di dispositivo“, bisognerà rispondere affermativamente.

2) Il primo vero passaggio da effettuare consiste nella generazione di un certificato di root. Esso sarà utilizzato per produrre i certificati digitali (che andranno firmati digitalmente) che saranno utilizzati dai client per attestare la loro identità ed, eventualmente, consentire la connessione remota alla VPN.
Per iniziare, si deve aprire il prompt dei comandi con i diritti di amministratore (digitare cmd nella casella di ricerca di Windows, premere la combinazione di tasti CTRL+MAIUSC+INVIO quindi fare clic su ) quindi digitare quanto segue:

cd %programfiles%\OpenVPN\easy-rsa
init-config
notepad vars.bat


3) Il Blocco Note di Windows aprirà lo script batch di configurazione vars.bat appena generato.
Intorno alla fine del file di testo, si troveranno le seguenti righe. Si dovrà modificarne il contenuto in maniera tale da rispecchiare la propria posizione:
set KEY_COUNTRY=US
set KEY_PROVINCE=CA
set KEY_CITY=SanFrancisco
set KEY_ORG=OpenVPN
set KEY_EMAIL=mail@host.domain
set KEY_CN=changeme
set KEY_NAME=changeme
set KEY_OU=changeme
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234

Le informazioni possono essere modificate così come segue, operando le opportune sostituzioni ove indicato:

set KEY_COUNTRY=IT
set KEY_PROVINCE=IT
set KEY_CITY=Rome
set KEY_ORG=Nomeazienda
set KEY_EMAIL=info@nomeazienda.it
set KEY_CN=NOMEUNIVOCOSERVER
set KEY_NAME=NOMEUNIVOCOSERVER
set KEY_OU=IT
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234


Dopo aver apportato le modifiche, di dovrà salvare il file scegliendo File, Salva dal Blocco Note.

4) Una volta chiuso il Blocco Note, sempre alla precedente schermata del prompt dei comandi, si potrà continuare digitando quanto segue:

vars
clean-all


5) Il passaggio seguente consiste nel digitare build-ca per creare l’autorità di certificazione di root autorizzata a gestire tutti i vari certificati digitali utilizzati durante l’uso della connessione VPN.


Avendo modificato in precedenza i valori di default nel file vars.bat, basterà premere Invio, via a via, per accettare tutte le impostazioni predefinite.
Solamente in corrispondenza di Common name e Name suggeriamo di digitare, per maggiore praticità, solo ca.


6) Per generare i certificati digitali utilizzati dal modulo server di OpenVPN si dovrà quindi impartire il comando seguente:

build-key-server server

Si potranno inizialmente accettare, anche in questo caso, le impostazioni di default avendo cura di indicare server come Common name e Name.


Alla comparsa di A challenge password e An optional company name, si può semplicemente premere Invio.
Infine, non appena appariranno i messaggi Sign the certificate e 1 out of 1 certificate requests certified, commit?, si dovrà digitare y e premere Invio per confermare.

7) Adesso, per ciascun dispositivo che si collegherà alla VPN si dovrà generare un certificato. Nel caso in cui un device (si pensi a un notebook, un tablet, un convertibile, uno smartphone,…) dovesse andar perduto oppure venisse rubato, basterà revocare il certificato per bloccare qualunque tentativo di accesso da remoto alla propria VPN e al contenuto della rete locale.
Per ogni dispositivo client, quindi, bisognerà ripetere questo passaggio inserendo al prompt dei comandi aperto con i diritti di amministratore quanto segue:

cd %programfiles%\OpenVPN\easy-rsa
build-key NOMEDISPOSITIVO

Al posto di NOMEDISPOSITIVO va scelto un nome identificativo per il dispositivo avente titolo per collegarsi da remoto alla VPN.


Lo stesso nome appena scelto dovrà essere digitato anche in corrispondenza di Common name e Name.

8) Per concludere la procedura, bisognerà generare i parametri Diffie-Hellman digitando, al prompt build-dh.
La procedura richiederà diversi minuti per essere portata a completamento.
Maggiori informazioni sul protocollo Diffie-Hellman in questa pagina.

9) I certificati generati usando gli script EasyRSA vengono salvati nella cartella easy-rsa\keys di OpenVPN.
È necessario copiare i seguenti file, contenuti in tale cartella, nella directory config di OpenVPN (generalmente, C:\Program Files\OpenVPN\config):
ca.crt
dh4096.pem
server.crt
server.key

10) A questo punto si può passare alla configurazione vera e propria del server OpenVPN.
Una buona base di partenza è rappresentata dai file di configurazione di esempio.
Al prompt dei comandi si dovrà quindi digitare:
copy "%programfiles%\OpenVPN\sample-config\server.ovpn" "%programfiles%\OpenVPN\config"
copy "%programfiles%\OpenVPN\sample-config\client.ovpn" "%programfiles%\OpenVPN\config"

11) Impostazione del file di configurazione per il server OpenVPN. Per modificare il file di configurazione server.ovpn suggeriamo di usare un editor di testo come Notepad++ perché il Blocco Note di Windows non offre una visualizzazione corretta.

Dopo aver aperto con Notepad++ il file %programfiles%\OpenVPN\config\server.ovpn, si dovrà individuare il blocco seguente:

# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page).
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
# Diffie hellman parameters.
# Generate your own with:
# openssl dhparam -out dh2048.pem 2048
dh dh2048.pem

Tutto ciò dovrà essere sostituito con quanto segue:

# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page).
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\server.crt"
key "C:\\Program Files\\OpenVPN\\config\\server.key" # This file should be kept secret
# Diffie hellman parameters.
# Generate your own with:
# openssl dhparam -out dh2048.pem 2048
dh "C:\\Program Files\\OpenVPN\\config\\dh4096.pem"

Al posto della riga seguente:

tls-auth ta.key 0 # This file is secret

si deve sostituire:

tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 0

12) Per impostazione predefinita, il server OpenVPN e i client collegati usano la subnet 10.8.0.0.
Si supponga di voler fare in modo che i client connessi alla rete VPN possano accedere alla rete locale 192.168.1.0.
Nel file server.ovpn, bisognerà andare alla ricerca dei seguenti due blocchi:

;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"

Al loro posto si dovrà digitare (senza il ; iniziale):

push "route 192.168.1.0 255.255.255.0"

Poco più sotto, bisognerà togliere il simbolo di commento (punto e virgola iniziale) dalla riga client-to-client così da fare in modo che i client possano “vedersi” reciprocamente.
Suggeriamo infine di inserire in fondo al file server.ovpn le due righe riportate di seguito per veicolare tutto il traffico attraverso la VPN:

push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"

Come ultimo passo, bisognerà assicurarsi di salvare il file server.ovpn e, da prompt dei comandi aperto con i diritti di amministratore, digitare quanto segue:

reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPEnableRouter /t REG_DWORD /d 1 /f

13) Suggeriamo quindi di creare una chiave tls-auth per rendere ancora più solida e sicura la procedura di autenticazione.
Da prompt dei comandi digitare:

"%programfiles%\OpenVPN\bin\openvpn" --genkey --secret "%programfiles%\OpenVPN\config\ta.key"

A questo punto ci si può spostare sulla configurazione del client OpenVPN.

14) Impostazione del file di configurazione per il client OpenVPN. In questo caso, il file da aprire con Notepad++ è %programfiles%\OpenVPN\config\client.ovpn.
Al suo interno bisognerà individuare la riga remote my-server-1 1194 operando quindi le opportune sostituzioni.
In particolare, al posto di my-server-1 va indicato l’indirizzo mnemonico (se si usano servizi DNS o DDNS) o l’IP pubblico del server OpenVPN; al posto di 1194 la porta UDP che verrà adoperata (successivamente da aprire sul router).

Il blocco seguente:

ca ca.crt
cert server.crt
key server.key

dovrà essere sostituito con quanto segue:

ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\NOMEDISPOSITIVO.crt"
key "C:\\Program Files\\OpenVPN\\config\\NOMEDISPOSITIVO.key"

Al posto di NOMEDISPOSITIVO.crt e NOMEDISPOSITIVO.key dovranno essere specificati i nomi dei file relativi al client.
Inoltre, si deve eliminare il blocco seguente:

# If a tls-auth key is used on the server
# then every client must also have the key.
tls-auth ta.key 1

quindi incollare alla fine del file client.ovpn:

key-direction 1
<tls-auth>
# Incollare qui il contenuto del file %programfiles%\OpenVPN\config\ta.key
</tls-auth>

Al posto della frase # Incollare qui il contenuto del file %programfiles%\OpenVPN\config\ta.key deve ovviamente essere incollato il contenuto del file ta.key, precedentemente generato.

In fondo al file client.ovpn, inserire anche la seguente riga:

block-outside-dns

15) A questo punto è importante verificare che il sistema Windows sul quale si è installato il server di OpenVPN utilizzi un IP privato statico (inserirlo definitivamente nelle impostazioni dell’interfaccia di rete, accertandosi che tale IP non possa mai essere usato da altri sistemi).
Sempre dal prompt dei comandi aperto con i diritti di amministratore, digitare quanto segue:

route add 10.8.0.0 mask 255.255.255.0 192.168.1.250

Nel nostro caso, l’IP locale della macchina Windows sul quale è installato OpenVPN è 192.168.1.250 (effettuare la sostituzione corretta).

16) Premendo la combinazione di tasti Windows+R e digitando ncpa.cpl, si dovrà cliccare con il tasto destro sull’interfaccia di rete Ethernet abitualmente utilizzata (non quindi su TAP-Windows Adapter V9), su Proprietà, sulla scheda Condivisione quindi attivare la casella Consenti ad altri utenti di rete di collegarsi tramite la connessione Internet di questo computer.


17) Adesso è finalmente possibile procedere con l’avvio del servizio di OpenVPN.
Per procedere, suggeriamo di premere la combinazione di tasti Windows+R, digitare services.msc, individuare OpenVPNService e farvi doppio clic.


Alla comparsa della finestra in figura, si potrà cliccare sul pulsante Avvia e configurare Automatico (avvio ritardato) come Tipo di avvio in modo tale che la VPN sia sempre disponibile a ogni accensione o riavvio della macchina.
Prima di proseguire, è comunque fondamentale riavviare il sistema sul quale è stato appena installato il server di OpenVPN.
Ricordiamo infine che qualunque modifica alla configurazione del server di OpenVPN, verrà presa in carico solo dopo il riavvio del servizio di sistema.
Per riavviare il servizio di OpenVPN in modo veloce, si può aprire il prompt dei comandi e digitare:
sc stop OpenVPNService
sc start OpenVPNService

18) Il firewall integrato in Windows deve essere quindi configurato in modo tale da consentire le richieste di connessione in ingresso sulla porta UDP 1194.
Per procedere, al prompt dei comandi aperto con i diritti di amministratore, si deve scrivere:

netsh firewall add portopening UDP 1194 "OpenVPN Server"

19) Portandosi infine nel pannello di amministrazione del router, si dovrà attivare l’inoltro del traffico (port forwarding) sulla porta UDP 1194.


Come indirizzo IP interno (indirizzo IP privato destinazione dei pacchetti in arrivo), si dovrà impostare l’indirizzo del sistema sul quale si è installato il server di OpenVPN.

20) Infine, sempre sul router, è necessario impostare un percorso di routing statico:


In particolare, va indicato come IP di destinazione 10.8.0.0 (la rete usata da OpenVPN), subnet mask 255.255.255.0 e l’indrizzo privato statico del sistema ove si è installato il modulo server di OpenVPN (nell’esempio 192.168.1.250).

Come connettersi alla rete VPN dai client remoti

Per collegarsi alla rete VPN appena creata con OpenVPN da un client remoto, basta installarvi OpenVPN.
Si può ricorrere al file d’installazione usato in precedenza avendo cura, questa volta, di lasciare disattivata la casella EasyRSA 2 Certificate Management Scripts.
Nella cartella %programfiles%\OpenVPN\config sul client bisognerà quindi copiare i seguenti file traendoli dalla directory %programfiles%\OpenVPN\easy-rsa\keys\ del server:

ca.crt
NOMEDISPOSITIVO.crt
NOMEDISPOSITIVO.key

oltre al file client.ovpn creato nella cartella %programfiles%\OpenVPN\config del server.
Nella cartella %programfiles%\OpenVPN\config del client si dovranno insomma avere quattro file: ca.crt, NOMEDISPOSITIVO.crt, NOMEDISPOSITIVO.key e client.ovpn.

Avviando il software OpenVPN GUI quindi cliccando due volte sulla sua icona nella traybar la connessione al server VPN dovrebbe andare a buon fine.
Inoltre, si dovrebbe avere immediatamente visibilità sul server VPN, sui client connessi alla VPN e sugli altri sistemi collegati alla rete locale.
I comandi PING restituiranno risposta:
ping 10.8.0.1
ping 192.168.1.250
ping 192.168.1.1

Supponendo, ovviamente, che la rete locale utilizzi la classe 192.168.1.0, come già visto precedentemente nel nostro esempio.

Connessione VPN da un dispositivo Android

Per impostare la connessione VPN sul dispositivo Android configurato al precedente punto 7), suggeriamo di aprire il file %programfiles%\OpenVPN\config\client.ovpn in un editor di testo come Notepad++ ed eliminare le righe seguenti:

# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
ca ca.crt
cert client.crt
key client.key

Alla fine del file ovpn si dovrà poi inserire quanto segue:

<ca>
# Incollare qui il contenuto del file %programfiles%\OpenVPN\config\ca.crt
</ca>
<cert>
# Incollare qui il contenuto del file %programfiles%\OpenVPN\easy-rsa\keys\NOMEDISPOSITIVO.crt
</cert>
<key>
# Incollare qui il contenuto del file %programfiles%\OpenVPN\easy-rsa\keys\NOMEDISPOSITIVO.key
</key>

Consigliamo quindi di scaricare e di installare dal Play Store questo client OpenVPN e di salvare nello smartphone o nel tablet Android il file client.ovpn.
Ricorrendo a un file manager come Solid Explorer (File manager Android, quali i migliori del momento), si dovrà quindi individuare il file di configurazione OpenVPN client.ovpn memorizzato nel dispositivo Android, selezionarlo quindi scegliere il comando Apri con.
Nella schermata successiva, bisognerà selezionare la voce Convert config file.


La configurazione per il client OpenVPN sarà così importata nell’applicazione OpenVPN per Android, installata in precedenza. Nella schermata principale di OpenVPN per Android, si troverà il profilo appena importato (potrà essere liberamente rinominato).
“Toccando” tale profilo, la connessione VPN con il server OpenVPN remoto verrà immediatamente stabilita e sarà possibile accedere a tutte le risorse condivise in rete locale (ad esempio usando lo stesso Solid Explorer).
Per approfondire, suggeriamo anche la lettura di questo documento.

Ti consigliamo anche

Link copiato negli appunti