“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