“Tecnologie vpn e realizzazione di un`architettura di rete per l
Transcript
“Tecnologie vpn e realizzazione di un`architettura di rete per l
_____________________________________________________ MASTER DI II LIVELLO METODOLOGIE E TECONOLOGIE PER LO SVILUPPO DI INFRASTRUTTURE DIGITALI Tesi dal titolo “Tecnologie vpn e realizzazione di un'architettura di rete per l'accesso remoto tramite OpenVPN” Formando: Dott. Cesidio Giancarlo Di Pietro Relatore: Prof. Giovanni Pani Correlatore: Francesco Casalino Tutor: Dott.ssa Annamaria Labarbuta __________________________________________________________ A.A. 2013/2014 … a mia moglie Indice Introduzione 1 Cos'è una VPN…………………………………………………….. 1 1.2 Sicurezza…………………………………………………………….. 1 1.2.1 Crittografia e "tunneling"…………………………………………… 2 1.2.2 Protocolli di tunneling………………………………………………. 2 1.3 Implementazione…………………………………………………….. 2 1.4 Concetti chiave……………………………………………………….. 3 2 Trusted VPN……………………………………………………… 2.1 MPLS -VPN…………………………………………………………. 4 2.2 Concetti base MPLS L2VPN ………………………………………... 5 2.3 Scalabilità ……………………………………………………………. 6 2.4 Drafts Martini e Kompella…………………………………………… 6 2.5 Martini Mode come funziona………………………………………… 7 2.6 Kompella Mode come funziona……………………………………… 8 2.7 Evoluzione dei drafts……………………………………………….. 10 2.8 Vantaggi di MPLS L2VPN………………………………………….. 11 2.9 L3VPN MPLS ……………………………………………………….. 11 2.10 Vantaggi e Svantaggi MPLS L3VPN………………………………… 12 2.11 Un’esempio di rete MPLS – GARR-X………………………………... 13 4 3 Secure VPN…………………………………………………………. 15 3.1 PPTP………………………………………………………………… 16 3.2 IPSec…………………………………………………………………. 17 3.3 SSL/TSL OpenVPN…………………………………………………. 19 3.3.1 Come Funziona il Protocollo SSL/TLS……………………………… 21 4 4 Lavoro di stage……………………………………………………. 23 4.1 Installazione e configurazione di OpenVPN………………………….. 23 4.2 Accenni su LDAP……………………………………………………. 29 4.3 Installazione LDAP ………………………………………………….. 32 4.4 Configurazione LDAP con OpenVPN………………………………. 37 Conclusioni…………………………………………………………… 41 Introduzione ______________________________________________________________________ Introduzione In questa tesi verranno illustrate le principali tecnologie e soluzioni di una VPN. Il lavoro si divide principalmente in due parti. La prima fa una panoramica generale sulle tecnologie VPN , le soluzioni più usate, i vantaggi e gli svantaggi di una soluzione rispetto ad un'altra. In particolare ci soffermeremo sul funzionamento del protocollo usato da Open VPN, SSL/TLS La seconda parte verte soprattutto sul lavoro di un mese di stage effettuato presso il CSI(Centri Servizi Informatici) dell'Università degli Studi di Bari, dove si è creata un' infrastruttura di rete tramite il software open source OpenVPN. Verranno illustrate passo dopo passo le istruzioni per creare un’infrastruttura di rete VPN client-server totalmente criptata , in questo caso ad accesso remoto, con metodo di autenticazione LDAP . 1.Cos’è una VPN ______________________________________________________________________ 1 Cos'è una VPN La VPN (Virtual Private Network) è una tecnologia che permette l'accesso ad una LAN da qualsiasi parte del mondo ,oppure di collegare due o più sedi dislocate nel globo come se fosse un'unica rete privata. L'esigenza è nata per abbattere i costi elevatissimi dovuti alla realizzazione di proprie infrastrutture di reti per collegare le varie sedi interessate. Una VPN ben strutturata può offrire grandi benefici per un’azienda: estende la connettività geografica; migliora la sicurezza dove le linee di dati non sono state criptate; riduce i costi di operazione; riduce il tempo di transito e i costi di trasporto per i clienti remoti; fornisce la possibilità di reti globali; fornisce supporto di rete; fornisce compatibilità con le reti a banda larga; fornisce una più veloce ROI (tempo di ritorno dell'investimento) rispetto al trasporto tradizionale delle linee WAN; mostra una buona economia di scala. Questa tecnologia permette di realizzare una rete privata, utilizzando i cablaggi esistenti e soprattutto di utilizzare la rete ip essendosi così sviluppata da permette di raggiungere qualsiasi parte del globo. 1.2 Sicurezza La rete ip, però, è anche insicura , permettendo attacchi di vario genere che hanno fatto nascere un'altra caratteristica fondamentale della VPN, la sicurezza. Se si implementa una rete dedicata , ma si permette ad ogni utente di entrare in possesso di qualsiasi informazione che circola sulla rete , questa infrastruttura non sarebbe efficiente e 1 1.Cos’è una VPN ______________________________________________________________________ comporterebbe un notevole rischio per le aziende . 1.3 Crittografia e "tunneling" Per poter essere protetti, i dati scambiati sulla rete VPN devono essere instradati in un percorso virtuale dedicato oppure, incapsulati tramite un processo chiamato “tunneling”, che ha lo scopo di collocare i dati in buste digitalizzate. Il termine “tunnel” è stato scelto poiché indica uno spazio protetto creato nell'ambito della connessione al Web. Naturalmente, le aziende e gli utenti remoti devono utilizzare programmi software specifici a ciascuna uscita del "tunnel" per poter crittografare e decrittografare i dati con lo stesso formato. Nel modello di trasmissione viene spesso aggiunta una fase di compressione dei dati che ha lo scopo di evitare che la rete si saturi a causa dell'elevato numero di pacchetti crittografati. È necessario anche un server VPN, ossia il computer che gestisca le richieste di connessione degli utenti e dei router remoti (nel caso di sedi dislocate in altre ubicazioni). 1.4 Protocolli di tunneling Per consentire agli utenti di ciascuna uscita del tunnel di leggere i dati, è necessario, che tutti i componenti della rete VPN utilizzino lo stesso protocollo. Esistono naturalmente vari protocolli con livelli di protezione diversi: PPTP (Point-to-Point Tunneling Protocol), L2F (Layer Two Forwarding), L2TP (Layer Two Tunneling Protocol) ,IPSec e SSL/TLS. Nel capitolo 3 analizzeremo tutti i protocolli citati. 1.5 Implementazione Come per qualsiasi altro prodotto commerciale, esistono VPN con diverse caratteristiche; tra loro possono differenziarsi per prezzo, protocolli utilizzati, livello di sicurezza e, più in generale, per la qualità del servizio offerto. Nonostante alcune di esse supportino anche il P2P (Peer-to-Peer ), la struttura degli ambienti monitorati è sempre di tipo client-server, 2 1.Cos’è una VPN ______________________________________________________________________ per il semplice motivo di rendere il più possibile confrontabili i diversi scenari. Un'azienda che ha l'esigenza di connettere più sedi distaccate può creare una VPN totalmente sicura riducendo notevolmente i costi, facendo viaggiare informazioni in modo sicuro come se fossero in unica sede, altresì permette di connettere da qualsiasi parte del mondo un dispositivo connesso alla rete , utilizzando la rete internet come se fosse all'interno dell'azienda 1.6 Concetti chiave Ci sono dei concetti chiave che bisogna tenere a mente quando ci si vuole avvicinare alla teconologia VPN: Site to site: si ha quando si stabilisce un collegamento permanente tra due o più sedi , così da creare un'unica infrastruttura virtuale di rete aziendale. Remote VPN (accesso remoto): la connessione avviene da qualsiasi parte del mondo, luoghi pubblici, internet cafè ecc..., permettendo di accedere alla rete virtuale aziendale in maniera sicura e protetta , immune da attacchi dall'esterno. Trusted VPN: sono infrastrutture gestite totalmente dai service provider ai quali le aziende affidano tutto il traffico di instradamento , creando un percorso virtuale unico e dedicato. circuiti ATM (Asynchronous Transfer Mode) circuiti di trasmissione trasporto del layer 2 sopra l'MPLS Secure VPN: grazie a protocolli di sicurezza e crittografia attraverso la rete ip, un 'azienda crea una propria rete virtuale sicura. IPsec con cifratura in ogni Tunnel. IPsec interne al L2TP. SSL 3.0 o TLS con cifratura 3 2.Trusted VPN ______________________________________________________________________ 2. Trusted VPN Le soluzioni che si possono adottare sono molteplici e vanno dal semplice server equipaggiato con software open source, a costose appliance ridondate in HA: la scelta dipende dai costi, dall’integrazione con le infrastrutture esistenti, dalla banda necessaria, dal carico di lavoro e dalla criticità del collegamento, tanto per citare alcuni fattori che condizionano la scelta del sistema a cui affidarsi. La scelta della soluzione da adottare richiede una notevole capacità organizzativa , gestione dei costi , risorse umane e tempo. Se un'azienda prevede di crescere in futuro , l'obiettivo della scalabilità deve essere messo in primo piano , al contrario un'azienda che non prevede di crescere o di dimensioni modeste , allora l'obiettivo deve basarsi più sulla semplicità e economicità. 2.1 MPLS -VPN. Un esempio di Trusted VPN è la tecnologia ad alte prestazioni per l’instradamento di pacchetti IP attraverso una rete condivisa, che utilizza il MPLS (Multi Protocol Label Switching) . L’idea di base consiste nell’associare a ciascun pacchetto un breve identificativo di lunghezza fissa (Label) che gli apparati di networking utilizzano per effettuare un instradamento veloce basato sulla commutazione d’etichetta. Usa ettichette per implementare la trasparente trasmissione di pacchetti dell'utente. Le VPN basate su MPLS non sono criptate, si separano solo logicamente i dati dai dati di altri clienti. I dati percorrono lo stesso percorso fisico con altri clienti del fornitore del servizio, così come frame relay o qualsiasi altra rete WAN. Alcuni fornitori possono offrire servizi aggiuntivi che permettono di criptare il traffico. In realtà, si può decidere di esplorare la possibilità di utilizzare l'attrezzatura IPsec VPN esistenti per creare gallerie permanenti tra i siti in un nuovo backbone MPLS ad alta velocità per ottenere il meglio dei due mondi. Mentre la maggior parte delle aziende troveranno utile procurarsi una VPN MPLS da un 4 2.Trusted VPN ______________________________________________________________________ fornitore di servizi, altre aziende potrebbero voler creare VPN MPLS in-house. Questo è solo ragionevole per le grandi imprese che hanno bisogno di isolare il traffico che attraversa l'infrastruttura WAN. Questo è comune per i servizi ad alta sicurezza, i governi, le società che hanno esternalizzato i servizi e le aziende che desiderano creare una rete ospite per accedere ad Internet. Abbiamo due tipi di MPLS : 1. MPLS L2VPN: lavora a livello 2 2. MPLS L3VPN: lavora a livello 3 2.2 Concetti base MPLS L2VPN Fig. di HUAWEI TECHNOLOGIES CO., LTD. • Customer edge (CE) device: risiede sulla rete del cliente e ha una o più interfacce direttamente connesse con il service provider network. Può essere un router, uno switch oppure un host. 5 2.Trusted VPN ______________________________________________________________________ • Provider edge (PE) device: risiede sulla rete del service provider e connette uno o più CE alla rete. Sulla rete MPLS tutti i processi VPN passano sui PE.. • Provider (P) device: è una backbone sul service provider network. Non è direttamente connesso con nessun CE. Ha bisogno soltanto di avere a “bordo” le capacità base del MPLS Forwarding. Le reti in tecnologia MPLS offrono livelli di sicurezza equivalenti a quelli delle reti di livello 2 (ATM/FR) senza visibilità esterna al mondo Internet perchè l''Instradamento è basato su ettichette e non su indirizzi IP; le ettichette sono assegnate dal protocollo interno alla rete e non sono conosciute all’esterno. Il protocollo MPLS operando in modalità Label Switching offre le massime garanzie di sicurezza senza alcun ulteriore servizio aggiunto (Firewall, IDS, etc.). Ogni VPN MPLS non ha visibilità e commistioni esterne. I livelli di sicurezza sono paragonabili a reti di livello 2. 2.3 Scalabilità Il dimensionamento delle VPN MPLS è estremamente flessibile e l’aggiunta di una nuova sede non comporta alcuna variazione e maggior costi per H/W e S/W presso le altre sedi in quanto la configurazione della VPN è implementata sulle apparecchiature PE del Provider garantendo una scalabilità illimitata. La tecnologia MPLS supporta un’ampia gamma di servizi personalizzabili con diversi livelli di priorità, classe e garanzia in modo da poter implementare e differenziare i diversi utilizzi applicativi e tecnologici, ad esempio VOIP. 2.4 Drafts Martini e Kompella Le tecnologie più importanti sono il signaling LDP e il BGP protocol rispettivamente rinominati drafts( bozze) Martini e Kompella: Draft Martini: Prende il nome dal suo autore Luca Martini, semplicemente si usa il segnale LDP per stabilire la connessione punto-punto di 6 Livello 2 su MPLS, senza 2.Trusted VPN ______________________________________________________________________ autodiscovery. Draft Kompella: Prende il nome dal suo autore Kireeti Kompella, usa il protocollo BGP per il segnale e l' autodiscovery per stabilire connessioni multipunto di livello 2 VPN sulla backbone MPLS. Entrambe le bozze utilizzano lo stesso incapsulamento; Layer 2 intestazione + Tunnel Label del Fornitore + VC Label + Control Word + Payload (L2 Frame), i dettagli di incapsulamento per ogni protocollo di livello 2 è stata descritta in diversi RFC. Draft Martini soffre problemi di scalabilità a causa di onere di progettazione, in assenza di auto-discovery quando si tratta di topologie completamente a maglie tra i router edge, al contrario del Progetto Kompella che sfrutta il rilevamento automatico e segnalazione complesso. Mentre Juniper ha sostenuto che Progetto Kompella scala in modo migliore di Draft Martini , la maggior parte dei fornitori come Cisco hanno standard basati sul progetto di Martini (semplicemente utilizzando LDP per la segnalazione),trovando nuove soluzioni per superare il problema auto-discovery con Draft Martini. 2.5 Martini Mode come funziona Con questa tecnologia una sessione remota LDP è stabilita tra PE. I PE allocano un'ettichetta ad ogni link e la inoltrano al PE remoto attraverso il LSP (Label Switch Path). In questo modo un circuito virtuale viene stabilito sul LSP. Non fornisce una funzione di switching locale ma il singolo LSP può essere condiviso da multipli circuiti virtuali sulla rete del service provider. 7 2.Trusted VPN ______________________________________________________________________ Fig. di HUAWEI TECHNOLOGIES CO., LTD. Come mostrato in Figura, LSP1 e LSP2 sono condivisi dai circuiti virtuali t tra Site1 e Site2 di VPN1 , e le VC tra Site1 e Site2 di VPN2 . All'ingresso del PE , lo strato interno del pacchetto di dati verrà contrassegnato con l'etichetta VC e quindi sull'etichetta esterna ( stack) del LSP prima che il pacchetto di dati entra nel LSP . All'arrivo presso il PE di uscita , l'etichetta esterna ( stack) del pacchetto di dati viene tolto . Il PE di uscità può dire da quale VC il pacchetto con l'etichetta del VC proviene. Il PE di uscita inoltra il pacchetto di dati al corretto CE . 2.6 Kompella Mode come funziona La modalità Kompella è definito in draft-Kompella-PPVPN-L2VPN. Interior Border Gateway Protocol (IBGP) sessioni sono stabiliti tra PEs per rilevare siti L2VPN e trasmettere informazioni tramite VPN esteso BGP tra PE. Per la distribuzione dell'ettichetta , MPLS L2VPN in modalità Kompella utilizza il metodo del blocco etichetta. La dimensione di un blocco di etichetta è uguale al limite CE (specificato dall'utente), in modo che a più connessioni possono etichette contemporaneamente. 8 essere allocate più 2.Trusted VPN ______________________________________________________________________ Questa modalità consente agli utenti di assegnare le etichette in più per VPN per uso riservato e semplifica efficacemente l'implementazione e l'espansione di VPN . In modalità Kompella, le VPN sono identificati da obiettivi VPN, come risultato della quale la rete VPN è altamente flessibile. Modalità Kompella è applicabile ad una varietà di topologie di rete VPN. In modalità Kompella, le VPN sono allocate su tutta la rete del service provider, i CE sono numerati in ogni VPN. Per stabilire una connessione tra due CE, è sufficiente impostare gli ID CE locali e remoti sui PE e per specificare la VC ID assegnato alla CE locale. Fig.i HUAWEI TECHNOLOGIES CO., LTD. Come mostrato nella Figura , una VPN inizialmente contiene quattro siti (site0-site3) e un totale di sei EC (CE0-CE5) sono interconnessi. Per attivare questi sei EC per comunicare uno con l'altro, è necessario stabilire una struttura topologia a maglia completa tra loro. Ciò significa stabilire un VC da ciascuna CE a ciascuno degli altri cinque EC. Una connessione locale può anche essere stabilito nello stesso, come in modalità CCC. Inoltre, è possibile prenotare le etichette per un utilizzo futuro. Quando è necessario aggiungere nuovi siti VPN , è sufficiente configurare i PE connessi ai nuovi siti. Come mostrato nella Figura , più di sei etichette sono attribuiti a ciascuna CE sulla PE, e il collegamento in CE6 sono stati specificati. Quando CE6 viene aggiunto site4, è sufficiente aggiungere CE6 sulla PE2 e specificare i collegamenti ad altri Ces. 9 2.Trusted VPN ______________________________________________________________________ Kompella MPLS L2VPN usa BGP come il protocollo di segnalazione per distribuire VC . La sua modalità blocco etichetta permette di assegnare etichette a più connessioni contemporaneamente. 2.7 Evoluzione dei drafts. Il progetto Martini si è evoluto fino a essere RFC 4906 (classificato come storico), ma da allora è stato superato dalla Pseudowire Emulazione bordo a bordo specifiche (PWE3) del gruppo di lavoro descritte in RFC 4447 e dei relativi documenti. D'altro canto progettoKompella è obsoleta e non è stato standardizzato. Cisco ha messo a punto un progetto di IETF separato che si basa su Draft Martini e comprende pezzi di Draft Kompella. Eric Rosen (ha lavorato per Cisco in questo momento), l'autore di quello che è conosciuto come "Il rilevamento automatico Draft estensione a LDP," ha proposto di istituire Layer 2 MPLS tunnel utilizzando LDP, come è descritto nel Draft Martini, ma come Juniper, lui suggerisce di utilizzare BGP per autodiscovery. Tutto questo si è consolidato, e il gruppo di lavoro L2VPN ha prodotto due documenti distinti, RFC 4761 e RFC 4762, sia VPLS offerto ma utilizzando protocolli diversi di segnalamento: Kireeti Kompella e Yakov Rekhter hapubblicato "Virtual LAN Servizio privato (VPLS) Utilizzando BGP per Auto-discovery e di segnalazione" RFC 4761, nel gennaio 2007. Marc Lasserre e Vach Kompella hanno pubblicato "Virtual Private LAN Service (VPLS) Utilizzo Protocol Label Distribution (LDP) di segnalazione" RFC 4762, nel gennaio 2007. 10 2.Trusted VPN ______________________________________________________________________ 2.8 Vantaggi di MPLS L2VPN MPLS L2VPN presenta i seguenti vantaggi: Elevata scalabilità: MPLS L2VPN stabilisce solo connessioni layer 2. Non fa coinvolgere le informazioni di routing degli utenti. Questo riduce notevolmente il carico dei PE e anche il carico di tutta la rete di fornitore di servizi, consentendo ai vettori di supportare più reti VPN e al servizio di più utenti. Il controllo della rete e il routing è gestito dall’azienda, questo è preferito quando si vuole assicurare la sicurezza dei pacchetti. Con questo tipo di servizio, l’azienda può implementare una rete end-to-end e prendere autonomamente le decisioni di routing senza coinvolgere il Service Provider. Le aziende possono facilmente aggiungere nuove locazioni alla VPN, senza cambiare configurazioni di routing e di rete per le postazioni già configurate. Quando un nuovo sito è connesso , questo può automaticamente comunicare con gli altri siti e viceversa. Semplicità di manutenzione Supporto per più protocolli di livello di rete, ad esempio IP, IPX, e SNA. 2.9 L3VPN MPLS MPLS VPN di livello 3 utilizzano un modello peer- to-peer che utilizza Border Gateway Protocol ( BGP ) per distribuire informazioni relative alle VPN . Questo modello altamente scalabile permette agli abbonati di imprese di esternalizzare le informazioni di routing per i fornitori di servizi , con conseguente notevole risparmio sui costi e una riduzione della complessità operativa per le imprese . I fornitori di servizi possono offrire servizi a valore aggiunto come Quality of Service ( QoS ) e Traffic Engineering , consentendo la convergenza di rete che comprende voce, video e dati . 11 2.Trusted VPN ______________________________________________________________________ Caratteristiche: Dispositivo di bordo del cliente (CE): Una CE risiede su una rete del cliente e ha una o interfacce più direttamente connessi con le reti dei service provider. Può essere un router, un interruttore o un host. Provider Edge router (PE): A PE risiede su una rete di provider di servizi e collega uno o più EC alla rete. Su una rete MPLS, tutto VPN elaborazione avviene sui PE. Provider (P) router: AP router è un router backbone in una rete di fornitore di servizi. Non è collegato direttamente con qualsiasi CE. 2.10 Vantaggi e Svantaggi MPLS L3VPN Per quanto riguarda i vantaggi: Il controllo della rete e del routing è gestito dal Service Provider. In questo scenario, l’azienda deve solo fornire la lista delle sue reti e routing e il service provider provvederà a implementare queste richieste. Come ben si può notare è una soluzione adatta per le aziende che non vogliono spendere risorse e tempo nel gestire la rete e il routing. molte MPLS VPN offrono molta più flessibilità in più con prezzi più convenienti rispetto alle altre tecnologie WAN come linee T1. La tecnologia-label switching offre funzionalità di QoS e CoS. Inoltre, mantenendo il traffico su un unico vendor utilizzando MPLS VPN dà il venditore la possibilità di offrire ai contratti di servizio della società (SLA) per prestazioni di rete, a differenza della consegna "best effort" di Internet. Per quanto riguarda gli svantaggi : la scelta del protocollo di routing potrebbe essere limitata. La convergenza end-to-end è controllata principalmente dal fornitore di servizi. L'affidabilità del MPLS L3VPN è influenzata dal livello di competenza del fornitore di servizi. 12 2.Trusted VPN ______________________________________________________________________ Decidere di utilizzare i servizi MPLS VPN da un particolare fornitore di servizi crea anche un significativo radicamento, è difficile cambiare il fornitore quando è di utilizzare il core della rete. 13 3.Secure VPN ______________________________________________________________________ 3 Secure VPN Adesso parliamo delle tecnologie che utilizzano protocolli di sicurezza per criptare e isolare il traffico . Molte aziende hanno la necessità di permettere ai propri dipendenti di 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 poteva essere realizzato attraverso linee dedicate o in passato, attraverso un Remote Access Server (RAS). Il RAS era costituito da un certo numero di modem collegati ad una macchina che faceva da server. Ogni modem a sua volta aveva una propria linea telefonica che permetteva agli impiegati dell’azienda di collegarsi con esso. Questa soluzione sicuramente offriva un alto grado di affidabilità e sicurezza ma sicuramente erauna delle più costose, infatti prevedeva 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 Secure Virtual Private Network (VPN). Una Secure 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 15 3.Secure VPN ______________________________________________________________________ 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. Facendo una breve ricerca si individuano principalmente tre soluzioni che sono basate sui seguenti protocolli: PPTP , IPSec e SSL/TSL. Quest’ultimo non è proprio un protocollo ma bensì una serie di librerie per la criptazione dei dati. 3.1 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 puntopunto, quindi PAP, CHAP e così via. Poichè per la criptazione dei dati, 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. 16 3.Secure VPN ______________________________________________________________________ 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. 3.2 IPSec Questo è forse il protocollo maggiormente utilizzato in quest’ambito. 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 per 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. Il suo funzionamento consiste nel negoziare una una “Security Association” fra i due interlocutori l’AH e l’ESP , prima che entrino in gioco. 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; 17 3.Secure VPN ______________________________________________________________________ Il Security Association Database (SAD): contiene tutti dati relativi alle SA attive. IPsec supporta due modalità di funzionamento: Modalità Tunnel; Modalità Trasporto. Fig. http://www.hostingtalk.it/vpn-installazione-e-configurazione_-c000000CV/ A seconda della modalità scelta, vengono protetti solo i protocolli di livello superiore o l’intero pacchetto IP. In modalità Trasporto 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 modalità Tunnel, 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. L2TP/IPsec Layer 2 Tunnel Protocol è un protocollo VPN che di per sé non fornisce alcuna crittografia o la riservatezza di traffico che passa attraverso di esso. Per questo motivo di solito è implementato con la suite di cifratura IPsec (simile a una cifra, come discusso di seguito) per garantire la sicurezza e la privacy. 18 3.Secure VPN ______________________________________________________________________ L2TP / IPsec è incorporato in tutti i moderni sistemi operativi e dispositivi in grado di VPN, ed è altrettanto facile e veloce da installare come PPTP (in realtà di solito utilizza lo stesso client). I problemi possono sorgere però, perché il protocollo L2TP utilizza la porta UDP 500, che è più facilmente bloccato da firewall NAT, e possono quindi richiedono avanzate di configurazione (port forwarding) quando viene utilizzato dietro un firewall (questo è diverso da SSL che può utilizzare la porta TCP 443 per renderlo indistinguibile dalla normale traffico HTTPS). 3.3 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 modifica il comportamento di 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, dopo che sono stati criptati. La scelta del tipo di device da utilizzare dipende 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 19 3.Secure VPN ______________________________________________________________________ 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. 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, 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. OpenVPN aggiunge un livello intrinseco di sicurezza, per il semplice fatto di essere open source quindi può essere ispezionato il codice del software. Questo lascia la possibilità di verificare che non sono presenti backdoor o assimilati. E' una delle soluzioni VPN più conosciute, almeno nel campo dell’open source, garantisce i più alti livelli di sicurezza . Le caratteristiche fondamentali di OpenVPN, che gli hanno garantito il successo nel mercato delle soluzioni VPN, sono l’estrema semplicità di installazione e le tante possibilità di configurazione. In base a come è impostata la VPN, il tunnel viene creato su UDP (scelto nella configurazione di default) o TCP. I payload dei segmenti che creano il tunnel sono criptati, e la connessione viene instaurata previa autenticazione tramite certificati. 20 3.Secure VPN ______________________________________________________________________ OpenVPN permette la scelta di diverse possibili soluzioni: 1. vengono supportate configurazioni Peer-to-Peer; 2. ogni server può gestire diversi client contemporaneamente e possono essere create strutture host-to-host, site-to-site o host-network. L’autenticazione è gestita tramite un complessa infrastruttura di sicurezza, formata da certificati e chiavi private propri del server e di ogni client e da un certificato CA (Certificate Authority) utilizzato per firmare i certificati privati. Entrambe le parti, prima di analizzare le informazioni dei certificati, verificano che questi siano stati sottoscritti con il certificato CA. Tutte le chiavi e i certificati possono essere creati con appositi script contenuti nel pacchetto del prodotto. I file da utilizzare possono essere logicamente organizzati in due directory (posizionate nei due sistemi terminali), server e client: OpenVPN utilizza la libreria di crittografia OpenSSL. Diverse configurazioni permettono la creazione di device TUN o TAP: entrambe sono interfacce virtuali di rete, ma TUN lavora con pacchetti IP mentre TAP con frame Ethernet. 3.3.1 Come Funziona il Protocollo SSL/TLS Il protocollo SSL/TLS permette ad applicazioni client/server di comunicare per mezzo di una rete in modo da prevenire l’eavesdropping (“origliare” in inglese) e il tampering (“manomettere, immischiarsi” in inglese). Dal momento che la comunicazione tra due nodi della rete può avvenire anche senza l'utilizzo di protocolli crittografici, è necessario che il client indichi al server di stabilire una connessione protetta per lo scambio informativo. La prima opzione prevede l'utilizzo di una porta differente rispetto alla solita (nel caso del protocollo HTTPS viene utilizzata la porta 443, mentre il protocollo HTTP utilizza la porta 80); una seconda opzione, invece, prevede l'utilizzo di un meccanismo ad hoc da parte del client affinché il server attivi la modalità crittografata. 21 3.Secure VPN ______________________________________________________________________ Una volta che i due nodi si sono accordati sull'utilizzo del protocollo SSL/TLS, comincia una procedura di negoziazione per stabilire una connessione affidabile. Durante la procedura, client e server concordano i diversi parametri necessari a stabilire l'effettiva sicurezza del processo. 1. Nella prima fase, client e server si scambiano diversi dati, inclusi la versione del protocollo utilizzata, le impostazioni di cifratura, dati specifici della sessione in fase di avvio e altri informazioni necessarie ai due nodi per comunicare tra loro 2. Il client utilizza queste informazioni per autenticare il server – nel caso della navigazione web, ad esempio, il client controlla se “l'intestatario” del certificato crittografico ricevuto corrisponde al server contattato e se l'autorità di certificazione sia o meno affidabile 3. Utilizzando tutti i dati scambiati sinora, il client crea il cosiddetto pre-mastersession (piccola porzione di dati condivisa esclusivamente tra i due nodi interessati alla comunicazione) relativo allo scambio in corso, lo crittografa con la chiave pubblica ricevuta dal server e lo invia al server stesso 4. Nel caso in cui il server lo richieda, il client invia una firma autenticativa per certificare la propria identità. Nel caso in cui l'identificazione vada a buon fine, il server decripta il premaster session inviato e genera il master secret. Se il server non identifica il client, la sessione viene interrotta 5. Sia il server sia il client utilizzano il master secret per generare la chiave (simmetrica) di sessione. Questa chiave viene utilizzata nel corso della comunicazione per crittografare e decriptare i dati inviati dai due nodi e per verificarne l'integrità 6. I due nodi inviano un ultimo messaggio indicando che la procedura di negoziazione è terminata e tutti i futuri messaggi saranno crittografati utilizzando la chiave di sessione appena negoziata I vantaggi più importanti sono: Pros Altamente configurabile Molto sicuro Può bypassare i firewall Può usare una vasta gamma di algoritmi di criptazione. 22 3.Secure VPN ______________________________________________________________________ E' open source, questo permette a chiunque di esplorare il codice e controllare se ci siano Backdoors ecc... Gli svantaggi sono Ha bisogno di un software terzo Può essere complicato configurarlo Cresce il supporto per i mobile, ma non arriva ancora allo standard desktop 23 4. Lavoro di Stage ______________________________________________________________________ 4 Lavoro di stage Il periodo di stage si è diviso principalmente in due fasi : 1. Realizzazione di un server vpn, su una macchina virtuale con S.O. Centos 7. Installazione di OpenVPN (software opensource) con la relativa connessione del client vpn al server. 2. Collegamento al sistema di autenticazione di OpenVPN, di utenti creati tramite il protocollo LDAP. La prima fase è stata relativamente più semplice , poiché si è trattata di configurare, aggiornare la macchina Centos 7 e successivamente installare e configurare il software OpenVPN. La seconda fase ha richiesto una notevole ricerca prima di arrivare alla soluzione , poiché avendo l'ultima release di Centos, le istruzioni per configurare LDAP al sistema , non erano direttamente reperibili su internet. Grazie alla continua e paziente supervisione della Dott.ssa Annamaria Labarbuta, sono riuscito a completare il lavoro assegnatomi, così da permettere al client di avviare una connessione vpn, digitando le credenziali di più utenti creati con il protocollo LDAP. Questo lavoro ha permesso di comprendere le notevoli potenzialità della tecnologia VPN , che va dal metodo di autenticazione al numero delle reti private che possono essere coinvolte. Il successivo passo del lavoro di stage sarebbe stato quello di agganciare il programma Linotp al sistema VPN tramite Simplesaml , così da avere più metodi autenticazione con conseguente aumento della sicurezza. Qui di seguito si riportano tutti i passi per installare e configurare OpenVPN su Centos 7. 23 4. Lavoro di Stage ______________________________________________________________________ 4.1 Installazione e configurazione di OpenVPN Installeremo e configureremo OpenVPN su CentOS 7 server. Prerequisiti. Entrare in root : questo perché molti comandi non possono essere completati con un normale sudo Avere un dominio e un sottodominio su cui poter usare i certificati Installare Extra Packages for Enterprise Linux (EPEL) repository perché OpenVPN è disponibile solo sul repository Enterprise. yum install epel-release Step 1 — Installare OpenVPN Prima installiamo OpenVPN e dopo Easy RSA per generare SSL Key yum install OpenVPN easy-rsa -y Step 2 — Configuriamo OpenVPN Copieremo il file di esempio server.conf , nella directory appropriata cp /usr/share/doc/OpenVPN-*/sample/sample-config-files/server.conf /etc/OpenVPN Apriamolo per editarlo vi /etc/OpenVPN/server.conf Le linee sono commentate con il carattere “;” basta toglierlo per attivare l'opzione. Quando generiamo le chiavi dopo, la lunghezza della crittografia di default per Easy RSA sarà 2048 bytes, quindi lasciare di default il dh filename dh dh2048.pem Dobbiamo togliere il commento a: push "redirect-gateway def1 bypass-dhcp" questo comando da l'istruzione al server OpenVPN. 24 di instradare tutto il traffico attraverso 4. Lavoro di Stage ______________________________________________________________________ Cambiamo i DNS usando quelli che conosciamo Togliamo il commento e sostituiamo con il nuovo dns push "dhcp-option DNS “208.67.222.222" push "dhcp-option DNS “208.67.220.220" Vogliamo far partire OpenVPN senza privilegi : togliamo il commento a queste righe: user nobody (default) group nobody (default) se vogliamo aggiungere più client con lo stesso common name togliamo il commento a duplicate-cn Salviamo e usciamo dal file server.conf. Step 3 — Generiamo le chiavi e i certificati Creiamo le nostre chiavi e i certificati usando Easy RSA : Creiamo una directory per le chiavi mkdir -p /etc/OpenVPN/easy-rsa/keys Adesso dobbiamo copiare lo script di generazione delle chiavi nella directory cp -rf /usr/share/easy-rsa/2.0/* /etc/OpenVPN/easy-rsa Editiamo i valori del file var vi /etc/OpenVPN/easy-rsa/vars Bisogna cambiare i valori in rosso con i propri valori Scrivere a KEY_NAME “server” a KEY_CN “il dominio o il sottodominio che fa riferimento il nostro server. # 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="IT" 25 4. Lavoro di Stage ______________________________________________________________________ export KEY_PROVINCE="Italy" export KEY_CITY="Bari" export KEY_ORG="University of Bari" export KEY_EMAIL=”[email protected]" export KEY_OU="Community" # X509 Subject Field export KEY_NAME="server" Questa è una parola chiave ... export KEY_CN=cloudy.ba.infn.it Chiudiamo e salviamo Togliamo il numero di versione di OpenSSL onde evitare che non possa partire non trovando la versione giusta: cp /etc/OpenVPN/easy-rsa/openssl-1.0.0.cnf /etc/OpenVPN/easy-rsa/openssl.cnf Per generare le nostre chiavi e certificati dobbiamo entrare nella directory easy-rsa e digitare il seguente comando cd /etc/OpenVPN/easy-rsa source ./vars Ripuliamo eventuali chiavi e certificati vecchi ./clean-all Quando creiamo la CA , ci verrà chiesto di inserire le informazioni inserite nel file vars , vedremo cmq che le opzioni sono inserite di default e quindi possiamo premere direttamente invio ./build-ca Adesso ci creiamo le chiavi e i certificati per il server ./build-key-server server Creiamo il Diffie-Hellman key exchange file: Lo scambio di chiavi Diffie-Hellman (DiffieHellman key exchange) è un protocollo crittografico che consente a due entità di stabilire 26 4. Lavoro di Stage ______________________________________________________________________ una chiave condivisa e segreta utilizzando un canale di comunicazione insicuro (pubblico) senza la necessità che le due parti si siano scambiate informazioni o si siano incontrate in precedenza. La chiave ottenuta mediante questo protocollo può essere successivamente impiegata per cifrare le comunicazioni successive tramite uno schema di crittografia simmetrica.: ./build-dh Queste chiavi generate per il server vanno copiate nelle directory cd /etc/OpenVPN/easy-rsa/keys cp dh2048.pem ca.crt server.crt server.key /etc/OpenVPN I client hanno bisogno del certificato quindi lo creiamo cd /etc/OpenVPN/easy-rsa ./build-key client Step 4 — Routing Faremo il routing direttamente con iptables ,anzichè firewalld Assicuriamoci che iptables service sia installato e attivato yum install iptables-services -y systemctl mask firewalld systemctl enable iptables systemctl stop firewalld systemctl start iptables iptables --flush Dopo aggiungiamo la regola a iptables del nostro routing alla nostra OpenVPN subnet iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE iptables-save > /etc/sysconfig/iptables Legenda comandi: -t nat: -o: --out-interface name , nome di un'interfaccia attraverso la quale un pacchetto sta per essere inviato 27 4. Lavoro di Stage ______________________________________________________________________ -s: source , sorgente POSTROUTING E MASQUERADE :Lo usiamo ad esempio se vogliamo nascondere all’esterno l’esistenza di una rete LAN interna, facendo finta che il pacchetto che arrivi a destinazione non venga visto come proveniente ad esempio da 192.168.XXX.XXX ma sia visto come un normale IP di classe A e questo lo facciamo mascherando l’IP sorgente con l’IP pubblico che ad esempio il nostro ISP ci fornisce. Attiviamo l'IP Forwarding in sysctl. Per settare in modo automatico alcune variabili ad ogni avvio della macchina Apriamo sysctl.conf per editarlo : Aggiungiamo questa linea net.ipv4.ip_forward = 1 Riavviamo la network service cosi l'IP Forwarding ha effetto systemctl restart network.service Step 5 — Avviamo OpenVPN Adesso siamo pronti per avviare il nostro OpenVPN service . Aggiungiamolo a systemctl: systemctl start [email protected] Dopo parleremo come connettere un client al server. Step 6 — Configuriamo un Client Dobbiamo copiare i file seguenti certificato dal server al client : /etc/OpenVPN/easy-rsa/keys/ca.crt /etc/OpenVPN/easy-rsa/keys/client.crt /etc/OpenVPN/easy-rsa/keys/client.key Questa operazione è molto delicata, assicurarsi che nessuno intercetti questi file Salvarli in una cartella e prendere nota della posizione di salvataggio. In questo caso abbiamo usato il comando scp , ecco la sintassi del comando scp -rpC [email protected]:/percorso/cartella-sorgente/ /cartella-di-destinazione/ Dobbiamo creare un file chiamato client.ovpn 28 4. Lavoro di Stage ______________________________________________________________________ scriviamoci le seguenti righe modificando le righe in rosso. client dev tun proto udp remote your_server_ip 1194 resolv-retry infinite nobind persist-key persist-tun comp-lzo verb 3 ca /path/to/ca.crt cert /path/to/client.crt key /path/to/client.key Questo file verrà usato per connettere il client al server con questo comando sudo OpenVPN --config ~/path/to/client.ovpn aggiungendo questi comandi al file client.ovpn up /etc/OpenVPN/update-resolv-conf down /etc/OpenVPN/update-resolv-conf dopodichè digitando sudo OpenVPN --script-security 2 --config client.ovpn il client riceve anche il traffico internet tramite vpn. Dopo aver configurato OpenVPN , passiamo alla fase di “agganciamento” del sistema di autenticazione tramite LDAP. 29 4. Lavoro di Stage ______________________________________________________________________ 4.2 Accenni su LDAP LDAP (Lightweight Directory Access Protocol) è un gruppo di protocolli progettato per l'accesso e la gestione di directory di informazioni. Si tratta di una sorta di database che viene utilizzato nel momento in cui abbiamo bisogno di centralizzare delle utenze, avendo cosi la gestione degli utenti e degli accessi ai vari servizi localizzata in un unico posto nella nostra rete LAN. Il concetto di database su LDAP esce un po’ dalla logica dei database comuni come mysql o sql server perchè non si tratta di un database relazionale, ma non per questo deve essere scartato, visto che per la gestione delle utenze in maniera centralizzata è il database maggiormente usato, anche perchè ci sono molti servizi che si possono appoggiare a LDAP per poterne usufruire. Se vogliamo fare qualche esempio possiamo citare la creazione di una rubrica centrale per un azienda dove i vari client di posta elettronica possono accedere piuttosto che l’autenticazione a delle risorse condivise messe a disposizione tramite Samba, piuttosto che l’autenticazione su Apache, oppure tramite SSH. I modi per usarlo come vediamo sono molti e i servizi che ci si può appoggiare sono svariati e allo stesso tempo sono comunemente usati, quindi l’idea di adottare una soluzione LDAP è molto interessante. La struttura su come vengono organizzate le informazioni nel database è una struttura gerarchica ad albero, per fare un esempio possiamo citare la struttura che rispecchia il DNS. Ogni informazione al suo interno viene ricercata tramite un DN ( Distingued Name ) che possiamo definire come il percorso per poter arrivare all’informazione. Ogni informazione necessita di attributi, vedremo meglio in seguito cosa significa. Abbiamo detto quindi una struttura ad albero: Ossia una struttura fatta a nodi dove si parte da un nodo radice o root a cui si connettono altri nodi. Ogni nodo connesso ha un nodo genitore eccetto il nodo radice. Ogni nodo rappresenta un oggetto con determinati attributi e per accedere alle informazioni contenute nel nodo si deve specificare il suo percorso. 30 4. Lavoro di Stage ______________________________________________________________________ Una struttura simile di tale approccio che usiamo tutti i giorni è il file system. Facciamo un esempio grafico di uno schema LDAP: In uno schema LDAP vengono adottate delle sigle, vediamo di capire di cosa si trattano: dc: Rappresenta il Nodo Radice uid: User id cn: Common Name sn Surname l: Location ou: Organisational Unit o: Organisation dc: Domain Component st: State c: Country Per accedere all’informazione contenuta in un nodo specifico bisogna specificare il suo percorso: 31 4. Lavoro di Stage ______________________________________________________________________ Le informazioni che vengono immagazzinate all’interno dello schema vengono chiamate entry Ogni entry è univocamente individuata da un DN (Distingued Name) e il suo significato è stabilito mediante degli attributi particolari detti objectclass Ogni entry può essere inserita tramite più modalità, tra cui possiamo usare un interfacciamento grafico piuttosto che dei file con estensione .ldif opportunamente strutturati che successivamente vedremo meglio. Per concludere questa panoramica possiamo inoltre dire che: LDAP è un database che può essere replicato Gli accessi in lettura sono superiori a quelli in scrittura Esso fornisce un sistema di protezione e autenticazione alle informazioni contenute in esso. 32 4. Lavoro di Stage ______________________________________________________________________ 4.3 Installazione LDAP Installiamo i pacchetti openldap yum-y install openldap-servers openldap-clients Creiamo il file vi /etc/openldap/slapd.conf Inseriamo le due righe pidfile /run/openldap/slapd.pid argsfile /run/openldap/slapd.args Chiudiamo e salviamo Digitiamo il comando per cancellare la directory rm-rf /etc/openldap/slapd.d/* Testiamo il file slapd.conf slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d config file testing succeeded Configuriamo il file config.ldif vi /etc/openldap/slapd.d/cn=config/olcDatabase\={0}config.ldif sostituiamo la linea 6 con quella seguente olcAccess:{0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break chiudiamo e salviamo Digitiamo i seguenti comandi chown-R ldap. /etc/openldap/slapd.d chmod-R 700 /etc/openldap/slapd.d Riavviamo slapd systemctlstart slapd systemctlenable slapd 33 4. Lavoro di Stage ______________________________________________________________________ Inseriamo gli “ schema file” con estensione ldif Gli schemi sono file in formato LDIF che definiscono la struttura delle entry di una directory. OpenLDAP fornisce un insieme di schemi di default che possono essere inclusi in slapd.conf (attraverso la direttiva include)per la creazione di configurazioni per il servizio di directory. Gli schemi possono essere estesi o creati dagli utenti di OpenLDAP.Gli schemi sono contenuti solitamente nella directory /usr/local/etc/openldap/schemi.Lo schema core.schemi va incluso obbligatoriamente per avviare OpenLDAP. core.schemi: Definisce la struttura di OpenLDAP(Necessario) cosine.schemi: Contiene le specifiche X.500 (Utile) inetorgperson.schemi :InetOrgPerson (Utile) nis.schemi :Network Information Services (Usato per gestire autenticazioni) digitiamo i seguenti comandi: ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/core.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif -Y EXTERNAL ste per autenticazione SASL implicita nel contesto Generiamo una password crittografata con il comando: slappasswd alla fine avremo una stringa di questo genere {SSHA}xxxxxxxxxxxxxxxxx copiare la stringa Creiamo il file ldif di configurazione vi backend.ldif 34 4. Lavoro di Stage ______________________________________________________________________ Inseriamo il blocco di informazioni seguenti : # sostituisci alle voci "dc=***,dc=***" il proprio suffisso, in questo caso dc=csitest # sostituisci alla voce "olcRootPW: ***" la password precedente creata dn: cn=csitest objectClass: olcModuleList cn: module olcModulepath: /usr/lib64/openldap olcModuleload: back_hdb dn: olcDatabase=hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {1}hdb olcSuffix: dc=csitest olcDbDirectory: /var/lib/ldap olcRootDN: cn=admin,dc=csitest olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx olcDbConfig: set_cachesize 0 2097152 0 olcDbConfig: set_lk_max_objects 1500 olcDbConfig: set_lk_max_locks 1500 olcDbConfig: set_lk_max_lockers 1500 olcDbIndex: objectClass eq olcLastMod: TRUE olcMonitoring: TRUE olcDbCheckpoint: 512 30 olcAccess: to attrs=userPassword by dn="cn=admin,dc=csitest" write by anonymous auth by self write by * none olcAccess: to attrs=shadowLastChange by self write by * read olcAccess: to dn.base="" by * read olcAccess: to * by dn="cn=admin,dc=scsitest" write by * read 35 4. Lavoro di Stage ______________________________________________________________________ chiudiamo e salviamo Inseriamo il file backend.ldif di configurazione digitando il comando ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif Creiamo il file dif di base vi frontend.ldif Inseriamo il blocco di informazioni seguenti : # sostituisci alle voci "dc=***,dc=***" il proprio suffisso, in questo caso dc=csitest # sostituisci alla voce "olcRootPW: ***" la password precedente creata dn: dc=csitest objectClass: top objectClass: dcObject objectclass: organization o: Csitest dc: Csitest dn: cn=admin,dc=csitest objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin userPassword: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx dn: ou=people,dc=csitest objectClass: organizationalUnit ou: people dn: ou=groups,dc=csitest objectClass: organizationalUnit 36 4. Lavoro di Stage ______________________________________________________________________ ou: groups chiudiamo e salviamo Inseriamo il file frontend.ldif nel db ldap ldapadd -x -D cn=admin,dc=csitest -W -f frontend.ldif Chiederà di inserire la password precedentemente creata Abbiamo creato il nostro ambiente ldap . Adesso aggiungiamo ad OpenVPN un altro metodo di autenticazione , useremo LDAP. 37 4. Lavoro di Stage ______________________________________________________________________ 4.4 Configurazione LDAP con OpenVPN Installiamo il pacchetto che consente di autenticare gli utenti ldap tramite PAM e NSS(Name server switch) Il Name Service Switch (NSS) è una struttura per sistemi operativi Unix-like che fornisce una varietà di fonti per i database di configurazione comuni e meccanismi di risoluzione dei nomi. Queste fonti includono i file del sistema operativo locale (come / etc / passwd, / etc / group, e / etc / hosts), il Domain Name System (DNS), il Servizio di Network Information (NIS), e LDAP. Il Pluggable Authentication Modules (in acronimo PAM) è un meccanismo per integrare più schemi di autenticazione a basso livello in un'unica Application Programming Interface ad alto livello, permettendo ai programmi che necessitino di una forma di autenticazione, di essere scritti indipendentemente dallo schema di autenticazione sottostante utilizzato. yum install nss-pam-ldap avviamo il tool per gestire le autenticazioni digitando authconfig-tui Si aprirà un'interfaccia grafica selezionare le voci: 1. usa ldap 2. usa password shadows, 3. usa autenticazione ldap 4. autorizzazione locale è sufficiente premere su avanti Comparirà la schermata “Ldap settings” Alle voci 38 4. Lavoro di Stage ______________________________________________________________________ 1. Server: scrivere l'indirizzo ip localhost 2. Base dn dc=csitest Questo permette di configurare ldap come autenticazione adesso non ci resta che popolare ldap con users differenti , creando il file ldif ad. esempio client7.ldif [root@vm-uniba-csi ~]# ldapsearch -x -D 'cn=admin,dc=csitest' -W Enter LDAP Password: # extended LDIF # # LDAPv3 # base <uid=client7,ou=people,dc=csitest> with scope subtree # filter: (objectclass=*) # requesting: ALL # # client7, people, csitest dn: uid=client7,ou=people,dc=csitest objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: client7 cn: Client 7 sn: client7 givenName: Client7 title: Italy 39 -b 'uid=client7,ou=people,dc=csitest' 4. Lavoro di Stage ______________________________________________________________________ telephoneNumber: +0 000 000 0000 mobile: +0 000 000 0000 postalAddress: [email protected] userPassword:: Y2xpZW50Nw== loginShell: /bin/bash uidNumber: 9999 gidNumber: 9999 homeDirectory: /home/client7/ description: This is an example user # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 Inseriamo il file nel db ldap con il comando : ldapadd -x -D cn=admin,dc=server,dc=world -W -f client7.ldif Adesso configuriamo i file relativi ad OpenVPN editare il file /etc/OpenVPN/server.conf e aggiungere la seguente riga alla fine del file plugin /usr/lib64/OpenVPN/plugins/OpenVPN-plugin-auth-pam.so login il modulo OpenVPN-plugin-auth-pam.so aggiunge un potente strato di autenticazione per OpenVPN chiudere e salvare il file riavviare il sistema systemctl restart [email protected] 40 4. Lavoro di Stage ______________________________________________________________________ Lato client: Aprire il file client.ovpn e aggiungere la voce auth-user-pass chiudere e salvare digitare il comando sudo OpenVPN --script-security 3 --config client.ovpn chiederà nome utente e password: inseriamo il nome utente e password creato nel file client7.ldif. Dopo aver configurato il client e il server si notano due cose importanti: 1. Indirizzo ip non è più quello del client , ma del server vpn . 2. Effettuando un traceroute si può benissimo notare come tutte le informazioni passano per il server di uniba con indirizzo IP 10.8.0.0 . Questo fa capire che tutto il traffico tra il client e il server viene criptato su di una nuova rete virtuale e che l'informazione di tutti i dati di uscita risultano come se fosse all'interno del server uniba. 41 Conclusioni ______________________________________________________________________ Conclusioni Il mondo delle VPN è talmente vasto e articolato , che naturalmente questa tesi non voleva discernere nei minimi particolari. L’intento è stato quello di far comprendere le vere potenzialità delle Virtual Private Network con concetti chiave , facendo una panoramica sulle tecnologie più utilizzate. La seconda parte più pratica , è stata una dimostrazione di come un programma open source possa essere efficace e flessibile , tanto quanto i programmi in commercio permettendo di avere numerosi vantaggi tra cui la possibilità di accedere da qualunque PC utilizzando un semplice browser e avere un’elevata scalabilità rispetto ad ipsec. In uno scenario in cui ormai i dipendenti possono avvalersi di qualsiasi tipo di device nel mondo del lavoro, questo tipo di VPN diventerà sicuramente quello più diffuso. Negli enti pubblici soprattutto, questa soluzione rappresenta un’alternativa valida ed economica per creare infrastrutture di rete che possono competere e stare al passo con qualsiasi tecnologia nel resto del mondo. 41 Bibliografia ______________________________________________________________________ Bibliografia https://www.digitalocean.com/community/tutorials/how-to-setup-and-configure-anOpenVPN-server-on-centos-7 http://www.networkers-online.com/blog/2009/01/draft-martini-draft-kompella-andl2vpn-services/ http://searchenterprisewan.techtarget.com/guides/MPLS-VPN-fundamentals http://en.wikipedia.org/wiki/Layer_2_MPLS_VPN http://en.wikipedia.org/wiki/Virtual_private_network Metaswich Network tecnologies VPN a comparison http://www.garrxprogress.it/infrastruttura-tecnologica/livello-a-pacchetto