Lo scambio di informazioni tra sedi remote rappresenta ormai una delle esigenze pi sentite in ambito lavorativo. Questo vale sia per aziende di grandi dimensioni con budget ragguardevoli dedicati al settore IT, sia per piccole realt che non possono sostenere i costi di un collegamento dedicato. Andando ancor pi nel particolare immaginate la comodit di poter accedere alle informazioni del nostro computer in ufficio quando si siamo in giro per il mondo o, come purtroppo capita, quando siamo a casa malati.
Download ⚙⚙⚙ https://t.co/stvY6BSUJo
Realizzare tutto questo a costi accessibili possibile implementando una VPN. Per VPN, Virtual Private Network, si intende una rete privata virtuale creata utilizzando un mezzo di trasmissione pubblico, nella maggior parte dei casi identificabile con Internet. In parole povere dovremo creare un canale o tunnel virtuale che colleghi tra loro due reti, nel caso pi semplice rappresentate da due computer raggiungibili tramite Internet. Ovviamente tale sistema deve garantirci un elevato grado di sicurezza. L'accesso deve essere consentito solo ad utenti autorizzati, i dati in transito sulla rete pubblica devono risultare cifrati, devono essere ridotti al minimo i rischi di furto d'identit digitale ed impedita l'alterazione delle informazioni trasmesse.
In un panorama che offre molte soluzioni commerciali spicca una soluzione open source (e gratuita): OpenVPN. Il software si compone di una parte server: un demone che resta in ascolto in attesa di connessioni, ed una parte client che, collegandosi, richiede l'instaurarsi della VPN. Entrambe le parti, prima di trasferire informazioni, operano i necessari controlli per verificare l'identit dell'interlocutore.
Questo primo articolo a carattere introduttivo, descriver le caratteristiche generali di Open VPN, attualmente giunto alla versione 2.0.9, permettendovi di valutare se possa essere o meno una soluzione adatta alle vostre esigenze.
Rispetto ad altre implementazioni OpenVPN risulta una soluzione molto snella basata sullo standard SSL/TLS, protocollo ormai consolidato per garantire la sicurezza delle comunicazioni su Internet. Per questo si appoggia ad OpenSSL, altro noto tool open source, di cui abbiamo gi parlato negli articoli dedicati ad Apache ed alle connessioni SSL. Differentemente da altre soluzioni non utilizza IPSec, ma genera un tunnel point-to-point TCP over UDP lavorando in user space.
Per ridurre l'occupazione di banda ed i tempi di risposta il software opera una compressione sui dati trasmessi utilizzando le librerie LZO, che costituiscono dunque un prerequisito come il gi menzionato OpenSSL.
OpenVPN supporta svariati metodi di autenticazione dei client: nome utente e password, certificati digitali X509, smart card etc. permettendo di scalare da soluzioni semplici, in cui un server deve gestire un unico client, a soluzioni enterprise molto pi complesse.
Il server OpenVPN pu effettuare il push verso i client di opzioni DHCP come DNS ed indirizzi di server WINS.
La configurazione, nello stile Unix, avviene editando dei file di testo, uno per la parte server ed uno per la parte client. Questo, a mio modo di vedere, rappresenta un vantaggio e fornisce una maggiore consapevolezza e controllo sulle impostazioni adottate. Esistono, inoltre, numerosi e ben commentati esempi di configurazione che coprono le pi disparate esigenze.
Un giro in rete vi permetter di verificare che la documentazione reperibile abbondante e non limitata al sito del progetto. Niente paura se avete problemi con le lingue straniere, potrete trovare numerosi documenti in lingua italiana.
Il software disponibile per diverse piattaforme come Linux, Windows, MacOs X, permettendo, se necessario, l'interoperabilit tra i diversi sistemi. I sorgenti sono naturalmente prelevabili dall'area download del sito madre.
Per chi utilizza Linux e vuole evitare la compilazione del codice sorgente, sono facilmente reperibili i pacchetti precompilati per varie distribuzioni.
In ambito Windows si pu downlodare dal sito del progetto l'installer .exe o, grazie al lavoro di Mathias Sundman, una GUI che rende pi familiare la gestione del software a chi utilizza questo sistema. Il pacchetto installa simultanemente OpenVPN e l'interfaccia grafica.
Per gli affezionati della mela Angelo Laub e Dirk Theisen hanno sviluppato Tunnelblick, una GUI per OS X.
Sempre in termini di portabilit OpenVPN progettato per funzionare con le interfacce di rete virtuali TUN/TAP disponibili su molti sistemi operativi.
La prima soluzione risulta preferibile sia in termini di efficienza che di semplicit di configurazione. Il client in questo caso utilizza la propria sottorete: vengono impostate sia lato client che lato gateway remoto, delle route che permettono la trasmissione dei pacchetti attraverso la VPN. Si noti che parlando di client non si fa riferimento solo al caso di una singola macchina, ma potrebbe trattarsi di un'intera sottorete.
Alcune circostanze impongono per il ricorso al Bridging. In tal caso l'interfaccia di rete fisica viene collegata via software con l'interfaccia virtuale utilizzata da OpenVPN creando appunto un ponte, bridge. Tale operazione consente di ottenere una rete virtuale su una singola sottorete. Alcuni esempi classici, riportati dalla documentazione ufficiale, in cui si rende necessario il bridging sono:
Per ora ci fermiamo qui. Se le informazioni di questa breve panoramica hanno solleticato la vostra curiosit vi do appuntamento su queste pagine per cominciare a "sporcarci le mani" con l'installazione e la configurazione di OpenVPN.
Nella prima parte di questo articolo sono state brevemente illustrate le caratteristiche di OpenVPN, il software VPN open source e multipiattaforma. I sistemi supportati sono Linux, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, Windows. Per ognuno di essi bene verificare la versione del kernel o del sistema operativo minimi richiesti.
Di seguito ci occuperemo dell'installazione immaginando di utilizzare per i nostri esperimenti due macchine una server, destinata ad accettare le connessioni, ed una client che ad essa si collegher tramite il tunnel cifrato.
Di seguito seguiremo la pi semplice installazione da pacchetti precompilati sfruttando YUM, il packet manager di Fedora. Il software si occuper di verificare per noi che le dipendenze siano soddisfatte proponendoci, in caso negativo, l'installazione di eventuali altri pacchetti.
Procediamo con il consueto:
Al momento in cui viene scritto l'articolo il comando propone l'installazione della versione 2.1-0.19.rc4 dal repository fedora, proseguiamo l'installazione rispondendo affermativamente (anche per le eventuali dipendenze richieste). Se preferite la compilazione, dopo aver scompattato i sorgenti, dovrete usare, al solito, la sequenza:
Ricordo che i sorgenti sono disponibili nell'area download del sito del progetto. La versione stabile attualmente prelevabile 2.0.9, se volete potete per provare la 2.1_rc7. Prima di agire, consigliabile leggere attentamente il file INSTALL di documentazione per eventuali particolari opzioni di configurazione.
Il precedente comando ci mostra come sia gi tutto predisposto per lanciare OpenVPN all'avvio del sistema, baster portare ad on i runlevel desiderati. Infine notiamo la creazione della directory /usr/share/openvpn/easy-rsa contenente alcune utility che sfrutteremo largamente pi avanti. Il percorso di tale directory legato al tipo di installazione ed alla distribuzione usata. Se non state operando su Fedora dovrete localizzarne la posizione. Per comodit e per evitare sovrascritture da parte di successivi aggiornamenti, creiamo la directory /etc/openvpn e copiamo easy-rsa al suo interno.
Per questa piattaforma conveniente installare la GUI di Mathias Sundman (cui hanno collaborato altri programmatori) che rende pi agevole l'utilizzo del software. Anzich scaricare l'installer dal sito del progetto conviene prelevare il pacchetto openvpn-2.0.9-gui-1.0.3-install.exe comprensivo dell'interfaccia grafica e del programma.
Il classico wizard ci guider nell'installazione del software che di default avviene in C:ProgrammiOpenVPN, di seguito faremo sempre riferimento a tale posizione. Quando ci verr proposta la scelta dei componenti da installare aggiungiamo, spuntandolo, "My Certificate Wizard".
Aprendo dal pulsante Start il men Programmi troveremo il nuovo sottomenu OpenVPN, mentre aprendo dal pannello di controllo l'elenco dei servizi troveremo OpenVPN Service che potr essere lanciato automaticamente all'avvio del sistema.
Al termine ritroveremo nella directory scelta per l'installazione la cartella easy-rsa del tutto simile a quella sopra menzionata. Anche in questo caso la procedura d'installazione per server e client la medesima.
OpenVPN, come menzionato nell'articolo introduttivo, si basa sul protocollo SSL/TLS. Inizialmente dovremo organizzare una infrastruttura di chiavi pubbliche, PKI, dove il server e ciascuno dei client coinvolti siano in possesso di una chiave pubblica ed una chiave privata.
Procederemo in maniera analoga (non identica!!) a quanto descritto in Apache e SSL: creazione di certificati per connessioni cifrate, per chi non avesse chiari i concetti relativi alla crittografia asimmetrica pu essere utile la lettura della guida Crittografia e PGP.
Cominceremo assumendo il ruolo di Autorit di Certificazione nei cui panni firmeremo i certificati del server e del/i client. Prima che si instauri il rapporto di fiducia tra client e server, OpenVPN prevede che entrambi controllino il certificato fornito dalla controparte. In altri termini il client verificher il certificato del server ed il server quello del client. Perch la verifica abbia esito positivo ciascun certificato dovr essere firmato dalla CA e validate le informazioni in esso contenute.
All'interno della directory /etc/openvpn/easy-rsa/2.0 individuiamo il file vars. Apriamolo con il nostro editor di testo preferito ed andiamo a modificare i parametri di default che si trovano alla fine:
Attenzione che il comando clean-all, il cui compito fare pulizia, andr ad eliminare una eventuale directory keys preesistente e contenete chiavi precedentemente generate.
L'ultimo script build-ca, richiamando openssl, permette di generare certificato e chiave privata della CA: