• Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri
Home CHelp - In evidenza

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 ?

Nella configurazione del server, ma anche del client,  bisogna innanzi tutto, prendere in considerazione se usre una VPN routed o bridged
  1. 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.
  2. 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.
Tutto questo si traduce in una riga particolare dei file di configurazione che verranno comunque affrontati più avanti. Si tratta di indicare il tipo di device con cui collegarsi.
Nel caso di Routed si può indicare sia il parametro dev tun che dev tap. L'importante è che sia lo stesso sia sul server che sul client.
Nel caso di Bridged, invece, è obbligatorio indicare come parametro dev tap.

Gli indirizzi IP:

Altro aspetto sul quale porre particolare attenzione è l'indirizzamento IP: ricordiamoci che stiamo collegando due reti tra di loro e gli indirizzi IP delle due reti devono andare "d'accordo".
Lo IANA (Internet Assigned Numbers Autorithy) riserva 3 blocchi per quanto riguarda gli indirizzi di reti private. Questi blocchi sono:
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 Occhiolino.

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.crt
    cert client.crt
    key 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.
Un parametro che non ho discusso è la compressione: in entrambi i files di configurazione di esempio si trova ad un certo punto il parametro: "comp-lzo".
Questo parametro specifica ad OpenVpn che la trasmissione dati dovrà avvenire in modalità compressa. Ovviamente la compressione, per funzionare a dovere, deve essere abilitata in entrambi i files di configurazione (server / client).

OpenVpn: primo avvio.

Siamo pronti a mettere in ascolto il server e successivamente collegare i vari client.
Torniamo nel nostro computer server e spostiamoci con risorse del computer all'interno della cartella di OpenVpn: "config".
All'interno troviamo il nostro file di configurazione server.ovpn. Tasto destro del mouse: "esegui OpenVpn su questo file di configurazione".
Se tutto è stato eseguito correttamente, la videata che ci aspettiamo sarà come quella di figura 7:
Figura 7
Ci spostiamo sul client e, nella sua cartella config, clicchiamo con il tasto destro del mouse e scegliamo anche qui: "esegui OpenVpn con questo file di configurazione".
Ora la nostra VPN dovrebbe funzionare perfettamente!
Per verificarlo eseguiamo da una console dos:
  1. Nel caso di routing PING 10.8.0.1 <-- Oppure l'indirizzo indicato nei file di configurazione
  2. Nel caso di bridging: PING <Indirizzo IP nella rete del server>
L'ultima cosa che ci resta da fare, se tutto funziona, è quella di impostare il server affinchè parta da solo e non dobbiamo invocare noi ogni volta l'avvio del servizio.
Andiamo quindi su pannello di controllo, strumenti di amministrazione, servizi e ricerchiamo un servizio che si chiama, guarda caso, OpenVpn Service. Lo troveremo non avviato ed impostato in manuale. Avviamolo ed impostiamolo in automatico:
i
Figura 8
Per domande, dubbi e suggerimenti, non esitate a contattarmi.
Ciao e alla prossima da Giancarlo.


Commenti

Per postare commenti ti devi prima registrare.
 

Ricerca con Google

Ricerca personalizzata