Tunneling, reti private e NAT Partly based on! course slides by L. Peterson " Princeton University! Cisco documentation Reti Private - NAT -1 Argomenti della lezione! Tunneling " Generic Route Encapsulation " Reti private virtuali (VPN)! Indirizzi privati! Network Address Translation " Indirizzi privati e pubblici " Esigenze principali Riuso degli indirizzi IP Protezione di sottoreti da attacchi esterni! Application gateway e firewall Reti Private - NAT -2
Tunneling Reti Private - NAT -3 Tunneling! Esempio: IPv6 su IP (v4) Funzionalita IPv4/IPv6 Router Rete IP v4 Router Router Rete IP v6 Router Rete IP v6 Incapsulamento Estrazione Reti Private - NAT -4
Tunneling/2! Per le reti IP: Tecnica per l attraversamento di una rete IP da parte di traffico non IP (o IP con caratteristiche particolari, v. piu avanti)! Strumento principale: incapsulamento pacchetti non IP all interno di un datagramma IP Header IP Header Payload Pacchetto che attraversa La rete IP (es. IPv6) Reti Private - NAT -5 IP tunneling! Se usiamo una rete IP non abbiamo VC -> le reti non sono isolate! Tunnel IP su IP: consente collegamento virtuale punto - punto tra due nodi arbitrariamente distanti! Nell esempio: R1 ed R2 sono i terminali di un tunnel Network 1 R1 Internetwork R2 Network 2 11.0.0.1 IP header, Destination = 2.x IP payload IP header, Destination = 11.0.0.1 IP header, Destination = 2.x IP payload IP header, Destination = 2.x IP payload Reti Private - NAT -6
NetNum 1 2 Default IP tunneling/cont. RT di R1 NextHop Intf0 VIntf1 Intf1! Intf1 connette alla Internetwork! R1 incapsula i pacchetti diretti al link virtuale in pacchetti IP diretti a R2 Network 1 R1 Internetwork R2 Network 2 11.0.0.1 IP header, Destination = 2.x IP payload IP header, Destination = 11.0.0.1 IP header, Destination = 2.x IP payload IP header, Destination = 2.x IP payload Reti Private - NAT -7 NetNum 1 2 Default IP tunneling/cont. RT di R1 NextHop Intf0 VIntf1 Intf1! R2 estrae il pacchetto incapsulato e vede che e diretto alla rete 2! Lo consegna a destinazione Network 1 R1 Internetwork R2 Network 2 11.0.0.1 IP header, Destination = 2.x IP payload IP header, Destination = 11.0.0.1 IP header, Destination = 2.x IP payload IP header, Destination = 2.x IP payload Reti Private - NAT -8
Perche il tunneling IP! Sicurezza " Tunneling + cifratura permettono di ottenere collegamenti sicuri su reti pubbliche Questa soluzione e spesso usata in pratica Corrisponde alla definizione piu comunedi VPN! Collegamento di router con capacita non disponibili nel resto della rete " E.s. Multicast! Attraversamento di segmenti IP da parte di pacchetti di protocolli diversi " E.s. IPv6! IP mobile Reti Private - NAT -9 Crittografia e tunneling! Crittografia " Datagrammi cifrati alla sorgente e decifrati a destinazione! Tunneling " datagrammi cifrati incapsulati in datagrammi IP standard come parte dati! Unica parte visibile: intestazione del datagramma esterno " Parte dati contiene il datagramma originario cifrato " Indirizzi IP sorgente e destinazione originali cifrati Reti Private - NAT -10
Es.: Datagram da Host1 a Host2 Sottorete 1 D1 Sottorete 2 D2 D2 D1 Internet R1 R2 Host2 Host1 Cifratura Decifratura! Datagramma D1 da Host1 a Host2! D1 cifrato da R1 --> D2! D2 giunge a R2 e viene decifrato --> D1! D1 e consegnato a Host2 Reti Private - NAT -11 Esempio - cont. H1 Parte dati di D1 Cifratura H2 D1 cifrato D2! H2 non e cifrato! Indirizzi IP in H2 sono quelli di R1 ed R2 rispettivamente! Indirizzi di Host1 e Host2 contenuti in H1 e percio cifrati Reti Private - NAT -12
Es.: tabella di routing di R1 R1 R3 Internet R2 R4 Destinazione Next hop Rete 128.10.2.0 128.10.2.0 R2 192.5.48.0 Tunnel verso R3 Rete 192.5.48.0 default Router di ISP! La entry di default indica che il Datagram e inviato a Internet senza cifratura e tunneling Reti Private - NAT -13 Caso di studio - GRE! Generic Routing Encapsulation (Cisco) " RFC 1701 (prima versione) " RFC 2784 e 2890! This document specifies a protocol for encapsulation of an arbitrary network layer protocol over another arbitrary network layer protocol. - RFC 2784 Reti Private - NAT -14
GRE/cont.! Bit C: se 1 i campi Checksum e Reserved1 sono validi! Reserved0: i bit 1-5 sono usati se il receiver implementa la RFC 1701! Ver: deve essere 0 Reti Private - NAT -15 GRE/cont.! Protocol type: codice che identifica il pacchetto incapsulato! Checksum: Internet checksum su header GRE e payload (escluso checksum stesso) " Presente se C = 1! Reserved1 " Presente se C = 1 " Usato in implementazioni compliant con RFC 1701 Reti Private - NAT -16
Payload - IPv4! Da RFC 2784 " When a tunnel endpoint decapsulates a GRE packet which has an IPv4 packet as the payload, the destination address in the IPv4 payload packet header MUST be used to forward the packet and the TTL of the payload packet MUST be decremented. Care should be taken when forwarding such a packet, since if the destination address of the payload packet is the encapsulator of the packet (i.e., the other end of the tunnel), looping can occur. In this case, the packet MUST be discarded.! Ovviamente si puo avere IPv4 su IPv4. Tale e ad esempio il caso di reti private che usano tunneling su IP (v. piu avanti) " Esempio: tunneling compliant con RFC 1701 Reti Private - NAT -17 Estensioni! Insieme di opzioni presenti nell prima proposta (RFC 1701) " Valgono quando flag C = 1! Possibilita di specificare route (sequenze di router da attraversare)! Possibilita di cifratura " Campo Key! Numeri di sequenza! Checksum Reti Private - NAT -18
Reti private! Rete privata: gruppo di nodi (server, host router) inaccessibili al traffico di altri gruppi! Implementazione tipica: affitto di linee tra i nodi della rete privata! Vantaggi potenziali " Riuso degli indirizzi " Riservatezza Reti Private - NAT -19 Rete completamente isolata Linea dedicata Rete privata! In questo caso la rete e completamente inaccessibile dall esterno Reti Private - NAT -20
Reti ibride! Linee dedicate connettono i diversi gruppi di nodi che formano la rete privata! Indirizzi IP pubblici! Alcuni o tutti i gruppi sono connessi al resto di Internet! Possibilta di riservatezza. Es.: " Traffico privato su linee dedicate " Traffico da/verso il resto di Internet su linee condivise Reti Private - NAT -21 Reti ibride - esempio Sottorete 1 R1 Internet R2 Sottorete 2 Linea privata dedicata! La Sottorete 1 puo comunicare con la Sottorete 2 in modo riservato usando la linea dedicata! L accesso a Internet avviene attraverso i router R1 e R2! La rete usa indirizzi IP validi Reti Private - NAT -22
Reti virtuali private (VPN)! Reti completamente private o ibride costose " Es.: affitto o installazione linee dedicate! Uso di Internet per la connessione tra sottoreti non offre riservatezza! Rete virtuale privata (VPN) " Non usa linee dedicate " Traffico da/verso nodi della rete privata e separato dal traffico di altre reti in modo virtuale Ad esempio cifratura! Esistono diverse soluzioni " Soluzione piu diffusa: uso di cifratura e tunneling Reti Private - NAT -23 Esempio - circuiti virtuali! Nella figura (a) sono mostrate due reti private fisiche! Nella figura (b) sono mostrate le corrispondenti reti private virtuali! Si usano circuiti virtuali (es. ATM o Frame-Relay)! I pacchetti della rete X non possono essere intercettati dalla rete Y se non esiste almeno un VC comune tra esse A K (a) K A (b) C Physical links B Corporation X private network L M Corporation Y private network C L Physical links M B Virtual circuits Reti Private - NAT -24
Indirizzamento privato Reti Private - NAT -25 Indirizzi privati! La specifica CIDR prevede alcuni blocchi di indirizzi riservati all uso su inter-reti private non direttamente connesse a Internet! Indirizzi non instradabili " Un datagram destinato a un indirizzo privato viene riconosciuto da un router di Internet Reti Private - NAT -26
Indirizzi privati - cont.! Blocchi di indirizzi privati " 10.0.0.0/8 " 172.16.0.0/12 " 192.168.0.0/16 " 169.254/16 (Link-local addresses) Usati quando non e disponibile un server DHCP! Piu sottoreti di Internet possono usare questi blocchi di indirizzi, purche non siano accessibili dall esterno! Una VPN spesso usa indirizzi privati per i nodi interni Reti Private - NAT -27 VPN con indirizzi privati 10.1.0.1 223.190.16.1 220.128.3.2 10.2.0.1 R1 Internet Internet R2 10.1.0.0/16! Le due sottoreti della VPN usano blocchi di indirizzi privati! R1 ed R2 hanno bisogno di due indirizzi globablmente validi per il tunneling 10.2.0.0/16 Reti Private - NAT -28
Vantaggi/svantaggi! Servono meno indirizzi globali! Problema: gli host delle sottoreti locali non hanno accesso a Internet " Per avere accesso a Internet serve un indirizzo IP globale! Soluzioni " Application gateway " NAT: Network Address Translation - traduzione degli indirizzi di rete Reti Private - NAT -29 Network Address Translation Reti Private - NAT -30
NAT - Network Address Translation! Associazione di indirizzi pubblici a indirizzi privati! Il NAT permette un accesso a livello IP! Requisiti " Singola connessione a Internet " Almeno un indirizzo IP valido! L uso di Application Gateway permette agli host l accesso a determinati servizi ma non a livello IP Reti Private - NAT -31 Motivazioni e storia! Proposto per la prima volta nel 1994 in risposta alla penuria di indirizzi IP " Idea: ad ogni istante, soltanto un sottoinsieme dei nodi della rete interna comunica verso l esterno! Il NAT e ormai usato con molte finalita " Realizzazione di reti non visibili all esterno " Sicurezza Reti Private - NAT -32
NAT/cont.! Uscire dallo spazio di indirizzamento privato non e un problema! Il problema e il percorso inverso Reti Private - NAT -33 Funzionamento di base! Pool di indirizzi globali assegnati al NAT! Mappati su quelli privati quando serve " Pacchetti provenienti dall esterno e diretti a un indirizzo globale non mappato --> scartati Reti Private - NAT -34
NAT statico! Associazione statica tra un indirizzo globale e uno privato! Usato quando un dispositivo deve essere accessibile dall esterno! La presenza del NAT router offre protezione Reti Private - NAT -35 NAT dinamico! Associazione dinamica tra un indirizzo globale e uno privato! Il NAT ha a disposizione un pool di indirizzi globali! Allo stesso indirizzo privato possono essere associati indirizzi pubblici diversi nel tempo Reti Private - NAT -36
NAT dinamico/cont.! Associazioni (o binding o mapping) create dinamicamente! Scadenza binding determinata da timer Reti Private - NAT -37 NAT dinamico/1 indirizzo globale 10.1.0.1 223.190.16.1 D1 R D2 Internet Internet 10.1.0.2 Router NAT Traduzione per i Datagram da/verso 10.1.0.2! IP sorgente di D1: 10.1.0.2 --> 223.190.16.1! IP destinazione di D2: 223.190.16.1 --> R! D.: come fa R a capire che D2 e diretto a 10.1.0.2? Reti Private - NAT -38
Problemi implementativi! Tutti i pacchetti in arrivo ad R da Internet hanno lo stesso indirizzo di destinazione (es.: 223.190.16.1)! Come distinguere la destinazione all interno della rete locale?! Es.: D2 e la risposta a D1, quindi la destinazione reale di D2 e 10.1.0.2! Soluzioni " Tabelle " NAT multi-indirizzo " NAT con mappatura delle porte Reti Private - NAT -39 Tabelle di traduzione NAT! Servono ad instradare datagrammi in ingresso all host interno corretto " Si ricordi che tutti i datagrammi in arrivo al router NAT hanno lo stesso IP di destinazione! Si basano sulla seguente assunzione: " Se l host interno H invia un datagramma all host di Internet A allora i datagrammi provenienti da A sono diretti a H! Funziona se al piu 1 host interno puo inviare datagrammi allo stesso host globale Reti Private - NAT -40
Tabelle NAT - esempio 10.1.0.3 225.12.3.28 R Router NAT 10.1.0.2 Provenienza Dest. host 225.12.3.28 10.1.0.2 225.12.3.25 10.1.0.3 Tabella di traduzione di R Internet Internet! 10.1.0.2 comunica con 225.12.3.28! 10.1.0.3 comunica con 225.12.3.25 225.12.3.25 Reti Private - NAT -41 Tabelle NAT - cont.! Inizializzazione delle tabelle NAT " Manuale " Datagram in uscita: la prima volta che R riceve un datagram da 10.1.0.2 per 225.12.3.28 crea l entry (225.12.3.28, 10.1.0.2 ) nella tabella NAT - soluzione piu usata " Inizializzazione basata sui nomi di dominio! Svantaggio principale: al massimo 1 macchina locale puo accedere a una stessa macchina su Internet Reti Private - NAT -42
NAT multi-indirizzo! L interfaccia esterna del router NAT ha piu indirizzi globali associati! Gli indirizzi globali sono assegnati a rotazione come indirizzi sorgente dei datagrammi uscenti! K indirizzi globali permettono fino a K connessioni di host interni con la stessa macchina su Internet Reti Private - NAT -43 Es.: NAT multi-indirizzo (K=2) 10.1.0.3 10.1.0.1 223.190.16.1 223.190.16.2 225.12.3.28 10.1.0.4 10.1.0.2 R Router NAT Internet Internet Provenienza IP global dest. Dest. host 225.12.3.28 223.190.16.1 10.1.0.2 225.12.3.28 223.190.16.2 10.1.0.4 225.12.3.25 223.190.16.1 10.1.0.3 Tabella di traduzione di R 225.12.3.25! 10.1.0.2 e 10.0.0.4 comunicano con 225.12.3.28! 10.1.0.3 comunica con 225.12.3.25 Reti Private - NAT -44
NAT con mappatura delle porte! Il router NAT individua le destinazioni (interne) dei datagrammi provenienti da Internet anche in base al protocollo di trasporto! Usato quando i datagrammi trasportano segmenti TCP o UDP! Usa anche i numeri di porta! Necessita di estendere le entry della tabella di traduzione NAT Reti Private - NAT -45 Es.: Mappatura delle porte 10.1.0.1 10.1.0.3 10.1.0.2 223.190.16.1 128.10.19.20 10.1.0.5 10.1.0.6 R Router NAT Internet Internet! 10.1.0.1 e 10.1.0.5 hanno ciascuno una connessione HTTP verso 128.10.19.20! Gli altri host hanno connessioni TCP verso altre macchine non mostrate in figura Reti Private - NAT -46
Esempio - tabella NAT Indirizzo privato Porta privata Indirizzo esterno Porta esterna Porta NAT 10.1.0.5 21023 128.10.19.20 80 14003 10.1.0.1 2386 128.10.19.20 80 14010 10.1.0.6 26600 207.200.75.12 21 14012 10.1.0.3 1274 128.210.1.5 80 14007! Tabella NAT " Le prime due righe corrispondono alla figura precedente " Manca colonna protocollo di trasporto (TCP in tutti i casi) Reti Private - NAT -47 Esempio - cont.! Il router NAT mantiene un numero di porta NAT distinto per ciascuna connessione " Due host locali potrebbero scegliere lo stesso numero di porta privata! La macchina 128.10.19.20 individua le due connessioni corrispondenti alle prime due righe della tabella precedente cosi : (223.190.16.1, 14003, 128.10.19.20, 80) (223.190.16.1, 14010, 128.10.19.20, 80) Reti Private - NAT -48
Visione di insieme! Binding vale per la durata di un timer associato! Fino a 65536 sessioni per ogni indirizzo esterno Reti Private - NAT -49 Comportamento NAT! Possono aversi differenze notevoli tra le diverse soluzioni proposte " Persino tra soluzioni diverse di uno stesso produttore! Binding - chi lo puo usare? " Simmetrico " Full-cone " Restricted-cone " Port-restricted-cone " Puo essere diverso tra UDP e TCP Reti Private - NAT -50
NAT simmetrico! Mapping determinato da indirizzo di destinazione! Pacchetti provenienti dall esterno filtrati in base a indirizzo! Soltanto pacchetti provenienti da indirizzi esterni filtrati possono passare Reti Private - NAT -51 NAT full-cone! Pacchetti provenienti dall esterno passano qualora il loro indirizzo di destinazione sia un indirizzo del pool assegnato al NAT attualmente in uso Reti Private - NAT -52
Port-restricted-cone! Pacchetti provenienti dall esterno passano qualora il loro indirizzo di destinazione sia un indirizzo del pool assegnato al NAT attualmente in uso e la il no. di porta sorgente e quello associato all indirizzo esterno nel binding Reti Private - NAT -53 Interazione con altri protocolli! Il NAT interagisce con i protocolli di strati superiori e con ICMP! Il NAT deve: " Modificare gli header IP " Modificare i numeri di porta TCP e UDP " Ricalcolare i checksum (perche gli header cambiano) " Gestire esplicitamente messaggi ICMP (es. ping) " Traduzione di numeri di porta in sessioni FTP Reti Private - NAT -54
Aspetti da approfondire! Binding " NAT binding behaviour " Port binding behaviour " Binding timer refresh " Filtering! Interazione con altri protocolli! Riferimento di base: " http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj _7-3/anatomy.html Reti Private - NAT -55 Firewall Reti Private - NAT -56
Firewall! Router con funzionalita aggiuntive collocato tra una rete privata e il resto di Internet! Inoltra/filtra i pacchetti che lo attraversano! Permette di avere politiche di sicurezza centralizzate! Spesso integrato con NAT Firewall Rest of the Internet Local site Reti Private - NAT -57 Componenti di un firewall! Packet-filtering router! Application level gateway (proxy)! Circuit level gateway! Spesso ma non necessariamente presenti tutte insieme Reti Private - NAT -58
Packet filtering router! Filtraggio basato su header pacchetti " IP source/destination " UDP/TCP Source/destination port " ICMP message type " Payload (UDP, TCP, tunnel Reti Private - NAT -59 Esempio - indirizzi IP e numeri di porta! Filter-Based Solution " Il firewall ha una tabella di filtraggio " Tipicamente ogni riga e una 4-pla (SourceIP, SourcePort, DestIP, DestPort) ( 192.12.13.14, *, 128.7.6.5, 80 ) (*,*, 128.7.6.5, 80 ) " default: inoltro o no? Firewall Rest of the Internet Local site Reti Private - NAT -60
Application Gateway! Un proxy per ogni applicazione! Proxy si comporta come un server verso il client locale e come un client verso il server remoto Reti Private - NAT -61 Application Gateway/cont.! Si puo disabilitare traffico IP tra interno ed esterno ma! possono interagire con l esterno soltanto le applicazioni presenti nel proxy Reti Private - NAT -62
Esempio - FTP! Bisogna modificare il Sw FTP " E necessario implementare il passaggio per un proxy Reti Private - NAT -63 FTP/cont.! Funzionamento in modalita attiva " Possibili attacchi - quali? Reti Private - NAT -64
Una soluzione! Passive mode o Firewall-friendly FTP Reti Private - NAT -65 Circuit Level Gateway! Si tratta in pratica di un proxy a livello di trasporto (UDP o TCP)! Permette il funzionamento di tutte le applicazioni che rispettano le specifiche a livello di trasporto " Esempio: si decide di permettere tutto e solo il traffico TCP e, per UDP, soltanto quello DNS " Tutte le applicazioni basate su TCP funzionano senza modifiche e cosi pure il DNS! Non fa packet filtering Reti Private - NAT -66
Firewall Tipi di firewall Reti Private - NAT -67 Packet filtering! Economico " Semplicemente un router che fa filtering! Regole: di solito tutto il traffico che non e esplicitamente consentito e vietato Reti Private - NAT -68
Dual-homed! Almeno due interfacce di rete (e relativi indirizzi IP)! Tutto cio che non e permesso e vietato! Non e possibile traffico IP diretto tra interno ed esterno! Es.: usiamo un proxy firewall Reti Private - NAT -69 Screened host! Application GW (bastion) e packet filter! Server sulla stessa subnet del bation GW! Accesso al server dall esterno soltanto attraverso bastion GW " Come si implementa questa politica? " Come si scherma il server dal traffico proveniente dall interno? Reti Private - NAT -70
DeMilitarized Zone! Sia il traffico proveniente dall interno che quello proveniente dall esterno devono passare per Bastion GW! Massimo grado di sicurezza Reti Private - NAT -71 Riferimenti! Tunnel " Rif. 1, 4.1.8 " GRE della Cisco, RFC 2784 e 2890: http://tools.ietf.org/html/rfc2784 (rfc2890) " Panoramica sulle reti private virtuali: http://www.vpnc.org/vpn-technologies.html! NAT " Rif. 4, 21.3 " http://www.cisco.com/web/about/ac123/ac147/archi ved_issues/ipj_7-3/anatomy.html! Firewall: Rif. 4, 21.3 (argomento trattato molto bene)! Nota: tutti i riferimenti dati costituiscono materiale integrante del corso Reti Private - NAT -72