lunedì 19 gennaio 2015 di Michele Nasi 20760 Letture

Creare una VPN sul cloud e navigare in sicurezza anche dai dispositivi mobili

Una rete VPN (acronimo di Virtual Private Network) consente di creare un collegamento sicuro fra dispositivi che comunicano tra di loro utilizzando la rete Internet (insicura per antonomasia). Il "tunnel" virtuale che viene creato con una rete VPN consente di scambiare dati in maniera sicura grazie all'utilizzo di un algoritmo crittografico che si occupa di rendere illeggibili le informazioni da parte di persone non autorizzate.

Grazie alle VPN si possono rendere computer e dispositivi collegati ad Internet e posti a migliaia di chilometri di distanza parte della medesima rete locale.

Nell'articolo Creare una semplice rete VPN con Windows 7 e Windows XP, abbiamo spiegato come creare una VPN utilizzando le funzionalità messe a disposizione da Windows anche nelle versioni client del sistema operativo.
Come spiegato nell'articolo Reti VPN: differenze tra PPTP, L2TP IPSec e OpenVPN, però, il protocollo usato dalle versioni client di Windows (PPTP) è quello più insicuro in assoluto.

Nel caso in cui si voglia proteggere efficacemente i dati in transito, abbiamo visto, quindi, come sia bene orientarsi su altri protocolli come L2TP ed OpenVPN.


Sempre nell'articolo Creare una semplice rete VPN con Windows 7 e Windows XP, abbiamo spiegato come alcuni router (ad esempio quelli a marchio Microtik) consentano di creare una rete VPN a costi ridottissimi proprio grazie al server OpenVPN integrato.
Nello stesso articolo abbiamo spiegato come creare una VPN OpenVPN in Windows oppure utilizzando firmware per i router più evoluti e completi come DD-WRT.

Questa volta ci accingiamo a spiegare come sia possibile creare una VPN sul cloud con OpenVPN.

Creare una rete VPN sul cloud: OpenVPN

Oggi è possibile attivare server cloud a poco prezzo: spesso bastano meno di 5 euro al mese per richiedere l'abilitazione di un server cloud utilizzabile per qualunque scopo, una macchina virtuale sempre connessa alla rete Internet, dotata di almeno un indirizzo IP pubblico.

Per maggiori informazioni, vi segnaliamo gli articoli seguenti:
- Creare un server cloud e gestirlo da remoto con Express Cloud
- Come configurare server cloud Aruba

Nel nostro caso utilizzeremo un server cloud Linux CentOS 6.x di CloudItalia (servizio Express Cloud) per installare OpenVPN quindi configurare server e rete VPN.

I passaggi presuppongono, ovviamente, la disponibilità di una macchina Linux sempre connessa alla rete Internet e dotata di un IP pubblico.
Una volta configurato il server VPN OpenVPN su tale macchina, si potrà però fruire di un sistema che farà da ponte tra terminali e dispositivi posti a centinaia o migliaia di chilometri di distanza l'uno dall'altro e si potrà navigare in sicurezza da qualunque dispositivo mobile connesso a Wi-Fi pubbliche.

Nell'articolo Collegarsi ad una rete Wi-Fi pubblica o non protetta: come proteggere i propri dati abbiamo spiegato quanto sia sconsigliabile collegarsi ad una Wi-Fi pubblica senza una serie di precauzioni.
Tra queste, l'utilizzo di una rete VPN è sicuramente il miglior suggerimento per evitare che dati personali possano cadere nelle mani di malintenzionati. Effettuando un'attività di sniffing sulla rete Wi-Fi pubblica, infatti, è piuttosto semplice reperire password ed informazioni altrui che non siano veicolate in rete utilizzando protocolli di comunicazione facenti uso di algoritmi crittografici (si pensi ad HTTPS). Vedere, ad esempio, Rubare password nelle reti Wi-Fi e in LAN: come proteggersi.

Configurare OpenVPN su server Linux

Nel nostro caso, come precisato in precedenza, abbiamo utilizzato un server cloud Linux CentOS 6.x.
Di seguito offriamo le istruzioni passo-passo per configurare OpenVPN su un server Linux e per creare una rete VPN OpenVPN.
I passaggi potrebbero differire leggermente sulla base della distribuzione Linux installata sul server ma la prassi è sostanzialmente quella presentata.

1) Impostazione del giusto repository ed installazione di OpenVPN e Easy RSA
I comandi che seguono permettono di impostare in CentOS il repository che permette l'installazione dell'ultima versione di OpenVPN e di Easy RSA, strumento che consente una gestione facilitata delle chiavi crittografiche:

wget http://epel.mirror.net.in/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm

yum install openvpn easy-rsa -y

mkdir -p /etc/openvpn/easy-rsa/keys

cp -R /usr/share/easy-rsa/2.0/ /etc/openvpn/easy-rsa/


Il penultimo comando consente di creare la cartella nella quale memorizzeremo le chiavi crittografiche utilizzate a protezione delle comunicazioni sulla rete VPN ed i certificati digitali.
L'ultimo comando, invece, permette di copiare gli script che sovrintendono il corretto funzionamento di Easy RSA nella cartella di OpenVPN.

2) Prepararsi per la generazione di certificati digitali e chiavi crittografiche

Il comando che segue consente di aprire il file di configurazione di Easy RSA:
nano /etc/openvpn/easy-rsa/2.0/vars


Al suo interno, bisognerà individuare le righe seguenti:

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"


Al posto delle informazioni già inserite, bisognerà specificare quelle relative alla rete VPN in corso di creazione. Nel nostro caso, abbiamo impostato il file così come in figura:

Creare una VPN sul cloud e navigare in sicurezza anche dai dispositivi mobili

All'interno del medesimo file di configurazione si dovrà quindi individuare la riga seguente:

export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`

Tale riga dovrà essere sostituita con quanto segue:
export KEY_CONFIG=/etc/openvpn/easy-rsa/2.0/openssl-1.0.0.cnf

3) Generazione di certificati e chiavi crittografiche OpenVPN

I comandi che seguono consentiranno di creare una propria autorità di certificazione (CA) che verrà utilizzata per emettere i certificati digitali impiegati nelle varie connessioni VPN.

cd /etc/openvpn/easy-rsa/2.0
chmod 0755 *
source ./vars
./clean-all
./build-ca


Premendo il tasto Invio si potranno accettare i valori di default inseriti in precedenza.
Alla comparsa dei messaggi Sign the certificate e 1 out of 1 certificate requests certified, commit?, ora e nel seguito, si digiti Y e si prema Invio.

Digitando il comando ls -al keys si potrà verificare la corretta creazione dei file ca.crt e ca.key.


Il comando successivo consentirà quindi di generare il certificato digitale e le chiavi pubblica e privata del server:

./build-key-server server

Creare una VPN sul cloud e navigare in sicurezza anche dai dispositivi mobili

Una volta premuto per diverse volte il tasto Invio, verrà visualizzato il messaggio A challenge password.
In questo caso, si prema semplicemente Invio senza specificare alcunché. Diversamente, il servizio OpenVPN non sarà in grado di partire automaticamente sul server Linux perché ogni volta richiederà l'inserimento di una password.

Il comando seguente, invece, consentirà di generare certificato digitale, chiave pubblica e privata del primo utente autorizzato a collegarsi alla VPN:
./build-key nomeutente

Al posto di nomeutente, ovviamente, va specificato il nome dell'utente (nel nostro caso abbiamo indicato michelenasi).

Creare una VPN sul cloud e navigare in sicurezza anche dai dispositivi mobili

In corrispondenza di A challenge password, questa volta, va introdotta una password personale sufficientemente lunga e complessa.

Digitando il comando ls -al keys si noterà come siano stati adesso generati anche i file per l'utente che si collegherà da remoto utilizzando il client.

Continuiamo quindi con il comando seguente:

./build-dh

"DH" è l'acronimo di Diffie-Hellman, protocollo grazie al quale due "interlocutori" possono scambiarsi una chiave segreta in modo sicuro.

Creare una VPN sul cloud e navigare in sicurezza anche dai dispositivi mobili

4) Creazione del file di configurazione di OpenVPN


I seguenti comandi consentono di creare il file di configurazione di OpenVPN. Come punto di partenza, si utilizza il file di esempio offerto dall'installazione di base di OpenVPN:

cp /usr/share/doc/openvpn-2.3.6/sample/sample-config-files/server.conf /etc/openvpn/

nano /etc/openvpn/server.conf


Al posto di 2.3.6 bisognerà aver cura di sostituire il numero della versione di OpenVPN installata.

La riga dh dh2048.pem dovrà essere sostituita con quanto segue:
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem

Creare una VPN sul cloud e navigare in sicurezza anche dai dispositivi mobili

Nello stesso file si dovranno quindi cercare le righe:

ca ca.crt cert
server.crt key
server.key # This file should be kept secret


Da sostituire con le seguenti:

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key


La riga seguente dovrà poi essere decommentata (togliere il ; all'inizio della riga) in modo tale che tutto il traffico venga gestito dal server OpenVPN:
push "redirect-gateway def1 bypass-dhcp"

Sostituire quindi le righe seguenti (notare che sono commentate)

;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"


con le seguenti (non commentate):

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"


Decommentare infine le seguenti due righe:

user nobody
group nobody



5) Attivazione routing e forwarding IP

Digitando nano /etc/sysctl.conf, si dovrà individuare la direttiva net.ipv4.ip_forward ed impostarla a 1.

Per salvare ed applicare le modifiche si dovrà utilizzare il comando sysctl -p

I comandi seguenti consentiranno di impostare una regola per far sì che il traffico generato dai client connessi venga fatto passare attraverso la VPN e diretto sulla rete Internet:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
service iptables save
service iptables restart
chkconfig iptables on

Attenzione! Al posto di eth0 dev'essere specificato il nome dell'interfaccia di rete associata all'IP pubblico utilizzato dal server Linux. Per accertarsi del nome da utilizzare (generalmente eth0 oppure eth1), è possibile digitare il comando ifconfig e premere il tasto Invio.

5) Avvio del server OpenVPN

Per avviare il server OpenVPN, basterà utilizzare i comandi che seguono:

chkconfig --add openvpn
chkconfig openvpn on
service openvpn start


Accedere alla rete VPN dai client

Nel caso di qualsiasi client, ad esempio Windows o Android, è necessario installare e configurare correttamente il modulo client di OpenVPN.

Nel caso di Windows, basta prelevare il client OpenVPN da questa pagina.

Sui dispositivi mobili Android, invece, basta installarlo da Google Play facendo riferimento a questa scheda.


In ogni caso, bisognerà scaricare i seguenti file dal server Linux e memorizzarli sul dispositivo client:

/etc/openvpn/easy-rsa/2.0/keys/ca.crt
/etc/openvpn/easy-rsa/2.0/keys/nomeutente.crt
/etc/openvpn/easy-rsa/2.0/keys/nomeutente.csr
/etc/openvpn/easy-rsa/2.0/keys/nomeutente.key
/usr/share/doc/openvpn-2.3.6/sample/sample-config-files/client.conf


Al posto di 2.3.6 bisognerà specificare il numero della versione di OpenVPN installata.

Sarà quindi necessario:
- Rinominare il file client.conf in client.ovpn
- Aprire il file client.ovpn con un normale editor di testo
- Individuare la riga remote my-server-1 1194 e sostituirla con remote IP_SERVER_LINUX 1194 (dove IP_SERVER_LINUX è l'IP pubblico della macchina Linux appena configurata)
- Al posto delle tre righe seguenti

ca ca.crt
cert client.crt
key client.key


si dovrà scrivere:

ca ca.crt
cert nomeutente.crt
key nomeutente.key


Ovviamente, al posto di "nomeutente", va specificato il nome del file corretto generato sul server e prelevato in precedenza.

A questo punto si potrà importare il file client.ovpn nel client OpenVPN ed avviare la connessione al server VPN.

Nel caso del client OpenVPN Android, basta toccare il pulsante in alto a destra (raffigurante tre pallini in colonna), scegliere Import quindi Import profile from SD card.
Si dovrà quindi scegliere il file client.ovpn copiato nella scheda SD insieme con gli altri file (certificati e chiavi dell'utente).

Creare una VPN sul cloud e navigare in sicurezza anche dai dispositivi mobili

Toccando Connect si dovrà spuntare la casella Considero questa applicazione attendibile:

Creare una VPN sul cloud e navigare in sicurezza anche dai dispositivi mobili

La connessione alla rete VPN dovrà immediatamente avvenire.

Creare una VPN sul cloud e navigare in sicurezza anche dai dispositivi mobili

A questo punto, aprendo il browser web del dispositivo mobile e visitando un sito web che visualizza l'indirizzo IP (esempio: DNSStuff), si dovrebbe leggere l'IP del server OpenVPN e non quello realmente utilizzato.


Il vantaggio è ovvio: collegandosi ad esempio da un notebook o da un dispositivo mobile, si avrà modo di proteggere la sicurezza dei propri dati mentre si è ad esempio connessi ad una Wi-Fi pubblica o potenzialmente non sicura.