Tesi di Laurea di Primo Livello Corso di “Modelli e Sistemi” Reti Private Virtuali con Topologia Dinamica IPSec-IPv6 Studente Relatore Prof. Andrea Detti Gabriele Trabucco Anno Accademico 2008/2009 Overlay VPN in Pratica Una Overlay VPN è una rete di computer interconnessi tra loro che realizzano una determinata topologia. La particolarità di queste reti è che esse non sono fisiche ma bensì logiche e per tale motivo sono realizzate al di sopra di altre reti preesistenti, nel nostro caso INTERNET. Il prerequisito fondamentale per il nostro progetto è che ogni nodo facente parte della Overlay, o che intenda unirsi a tale rete, abbia un indirizzo IP pubblico grazie al quale i software di gestione possano essere messi in comunicazione diretta. Il primo problema da superare è l’interconnessione logica tra i nodi della rete. Per tale proposito ci vengono in soccorso le tecnologie di tunneling 2 Tunneling Il tunneling è una particolare tecnica che inserisce un determinato protocollo in un altro protocollo dello stesso livello o di livello superiore. E’ il fulcro di tutto il progetto in quanto grazie a questa particolare tecnica possiamo creare delle interfacce virtuali sui nodi che andranno a costituire l’Overlay Network. L’interconnessione Point-to-Point tra le interfacce virtuali presenti sui diversi nodi ci permette di creare l’Overlay Network vera e propria. GRE è il candidato perfetto come protocollo di tunneling Tunnel Internet 3 GRE Generic Routing Encapsulation GRE è già integrato nella maggior parte delle distribuzioni linux ed è molto semplice da configurare. La scelta di adottare questo particolare tipo di protocollo di tunneling è data dal fatto che GRE è in grado di incapsulare al suo interno anche il traffico Broadcast e Multicast utilizzato dai comuni protocolli di routing. IP Packet 4 Struttura del Tunneling GRE I nodi fisicamente sono interconnessi tra loro grazie alla rete INTERNET . Non ci è dato sapere come è realizzata fisicamente la topologia delle rete sottostante ma sappiamo esattamente qual è la topologia dell’Overlay Network generata dall’interconnessione dei nodi. IP Tunnel IP Tunnel GRE GRE IP Pubblico IP Pubblico Collegamento Fisico Collegamento Fisico INTERNET 5 Problemi • • • • Indirizzamento IP dei Tunnel Configurazione Tabelle di Routing Overhead dovuto alle Tabelle di Routing Sicurezza - IPSec 6 Indirizzamento dei Tunnel GRE Ovviamente le interfacce di rete virtuali create devono avere un indirizzo IP tramite il quale possono essere raggiunte. Scegliere un indirizzamento IPv4 classico (diverso da quello dell’interfaccia fisica) avrebbe comportato l’onere di integrare all’interno del progetto un servizio DHCP (Dynamic Host Configuration Protocol) o quantomeno un algoritmo che generasse IP unici per ogni nodo dell’Overlay. Abbiamo adottato l’indirizzamento IPv6 che può essere mappato su IPv4 con il risultato di ottenere senza sforzo IPv6 unici nell’Overlay. 7 IPv6 vs IPv4 IPv4 • Indirizzo di 32 bit • Spazio di indirizzamento IPv4 4.2 109 • Rappresentazione decimale : 160.80.80.1 • • • • IPv6 Indirizzo di 128 bit Spazio di indirizzamento IPv6 3.4 1038 Rappresentazione esadecimale o ibrida : 2001::160.80.80.1 è equivalente a 2001::A050:5001 Anycasting 8 Configurazione Tabelle di Routing È un punto cruciale all’interno dell’Overlay Network in quanto ogni nodo, senza tabelle di routing, non è in grado di comunicare con nessun nodo all’interno della rete. La tabella di routing non è altro che “la strada” che un pacchetto deve percorrere per arrivare a destinazione. Si è adottato un protocollo di routing Link State ossia ogni nodo dell’Overlay conosce l’intera topologia di rete. Per tali scopi, visto il requisito di supportare frequenti cambiamenti topologici, il protocollo più appropriato è OLSR : Optimized Link State Routing Protocol. Tale protocollo viene fatto girare sopra tutte le interfacce Tunnel. 9 Overhead dovuto alle Tabelle di Routing Supponiamo di fissare ad 8 il numero di tunnel che un nodo può avere. Se avessimo utilizzato un indirizzamento IPv4 avremmo dovuto assegnare otto indirizzi IP diversi ad ogni interfaccia dei tunnel. Così facendo il protocollo OLSR di un nodo avrebbe dovuto diramare a tutti gli altri nodi dell’Overley esattamente 8 indirizzi IP. Supponendo di avere una rete composta da 101 nodi, ogni singolo nodo facente parte dell’Overlay si ritroverebbe con una tabella di routing di 800 righe con un enorme spreco in termini di Overhead di rete per la trasmissione delle stesse e di calcolo per il forwarding dei pacchetti. Ci viene in aiuto IPv6 grazie al quale è possibile dare lo stesso IPv6 a tutte le interfacce virtuali (Anycast) minimizzando così da 8 a 1 il numero di indirizzi IP diramati agli altri nodi tramite OLSR. In questo modo ogni nodo dell’Overlay avrà all’interno della propria tabella di routing tante righe quanti sono i nodi connessi alla rete. 10 Sicurezza - IPSec La sicurezza della trasmissione dei dati è affidata ad IPSec - Transport Mode. Grazie a questo protocollo completamente trasparente al livello applicativo si riesce ad implementare la crittografia e l’autenticazione delle connessioni IP Nella modalità Transport Mode viene messo in sicurezza solo il payload del pacchetto IP. L’header IP viene staccato e il payload viene criptato (ESP) e viene applicato il security header (ESP/AH). Infine viene riapplicato l’header IP originale. Per effettuare questo meccanismo viene configurato un SPD (Security Policy Database) grazie al quale verrà poi generato un SAD (Security Association Database) SP – Regola chi deve essere trattato da una specifica SA. SA – Definisce come realizzare una connessione sicura tra due host. 11 Prova di Concetto Strumenti utilizzati per la realizzazione del software • Linux Ubuntu 9.04 Debian Based • Netkit : suite di virtualizzazione per la simulazione di molte tipologie di rete. • Olsrd : Demone del protocollo di routing OLSR • Ipsec-tool : suite per la gestione di IPSec 12 gre_server GRE Data È lo script principale che rimane sempre in esecuzione in background. Grazie a questo script un host all’interno del’Overlay Network è in grado di ricevere le richieste d’ingresso da parte di macchine esterne alla rete. Filtro GRE Le richieste vengono identificate dal tipo di protocollo. Non appena lo script filtra un pacchetto IP GRE apre un tunnel per instaurare la comunicazione con il nodo entrante. GRE Data GRE Data Per garantire la sicurezza l’operazione successiva è quella di configurazione IPSec per garantire lo scambio dei dati criptato. Data Data GRE Data Data 13 overlay_connection Permette di fare una richiesta di ingresso ad un nodo appartenente all’Overlay Network. Il suo funzionamento è molto semplice. Client Server IPSec Setting IPSec Setting Apre un tunnel GRE verso il nodo remoto Imposta i parametri IPSec Il nodo remoto risponderà settando anche esso i medesimi parametri IPSec Crypted Data La connessione è stabilita ed i dati di qualunque tipo possono essere scambiati tra tutti i nodi della rete comprese le tabelle di instradamento per raggiungere il nuovo nodo. 14 Obbiettivi Futuri • Introduzione del demone racoon per la creazione automatizzata delle Security Policy e Security Association tra i nodi della rete. • Porting del progetto da bash script a demone C 15