In molti casi è necessario raggiungere l’interno di una rete aziendale o casalinga, da dispositivi collegati ad internet come pc o smartphone quando ci si trova fuori sede. In questi casi la soluzione ideale è quella di avere a disposizione una rete privata con cui far comunicare su connessione cifrata tutti i dispositivi collegati ad internet che dispongono delle credenziali di accesso, ovvero una VPN
In questo articolo istalleremo una VPN su un server Debian, nello scenario in cui esiste un server remoto direttamente collegato ad internet su cui è presente un firewall iptables. Altri scenari, dove il server è collegato ad un router che necessita di essere configurato per il nat ed il forwarding verso il server non sono contemplati
Su questo server installeremo la vpn ed una certificate authority per la creazione e la firma dei certificati che verranno usati per autenticare i client e cifrare la connessione
Preparazione
Per configurare la vpn abbiamo bisogno di alcune informazioni riguardanti il server a cui ci collegheremo, primo fra tutti l’indirizzo ip pubblico a cui risponderà la vpn. Come vedremo nel corso del tutorial, dovremo anche conoscere le interfacce di rete tra cui abilitare un eventuale traffico tramite il firewall. Tutte queste informazioni le otteniamo tramite il comando ip
1 |
# ip addr |
In questo tutorial ipotizziamo di avere questi dati
IP pubblico | 98.76.54.32 |
IF rete internet | eth0 |
Rete interna | 192.168.1.0/24 |
IF rete interna | eth1 |
Installazione
Per prima cosa installiamo il software necessario, ovvero i pacchetti openvpn ( che rende disponibili i servizi vpn) ed easy rsa ( una serie di script basati su openssl per amministrare una certificate authority )
1 2 3 |
# apt update # apt upgrade # apt install -y openvpn easy-rsa |
Creiamo la Certificate Authority
Le comunicazioni su vpn avvengono in maniera cifrata tramite scambio di chiavi tra client e server e per generare queste chiavi abbiamo bisogno di una certificate authority
L’installazione del pacchetto openvpn ha creato la cartella /etc/openvpn, ed è qui che noi installeremo la CA. Per creare la CA eseguiamo script make-cadir passandogli il percorso della cartella in cui inserire gli script
1 |
# make-cadir /etc/openvpn/certs |
Spostiamoci nella cartella /etc/openvpn/certs e visualizziamone il contenuto. Ci saranno alcuni file openssl-*.cnf, dobbiamo creare un link simbolico su quello con il numero di versione più recente
1 2 3 4 5 6 7 8 |
# cd /etc/openvpn/certs # ls -1 openssl-*.cnf openssl-0.9.6.cnf openssl-0.9.8.cnf openssl-1.0.0.cnf # ln -s openssl-1.0.0.cnf openssl.cnf |
Ora editiamo il file vars che contiene un lungo elenco di variabili. Quelle che ci interessa editare sono solo otto:
KEY_SIZE | Si può anche lasciare 2048, ma noi aumenteremo la lunghezza della chiave portando questo valore a 4096. Il retro della medaglia è negoziazione TLS leggermente più lenta |
Seguono alcuni campi che sono quelli principali del certificato, devono essere tutti valorizzati | |
KEY_COUNTRY | Codice del paese. Es “IT” |
KEY_PROVINCE | Codice dello stato o della provincia. Es “MI” |
KEY_CITY | Nome della città. Es “Milano” |
KEY_ORG | Nome dell’ organizzazione. Es “Evil Corp.” |
KEY_EMAIL | Email del sysadmin |
KEY_OU | Nome dell’ Organization Unit. Es “Undercover Operations” |
L’ultimo valore rappresenta il campo Subject del certificato X509 | |
KEY_NAME | Si può anche lasciare “EasyRSA”, ma possiamo inserire un nome diverso per la nostra CA, Es. “EvilCorp-CA” |
Le chiavi della CA
Le chiavi della CA sono relative al server e vanno create solo la prima volta che lo istalliamo. Per la configurazione di vpn successive alla prima possiamo saltare questo passaggio
Siamo nella cartella della CA
1 |
# cd /etc/openvpn/certs |
Carichiamo le variabili che abbiamo impostato nel file vars
1 |
# source ./vars |
Un messaggio ci avvertirà che eseguendo ./clean-all elimineremo le chiavi salvate, ma dovendo preparare la CA per la prima volta dobbiamo inizializzare la cartella quindi eseguiamo clean-all
1 |
# ./clean-all |
A questo punto è tutto pronto per generare la CA. Ci verranno poste delle domande a cui risponderemo con i valori proposti ( che sono quelli inseriti nelle variabili d’ambiente contenute in ./vars )
1 |
# ./build-ca |
Nella cartella keys verranno creati vari files tra cui ca.key e ca.crt che sono rispettivamente la chiave privata ed il certificato firmato della CA
Per ragioni di sicurezza, è importante che la chiave privata sia accessibile solo all’utente root quindi i permessi dovrebbero essere 600 o meglio ancora 400
Le chiavi del server
Come per la CA, creiamo queste chiavi solo la prima volta che installiamo il server, per la configurazione di vpn successive alla prima possiamo saltare questo passaggio
Il certificato Diffie Hellman
Quando il client ed il server iniziano la comunicazione, per creare la connessione sicura negoziano una secret ed è qui che interviene il protocollo Diffie Hellman. Il server VPN necessita quindi di un certificato per eseguire questa operazione che va generato
Impostiamo 4096 come lunghezza della chiave, anche qui paghiamo la maggiore sicurezza con una maggiore lentezza nella negoziazione e nella creazione del certificato stesso
1 |
# openssl dhparam 4096 > /etc/openvpn/dh4096.pem |
Questo processo impiegherà diversi minuti, dipende dalla potenza di calcolo della macchina
La chiave HMAC
Questa chiave viene utilizzata dal server per firmare tutti i pacchetti che vengono inviati in modo da accettare solo comunicazioni che provengono da macchine che condividono le chiavi. Aggiunge un ulteriore livello di sicurezza.
1 |
# openvpn --genkey --secret /etc/openvpn/certs/keys/ta.key |
A questo punto abbiamo tutte le chiavi che ci servono per far funzionare il server, la vpn e per generare i certificati da distribuire ai client che devono connettersi
Le chiavi del servizio vpn
Il server VPN può servire più vpn contemporaneamente, quindi da questo punto in poi dobbiamo entrare nell’ottica di scegliere i nomi in maniera tale da riferirci ad una specifica vpn più che all’unica presente evitando di usare nomi generici come ‘server’
Da questo passaggio in poi del presente tutorial, possiamo creare la prima, o le successive vpn gestite dal server, ma ciascuna necessita della propria copia di chiavi firmate dalla CA
In questo tutorial, creiamo una vpn chiamata evilcorpvpn
Nome VPN | evilcorpvpn |
Siamo nella cartella della CA e se non lo abbiamo già fatto carichiamo le variabili contenute nel file vars
1 2 |
# cd /etc/openvpn/certs # source ./vars |
Eseguiamo lo script build-key-server passandogli il nome del servizio che vogliamo creare che per il momento sarà server.
Come per la creazione della CA, ci verranno poste una serie di domande. Possiamo lasciare vuoto il campo relativo alla challenge password ma dovremo rispondere YES quando ci verrà chiesto di firmare il certificato ed alla domanda finale di commit
1 |
# ./build-key-server evilcorpvpn |
Nella cartella keys, vengono salvate versioni di backup dei file index.txt e serial che vengono aggiornati. Il processo crea i file 01.pem, evilcorpvpn.crt, evilcorpvpn.csr e evilcorpvpn.key in accordo con il nome che abbiamo scelto e che ci serviranno poi nella fase di creazione del servizio openvpn vero e proprio
01.pem | Il certificato che è stato firmato dalla CA. PEM sta per Privacy Enhanced Mail, lo scambio di chiavi pubbliche tramite mail è caduto in disuso, ma il formato pem come contenitore di chiavi è rimasto valido. |
evilcorpvpn.crt | E’ la copia di 01.pem e rappresenta il certificato del server contenente la chiave pubblica |
evilcorpvpn.csr | E’ la Certificate Signing Request usata per firmare il certificato |
evilcorpvpn.key | E’ la chiave privata del server |
Configurazione del servizio
Configureremo la vpn in questo modo
Nome del servizio | evilcorpvpn |
IF tunnel | tap |
IP pubblico | 98.76.54.32 |
Porta | 1194 |
Protocollo | UDP |
Rete VPN | 10.1.0.0/24 |
Il nostro servizio, si chiamerà evilcorpvpn ed utilizzerà le chiavi create in precedenza. Dovendo configurare una seconda, una terza vpn ecc… dovremo usare nomi diversi per ciascuna vpn differenziando i nomi dei file .conf, i nomi delle chiavi e le porte tcp o udp di ascolto del servizio
Creiamo una copia del file di configurazione di esempio salvandolo nella cartella /etc/openvpn con estensione .conf
Ciascun file .conf presente in questa cartella rappresenta un servizio che può ricevere il comando di start all’avvio del server, quindi ogni .conf rappresenta una vpn
Compatibilmente con i nomi scelti prima per le chiavi, chiamiamo questo file evilcorpvpn.conf
1 |
# gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/evilcorpvpn.conf |
Dobbiamo editare questo file per inserire i parametri necessari alla nostra vpn, in primis i riferimenti alle chiavi create in /etc/openvpn/certs/keys, quella per la CA che sarà unica per tutti i servizi che creeremo, e quelle specifiche del servizio in questione
1 2 3 |
ca /etc/openvpn/certs/keys/ca.crt cert /etc/openvpn/certs/keys/evilcorpvpn.crt key /etc/openvpn/certs/keys/evilcorpvpn.key |
Il certificato Diffie-Hellman /etc/openvpn/dh4096.pem
1 |
dh /etc/openvpn/dh4096.pem |
E nella sezione tls-auth il riferimento alla chiave HMAC che avrà uno 0 alla fine della riga
1 |
tls-auth /etc/openvpn/certs/keys/ta.key 0 |
Controlliamo che sia abilitata la crittografia a 256 bit
1 |
cipher AES-256-CBC |
Le prossime due opzioni, non sono indispensabili e potrebbero non essere presenti nel file di default pertanto le dovremo aggiungere alla fine
La prima riguarda il livello di crittografia che il server utilizzerà per l’autenticazione, useremo SHA512
1 2 |
# Auth Digest auth SHA512 |
La seconda serve per imporre ad openvpn di utilizzare la massima cifratura possibile
1 2 |
# Limit Ciphers tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA |
Possiamo scegliere l’indirizzo ip di ascolto del server vpn, normalmente questa opzione è commentata ma noi possiamo inserire qui il nostro indirizzo ip pubblico
1 |
local 98.76.54.32 |
La porta di ascolto secondo il protocollo vpn è la 1194 ma volendo la possiamo cambiare
1 |
port 1194 |
Il tipo di protocollo, udp o tcp
1 |
proto udp |
Il tipo di interfaccia usato per creare il tunnel vpn, tun o tap
1 |
dev tun |
L’indirizzo di rete in cui inserire i client connessi alla vpn
1 |
server 10.1.0.0 255.255.255.0 |
Fine tuning del servizio
Sempre in /etc/openvpn/evilcorpvpn.conf possiamo aggiungere altri parametri di configurazione, molti dei quali dipendenti dalla topologia di rete a cui ci dobbiamo collegare
Con le impostazioni di default, il server dice ai client di utilizzare la vpn come default gateway per tutto il traffico. Se vogliamo prevenire questo comportamento, dobbiamo editare /etc/openvpn/evilcorpvpn.conf cercare la riga contenente
1 |
push "redirect-gateway def1 bypass-dhcp" |
e commentarla così:
1 |
;push "redirect-gateway def1 bypass-dhcp" |
Una volta entrati in vpn i nostri client potrebbero voler raggiungere macchine presenti in una rete diversa collegata al server, per cui vanno specificati precisi parametri per il routing di quelle connessioni.
Il servizio openvpn invierà questi comandi ai client tramite il comando push. Ad esempio, se volessimo raggiungere la subnet 192.168.1.0/24 utilizzando il server vpn come gateway
1 |
push "route 192.168.1.0 255.255.255.0" |
Se vogliamo dare la possibilità ai client connessi in vpn di comunicare tra di loro, togliamo il commento al parametro client-to-client
1 |
client-to-client |
Possiamo abilitare la compressione sulla connessione, ma questa opzione dovrà essere presente anche nei file di configurazione dei client
1 |
comp-lzo |
Possiamo eseguire il servizio con l’utente nobody/nogroup a disposizione de commentando le due linee
1 2 |
user nobody group nogroup |
Oppure possiamo eseguire il servizio con un utente diverso appositamente creato
1 |
# adduser --system --shell /usr/sbin/nologin --no-create-home openvpn |
1 2 |
user openvpn group nogroup |
Di default il log finisce in syslog, ma possiamo decidere se tenere un file di log ed assegnargli il nome. Usando log, il file che verrà ricreato ad ogni avvio, con log-append invece i messaggi continueranno ad essere accodati. Se non specifichiamo alcun percorso, i file vengono creati in /etc/openvpn, ma volendo si possono creare in /var/log
1 2 |
log /var/log/openvpn-evilcorpvpn.log ;log-append openvpn.log |
Lo stesso vale per il file log di status
1 |
status /var/log/openvpn-evilcorpvpn-status.log |
Altre opzioni sono disponibili e ben commentate all’interno del file di configurazione
Avvio della vpn sul server
Testiamo la vpn eseguendo openvpn da bash in modo da vedere nel log eventuali segnalazioni di errore
1 |
# openvpn /etc/openvpn/evilcorpvpn.conf |
Il file evilcorpvpn.conf viene letto dal demone openvpn che lo riconosce come servizio chiamato con lo stesso nome del file di configurazione senza l’estensione .conf. Per avviare la vpn come servizio di sistema quindi, ci riferiremo ad openvpn@evilcorpvpn. Se avessimo configurato altre vpn, le dovremmo avviare nello stesso modo
1 |
# systemctl start openvpn@evilcorpvpn |
Per rendela operativa all’avvio del sistema
1 |
# systemctl enable openvpn@evilcorpvpn |
Per spegnere la vpn
1 |
# systemctl stop openvpn@evilcorpvpn |
Per visualizzarne lo stato
1 |
# systemctl status openvpn@evilcorpvpn |
Utilizzando openvpn senza @ permette di avviare tutte le vpn configurate, ma avendone più di una potremmo voler decidere quale avviare e quale no
Firewall
Molto probabilmente la configurazione di iptables sul server avrà DROP come policy di default per le tabelle di INPUT e FORWARD ed ACCEPT per la tabella OUTPUT, quindi dobbiamo abilitare il traffico in ingresso ed eventualmente il routing dei pacchetti tra le varie interfacce coinvolte, nel caso volessimo uscire su internet tramite la vpn o collegare la vpn ad altre reti con cui il server è collegato
In ogni caso dobbiamo identificare le varie interfacce di rete
1 |
# ip addr |
In questo esempio, con la vpn online, ipotizziamo di avere l’interfaccia eth0 collegata ad internet, tun0 collegata alla rete virtuale 10.8.0.0/24 ed eth1 collegata ad una rete interna 192.168.1.0/24
L’abilitazione del traffico in ingresso è mandatoria altrimenti non ci collegheremo mai alla vpn da internet. Sorvolando sull’eventuale fine tuning di iptables che esula da questo tutorial, poichè abbiamo impostato la vpn per lavorare in UDP sulla porta standard 1194, inseriamo questa regola
1 |
# iptables -A INPUT -i eth0 -p udp -m state --state NEW,ESTABLISHED --dport 1194 -j ACCEPT |
Nel caso la policy di OUTPUT fosse DROP, dobbiamo abilitare anche il traffico generato da openvpn
1 |
# iptables -A OUTPUT -o eth0 -p udp -m state --state ESTABLISHED --sport 1194 -j ACCEPT |
Per abilitare il traffico tra la vpn e le altre interfacce, dobbiamo accertarci che sia abilitato l’ip forwarding sulla macchina
1 |
# sysctl -w net.ipv4.ip_forward=1 |
Abilitiamo l’inoltro dei pacchetti provenienti dalla vpn
1 |
# iptables -A FORWARD -i tun0 -j ACCEPT |
Per abilitare il traffico sulla rete interna, accettiamo i pacchetti provenieni da eth1
1 |
# iptables -A FORWARD -i eth1 -o tun0 -j ACCEPT |
Per quanto riguarda il traffico internet, oltre ad abilitare il traffico nella chain FORWARD, dobbiamo abilitare il MASQUERADE del traffico generato nella subnet della vpn sulla chain POSTROUTING della tabella nat
1 2 |
# iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT # iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -o eth0 -j MASQUERADE |
I file di autenticazione dei client
Per collegarsi alla vpn, ogni client deve avere un certificato firmato dalla nostra CA ed un file di configurazione che rifletta le specifiche impostate per la vpn
Creiamo quindi un certificato per ogni client. Spostiamoci nella cartella della CA e carichiamo le variabili del file vars
1 2 |
# cd /etc/openvpn/certs # source ./vars |
Come nome per il certificato, poichè potremmo avere più di una vpn , possiamo utilizzare una coppia che richiami il nome della vpn ed il nome del client. Avendo scelto evilcorpvpn come nome della nostra vpn, per il client allsafe potremmo usare ad esempio evilcorpvpn-allsafe
1 |
# ./build-key evilcorpvpn-allsafe |
Ci verranno poste una serie di domande, accetteremo tutti i valori proposti ignorando la challenge password e risponderemo YES per la firma del certificato e la commit finale
Come per la creazione del certificato di evilcorpvpn, vediamo che il contenuto della cartella keys è cambiato. I file index.txt e serial sono stati backuppati, index.txt è stato aggiornato con il riferimento al nuovo file pem, come prima avremo 3 nuovi file relativi alle due nuove chiavi privata e pubblica che sono evilcorpvpn-allsafe.crt, evilcorpvpn-allsafe.csr e evilcorpvpn-allsafe.key. evilcorpvpn-allsafe.crt e evilcorpvpn-allsafe.key sono la chiave pubblica e privata che dovremo inviare al client allsafe ( insieme alla chiave pubblica della CA ca.crt e quella di autenticazione ta.crt )
Il file di configurazione lo creiamo in /etc/openvpn/client/ prendendo una copia di quello di esempio. Anche questo file dovremo successivamente inviarlo al client
1 |
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client/evilcorpvpn-allsafe.ovpn |
Editiamo il file ed aggiorniamo i valori in accordo con quelli impostati per la vpn
In remote inseriamo l’ indirizzo ip internet del server e la porta di ascolto
1 |
remote 98.76.54.32 1194 |
I nomi delle chiavi generate che eventualmente andremo a completare con il percorso nel filesystem del client openvpn. Notare che tls-auth qui termina con 1 mentre sul server termina con 0
1 2 3 4 |
ca ca.crt cert evilcorpvpn-allsafe.crt key evilcorpvpn-allsafe.key tls-auth ta.key 1 |
La cifratura a 256 bit
1 |
cipher AES-256-CBC |
Le opzioni di autenticazione e per scegliere il livello più elevato di crittografia
1 2 3 4 5 |
# Authentication Digest auth SHA512 # Cipher Restrictions tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA |
Se abbiamo attivato la compressione sul server dobbiamo attivarla anche sul client
1 |
comp-lzo |
Invio dei file al client
Creiamo un archivio contenente 5 files tra cui il file di configurazione, le chiavi pubblica e privata del client, la chiave pubblica della ca e la chiave di autenticazione
1 2 3 4 5 6 7 8 9 |
# tar -cz \ -f /etc/openvpn/client/evilcorpvpn-allsafe.tar.gz \ -C /etc/openvpn/certs/keys/ \ ca.crt \ evilcorpvpn-allsafe.crt \ evilcorpvpn-allsafe.key \ ta.key \ -C /etc/openvpn/client/ \ evilcorpvpn-allsafe.ovpn |
Ora possiamo inviare il file /etc/openvpn/client/evilcorpvpn-allsafe.tar.gz al client allsafe
Configurazione di client
Client Debian Linux
Sul nostro client allsafe, decomprimiamo l’archivio evilcorpvpn-allsafe.tar.gz
1 |
# tar -xzf evilcorpvpn-allsafe.tar.gz |
Poichè un client può connettersi a più vpn, è più ordinato tenere separati i file relativi a ciascuna connessione. Creiamo una cartella con il nome della nostra evilcorpvpn in /etc/openvpn/client e copiamoci dentro le 4 chiavi ed il file .ovpn
1 2 |
# mkdir /etc/openvpn/client/evilcorpvpn # cp *.crt *.key *.ovpn /etc/openvpn/client/evilcorpvpn |
Ora in /etc/openvpn, creiamo in link simbolico sul file .ovpn usando come estensione .conf, sarà questo file quello che verrà letto dal demone openvpn
1 |
# ln -s /etc/openvpn/client/evilcorpvpn/evilcorpvpn-allsafe.ovpn /etc/openvpn/evilcorpvpn-allsafe.conf |
Ora editiamo il file puntato dal link simbolico /etc/openvpn/evilcorpvpn-allsafe.conf aggiornando i percorsi delle 4 chiavi
1 2 3 4 |
ca /etc/openvpn/client/evilcorpvpn/ca.crt cert /etc/openvpn/client/evilcorpvpn/evilcorpvpn-allsafe.crt key /etc/openvpn/client/evilcorpvpn/evilcorpvpn-allsafe.key tls-auth /etc/openvpn/client/evilcorpvpn/ta.key 1 |
Dopo aver avviato il servizio sul server, testiamo il collegamento
1 |
# openvpn /etc/openvpn/evilcorpvpn-allsafe.conf |
Se il collegamento è andato a buon fine e non sono evidenti messaggi di errori, possiamo decidere se avviare la vpn al boot del client. Vale quanto detto nella parte server, il servizio a cui fare riferimento è openvpn@ seguito dal nome del file .conf senza estensione
1 |
# systemctl enable openvon@evilcorpvpn-allsafe |
Per verificare la comunicazione sulla vpn, identifichiamo l’interfaccia di rete che è stata creata che in assenza di altri servizi che istanziano interfacce tuntap, dovrebbe essere tun0
1 |
# ip addr |
Per il test utilizziamo ping che forzeremo in modo da utilizzare l’interfaccia collegata alla vpn
Verifichiamo il collegamento con l’endpoint del server nella vpn.
1 |
# ping -I tun0 10.1.0.1 |
Se avessimo altri client collegati potremmo conoscere i loro ip visualizzando il contenuto del log di status che abbiamo configurato sul server. Questo log nella sezione ROUTING TABLE ci mostrerà per ogni client collegato l’indirizzo ip interno, il nome inserito nel certificato pem che utilizza, l’indirizzo ip remoto e l’orario dell’ultima trasmissione
1 |
# cat /var/log/openvpn-evilcorpvpn-status.log |
Se abbiamo abilitato l’opzione client-to-client nel .conf della vpn, conoscendo gli indirizzi degli altri dispositivi connessi possiamo verificare che rispondano al ping
1 |
# ping -I tun0 10.1.0.10 |
Per ogni client collegato, il server crea una subnet /30 utilizzando 4 indirizzi. Il primo indirizzo del pool è il network address, il secondo è l’end point del tunnel lato server, il terzo è l’ end point del tunnel lato client e l’ultimo è il broadcast address.
IP Address | ||||
Host | Network | Server EP | Client EP | Broadcast |
Server | 10.1.0.0 | 10.1.0.1 | 10.1.0.2 | 10.1.0.3 |
allsafe | 10.1.0.4 | 10.1.0.5 | 10.1.0.6 | 10.1.0.7 |
Altro client 1 | 10.1.0.8 | 10.1.0.9 | 10.1.0.10 | 10.1.0.11 |
Altro client 2 | 10.1.0.12 | 10.1.0.13 | 10.1.0.14 | 10.1.0.15 |
I client prenderanno l’indirizzo ip lato client, mentre quello lato server sarà il loro gateway. Per il server invece vale l’opposto
Se abbiamo abilitato il traffico verso internet possiamo pingare il dns di google
1 |
# ping -I tun0 8.8.8.8 |
Se abbiamo anche una rete interna collegata al server e ne abbiamo abilitato il routing, possiamo verificare la trasmissione verso gli host collegati
1 |
# ping -I tun0 192.168.1.1 |
Client Windows
Copiamo e decomprimiamo l’archivio in una cartella sulla macchina windows, dopodichè scarichiamo il windows installer da Open VPN Community Downloads ed avviamo l’installazione, che installerà tutta la suite che comprende la CA, la parte server e la parte client, come nel nostro server Debian. A noi qui però interessa solo il client ovviamente.
Dalla barra degli strumenti cerchiamo l’icona relativa alla gui |
Con il tasto destro scegliamo il menù impostazioni |
Scegliamo il menù Avanzate dove sono presenti alcuni parametri. A noi interessa la cartella dove vengono salvati i file di configurazione che andremo ad inserire in una sottocartella dedicata per separarli dalla configurazione di altre vpn |
Dentro questa cartella, creiamone una con il nome che abbiamo scelto per la nostra vpn ( evilcorpvpn) e copiamoci dentro il file evilcorpvpn-allsafe.ovpn e le 4 chiavi. |
Normalmente non è necessario aggiornare i percorsi dei file delle chiavi perchè abbiamo creato il file di configurazione inserendo i 4 nomi senza precederli dal percorso ed il client windows cerca i file nella stessa cartella del file di ovpn. In caso di problemi potremmo avere bisogno di editare questi percorsi |
A questo punto, cliccando col tasto destro sull’icona della gui di openvpn, dovremmo trovare questo menù che ci permette di effettuare il collegamento, visualizzare il log, modificare le impostazioni di configurazione ecc… |
Se avessimo altre vpn configurate, verranno mostrati dei menù a tendina per accedere ad ognuna di esse. In questo caso vediamo la nostra evilcorpvpn-allsafe che permette di collegarci alla vpn |
Cliccando su Connetti, apparirà una finestra con i messaggi di collegamento tra client e server ed infine troveremo l’icona verde nell’area di notifica che ci segnala che siamo collegati in vpn |
Client Android
Anche per i client Android l’installazione è molto semplice. Si tratta di trasferire sul dispositivo il file di configurazione ovpn in cui compaiono i nomi delle chiavi senza il percorso, la chiave della ca, la chiave di autenticazione e le chiavi del client in una cartella all’interno del dispositivo
Da Google Play scarichiamo l’app OpenVPN Connect
Terminata l’installazione apriamo l’app
Selezioniamo l’ultima opzione in basso, OVPN Profile Connect with .ovpn file |
Ci farà selezionare la cartella contenente il file .ovpn che abbiamo salvato nel dispositivo |
Entriamo nella cartella e selezioniamo il file di configurazione .ovpn |
Confermiamo e premiamo il bottone IMPORT |
Digitiamo un nome per il profilo e premiamo il pulsante ADD |
Clicchiamo sul bottone in grigio per collegare la vpn |
Una volta connessi ci verrà mostrato il messagio CONNECTED con tutte le statistiche ed i dati relativi alla connessione |