Internetworking V anno La configurazione dei sistemi di rete Amministratori di rete Gli amministratori di rete svolgono quotidianamente numerose operazioni per mantenere efficiente la rete. Per queste operazioni, molti amministratori fanno uso dei protocolli a livello Application. Quando la rete è di dimensioni ridotte può ancora essere gestita “manualmente”. Oramai, però, ci si occupa sempre più spesso di reti estese e complesse che necessitano di strumenti per una gestione automatica e da remoto delle risorse. Protocolli configurazione host I protocolli per la configurazione di un host sono usati dagli amministratori di rete per consentire alle macchine di determinare in automatico il proprio indirizzo IP e altri parametri necessari per la connessione a una rete TCP/IP. Questi protocolli sono utilizzati anche per effettuare operazioni da remoto e per il setup di: device mobile e host storageless (o diskless). Host configuration e host management In ambito IETF sono stati definiti protocolli di alto livello a supporto della configurazione e della gestione della rete. I numerosi compiti degli amministratori che richiedono protocolli del livello Application, si dividono in due tipologie: - host configuration, ogni host deve essere configurato PRIMA del suo utilizzo e della messa in rete; la configurazione permette all’host di svolgere le sue funzioni in modo corretto e appropriato. - host management, la gestione e il controllo degli host di una rete sono attività che devono poter essere effettuate in remoto, mantenendo sotto controllo parametri che segnalano anomalie o degrado delle prestazioni. Perché scegliere il livello Application? La comprensione del perché la definizione di questi protocolli avvenga nel livello Application e non nel livello Network può non essere così immediata. In realtà, questa scelta offre non pochi vantaggi: - le operazioni di configurazione NON sono legate all’hardware della macchina ma sono svolte in modo indipendente e, quindi, valido per qualunque tipo di host - i messaggi vengono scambiati tra end-system (E2E), quindi potrebbero attraversare più reti - si possono utilizzare le funzionalità offerte dai protocolli del livello Transport. Configurazione di un host Come fa una macchina non ancora in possesso di un indirizzo IP a inviare e ricevere i messaggi necessari per la propria configurazione di rete? La risposta è nell’utilizzo delle tecniche broadcasting e nell’impiego di indirizzi IP “speciali”. I protocolli BOOTP (BOOTstrap Protocol) e DHCP (Dynamic Host Configuration Protocol) ne sono un esempio. Protocollo BOOTP e protocollo DHCP Il protocollo DHCP aggiunge al protocollo BOOTP la funzionalità per l’assegnazione dinamica degli indirizzi IP. Anche se DHCP ha soppiantato BOOTP nel ruolo di configurazione di un host, il BOOTP è ancora molto usato nelle piccole reti e nella configurazione delle macchine senza disco. Caratteristiche protocollo BOOTP Il protocollo BOOTP è standard dal 1985 e presentò, fin da subito, alcune caratteristiche che lo resero preferibile al protocollo RARP: - utilizzo protocollo di trasporto UDP e indipendenza dall’hardware - invio, in un unico messaggio, dell’indirizzo IP e di altre informazioni per la configurazione - gestione dell’internetworking. Client e server possono appartenere a reti differenti, agevolando l’utilizzo di un unico server centrale per la gestione di host dislocati in diverse subnet. Indirizzi IP speciali Per comprendere meglio come un computer possa inviare un messaggio usando UDP senza conoscere ancora il suo indirizzo IP, ricordiamo che esistono indirizzi IP speciali usati per scopi diversi da quelli di identificazione univoca di un host. L’indirizzo 255.255.255.255 indica un broadcast limitato alla rete a cui appartiene la macchina. Il software IP di una macchina può accettare e trasmettere i pacchetti che specificano tale indirizzo anche PRIMA di aver scoperto le informazioni sull’indirizzo IP locale. Un’applicazione può utilizzare l’indirizzo IP 1.1.1.1 (broadcast limitato) per forzare IP a trasmettere un pacchetto sulla rete locale PRIMA di aver scoperto l’indirizzo IP della rete o della macchina locale. La richiesta BOOTP al server Esaminiamo ora il comportamento del server che riceve la richiesta BOOTP. Il server NON può rispondere in modo diretto indirizzando la macchina con il suo reale indirizzo IP, ma utilizza come destination address l’indirizzo speciale 255.255.255.255. Se il software sul server utilizzasse l’indirizzo IP del client, nel momento in cui il messaggio da trasmettere passa alla scheda di rete, questa cercherebbe di tradurre l’indirizzo IP nel corrispondente indirizzo hardware (MAC address) utilizzando l’Address Resolution Protocol. Tuttavia, il client, non avendo ancora ricevuto la risposta alla richiesta BOOTP, non riconoscerebbe il suo indirizzo IP e non sarebbe in grado di rispondere alla richiesta dell’ARP. Da questo, risulta chiaro che l’UNICA soluzione sia quella di trasmettere in modalità broadcast. UDP e BOOTP L’utilizzo di UDP per la comunicazione è necessario in quanto supporta il broadcast. UDP, però, NON è un protocollo affidabile, quindi il controllo della comunicazione DEVE essere affidato al client BOOTP: - viene utilizzato il campo checksum per il controllo dei bit ricevuti; - le richieste e le risposte devono essere inviate con il bit di non frammentazione impostato così da poter gestire anche i client che hanno una scarsità tale di memoria da non poter riassemblare i pacchetti in arrivo; - viene impostato un timer allo scadere del quale la richiesta è ritrasmessa. Inizializzazione in due fasi La procedura di bootstrap di una macchina utilizzando BOOTP consiste in due fasi: 1. 2. Su richiesta del client viene fornito l’indirizzo IP e alcune informazioni su come ottenere l’immagine della memoria Il client utilizza il protocollo TFTP per scaricare il file con l’immagine di memoria, contenente anche il sistema operativo da caricare sulla macchina. Tale procedura permette di mantenere separate le funzioni di configurazione della macchina da quelle della memoria. Dynamic Host Configuration Protocol DHCP può essere considerato un’evoluzione di BOOTP, di cui mantiene la struttura del messaggio. L’esigenza di definire un nuovo protocollo ebbe con la diffusione del wireless e l’uso di computer portatili. In questo contesto BOOTP si rivelò troppo lento nell’aggiornare i computer che si spostavano sovente da una rete a un’altra. Per l’assegnazione dinamica degli indirizzi IETF definì pertanto DHCP come protocollo migliorativo rispetto a BOOTP: - un host acquisisce tutte le informazioni necessarie alla sua configurazione usando un unico messaggio - un host ottiene l’indirizzo IP in modo rapido e dinamico. Nasce quindi il concetto di lease (“prestito”) dell’indirizzo IP a un host, per un periodo limitato nel tempo. DHCP Address pool Il DHCP server deve avere a disposizione un insieme di indirizzi (address pool) usato per l’allocazione dinamica degli indirizzi IP. Questi indirizzi sono condivisi tra più host e gestiti in modo efficiente, per esempio riutilizzando un indirizzo assegnato a un host quando questi non usa più la rete perché disconnesso o spento. La seguente figura schematizza il contesto di rete in cui opera il protocollo DHCP: Vantaggi assegnazione dinamica IP I vantaggi dell’assegnazione dinamica degli indirizzi IP sono da ricercare in: • Automazione: assegnazione dell’indirizzo IP al client automatica. • Gestione centralizzata: l’amministratore può analizzare il database del DHCP Server per conoscere: indirizzi del pool assegnati e a quali host, effettuare operazioni di aggiornamento su address pool, tempo di lease e altro, sempre lavorando su una sola macchina, il server. • Condivisione e riutilizzo degli indirizzi: host di una rete non sempre connessi tutti insieme, quindi la rete può supportare un numero di host superiore al numero di indirizzi disponibili (condivisione); nel momento in cui un host non è più connesso alla rete il suo indirizzo IP torna nel pool a disposizione di altri client (riutilizzo). • Portabilità: non essendoci un assegnamento predefinito host-indirizzoIP, qualunque client che si connetta alla rete può richiedere un indirizzo, supportando così la mobilità degli host. • Assenza di conflitti: essendo possibile l’assegnazione solo tramite il pool di indirizzi a disposizione del DHCP Server, si evitano conflitti sugli indirizzi IP. DHCP, tipi di assegnazione degli indirizzi DHCP permette tre tipi di assegnazione degli indirizzi ed è l’amministratore di rete a scegliere il modo in cui il DHCP server risponderà per ogni rete o per ogni host: 1. Configurazione manuale 2. Configurazione automatica 3. Configurazione dinamica Come BOOTP, anche DHCP usa l’identità del client per decidere come procedere, basandosi su MAC address e network address. Lease length policy La presenza del database consente al DHCP di riacquisire lo stesso indirizzo in seguito a un riavvio della macchina, fino allo scadere del lease. Uno dei compiti più delicati dell’amministratore è impostare la durata del lease (lease length policy) ossia dopo quanto tempo l’indirizzo assegnato a un host ritorna nel pool. Il periodo ottimale dipende dal tipo di rete e dalle necessità dell’host, in generale: - periodo lungo, offre agli host una certa stabilità (utile in caso si attendano risposte dalla rete, che farà riferimento all’indirizzo indicato nella richiesta) - periodo breve, risolve il problema del mantenere assegnato un indirizzo a un computer non più in rete. Costringe, però, un host attivo a richiedere continuamente il suo rinnovo. Appena “libero”, l’indirizzo torna a disposizione degli altri host e, quindi nel pool. Solitamente si predilige un tempo breve ma è anche possibile (molto raramente) impostare un tempo infinito. Relay agent Quando un DHCP Server è responsabile dell’indirizzamento su una subnet diversa dalla propria è necessario introdurre un relay agent (agente di ritrasmissione). Il relay agent è una macchina che non è né cliet né server ma svolge il ruolo di intermediario, occupandosi di facilitare la comunicazione tra client e server attraverso più reti. Molteplici DHCP Server Un DHCP Server può essere configurato per supportare più subnetwork e per svolgere altri compiti come mantenere i log degli accessi e delle operazioni. Quindi, perché configurare più DHCP Server su un rete? Per garantire la fault tollerance Infatti, se l’unico server si guastasse gli utenti non avrebbero la possibilità di connettersi alla rete. In una rete è, quindi, opportuno inserire un secondo DHCP Server di backup per garantire il servizio. Formato messaggi DHCP La figura dettaglia il formato del messaggio DHCP, molto simile a quello BOOTP. Infatti gli sviluppatori, considerata la diffusione di BOOTP, decisero di non modificare il formato del messaggio e di specificare nel campo Options i campi con le informazioni utili a DHCP. In questo modo un DHCP Server può rispondere alle richieste di client BOOTP. Il campo Options è di lunghezza variabile, il client deve essere preparato ad accettare ALMENO 312 ottetti di opzioni. Parametri configurazione sistemi con DHCP Il BOOTP prevedeva che un server comunicasse al client solo tre informazioni: - il suo indirizzo IP - il nome del server da cui effettuare il download del file di boot - il nome del file di boot Con l’evolversi delle reti, l’indirizzo IP NON è più l’unica informazione necessaria a una macchina per la sua configurazione di rete. Il lavoro svolto in questo ambito, ha resto DHCP uno strumento di configurazione general-purpose in cui la gestione dei parametri di configurazione della macchina diventa un elemento essenziale del processo di installazione. Ciclo di vita del DHCP lease L’affitto dell’indirizzo (DHCP lease) segue concettualmente un ciclo di vita (life cycle): - il lease dell’indirizzo è assegnato al client tramite il processo iniziale di allocazione; - se in seguito l’host effettua un reboot avrà ri-allocato il lease; - prima dello scadere della durata del lease, l’host proverà a rinnovarlo contattando il server che gliel’ha assegnato; - SE questo tentativo fallisce, l’host cerca di rinnovare il lease contattando un qualunque server disponibile sulla rete; - SE ANCHE questo tentativo fallisce, l’host ritorna allo stato iniziale e riesegue il processo di allocazione. Il client può in qualunque momento effettuare la restituzione dell’indirizzo. Stati del DHCP Client La specifica di DHCP usa una macchina a stati finiti (FSM) per descrivere il ciclo di vita del client. L’host all’inizio si trova nello stato in cui non ha alcun indirizzo IP, poi il suo stato viene modificato in base ai messaggi inviati/ricevuti e agli eventi che si verificano. La figura mostra la MSF del DHCP Client. Offerta di lease La figura mostra un esempio di scambio dei messaggi tra client e server relativi all’offerta del lease. Selezione e accettazione offerta di lease La figura mostra un esempio di scambio dei messaggi relativi alla selezione del lease e alla conseguente accettazione dell’offerta del server. La non sicurezza di DHCP DHCP utilizza i protocolli UDP e IP che sono intrinsecamente insicuri e nelle sue specifiche non si fa riferimento a possibili misure per la sicurezza. Attualmente le problematiche di sicurezza sono le più critiche, soprattutto per un protocollo come DHCP che tratta informazioni di configurazione. Possiamo dividere i problemi di sicurezza tra quelli riguardanti il server e quelli riguardanti il client in: • DHCP Server non autorizzati • DHCP Client non autorizzati DHCP Server non autorizzati DHCP Server non autorizzati: si potrebbe inserire un DHCP Server “abusivo” che risponda alle richieste del client fornendo informazioni false in modo da rendere inusabili host, oppure si forniscono informazioni di configurazioni tali da renderli utilizzabili per azioni fraudolente. DHCP Client non autorizzati DHCP Client non autorizzati: un host potrebbe essere predisposto per sembrare un certo client e ottenere le informazioni di configurazione a esso destinate ed essere poi usato per creare danni alla rete, oppure si potrebbe usare un software che genera moltissime richieste DHCP così da esaurire gli indirizzi a disposizione del server e bloccare la rete in quanto nessun altro host in seguito riuscirebbe a ottenere un nuovo indirizzo.