Open Vpn: la sicurezza in rete
Una VPN (Virtual Private Network) è un sistema per riuscire ad utilizzare in modo sicuro la rete internet che, per sua natura, sicura non è.
Si tratta di una sorta di canale riservato, e protetto da occhi indiscreti, che si viene a creare tra computer dislocati nel territorio e che sono tutti connessi con lo stesso protocollo.
Prima dell'avvento della VPN, la medesima soluzione veniva realizzata dedicando linee apposite per le aziende che ne facevano richiesta. Come si può ben immaginare, questo tipo di soluzione risultava eccellente da un punto di vista delle prestazioni e della sicurezza ma, sicuramente molto costosa.
E' qui che entra in gioco OpenVpn. Si tratta di un software GRATUITO che consente alle informazioni di transitare attraverso il "canale" internet, cifrandole preventivamente.
OpenVpn appartiene alla tipologia di reti definite: "Secure VPN" le quali cifrano le informazioni in transito tramite il protocollo SSL/TLS o PPTP (proprietario delle reti VPN di Microsoft).
Attualmente SSL/TLS (dove TLS è l'evoluzione di SSL) è il protocollo di cifratura in assoluto più sicuro al mondo. Proprio per questa ragione le reti Secure VPN si appoggiano a questa tecnologia.
Le reti VPN, inoltre, si basano su di un'architettura di tipo Client/Server. Esisterà, perciò, un computer che fornirà il servizio e fungerà da server ed una serie di client che usufruiranno di tale servizio.
OpenVPN è MULTIPIATTAFORMA. Non importa quale sistema operativo utilizziamo tra linux, windows e mac perchè avremo sempre il giusto pacchetto da scaricare direttamente dal sito.
In questo articolo tratterò passo passo l'installazione e la configurazione di OpenVpn su ambiente windows. Poco cambia in ambiente linux, comunque, rispetto a quanto descritto.
La documentazione completa in lingua inglese dalla quale ho tratto questo articolo è liberamente consultabile a questo indirizzo.
Open Vpn: installazione.
E' possibile scaricare l'ultima versione del programma direttamente da questo link.
Una volta scaricato e lanciato il programma di installazione e dopo aver premuto un paio di volte: "avanti", ci appare la videata relativa ai componenti da installare. Per default sono selezionati tutti e salvo diversa esigenza lasciamo inalterate le spunte. Proseguiamo premendo ancora una volta: "avanti" e nella videata relativa alla cartella di installazione clicchiamo su install per iniziare il processo.
Dopo aver eliminato eventuali altri servizi OpenVpn presenti nel pc magari da vecchie installazioni, viene installata una scheda di rete "software" che consentirà al software di realizzae il collegamento VPN. I driver di questa scheda sono privi di firma digitale pertanto sarà necessario confermare l'installazione premendo il pulsante: "Continua comunque".

Figura 1
Il processo di installazione a questo punto termina. Se non è stato modificato il percorso di installazione, troveremo tutto quello che ci serve all'interno della cartella: "c:\programmi\openVpn\" e relative sottocartelle.
In connessioni di rete, inoltre, è stata creata una nuova scheda (TAP-Win32 Adapter) che, per funzionare correttamente non dovrà essere protetta da firewall. Per fare questo apriamo il firewall di windows, selezioniamo il tab avanzate e togliamo la spunta dalla scheda di rete corretta:

Figura 2
N.B.:
L'installazione di OpenVpn DEVE assolutamente essere eseguita sia sulla macchina server che su ciascuna macchina client senza nessuna differenza nella procedura. La distinzione tra server e client la faremo in seguito in fase di configurazione.
Open Vpn: configurazione del server.
Routed o Bridged ?
- Routed: significa che la macchina remota, utilizza la propria sottorete per collegarsi al server. Il client, quindi, non è necessariamente una singola macchina ma può essere un'altra rete.
- Bridged: significa che la macchina remota assumerà un indirizzo IP che fa parte della sotto rete a "distanza" (cioè quella del server). La nostra macchina remota, quindi, potrà interagire con i computer della rete alla quale si collega.
Gli indirizzi IP:
| 10.0.0.0 | 10.255.255.255 |
| 172.16.0.0 | 172.31.255.255 |
| 192.168.0.0 | 192.168.255.255 |
Immaginiamo di trovarci in un bar che ci mette a disposizione la connessione WiFi. Supponiamo che l'indirizzo interno che viene assegnato al nostro netbook, dal router del bar, sia 192.168.1.20 e che il router sia 192.168.1.1. Situazione molto probabile.
Bene, ci colleghiamo in vpn con la nostra rete a casa o in ufficio che ha lo stesso indirizzamento. Avremo perciò che anche il nostro router a casa sarà 192.168.1.1. Cosa succede ? Non funziona un bel niente. Il nostro netbook non saprà se 192.168.1.1 è il router del bar o quello di casa nostra. Siamo in presenza di un bel conflitto!
Il consiglio, infatti, è di evitare per quanto possibile, nelle nostre reti, indirizzi IP usati spesso nelle reti private.
Un'ottima idea può essere quella di utilizzare indirizzi nel mezzo, e quindi meno frequenti, come per esempio 10.66.77.0/24.
Per chi volesse approfondire la notazione /24 relativamente alla subnet di rete, consiglio questo ottimo articolo di Wikipedia.
PKI - I Certificati e le chiavi:
Affinché una VPN possa essere chiamata tale, è fondamentale creare i certificati nonché le chiavi pubbliche e private che consentono l'autenticazione reciproca dei client con il server. Soltanto avvenuta questa autenticazione, infatti, ci sarà il "rapporto di fiducia" necessario per la trasmissione dei dati cifrata.
Il sistema di autenticazione che viene anche chiamato PKI (Public Key Infrastructure), si compone di una chiave pubblica ed una privata sia per il server che per ciascun client e di un CA (Master Certificate Autorithy) che servirà per autenticare le chiavi pubbliche e private.
Tutti questi passaggi saranno effettuati utilizzando dei files batch che si trovano nella cartella easy-rsa di installazione di OpenVpn.
Apriamo un prompt dei comandi (start/esegui/cmd -> invio) e spostiamoci nella cartella di openVpn:
"cd c:\program files\openVpn\easy-rsa"
iniziamo la configurazione con il comando:
init-config
che ci permette di copiare i files di configurazione originali forniti con l'installazione, in quelli che verranno poi usati dal programma.
A questo punto dobbiamo editare il files vars.bat che si trova sempre nella cartella easy-rsa. Nello specifico, in fondo al file, troviamo le informazioni relative alla nostra organizzazione. Personalizziamole a piacere:

Figura 3
Salviamo e torniamo nel nostro prompt dei comandi aperto prima.
Lanciamo i seguenti comandi in sequenza:
vars
clean-all
build-ca
L'esecuzione dell'ultimo comando ci chiederà di confermare le variabili che abbiamo appena modificato nel file vars.bat. E' sufficiente dare invio.
Alla richiesta di Common Name, inserire server.

Figura 4
Abbiamo generato un nuovo CA (Master Certificate Autority) che ci consentirà di validare successivamente le public/private key.
Nella cartella easy-rsa, adesso, dovrebbe esistere un nuovo file chiamato .rnd.
Creiamo ora le chiavi pubbliche e private per il nostro server:
build-key-server server
Anche in questo caso ci vengono richieste le stesse informazioni modificate nel file vars.bat.
Alla richiesta di Common Name, inserire server. In più ci viene richiesto se firmare il certificato e se finalizzare le modifiche. Risponderemo di sì (Y) ad entrambe le domande:

Figura 5
Creiamo ora le chiavi pubbliche e private per il client numero 1:
build-key client1
La procedura è la stessa seguita per build-key-server. Alla richiesta del Common name, invece, è necessario indicare il nome del client in questione. In questo caso client1.
Tutta questa procedura è meglio descritta nel seguente webcast:
Tutto quello che ci rimane da fare sul server è generare i parametri Diffie Hellman,
Grazie a questo batch avremo la possibilità di scambiare le chiavi all'inizio di ciascuna connessione vpn, in maniera sicura anche se ancora ci troviamo in assenza di crittografia.
E' sufficiente lanciare il comando:
build-dh
La videata sarà come la seguente:

Figura 6
File di configurazione:
Nella cartella sample-config di openVpn, sono contenuti i file di configurazione di esempio forniti con il programma. In questo caso prendiamo in considerazione: server.ovpn. Copieremo il file nella cartella config.
I Parametri principali da controllare sono:
- port 1194 --> Definisce la porta attraverso la quale lavorerà openVpn.
- proto udp --> Imposta il protocollo di comunicazione
- dev tun --> Tipo di dispositivo per realizzare una vpn bridged o routed (vedi qualche paragrafo più in alto).
- ca ca.crt --> Indica nome e posizione del file CA (Master Certificate Autority). Il percorso di un file windows andrà indicato racchiuso tra doppi apici e raddoppiando gli slash \\.
- cert server.crt --> Indica nome e posizione del file di certificato. Il percorso di un file windows andrà indicato racchiuso tra doppi apici e raddoppiando gli slash \\.
- key server.key --> Indica nome e posizione del file chiave. Il percorso di un file windows andrà indicato racchiuso tra doppi apici e raddoppiando gli slash \\.
- dh dh1024.pem --> Indica nome e posizione del file dh. Il percorso di un file windows andrà indicato racchiuso tra doppi apici e raddoppiando gli slash \\.
- server 10.8.0.0 255.255.255.0 --> Specifica l'indirizzo IP del server nel caso di reti routed. Nel caso di reti bridged la riga DEVE essere commentata.
- server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 --> Specifica il range di indirizzi da assegnare ai client nel caso di rete bridged. Nel caso di rete routed la riga DEVE essere commentata.
- verb 3 --> Imposta il livello di dettaglio del file di log. Il valore può assumere un minimo di 1 ed un massimo di 9.
Per quanto riguarda i tre file: ca, cert e key, si tratta dei files generati nei passi precedenti. Li troveremo all'interno della cartella c:\program files\OpenVpn\easy-rsa\keys. Possiamo lasciarli in questa cartella ed indicare il percorso completo nel file di configurazione oppure spostarli a nostro piacimento.
Una volta impostati correttamente i parametri secondo quello che ci serve, il nostro lavoro sulla parte server è terminato!
Asciughiamoci il sudore, birretta e via verso la parte client
.
OpenVpn: installazione client.
L'installazione della parte client non differisce in alcun modo rispetto a quella spiegata all'inizio del documento, relativamente alla parte server. Lanciamo, quindi, l'eseguibile e seguiamo tutti i passi fino al termine dell'installazione.
A questo punto copiamo dalla cartella sample-config il file client.ovpn, nella cartella config. Come nel caso del server, ci saranno alcuni parametri che dovremo modificare, altri sui quali dovremo porre particolare attenzione:
- client -> senza ulteriori parametri, indica che ci troviamo sulla macchina client.
- dev tun -> Indica il tipo di dispositivo. Bisogna ovviamente impostare lo stesso valore del server
- proto udp -> indica il protocollo di comunicazione. Deve essere impostato come nel server.
- remote my-server 1194 -> Sostituire al posto di my-server, l'indirizzo IP della macchina che funge da server nella nostra VPN. Il parametro 1194 è la porta di ascolto che dovrà essere impostata come nel server.
-
ca ca.crtcert client.crtkey client.key
- ca ca.crt -> Indica la posizione del file ca (Master Certificate Autorithy) che dobbiamo aver copiato preventivamente dal server.
- cert client.crt -> Indica la posizione del file di certificato.
- key client.key -> Indica la posizione del file di chiave.
- verb 3 -> Imposta il livello di dettaglio del file di log. Il valore può assumere un minimo di 1 ed un massimo di 9.
OpenVpn: primo avvio.

- Nel caso di routing PING 10.8.0.1 <-- Oppure l'indirizzo indicato nei file di configurazione
- Nel caso di bridging: PING <Indirizzo IP nella rete del server>

Figura 8










Commenti