Tutorial

Manuale OpenVPN

Premessa

OpenVPN è una soluzione Open Source che opera in user space, creando un tunnel point-to-point TCP over UDP che permette la creazione di VPN.

La necessità primaria di aziende, cooperative, società o qualunque altro genere di organizzazione è lo scambio di dati ed informazioni fra sedi remote.
Le VPN (Virtual Private Network) permettono di collegare reti private attraverso una rete pubblica (Internet). I vantaggi offerti da questa tecnologia sono molteplici, ma sono tali dal punto di vista della sicurezza? Possiamo realmente fidarci di trasmettere dati sensibili attraverso Internet? La crittografia dei dati è alla base del concetto di VPN.
Esistono soluzioni proprietarie che utilizzano Server VPN, come Cisco, che è basata su IPSEC. Altre soluzioni IPSEC sono implementate a livello Network e tutto il protocollo è progettato per essere realizzato con una modifica allo stack IP in kernel space.

OpenVpn è una soluzione Open Source che opera in user space, creando un tunnel point-to-point TCP over UDP che permette, come vedremo più avanti, la creazione di VPN.

TUNNELING

Le VPN, per comunicare, usano un sistema di tunnelling. Questo evita anche attacchi di tipo spoofing (mascherare il proprio indirizzo IP): cerchiamo di seguito di capire il perché. Un’intera codifica del pacchetto è impossibile, perché durante la trasmissione dello stesso è processato da altri router per essere indirizzato a destinazione. Le VPN criptano tutto il pacchetto, header incluso, e allegano a questo un altro header non criptato che contiene le informazioni che riguardano il gateway VPN di destinazione. Altre informazioni contenute nell’header del pacchetto che stiamo trasmettendo in modo sicuro non saranno soggette ad attacco di cracker.

CRITTOGRAFIA

Con il termine crittografia, viene definita l’arte delle scritture segrete. La trasformazione crittografica (da testo in chiaro a testo cifrato e viceversa) può avvenire in molteplici modi, ognuno dei quali prende il nome di “algoritmo di cifratura”. Ciò che rende possibile questa trasformazione prende il nome di “chiave”.
Scomponendo la routine crittografica nelle sue componenti fondamentali, cifratura e decifratura, essa sarà simmetrica se le due operazioni vengono eseguite utilizzando un’unica chiave. Quando, invece, vengono attuate utilizzando due chiavi differenti, una pubblica ed una privata, la procedura diventa asimmetrica.
In un contesto di crittografia simmetrica, è chiaro che la trasmissione della chiave stessa e la sua conservazione devono essere molto accurate.

OpenVPN, il software che utilizzeremo per creare la nostra VPN, implementa anche questo tipo di crittografia, basato sulla condivisione di una chiave segreta fra le postazioni della VPN. La crittografia dei dati in contesto simmetrico verrà realizzata con l’algoritmo blowfish.

Installazione

I sorgenti di OpenVPN sono reperibili sul sito http://www.openvpn.net/, dove vengono messi a disposizione anche pacchetti RPM.

Dato che il progetto è nativo per i sistemi unix based, scarichiamo i sorgenti per windows da qua:

http://openvpn.se/ Latest stable release: 1.0.3 with OpenVPN 2.0.9 (2006-10-17)

L’installazione va eseguita SIA NELLA MACCHINA CLIENT SIA NELLA MACCHINA SERVER , con i valori di default. (Fare sempre avanti).

Una volta installato il software andare nelle proprietà di risorse di rete, li vi è stata creata un’interfaccia virtuale di tipo TAP interface.

opvn1

Rinominare l’interfaccia in tap o in un altro nome che verrà poi inserito nel file di configurazione.

Per prima cosa bisogna generare il file di chiave che verrà usato dalle due macchine per criptare la comunicazione.

Per fare ciò andare in start, programmi, OpenVPN, Generate a static OpenVPN key.

Andiamo nella cartella di configurazione indicata in figura e rinominiamo il file in key e basta senza estensione.

Questo file dovrà essere messo (copiato fisicamente) sia sul server sia sul client.

ovpn2

CONFIGURAZIONE SERVER

Per il server bisogna impostare il bridging tra l’interfaccia ti rete reale e quella virtuale TAP. Per fare questo selezionare entrambe le interfacce contemporaneamente e premere “Aggiungi al Bridge di Rete”.

Adesso bisogna creare il file di configurazione per il server:

andare nella directory di configurazione, come da foto, e creare con il notepad un file di nome server.ovpn

ovpn3

Il contenuto deve essere questo server.ovpn:

port 1194
dev tap
dev-node tap
proto udp
secret key
ping 5
verb 3
mute 10
comp-lzo

A questo punto la configurazione del server è terminata, possiamo far partire il server vpn cliccando con il tasto destro sul file server.ovpn e premere “Start OpenVPN on this config file”.

NB: Ricordarsi di aprire il firewall per la porta UDP 1194.

ovpn4

Se tutto è andato bene appare la finestra del Prompt dei comandi come in figura sopra.

In alternativa si può lanciare il server dall’icona di OpenVPN in basso a destra, vicino all’orologio.

CONFIGURAZIONE CLIENT

Adesso bisogna creare il file di configurazione per il client (non server creare il bridge di rete):

andare nella directory di configurazione, come da foto, e creare con il notepad un file di nome client.ovpn

ovpn5

Il contenuto deve essere questo client.ovpn:

dev tap
dev-node tap
proto udp
remote “INDIRIZZO IP server” 1194
resolv-retry infinite
nobind
secret key
comp-lzo
verb 3
mute 20

A questo punto possiamo lanciare il client per eseguire la connessione ed essere così connessi in maniera automatica alla rete remota dove su trovare il server.

Per lanciare la connessione (il client), il server deve essere attivo in ascolto, cliccare con il tasto destro sul file client.ovpn e premere “Start OpenVPN on this config file”.

In alternativa si può sempre usare l’icona in basso a destra di OpenVPN. Dopo circa 10/15 secondi, a seconda della banda, avverrà la connessione e i computer dell’icona di OpenVPN diverranno verdi, come in figura, e le interfacce virtuali sia del server sia del client si connetteranno e otterranno un indirizzo automatico.

ovpn6

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *