Premessa
Una VPN o Virtual Private Network è un modo economico e sicuro per consentire l’accesso ad una LAN da qualsiasi parte del mondo. Le possibilità per la sua realizzazione sono molteplici: si va dalla soluzione hardware alla soluzione mista o solo software. Per ognuna di queste esistono a sua volta molte soluzioni che non staro’ pero’ qui ad elencare. Nel nostro caso siamo interessati soltanto al caso di VPN software e più in particolare alle soluzioni freeware o meglio ancora OpenSource. Fra le varie soluzioni che ho trovato in giro sulla rete ho scelto OpenVPN, un software OpenSource presente già da un po’ di tempo e che risulta già ben consolidato. La sua scelta è derivata dalla sua facilità di installazione, dalla molteplicità delle possibili configurazioni da realizzare, e infine per la sua compatibilità con quasi tutti i sistemi operativi presenti sul mercato.
Introduzione alle VPN
Innanzi tutto iniziamo dicendo cos’è una VPN e quali problematiche questa risolve. Molte aziende hanno la necessita di dar la possibilità ai propri dipendenti d’accedere alla LAN aziendale da remoto. Tale possibilità infatti permette a qualsiasi impiegato dell’azienda di usufruire di tutti i servizi che offre la LAN aziendale da qualsiasi parte del mondo e di poter, quindi, svolgere il proprio lavoro come se effettivamente esso fosse direttamente collegato alla LAN dell’azienda. Tale accesso può essere realizzato attraverso linee dedicate o attraverso un Remote Access Server (RAS). Il RAS è costituito da un certo numero di modem collegati ad una macchina che fa da server. Ogni modem a sua volta avrà una propria linea telefonica che permetterà agli impiegati dell’azienda di collegarsi con esso. Questa soluzione sicuramente offre un alto grado di affidabilità e sicurezza ma sicuramente e una delle più costose, infatti prevede un buon investimento per la sua realizzazione e dei costi per le chiamate. Una soluzione alternativa al RAS che risulta essere flessibile, economica e sicura è la Virtual Private Network (VPN).
Vediamo quindi cosa è una VPN e come è possibile realizzarne una. Una VPN consente di servirsi di Internet per connettersi al sistema di accesso della LAN aziendale. Praticamente si crea un tunnel virtuale sul quale viaggiano tutti i pacchetti che sono indirizzati alla LAN. Tale tunnel è criptato in modo che nessuno possa accedere ai dati che ne transitano all’interno. Tramite la VPN, i client remoti risultano “logicamente” appartenenti alla stessa rete locale della sede centrale, e quindi possono accedere a tutte le applicazioni e alle banche dati residenti presso un qualsiasi server dell’azienda, come se si trovassero fisicamente sulla stessa LAN.
FASE I: Ricerca delle soluzioni
Facendo una breve ricerca su google ho individuato tre soluzioni che sono basate sui seguenti protocolli: IPSec, PPTP e SSL/TSL. Quest’ultimo non è proprio un protocollo ma bensì una serie di librerie per la criptazione dei dati.
PPTP
PPTP è uno standard documentato e rilasciato dalla IETF nell’RFC 2637. Tale standard ci permette di instaurare una connessione punto-punto fra due host utilizzando l’incapsulamento in pacchetti IP e facendo passare quest’ultimi all’interno di un tunnel. Sarà quindi il protocollo PPP che si occuperà dell’autenticazione del client e della relativa criptazione dei dati. Visto che è il protocollo PPP a gestire il tutto, i metodi utilizzati per l’autenticazione degli utenti saranno quelli utilizzati normalmente dalle connessioni punto-punto, quindi PAP, CHAP e così via. Poichè per la criptazione dei dati che non è prevista dal PPP sarà necessario aggiungere un modulo per la compressione dei dati e quindi fare una patch al sistema in modo che sia supportata la criptazione. Questa soluzione è la soluzione utilizzata da Windows per la realizzazione della VPN fra macchine della Microsoft ed esiste anche dell’hardware che supporta nativamente le VPN basate su PPTP. Per utilizzare VPN basate su PPTP sotto linux è necessario utilizzare un software dedicato e quindi patchare in kernel in modo che sia possibile la criptazione e decriptazione dei dati. Una soluzione free che ci permette l’implementazione di questo protocollo sotto linux è il software PoPToP. Con questo software più Server, sia Linux che Windows, possono lavorare congiuntamente in un ambiente VPN basato su PPTP. PoPToP client esiste per tutte le versioni di Windows e Linux.
IPSec
Questo è forse il protocollo maggiormente utilizzato in quest’ambito, infatti la maggior parte dell’hardware che supporta le VPN lo utilizza. Tale protocollo interviene a Livello di rete (livello 3) e nasce come parte integrante dell’IPv6 ma può anche essere utilizzato nell’IPv4. L’IPSec protegge qualsiasi protocollo che si trova sopra il livello rete, esso offre servizi di crittografia che sono utilizzati per l’autenticazione, l’integrità e la segretezza dei dati. Questa soluzione ci permette di scambiare con utenti remoti dati criptati e autenticati: è quindi possibile realizzare un tunnel criptato che ci permette di instaurare la nostra VPN.
Anch’esso è stato standardizzato dall’IETF e anche se noi abbiamo parlato di protocollo, sarebbe più giusto riferirci ad esso come a un’architettura di sicurezza che agisce a livello IP. Tale protocollo è costituito da altri tre protocolli che sono:
- Authentication Header (AH) che si occupa dell’autenticazione e dell’integrità dei messaggi;
- Encapsulating Security Payload (ESP) esso si occupa dell’autenticazione, confidenzialità e controllo di integrità dei messaggi;
- IKE (Internet Key Exchange) che si occupa della scambio delle chiavi;
Vediamo un po’ il suo funzionamento. Allora, prima che entrino in gioco l’AH e l’ESP bisogna che fra i due interlocutori sia negoziata una “Security Association” (SA) questo viene fatto dall’IKE. La SA contiene le informazioni sui meccanismi di protezione e le chiavi da utilizzare durante il successivo trasferimento dei dati.
Oltre a tutto quello visto sopra l’IPSec comprende anche due basi di dati:
- Il Security Policy Database (SPD): contiene tutte le policy IPSec;
- Il Security Association Database (SAD). Contiene tutti dati relativi alle SA attive;
Dettagli Tecnici
IPsec supporta due modalità di funzionamento:
- Tunnel mode
- Transport mode
A seconda della modalità scelta, vengono protetti solo i protocolli di livello superiore o l’intero pacchetto IP. In Transport mode viene coperto da IPsec solo il payload del pacchetto IP originale, in quanto l’header IPsec viene inserito dopo l’header del pacchetto IP. In Tunnel mode, IPsec incapsula il pacchetto IP originale in un nuovo pacchetto IP. Le due modalità sono supportate sia da AH che da ESP. Una soluzione software che ci permette di implementare l’IPSec sotto Linux è FreeSwan.
SSL/TSL OPENVPN
SSL/TSL è la soluzione su cui è basato OpenVPN, un software completamente gratuito che ci permette in maniera molto semplice di creare una VPN, sia essa client-to-client, gateway-to-client o gateway-to-gateway. La peculiarità di OpenVPN è che esso non va a incidere sul funzionamento del sistema operativo e quindi non è necessaria nessun tipo di patch su di esso. Infatti OpenVPN fa uso delle diverse soluzioni per il networking messe a disposizione dal sistema operativo stesso. OpenVPN esiste per quasi tutte le piattaforme esistenti e si integra perfettamente col sistema. Per poterlo utilizzare sotto Windows, basta scaricare l’installer che fa tutto, crea una scheda di rete virtuale e installa tutti i pacchetti virtuali per il corretto funzionamento del software. Mentre se lo si vuole utilizzare sotto Linux è necessario che siano presenti i moduli per le periferiche Tun/Tap e i moduli per il bridging se si vuole optare per una configurazione che fa uso dell’Ethernet Bridging.
Lo stesso pacchetto applicativo può funzionare sia da Server che da Client. Quello che cambia è soltanto la configurazione che a seconda di come è fatta fa funzionare OpenVPN da server o da client. OpenVPN usa i device TUN/TAP che sono interfacce virtuali che permettono ai programmi in user-space di scambiarsi pacchetti, tale pacchetti vengono però prima criptati. La scelta del tipo di device da utilizzare dipenda da che tipo di infrastruttura si vuole realizzare. Con il device Tun si crea una connessione punto-punto fra il client ed il server, e come se i due fossero connessi attraverso un’interfaccia ppp, in questo caso OpenVPN interviene a livello IP. Con il device TAP viene creata un’interfaccia di rete virtuale simile ad una interfaccia ethernet che trasporta frame ethernet e quindi in questo caso OpenVPN interverrà a livello 2, sui frame.
FASE II: scelta della soluzione più adeguata
Per quanto riguarda la scelta del soluzione più adatta alle nostre esigenze dando un’occhiata alle modalità di installazione e a quelle di configurazione ho concluso che la scelta migliore fosse quella di optare per OpenVPN. Ho subito escluso la soluzione che usa il protocollo PPTP in quanto è considerata la meno sicura, mentre la sicurezza e la confidenzialità dei dati risulta essere una priorità per le aziende che vogliono realizzare una VPN. Riguardo la soluzione basata sull’IPSec, pur essendo considerata molto sicura rispetto ad altre soluzioni, risulta essere complicata nella fase di installazione e configurazione. Per realizzare una VPN con IPSec, infatti, bisogna fare molte modifiche al sistema su cui deve funzionare, e in particolare su Linux bisognerebbe applicare una serie di patchs e quindi continuare con delle configurazioni del sistema che sono di difficile comprensione. Inoltre non so fino a che punto esistono soluzioni che funzionino in modo adeguato sotto Windows. OpenVPN è stata la soluzione che è risultata più adatta al nostro caso, infatti la fase di installazione risulta comprensibile come la fase di configurazione e inoltre esistono versioni per quasi tutte le piattaforme. Inoltre sulla rete esiste una miriade di materiale che spiega tutto, dalla fase di installazione, a quella di configurazione e a quella di gestione dell’applicativo durante il suo funzionamento. Un altro pregio di questo software è che lo stesso pacchetto può funzionare indipendentemente sia da server che da client, quello che cambia è soltanto il modo di configurarli.
FASE III: implementazione della soluzione scelta
Dopo la raccolta di tutte le informazioni necessarie, e dopo aver fatto la nostra scelta, passiamo all’implementazione della nostra VPN. Innanzi tutto ecco un disegno molto approssimativo della nostra topologia di rete:
Sulla macchina 192.168.2.24 andremo ad installare il server della nostra VPN mentre sulla macchina 10.10.10.200 il client. L’accesso al server, da parte del client avverà dall’esterno e non dalla rete interna. Le due macchine posseggono un accesso ad internet distinto e quindi dal client faremo riferimento al server attraverso il suo indirizzo pubblico che è 80.183.174.182. Ciò è possibile in quanto il router che permette l’accesso a internet invierà tutti i pacchetti indirizzati sulla porta UDP 1194 alla macchina 192.168.2.24. La macchina 192.168.2.24 (da ora in poi Macchina 24) è una macchina Linux con distribuzione RedHat Enteprise AS 3, mentre la macchina 10.10.10.200 (Macchina 200) è anch’essa una macchina Linux ma con distribuzione RedHat 9. Passiamo adesso all’installazione di OpenVPN su entrambe le macchine, intanto scarichiamo gli rpm adeguati per ognuna delle due macchine. Per motivi di dipendenza sarà prima necessario installare le librerie LZO. Una cosa importante: prima di proseguire dobbiamo essere sicuri che sulle due macchine siano abilitati i moduli per i Device Tun/Tap e quelli di Bridging.
Installazione sul server
Scarichiamo tutto il necessario con i seguenti comandi:
server# wget -c -b http://dag.wieers.com/packages/openvpn/openvpn-2.0.2-1.1.el3.rf.i386.rpm server# wget -c -b http://openvpn.net/release/lzo-1.08-4.1.el3.rf.i386.rpm
Quindi passiamo all’installazione dei pacchetti:
server# rpm –ivh lzo-1.08-4.1.el3.rf.i386.rpm server# rpm –ivh openvpn-2.0.2-1.1.el3.rf.i386.rpm
Se l’installazione è andata a buon fine digitando man openvpn dovrebbe aprirsi la guida di openvpn. Con l’installazione mediante gli rpm, openvpn viene installato come demone quindi per gestirlo basterà digitare service openvpn [start|stop|restart|status] quando lo si avvia con questo comando, lui và a creare un’istanza per ogni file .conf che si trova nella directory /etc/openvpn. Comunque è sempre possibile avviarlo da riga di comando.
Installazione sul client
Download dei pacchetti necessari
client# wget -c -b http://dag.wieers.com/packages/openvpn/openvpn-2.0.2-1.0.rh9.rf.i386.rpm client# wget –c –b http://dag.wieers.com/packages/lzo/lzo-1.08-4.0.rh9.rf.i386.rpm
Anche qui la procedura per l’installazione è la stessa, e vale tutto quello detto prima:
client# rpm –ivh lzo-1.08-4.0.rh9.rf.i386.rpm client# rpm –ivh openvpn-2.0.2-1.0.rh9.rf.i386.rpm
Configurazione
Intanto iniziamo con una la configurazione più semplice è cioè connessione punto-punto fra il server ed il client, in questo modo si vedono a vicenda ma il client non può accedere alla LAN, mentre il server non può accettare connessioni da più client. In questa configurazione viene utilizzata un’unica chiave condivisa, che serve soltanto per l’autenticazione reciproca del server e del client.
Server
Posizioniamoci nella directory /etc/openvpn e creiamo la chiave che sarà la stessa sia per il server che per il client quindi se ci teniamo alla sicurarezza, dobbiamo trovare un modo sicuro per passare questo file al client.
Server# cd /etc/openvpn Server# openvpn --genkey --secret file.key # Generazione della Static Key
Passiamo quindi alla creazine del file di configurazione che chiamiamo server.conf
-------------server.conf---------------------- secret /etc/openvpn/file.key ping 10 verb 3 mute 10 dev tap ifconfig 10.23.24.1 255.255.255.252 log-append /var/log/openvpn.log ----------------------------------------------
Vediamo il significato delle direttive che abbiamo dato:
secret /etc/openvpn/peppe ci dice dove guardare per la static key che serve per l’autenticazione.
ping 10 manda un ping all’altro host dopo 10 secondi di inattività.
verb 3 è il livello del file di log da generare, più è alto maggiori sono le informazioni generate nel log.
mute 10 serve per loggare al più 10 messaggi consecutivi dello stesso genere.
dev tap abbiamo scelto di utilizzare una device di tipo tap, ma avremmo anche potuto utilizzare una tun.
ifconfig 10.23.24.1 255.255.255.252 assegniamo un indirizzo e una subnet mask alla nostra device tap, nel caso in cui avessimo usato la device tun allora la direttiva doveva essere ifconfig ipServer IpClient.
log-append /var/log/openvpn.log gli diciamo di accodare il log nel file openvpn.log in /var/log.
Possiamo quindi provare ad avviare il server, facendo attenzione che il file file.key creato prima, sia nella cartella /etc/openvpn. Per avviare OpenVpn possiamo alternativamente utilizzare uno dei due comandi seguenti:
server# openvpn –-config server.conf
oppure
server# service openvpn start
nel file di log /var/log/openvpn.log dovremmo trovare qualcosa del genere:
Tue Nov 29 11:31:38 2005 OpenVPN 2.0.2 i386-redhat-linux [SSL] [LZO] [EPOLL] built on Sep 8 2005 Tue Nov 29 11:31:38 2005 IMPORTANT: OpenVPN’s default port number is now 1194, based on an official port number assignment by IANA.
OpenVPN 2.0-beta16 and earlier used 5000 as the default port. Tue Nov 29 11:31:38 2005 WARNING: --ping should normally be used with --ping-restart or --ping-exit Tue Nov 29 11:31:38 2005 TUN/TAP device tap0 opened Tue Nov 29 11:31:38 2005 /sbin/ip link set dev tap0 up mtu 1500 Tue Nov 29 11:31:38 2005 /sbin/ip addr add dev tap0 10.23.24.1/30 broadcast 10.23.24.3 Tue Nov 29 11:31:38 2005 UDPv4 link local (bound): [undef]:1194 Tue Nov 29 11:31:38 2005 UDPv4 link remote: [undef]
Possiamo quindi passare alla configurazione del client
Client
Creaiamo il file di configurazione che chiamiamo client.conf:
-------------client.conf---------------------- remote 80.183.174.182 secret /etc/openvpn/file.key ping 10 verb 1 mute 10 dev tap ifconfig 10.23.24.2 255.255.255.252 log-append /var/log/openvpn.log -----------------------------------------------
L’unica nuova direttiva è remote 80.183.174.182 che ovviamente non è altro che l’indirizzo pubblico del Server OpenVpn. Possiamo quindi adesso avviare il client allo stesso modo con cui abbiamo avviato il server:
server# openvpn –-config client.conf
oppure
server# service openvpn start
In questo caso nel file di log dovremmo trovare qualcosa di simile a questo:
Wed Nov 30 12:02:24 2005 OpenVPN 2.0.2 i386-redhat-linux [SSL] [LZO] built on Sep 8 2005 Wed Nov 30 12:02:24 2005 IMPORTANT: OpenVPN’s default port number is now 1194, based on an official port number assignment by IANA.
OpenVPN 2.0-beta16 and earlier used 5000 as the default port. Wed Nov 30 12:02:24 2005 WARNING: --ping should normally be used with --ping-restart or --ping-exit Wed Nov 30 12:02:24 2005 WARNING: file '/etc/openvpn/peppe' is group or others accessible Wed Nov 30 12:02:24 2005 TUN/TAP device tap0 opened Wed Nov 30 12:02:24 2005 /sbin/ip link set dev tap0 up mtu 1500 Wed Nov 30 12:02:24 2005 /sbin/ip addr add dev tap0 10.23.24.2/30 broadcast 10.23.24.3 Wed Nov 30 12:02:24 2005 UDPv4 link local (bound): [undef]:1194 Wed Nov 30 12:02:24 2005 UDPv4 link remote: 80.183.174.182:1194 Wed Nov 30 12:02:24 2005 Peer Connection Initiated with 80.183.174.182:1194 Wed Nov 30 12:02:25 2005 Initialization Sequence Completed
Se tutto è andato bene, dovremmo riuscire a pingare il server dal client e viceversa. Ovviamente ancora non possiamo accedere alla LAN 192.168.2.0 per fare ciò dovremmo abilitare il foward dei pacchetti sul server e quindi aggiungere una route sul client che gli dice di instradare tutti i pacchetti diretti verso la rete 192.168.2.0 al server VPN.
Per abilitare il forward dei pacchetti diamo il seguente comando:
server# echo 1 > /proc/sys/net/ipv4/ip_foward
mentre per aggiungere una route sul client basta eseguire il seguente comando:
client# route add -net 192.168.2.0 netmask 255.255.255.0 gw 10.23.24.1
In questa maniera abbiamo detto al client di fare passare tutti i pacchetti indirizzati alla rete 192.168.2.0, ma se proviamo a pingare una qualsiasi macchina su questa rete, non otterremo nessuna risposta, in quanto nessuna macchina della rete sa da dove raggiungere il client che ha indirizzo 10.23.24.2. Per ovviare a ciò attiviamo sul sever il NAT col seguente comando:
server# iptables –t nat –A POSTROUTING –o eth1 –j MASQUERADE
Se adesso proviamo a pingare una macchina della rete 192.168.2.0 questa ci risponderà.
Proviamo adesso ad abilitare la crittografia dei pacchetti, con una PKI.
Per fare questo dobbiamo innanzi tutto creare Pubblic Key Infrastructure, possiamo utilizzare gli strumenti messi a disposizione da openvpn ma potremmo tranquillamente utilizzare le nostre chiavi personali forniteci da una certification authority.
Creazione della PKI
Se ci posizioniamo nella cartella /urs/share/doc/openvpn/easy-rsa dovremmo trovare tutti gli script necessari alla creazione della nostra bella serie di chiavi. Una volta lì rendiamo eseguibili tutti gli script contenuti nella cartella col comando:
chmod +x *
Dopodiché dobbiamo editare il file vars settando i valori dei seguenti campi KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, and KEY_EMAIL e se si vuole, anche degli altri.
Diamo quindi i seguenti comandi:
. ./vars ./clean-all ./build-ca
il primo script inizializza l’ambiente creando tutte le variabili necessarie per l’esecuzione degli script successivi. Clean-all va a cancellare e a ricreare le cartelle dove andranno memorizzate le chavi. Lo scritp buil-ca và a generare la nostra certification Authority che sarà utilizzata per firmare tutti i certificati creati successivamente. Durante l’esecuzione dello script build-ca vengono poste delle domande alle quali sarà sufficiente rispondere col valore di default(premendo invio) tranne che alla richiesta del Common Name, in questo caso mettere qualcosa di adeguato, io ho messo il mio nome.
Passiamo quindi alla creazione dei certificati per il server e per il client. Diamo i seguenti comandi:
./build-key server ./build-key client
come prima rispondiamo col valore di default a tutte le domande che ci vengono poste, tranne che a common name a cui io ho risposto rispettivamente con server e client. Generiamo quindi i parametri di Diffie Hellman col seguente script:
./build-dh
Quindi adesso nella cartella /urs/share/doc/openvpn/easy-rsa/key dovremmo avere i seguenti file
Adesso creiamo una cartello keys all’interno della cartella /etc/openvpn sia nel server che nel client e copiamo al suo interno i file seguendo la tabella. Vediamo quindi le configurazioni per il server e per il client affinché tutto funzioni. Adesso abiliteremo anche il supporto da parte del serve alla gestione di più client contemporaneamente.
-------------server.conf---------------------- user nobody group nobody dev tap server 10.23.24.0 255.255.255.0 push "route 192.168.2.0 255.255.255.0" tls-server tls-auth /etc/openvpn/file.key 0 ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key dh /etc/openvpn/keys/dh1024.pem cipher BF-CBC keysize 448 comp-lzo keepalive 10 60 ping-timer-rem persist-tun persist-key log-append /var/log/openvpn.log ----------------------------------------------
Diamo un’occhiata alle nuove direttive aggiunte nel file di configurazione:
user nobody e group nobody avviano openvpn come utente e membro del gruppo nobody. server 10.23.24.0 255.255.255.0 gestisce l’assegnamento degli indirizzi ip per tutti i client che accedono al server e che hanno le credenziali per farlo. push “route 192.168.2.0 255.255.255.0” visto che con la nostra VPN vogliamo permettere l’accesso alla rete 192.168.2.0 aggiungiamo a tutti i client che si collegano, una regola di routing che fa passare tutti i pacchetti diretti a quella rete dal server. tls-server serve per distinguere il server dal client quando utilizziamo una configurazione che fa uso della PKI
tls-auth /etc/openvpn/file.key 0 ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key dh /etc/openvpn/keys/dh1024.pem sono tutte le infomazioni necessarie al ritrovamento dei certificati. cipher BF-CBC e keysize 448 abilita la cifratura Blowfish a 448 bit per tutti i pacchetti che vengono scambiati sulla vpn. comp-lzo abilita la compressione dei dati. keepalive 10 60 la uso a posto di ping 10 e ping-restart 60. persist-tun quando viene riavviato il server non chiude e riapre la device tun o tap. persist-key quando viene riavviato il server non rilegge i file delle chiavi.
A posto della direttiva dev tap si può utilizzare la direttiva dev tun in modo che i pacchetti vengano trattati a livello 3.
-------------client.conf---------------------- remote 80.183.174.182 tls-client pull user nobody group nobody dev tap tls-auth /etc/openvpn/file.key 1 ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/client.crt key /etc/openvpn/keys/client.key ns-cert-type server cipher BF-CBC keysize 448 comp-lzo keepalive 10 60 ping-timer-rem persist-tun persist-key log-append /var/log/openvpn.log ----------------------------------------------
nel caso del client le direttive sono molto simili a quelle del server ed hanno la stessa interpretazione, l’unica direttiva che è presente soltanto nel client è PULL che dice al client di accettare le configurazioni che gli vengono passate dal server. Inoltre bisogna fare attenzione alla direttiva tls-auth che deve terminare con “1” per i client.
Ho anche provato a configurare un client Windows, di cui di seguito do la configurazione.
------------- clientwin.ovpn ---------- tls-client dev tap pull remote 192.168.2.24 tls-auth c:\\Programmi\\OpenVPN\\config\\peppe 1 ca c:\\Programmi\\OpenVPN\\config\\keys\\ca.crt cert c:\\Programmi\\OpenVPN\\config\\keys\\pcwin.crt key c:\\Programmi\\OpenVPN\\config\\keys\\pcwin.key ns-cert-type server cipher BF-CBC keysize 448 comp-lzo keepalive 10 60 ping-timer-rem persist-tun persist-key verb 3 ----------------------------------------
Per il funzionamento sotto windows di openvpn, basta scaricare il file di installazione per win da openvpn.net l’installazione è molto semplice. Si crea il file clientwin.ovpn e si inserisce nella cartella c:\programmi\openvpn\config insieme a tutte le chiavi e ai certificati. Per lanciare la connessione basta cliccare col tasto destro sul file clientwin.ovpn e scegliere Start OpenVpn on this config file…
Conclusioni
L’esperienza, se pur breve, ha consentito di ampliare il bagaglio personale delle mie nozioni sul sistema Linux e sulle sue possibili applicazioni. Ho avuto la possibilità di applicare molti dei concetti che già conoscevo ma soltanto teoricamente. Ho approfondito i concetti di networking nell’ambito di linux, ho imparato a compilare un kernel, a installare un applicativo sia esso in rpm, precompilato o in codice sorgente. La cosa più gratificante sicuramente è stata la realizzazione della VPN utilizzando OpenVPN un applicativo open source. Ho dovuto superare alcune problematiche prima di vedere la VPN in funzione, ma alla fine tutto è andato bene. Prima di tutto ho dovuto ricompilare il kernel un paio di volte prima di riuscire a produrne una versione funzionante quindi ho proseguito con l’installazione del pacchetto e quindi con le prime configurazioni.