Realizzare un server VPN
1. Installazione di OpenVPN
Scaricare e installare l'ultima versione di OpenVPN per Windows (ad oggi la versione più recente è la 2.4.6 rilasciata il 2 aprile 2018).

Durante la fase di installazione dei componenti consiglio di spuntare la casella EasyRSA 2 e Certificate Management Scripts.

Il percorso dell'installazione è (come sempre) facoltativo.

Tenere presente che alla comparsa della richiesta "Installare questo software di dispositivo", bisognerà rispondere affermativamente altrimenti il dispositivo "TAP-Windows Adapter V9" non funzionerà e quindi verrà compromessa anche l'installazione del programma OpenVPN.

Fatto questo l'installazione procederà al termine.

2. Creazione certificati digitali
Prima di configurare il nostro software VPN dobbiamo avere a nostra disposizione i certificati digitali per garantire la pretazione dei dati durante la trasmissione dei dati.
Apriamo il Prompt dei comandi di Windows come amministratore e posizioniamoci sulla directory di OpenVPN, in particolare accediamo alla sotto cartella easy-rsa.
Codice: Seleziona tutto
cd %programfiles%\OpenVPN\easy-rsa
Codice: Seleziona tutto
init-config
Codice: Seleziona tutto
set KEY_COUNTRY=IT
set KEY_PROVINCE=MI
set KEY_CITY=Milano
set KEY_ORG=OpenVPN
set KEY_EMAIL=info@glitchinside.it
Salviamo e chiudiamo l'editor di testo (non ci servirà più per questa procedura), torniamo al Prompt dei comandi e lanciamo lo script appena creato.vars.bat ha scritto:@echo off
rem Modifica questa variabile per puntare al
rem file openssl.cnf incluso con easy-rsa.
rem Automaticamente imposta la variabile PATH
rem con la directory di openssl.exe
rem In alternativa definire PATH con la
rem directory di openssl.exe manualmente
rem set "PATH=%PATH%;C:\Program Files\OpenVPN\bin"
FOR /F "tokens=2*" %%a IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN"') DO set "PATH=%PATH%;%%b\bin"
rem Definire la directory di Easy-RSA...
set HOME=%ProgramFiles%\OpenVPN\easy-rsa
rem ...e del file di configurazione
set KEY_CONFIG=openssl-1.0.0.cnf
rem Modifica questa variabile per puntare alla
rem directory che verrà creata all'interno della
rem cartella easy-rsa.
rem ATTENZIONE: clean-al eseguira il comando
rem rm -rf su questa directory quindi assicurati
rem di definire la variabile correttamente!
set KEY_DIR=keys
rem Aumentare questo valore solo se siete paranoici.
rem Tuttavia questo rallenterà le prestazioni di
rem negoziazione TLS così come i parametri DH unici
rem durante il processo di generazione.
set DH_KEY_SIZE=2048
rem Dimensioni chiave privata
set KEY_SIZE=4096
rem Questi sono i valori predefiniti per i campi
rem che verranno inseriti nel certificato.
rem Cambiare queste voci in modo che rifletta il tuo sito.
rem Non lasciare nessuno di questi parametri in bianco.
rem Paese / Nazione
set KEY_COUNTRY=IT
rem La provincia
set KEY_PROVINCE=VR
rem La città
set KEY_CITY=Custoza
rem Nome dell'organizzazione
set KEY_ORG=Glitch Inside
rem Indirizzo e-mail
set KEY_EMAIL=info@glitchinside.it
rem nome comune (UNICO per questo CA)
set KEY_CN=Glitch Inside CA
rem nome e...
set KEY_NAME=Glitch
rem ...unità organizzativa
set KEY_OU=Dipartimento IT
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234
Codice: Seleziona tutto
vars
Codice: Seleziona tutto
clean-all
Codice: Seleziona tutto
build-ca
I valori visualizzati sullo schermo sono proprio quelli che abbiamo modificato poco fa, quindi basterà premere INVIO per confermare i valori racchiusi fra le parentesi quadre, uno ad uno, fino ad arrivare alla voce Organizational Unit Name. Da qui in poi dovremo sostituire i valori changeme con i valori corretti.
Creazione certificato lato server: Ora creiamo il certificato che verrà utilizzato dal nostro server scrivendo il comando build-key-server mioserver nella nostra console, dove "mioserver" è il nome del certificato e della chiave che verranno generati.
Codice: Seleziona tutto
build-key-server mioserver
Successivamente ci verrà richiesto (in via del tutto facoltativa) di compilare i campi A challenge password e An optional company name: si possono compilare oppure lasciar vuoti.
Alla fine della procedura ci verrà chiesto se firmare i certificati: rispondere affermativamente digitando Y e poi INVIO. Poi ci verrà chiesto se registrare il valore appena creato: rispondere affermativamente digitando Y e poi INVIO.
Creazione certificato lato client: Ora creiamo il certificato che verrà utilizzato dal nostro client scrivendo il comando build-key mioclient nella nostra console, dove "mioclient" è il nome del certificato e della chiave che verranno generati.
Codice: Seleziona tutto
build-key mioclient

Alla fine ci verrà richiesto in via del tutto facoltativa di compilare i campi A challenge password e An optional company name: si possono compilare oppure lasciar vuoti. Ovviamente quando ci verrà chiesto se firmare i certificati rispondo affermativamente digitando Y e poi INVIO.
Scambio di chiavi Diffie-Hellman: Per concludere digitiamo dal prompt il comando build-dh e attendere qualche minuto durante l'elaborazione
Codice: Seleziona tutto
build-dh
Se lo desiderate potete uscire dal Prompt dei Comandi digitando EXIT e INVIO.
3. Configurazione lato server
Ora dovete prelevare files relativi al server(li trovate nella cartella %programfiles%\OpenVPN\easy-rsa\keys) e copiarli nella cartella config. Questa cartella sotto a Windows XP la trovate in %programfiles%\OpenVPN\config mentre da Windows Vista in poi la trovate in %userprofile%\OpenVPN\config.
- ca.crt
- dh4096.pem
- mioserver.crt
- mioserver.key
Prendiamo i due files server.ovpn e client.ovpn presenti nella cartella %programfiles%\OpenVPN\sample-config e li copiamo nella cartella config.
Consiglio di editare questi files con un editor avanzato (es. Notepad++) poichè il blocco note di Windows non offre le stessa operabilità.
Apriamo il file <...>\config\server.ovpn e modifichiamo le righe seguenti:
Andiamo a sostituite questi valori come segue:server.ovpn ha scritto: # 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
Codice: Seleziona tutto
# 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"
# Diffie hellman parameters.
# Generate your own with:
# openssl dhparam -out dh2048.pem 2048
dh "C:\\Program Files\\OpenVPN\\config\\dh2048.pem"
Al loro posto si dovrà digitare (senza il ; iniziale):server.ovpn ha scritto: ;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
togliamo il commento (ovvero il ; all'inizio delal riga) e sostituiamo le due righe con
Codice: Seleziona tutto
push "route 192.168.1.0 255.255.255.0"
Codice: Seleziona tutto
push "redirect-gateway def1 bypass-dhcp"
Codice: Seleziona tutto
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Codice: Seleziona tutto
reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPEnableRouter /t REG_DWORD /d 1 /f
Codice: Seleziona tutto
client-to-client
Codice: Seleziona tutto
"%programfiles%\OpenVPN\bin\openvpn" --genkey --secret "%programfiles%\OpenVPN\config\ta.key"
e sostituiamolo con questo:server.ovpn ha scritto: tls-auth ta.key 0 # This file is secret
Codice: Seleziona tutto
tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 0
4. Configurazione lato client
A questo punto ci si può spostare sulla configurazione del client OpenVPN, i passaggi sono molti simili a quelli appena eseguiti per il server me più semplificati.
Per prima cosa dobbiamo prelevare i certificati relativi al client (li trovate sempre nella cartella %programfiles%\OpenVPN\easy-rsa\keys) e copiarli nella cartella config.
- ca.crt
- mioclient.crt
- mioclient.key
Andiamo a sostituite questi valori come segue:client.ovpn ha scritto: # 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
Codice: Seleziona tutto
# 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 "C:\\Program Files\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\mioclient.crt"
key "C:\\Program Files\\OpenVPN\\config\\mioclient.key"
Codice: Seleziona tutto
remote 192.168.1.101 1194
Se avete impostato una chiave TSL-AUTH dovrete incollare il contenuto del file %programfiles%\OpenVPN\config\ta.key alla fine del file client.ovpn:client.ovpn ha scritto: # If a tls-auth key is used on the server
# then every client must also have the key.
tls-auth ta.key 1
Codice: Seleziona tutto
key-direction 1
<tls-auth>
# Incollare qui il contenuto del file %programfiles%\OpenVPN\config\ta.key
</tls-auth>
block-outside-dns
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).
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.
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:
Codice: Seleziona tutto
sc stop OpenVPNService
sc start OpenVPNService
Per procedere, al prompt dei comandi aperto con i diritti di amministratore, si deve scrivere:
netsh firewall add portopening UDP 1194 "OpenVPN Server"
Portandosi infine nel pannello di amministrazione del router, si dovrà attivare l'inoltro del traffico (port forwarding) sulla porta UDP 1194.
Questo post prende spunto da: Easy Windows Guide