Corso di sistemi e reti per Informatica. Applicazioni e sicurezza in rete

230 91 5MB

Italian Pages [234] Year 2013

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Corso di sistemi e reti per Informatica. Applicazioni e sicurezza in rete

Citation preview

LIBRO DIGITALE

eBook + 1 2 3

Libro Idee per il tuo futuro

Paolo Ollari

Corso di sistemi e reti

per Informatica Applicazioni e sicurezza in rete

TECNOLOGIA

Paolo Ollari

Corso di sistemi e reti

per Informatica Applicazioni e sicurezza in rete

TECNOLOGIA

Copyright © 2013 Zanichelli editore S.p.A., Bologna [4169] www.zanichelli.it I diritti di elaborazione in qualsiasi forma o opera, di memorizzazione anche digitale su supporti di qualsiasi tipo (inclusi magnetici e ottici), di riproduzione e di adattamento totale o parziale con qualsiasi mezzo (compresi i microfilm e le copie fotostatiche), i diritti di noleggio, di prestito e di traduzione sono riservati per tutti i paesi. L’acquisto della presente copia dell’opera non implica il trasferimento dei suddetti diritti né li esaurisce.

Per le riproduzioni ad uso non personale (ad esempio: professionale, economico, commerciale, strumenti di studio collettivi, come dispense e simili) l’editore potrà concedere a pagamento l’autorizzazione a riprodurre un numero di pagine non superiore al 15% delle pagine del presente volume. Le richieste per tale tipo di riproduzione vanno inoltrate a Centro Licenze e Autorizzazioni per le Riproduzioni Editoriali (CLEARedi) Corso di Porta Romana, n.108 20122 Milano e-mail [email protected] e sito web www.clearedi.org L’editore, per quanto di propria spettanza, considera rare le opere fuori del proprio catalogo editoriale, consultabile al sito www.zanichelli.it/f_catalog.html. La fotocopia dei soli esemplari esistenti nelle biblioteche di tali opere è consentita, oltre il limite del 15%, non essendo concorrenziale all’opera. Non possono considerarsi rare le opere di cui esiste, nel catalogo dell’editore, una successiva edizione, le opere presenti in cataloghi di altri editori o le opere antologiche. Nei contratti di cessione è esclusa, per biblioteche, istituti di istruzione, musei ed archivi, la facoltà di cui all’art. 71 - ter legge diritto d’autore. Maggiori informazioni sul nostro sito: www.zanichelli.it/fotocopie/

Realizzazione editoriale: – Coordinamento editoriale: Matteo Fornesi – Collaborazione redazionale, impaginazione e illustrazioni: Conedit Libri, Cormano (MI) – Progetto grafico: Editta Gelsomini – Segreteria di redazione: Deborah Lorenzini Contributi: – Idee per il tuo futuro: Laura Mancuso, Lorenzo Lancellotti (testi); Barbara Di Gennaro, Matteo Fornesi (redazione); Miguel Sal & C., Bologna (progetto grafico e impaginazione); Sara Colaone (disegni) – L’Autore ringrazia il prof. Andrea Scauri e il prof. Massimiliano Modena per la revisione dei contenuti dei tre volumi del corso. L’Autore ringrazia inoltre gli studenti Fabio Paini e Fabio Iotti per l’aiuto nella scrittura del codice dei contenuti online Copertina: – Progetto grafico: Miguel Sal & C., Bologna – Realizzazione: Roberto Marchetti – Immagine di copertina: Artwork Miguel Sal & C., Bologna Prima edizione: marzo 2013

L’impegno a mantenere invariato il contenuto di questo volume per un quinquennio (art. 5 legge n. 169/2008) è comunicato nel catalogo Zanichelli, disponibile anche online sul sito www.zanichelli.it, ai sensi del DM 41 dell’8 aprile 2009, All. 1/B. Zanichelli garantisce che le risorse digitali di questo volume sotto il suo controllo saranno accessibili, a partire dall’acquisto dell’esemplare nuovo, per tutta la durata della normale utilizzazione didattica dell’opera. Passato questo periodo, alcune o tutte le risorse potrebbero non essere più accessibili o disponibili: per maggiori informazioni, leggi my.zanichelli.it/fuoricatalogo File per diversamente abili L’editore mette a disposizione degli studenti non vedenti, ipovedenti, disabili motori o con disturbi specifici di apprendimento i file pdf in cui sono memorizzate le pagine di questo libro. Il formato del file permette l’ingrandimento dei caratteri del testo e la lettura mediante software screen reader. Le informazioni su come ottenere i file sono sul sito www.zanichelli.it/diversamenteabili Suggerimenti e segnalazione degli errori Realizzare un libro è un’operazione complessa, che richiede numerosi controlli: sul testo, sulle immagini e sulle relazioni che si stabiliscono tra essi. L’esperienza suggerisce che è praticamente impossibile pubblicare un libro privo di errori. Saremo quindi grati ai lettori che vorranno segnalarceli. Per segnalazioni o suggerimenti relativi a questo libro scrivere al seguente indirizzo: [email protected] Le correzioni di eventuali errori presenti nel testo sono pubblicate nel sito www.zanichelli.it/aggiornamenti Zanichelli editore S.p.A. opera con sistema qualità certificato CertiCarGraf n. 477 secondo la norma UNI EN ISO 9001:2008

Indice

SEZIONE

A

Reti. Modello client/server e applicazioni

A1 Il livello 4: Trasporto 1

Connessioni

4

A2 Il protocollo UDP 1 2 3

Pacchetto UDP Comunicazioni UDP IGMP e UDP

6 8 9

A3 Il protocollo TCP 1 2 3 4

Pacchetto TCP Connessione TCP Disconnessione TCP Caratteristiche del protocollo

12 14 17 18

A4 Programmazione 1 2 3 4 5

Socket e funzioni BSD sockets Comunicazioni UDP e connessioni TCP Disconnessioni Programmazione disconnessa in UDP Programmazione connessa in TCP

ESERCIZI PER LA VERIFICA ORALE ESERCIZI PER LA VERIFICA DI LABORATORIO

Indice Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

19 21 23 24 28 34 35 III

A5 Livello 7: Applicazione 1 2 3 4 5 6 7 8 9 10 11 12 13 14

DHCP Il protocollo DHCP Sicurezza DHCP DNS Protocollo DNS Sicurezza DNS Reti Microsoft SMB Sicurezza SMB LDAP Sicurezza Active Directory HTTP Protocollo HTTP Sicurezza HTTP

ESERCIZI PER LA VERIFICA ORALE

38 39 41 41 42 48 48 49 51 52 52 55 56 58 59

A6 Internetworking 1 2 3 4 5 6

NAT Sicurezza NAT Firewall Sicurezza firewall Proxy Sicurezza proxy

61 63 64 67 68 71

A7 Internetworking: modelli 1 2 3 4 5

Reti residenziali Reti single-homed e dual-homed Reti trust/DMZ Rete modello Microsoft Virtualizzazione

72 74 75 77 78

A8 Internetworking: accesso da remoto 1 2 3 4

Terminale remoto Desktop remoto VPN Cloud computing

ESERCIZI PER LA VERIFICA ORALE

IV

Indice Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

82 83 84 86 90

SEZIONE

B

La sicurezza nei sistemi informatici

B1 ISO 27001 1 2

Sistema di Gestione per la Sicurezza delle Informazioni Terminologia

93 95

B2 Il quadro normativo in Italia 1 2 3 4

Frode e crimini informatici La riservatezza La Pubblica Amministrazione Firma elettronica

97 100 103 105 107

ESERCIZI PER LA VERIFICA ORALE

B3 Sicurezza informatica 1 2 3 4 5 6 7

Crittografia a chiave simmetrica Crittografia a chiave asimmetrica Sintesi di messaggi Autenticazione Segretezza Firma digitale Identità e distribuzione delle chiavi

108 112 118 119 125 126 127 129

ESERCIZI PER LA VERIFICA ORALE

B4 Protocolli per la sicurezza 1 2 3 4 5 6 7

CHAP WPA2 RADIUS Kerberos IPsec SSL/TLS HTTPS

131 132 133 135 138 140 142 146

ESERCIZI PER LA VERIFICA ORALE

Appendice 1 2

IP multicast Sliding Window TCP

147 149 Indice

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

V

3 4 5 6 7 8 9

Protocolli applicativi per reti Microsoft Android e TCP/IP Configurazione DHCP e DNS Antologia normativa sulla sicurezza informatica in Italia Server Web Posta elettronica Esame di Stato

Indice analitico

VI

Indice Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

152 155 163 170 174 179 182

217

Idee per il tuo futuro CHE COSA FARÒ DA GRANDE

www.ideeperiltuofuturo.it

Sei alla fine del tuo percorso scolastico. Che cosa fare adesso? Iscriversi a un corso universitario? Fare uno stage o un corso professionalizzante? Cercare di entrare subito nel mondo del lavoro? Studiare e al contempo lavorare? Per aiutarti nella scelta ti proponiamo alcuni dati relativi al 2009-2011. È impossibile dire come saranno le cose tra qualche anno, i tempi recenti ci hanno abituati a cambiamenti anche repentini. La laurea “paga”. Una recente ricerca Isfol 1 ha mostrato che chi è laureato ha più possibilità di trovare un’occupazione e in media riceve uno stipendio più alto rispetto a chi possiede soltanto un diploma. Dal momento che i diplomati entrano nel mondo del lavoro prima dei laureati, inizialmente il tasso di occupazione per i primi è superiore rispetto a quello dei secondi, ma già prima del compimento dei 30 anni chi possiede una laurea ha più possibilità di trovare lavoro, per arrivare nella fascia 34-44 anni, dove il tasso di occupazione dei laureati supera del 7% quello dei diplomati. In media tra 25 e 64 anni è occupato il 73,1% dei diplomati e il 79,2% dei laureati. Secondo uno studio OCSE del 2011 i giovani laureati subiscono di più gli effetti della recente crisi economica rispetto ai loro coetanei con istruzione secondaria inferiore2. Quali lauree valgono un lavoro? Le lauree “brevi” servono? Le lauree triennali si rivelano molto utili ai fini dell’occupazione: a un anno dal termine degli studi il 42,1% dei laureati triennali lavora, con picchi dell’81,7% per le professioni sanitarie. Tirocini e stages sono determinanti per formare e inserire questi laureati nel mondo del lavoro. I tassi di occupazione più alti si hanno tra i medici, seguiti dai laureati in chimica farmaceutica e ingegneria. In generale sono le discipline di tipo scientifico – sia a livello di diploma sia a livello di laurea – le più spendibili nel mondo del lavoro, mentre le discipline umanistiche condannano a una difficile collocazione sul mercato, anche a fronte di un eccesso di offerta di laureati in questi ambiti. A Nord c’è più lavoro, ma… A livello nazionale il tasso di disoccupazione è 7,8%, che sale a 27,4% se si considerano solo i giovani (15-24 anni): più alto al Sud (39,2%), meno al Centro (25,3%), più basso al Nord (19,0%). La situazione per le ragazze è più critica: il tasso della disoccupazione femminile, nella fascia 15-24 anni, supera di circa 8 punti percentuali quello maschile (32,3% per le donne, 23,9% per gli uomini), forbice che si mantiene simile nelle diverse zone geografiche: al Nord il tasso è 22,7% per le donne e 16,4% per gli uomini; al Centro è 34,8% per le donne e 18,7% per gli uomini e a Sud è di 44,0% per le donne e 36,0% per gli uomini. Tuttavia i dati della disoccupazione giovanile non devono scoraggiare chi cerca lavoro: se la disoccupazione giovanile è del 27,4%, vuol dire che una parte non piccola dei giovani che hanno cercato lavoro (il 72,6%) lo ha trovato3. Inoltre i dati variano molto da luogo a luogo e anche all’interno di una stessa regione può esservi una grande varietà di situazioni. L’Emilia-Romagna è tra le regioni in cui la disoccupazione giovanile incide meno, ma con grandi differenze tra le province: se Bologna nel 2010 raggiunge un tasso di disoccupazione di 29,2%, a Piacenza il valore è più che dimezzato (13,6%)4.

1 Tutti i dati sono tratti da una ricerca Isfol con dati relativi al 2010, (l’Isfol, Istituto per lo Sviluppo della Formazione Professionale dei Lavoratori è un ente pubblico di ricerca), e ISTAT del II Trimestre 2011. 2 Rapporto OCSE Education at a Glance 2011. 3 Dati ISTAT del II Trimestre 2011. 4 Dati Confartigianato Imprese EmiliaRomagna, 2010.

VII Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

COME FUNZIONA L’UNIVERSITÀ L’Università italiana offre corsi di studio organizzati in tre cicli:

POSSO ISCRIVERMI ALL’UNIVERSITÀ? Per iscriversi all’Università è necessario il diploma di maturità quinquennale oppure quello quadriennale con un anno integrativo o, in alternativa, un obbligo formativo aggiuntivo da assolvere durante il primo anno di corso.

Quanto costa l’Università? www. ideeperiltuofuturo.it

Il mio diploma è riconosciuto in Europa? http://www.enicnaric.net/

Vorrei studiare negli USA www. ideeperiltuofuturo.it

laurea, di durata triennale (180 crediti formativi in un massimo di 20 esami), al termine della quale si consegue il titolo di Dottore; ad esempio laurea in Tecniche di radiologia medica o in Scienze del comportamento e delle relazioni sociali. Laurea magistrale, di durata biennale (120 crediti in un massimo di 12 esami), al termine della quale si consegue il titolo di Dottore magistrale; ad esempio laurea in Biotecnologie mediche o in Psicologia clinica. Dottorato di ricerca e Scuola di specializzazione. Esistono anche corsi di laurea magistrali a ciclo unico, della durata di 5 (300 crediti in un massimo di 30 esami) o 6 anni (360 crediti in un massimo di 36 esami); ad esempio Medicina e Chirurgia. Per approfondire gli studi si può accedere a master di 1° e di 2° livello e ai corsi di alta formazione. I crediti formativi universitari (CFU) misurano il carico di lavoro dello studente (1 CFU = 25 ore di impegno; 60 CFU = 1 anno di impegno universitario), compresi lo studio individuale ed eventuali esperienze di apprendistato5. Sono stati introdotti per facilitare il confronto tra i sistemi e i programmi di differenti corsi e Atenei italiani ed europei, e quindi il passaggio da un corso di studio a un altro, oppure da un’Università a un’altra, anche straniera: i CFU sono trasferibili in ECTS (European Credit Transfer and Accumulation System) e quindi riconosciuti nelle Università di tutta Europa. Tramite i CFU è possibile valutare ai fini della laurea anche esperienze quali stages e tirocini. Infine i CFU permettono di semplificare la determinazione dei piani di studio individuali (PSI) che ciascuno studente può modulare su se stesso. In alcuni casi è possibile personalizzare il proprio percorso di studi, inserendo nel piano degli esami da sostenere alcuni corsi non previsti dal piano di studi istituzionale. Quando si presenta il PSI bisogna rispettare il minimo di crediti obbligatori per ciascun ambito disciplinare previsti dal proprio corso di laurea. Vorrei studiare in Europa. I cittadini dell’Unione europea (UE) possono studiare, dalla scuola primaria al dottorato di ricerca, in uno dei paesi UE. Per facilitare questi scambi è stato creato Ploteus, il portale delle opportunità di apprendimento (www.europa.eu/ploteus): programmi di scambio, borse di studio, descrizioni dei sistemi di istruzione e apprendimento dei vari paesi europei, nonché indicazioni dei siti web degli istituti di istruzione superiore, i database dei corsi di formazione, le scuole... Attraverso Ploteus è possibile anche avere notizie pratiche, ad esempio su come raggiungere la località e dove alloggiare, sul costo della vita, le tasse, i servizi cui si può accedere.

5 Regolamento recante norme concernenti l’autonomia didattica degli atenei, Decreto Ministeriale 3 novembre 1999, n.509

VIII Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

DOVE SI STUDIA INFORMATICA La classe dei corsi di laurea dove l’informatica è il principale oggetto di studio è quella di scienze e tecnologie informatiche, che comprende: Informatica: fornisce conoscenze di base di algebra, del calcolo differenziale e di quello integrale, affiancate da conoscenze sui linguaggi di programmazione, gli algoritmi e i sistemi operativi; inoltre prevede attività di laboratorio mirate a sviluppare metodi di programmazione e di progettazione dei sistemi informatici. Dopo la laurea triennale esistono diversi corsi magistrali, come quelli in: sistemi informatici, tecnologie informatiche, modelli computazionali. Informatica per il management: fornisce le conoscenze di base nel campo dell’informatica e dell’utilizzo di internet in ambito sociale ed economico. Il laureato acquisisce le capacità per applicare sistemi informatici nell’organizzazione e comunicazione di informazioni e nei relativi processi di elaborazione in ambito aziendale. Comunicazione digitale: fornisce le conoscenze teoriche e pratiche per progettare, realizzare, organizzare e gestire la comunicazione attraverso sistemi informatici, telematici e multimediali.

Per saperne di più www progettolauree scientifiche.eu

Informatica musicale: mira a formare professionisti qualificati nell’area della comunicazione musicale che trovano la loro collocazione nei campi dell’editoria, dei nuovi media, del commercio, della televisione e della pubblicità. Corsi di laurea particolari che si occupano di aspetti legati all’informatica sono: Tecnologie web e multimediali: fornisce competenze per operare nel campo della progettazione, dello sviluppo, della gestione e della manutenzione di applicazioni internet e multimediali. Il laureato trova impiego sia in ditte specializzate nel settore, sia nei gruppi editoriali, nelle agenzie di marketing o di pubblicità. Comunicazione multimediale e tecnologie dell’informazione: affianca le competenze tecnologiche con quelle umanistiche al fine di sviluppare la capacità di progettare e gestire nuovi media digitali. Esistono numerosi indirizzi del corso di laurea in ingegneria nei quali si affronta l’informatica in modo approfondito. Ingegneria informatica Ingegneria elettronica Ingegneria delle telecomunicazioni Ingegneria elettronica e delle telecomunicazioni Ingegneria dell’automazione Ingegneria biomedica Infine esistono corsi di laurea, come quello di matematica e di fisica, in cui occorre sostenere un esame obbligatorio di informatica, mentre nella maggior parte degli altri, come economia, scienze politiche e lingue straniere, gli studenti devono superare la prova di idoneità informatica. Questa prova obbligatoria è volta ad accertare le conoscenze informatiche di base e, pur prevedendo una valutazione positiva o negativa, non dà luogo ad alcuna votazione.

IX Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Qui trovi tante informazioni in più e le prove assegnate negli ultimi anni http:// accessoprogrammato. miur.it.

Qui trovi tante informazioni in più e degli esempi di test www.cisiaonline.it.

I TEST DI AMMISSIONE L’accesso ad alcuni corsi di laurea è filtrato da una prova di ammissione, per iscriversi alla quale occorre versare un importo (attorno ai 60 euro): sono medicina e chirurgia, odontoiatria e protesi dentaria, medicina veterinaria, le lauree a ciclo unico finalizzate alla formazione in altre professioni sanitarie e in architettura.

Informatica

Ingegneria

Per gli studenti che desiderano iscriversi ad uno dei corsi di laurea di informatica esiste un test di accesso obbligatorio ai fini dell’immatricolazione. La prova d’ingresso ha carattere nazionale e i quesiti sono a cura della Conferenza dei Presidi delle Facoltà di Scienze MM.FF.NN. Il modulo di logica e matematica di base è costituito da 25 domande a risposta multipla, con una soglia di sufficienza di 13 risposte corrette. L’esito negativo non preclude l’iscrizione degli studenti al corso di laurea, ma assegna loro un obbligo formativo aggiuntivo (OFA), che può prevedere il superamento di ulteriori prove entro certi limiti di tempo e che può condizionare il proseguimento degli studi.

Gli studenti che desiderano immatricolarsi ai corsi di laurea di ingegneria devono sostenere una prova di ammissione, che si svolge con modalità identiche per tutti i differenti corsi di laurea. Questo test iniziale ha uno scopo orientativo per alcuni corsi, mentre ha una vera e propria funzione selettiva per i corsi a numero chiuso (come quello di Ingegneria Edile-Architettura) dove la disponibilità è inferiore al numero degli aspiranti. La prova consiste nel rispondere ad una serie di 80 quesiti a risposta multipla, suddivisi in cinque aree tematiche. Ogni quesito prevede cinque risposte, delle quali solamente una è corretta. La risposta giusta attribuisce 1 punto, l’errore penalizza di –0,25 punti e l’assenza di risposta vale 0 punti. La prova è divisa in 5 sezioni così strutturate: 15 quesiti di logica, 15 domande di comprensione del testo, 20 quesiti di matematica, 20 quesiti di scienze fisiche e chimiche e ulteriori 10 quesiti di matematica. Il tempo fornito per svolgere ogni sezione della prova è prestabilito e viene indicato dai singoli atenei. Di seguito sono riportati alcuni quesiti delle varie sezioni della prova di ammissione alle facoltà di ingegneria del 2005 predisposta dal CISIA (Consorzio Interuniversitario Sistemi Integrati per l’Accesso).

Per informazioni dettagliate ed esempi di test con le relative soluzioni si consiglia di consultare il sito http://www.testingressoscienze.org/. Di seguito sono riportati alcuni quesiti della prova di ammissione alle facoltà di Scienze MM.FF.NN. assegnata dall’Università di Bologna nel 2009.

01 a b c d

Siano dati due numeri reali qualsiasi a, b. Quale delle seguenti identità è falsa? (a u b)2 = a2 u b2 a:a=0 a+b=b+a (a – b) u (a + b) = a2 – b2

02

Si consideri l’affermazione “Condizione sufficiente affinché una persona abbia la patologia P, è che esibisca il sintomo S”. Questo significa che: a Tutte le persone che hanno la patologia P esibiscono il sintomo S b Tutte le persone che esibiscono il sintomo S hanno la patologia P c Esiste almeno una persona con il sintomo S che non ha la patologia P d Se una persona ha la patologia P, allora esibisce il sintomo S

01

a

02

Una squadra di operai deve asfaltare una piazzola circolare. Arrivata sul posto, scopre che la piazza ha diametro doppio del previsto. Quanto asfalto serve, rispetto a quello preventivato? a Non si può rispondere se non si conosce o il raggio previsto o quello effettivo b Una quantità S2 volte quella prevista c Il doppio d Il quadruplo e Una quantità 2S volte quella prevista

03 03

Se modifico i lati a e b di un rettangolo allungandoli del 10%, l’area del rettangolo aumenta a del 10% c dell’ 11% b del 20% d del 21%

Un circuito è costituito da una batteria da 36 V, un gruppo di due resistenze in parallelo da 6 : e da 3 : rispettivamente, una resistenza in serie di valore R sconosciuto. In queste condizioni la corrente circolante è 3 A. Assumendo che la resistenza interna della batteria sia trascurabile, il valore della resistenza R è: b 2 :  c 12 : d 18 : e 4: 10 :

a

Aldo, Bea, Carlo, Dario, Ebe, Franco vanno in treno e trovano uno scompartimento a sei posti libero. Considerando che Aldo e Bea devono stare vicino al finestrino, quanti modi diversi hanno i sei amici di disporsi nello scompartimento? b 4 c 240 d 8 e 10 48

X Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

VERSO IL LAVORO Vorresti trovare lavoro? Nelle pagine che seguono trovi informazioni su come e dove cercare lavoro, cos’è lo stage, come scrivere un curriculum e una lettera di accompagnamento, come sostenere un colloquio. Sul sito www.ideeperiltuofuturo.it trovi tante informazioni utili e dettagliate in più per aiutarti nella tua ricerca in Italia e all’estero: i centri per l’impiego e i Career days, siti internazionali, una panoramica dei contratti di lavoro e altro ancora.

Vuoi cercare lavoro all’estero? www. ideeperiltuofuturo.it

La ricerca di lavoro in Italia. Per mettere in contatto domanda e offerta di lavoro esistono in Italia numerosi soggetti, sia pubblici sia privati, autorizzati dallo Stato a svolgere servizi di intermediazione e collocamento. Sono i Centri per l’impiego (CIP), le Agenzie per il lavoro, la Borsa continua nazionale del lavoro (BCNL) e il portale «Cliclavoro». Anche le scuole secondarie di secondo grado, le Università, i comuni, le associazioni dei datori di lavoro e dei lavoratori, i patronati, i gestori di siti internet possono svolgere attività di intermediazione, purché non abbiano fini di lucro. Cercare lavoro tra le pagine dei giornali. Un canale tradizionale ma sempre valido per chi cerca annunci di lavoro è rappresentato da supplementi e inserti delle maggiori testate a diffusione nazionale e dai giornali specializzati; ne segnaliamo alcuni fra i principali: il supplemento «Tutto Lavoro» del lunedì della «Stampa»; le pagine dedicate al lavoro il giovedì dalla «Repubblica»; il supplemento «Corriere lavoro», con la sezione «Trovo Lavoro», del «Corriere del la Sera» del venerdì; il supplemento «Carriere&Lavoro» del «Sole 24Ore» del venerdì tocca temati che relative al nuovo mercato del lavoro attraverso inchieste e dossier, e fornisce strumenti e notizie utili per cambiare mestiere e migliorare la propria carriera. Fra i giornali specializzati: il settimanale «Trova Lavoro» con annunci dall’Italia e dall’estero e una selezione dei concorsi tratti dalla Gazzetta Ufficiale; «Walk on Job» , un bimestrale distribuito gratuitamente in 41 città italiane, che dà spazio al mondo del lavoro e della formazione, con inchieste, interviste, notizie e opportunità prima e dopo la laurea; il mensile «Bollettino del Lavoro». Cercare lavoro online. Accanto alla versione cartacea dei supplementi dei giornali, si trova anche la versione online, col vantaggio di consentire un aggiornamento continuo degli annunci, l’inserimento immediato del proprio curriculum in apposite banche dati, di inviare direttamente la propria candidatura in risposta alle offerte di lavoro, di ricevere gli annunci sulla propria e-mail. Tra le versioni online segnaliamo «Job24» del «Sole 24Ore» e «MioJob» della «Repubblica». Tra i più importanti (e seri) siti per la ricerca di lavoro indichiamo Monster (www. monster.it) e Infojobs (www.infojobs.it). Da consultare è anche il sito www.concorsi.it, che informa sui concorsi pubblici banditi in Italia. Per quanto riguarda i social network professionali si segnalano Linkedin (www.linkedin.com) e Xing (www.xing.com) che, oltre a funzionalità come “find job” offrono la possibilità di entrare a far parte di gruppi di discussione utili alla crescita professionale.

LA TOP TEN DEI LAVORI IN ITALIA Non hai un’idea precisa di cosa vorresti fare? Alcune figure professionali sono molto ricercate in Italia, ecco la top ten dei profili lavorativi più ricercati in Italia nel 2011, secondo il quotidiano “Il Sole 24 Ore”. 1) Farmacista 2) Progettista settore metalmeccanico 3) Infermiere 4) Addetto consulenza fiscale 5) Sviluppatore software 6) Progettista meccanico 7) Educatore professionale 8) Addetto logistica 9) Disegnatore tecnico Cad-Cam 10) Fisioterapista (Fonte: Union CamereExcelsior 2011)

XI Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

CURRICULUM VITAE E LETTERA DI ACCOMPAGNAMENTO

Scarica il CV Europass www.europassitalia.it

Il Curriculum Vitae. Quando si è alla ricerca di un lavoro, prima o poi arriva il momento di inviare (per posta ordinaria o per e-mail) il proprio Curriculum Vitae (CV) e una lettera di accompagnamento alle aziende per le quali si desidera lavorare, sperando di essere chiamati per un colloquio. Il CV è la carta di identità professionale del candidato e deve indicare l’iter formativo, le conoscenze e le competenze di chi si propone per ottenere un impiego. Si comincia sempre dai dati anagrafici, per un’inquadratura iniziale, e dai contatti (indirizzo, numero di telefono, cellulare, e-mail...), per poi passare in rassegna le precedenti esperienze lavorative e le varie tappe della propria istruzione/formazione, dalla più recente alla più lontana nel tempo. Altre informazioni indispensabili riguardano la padronanza di una o più lingue straniere e le competenze tecniche; conviene anche mettere in rilievo le capacità relazionali e organizzative, se si posseggono. Per quanto riguarda altre informazioni personali, è meglio inserire solo quelle che possono essere apprezzate dalla specifica azienda cui è indirizzato il CV. Infine, non bisogna mai dimenticare di autorizzare il trattamento dei dati personali, facendo riferimento al d. lg. 196/2003. Un CV efficace sarà completo, chiaro e soprattutto breve (due pagine di solito sono sufficienti): bisogna tenere conto che chi lo legge è abituato a valutarne decine tutti i giorni e apprezzerà il fatto di trovare subito le informazioni che gli interessano. Meglio selezionare solo le aziende che più si avvicinano al proprio profilo professionale e scrivere per ciascuna una lettera di accompagnamento mirata. I portali che si occupano di selezione del personale solitamente danno la possibilità di compilare CV online, secondo modelli prestabiliti; oppure si può preparare da soli il CV e poi caricarlo sul sito su cui ci si vuole proporre. La lettera di accompagnamento (o cover letter ) va preparata con molta attenzione perché serve a convincere il selezionatore a prendere in considerazione l’offerta di lavoro e quindi a esaminare il CV. La forma deve essere curata e corretta, per dimostrare un buon livello di istruzione. La lettera di accompagnamento è una e-mail (o una lettera) dalla quale devono emergere in maniera sintetica (dieci righe al massimo) le motivazioni del candidato, le competenze, i titoli, le esperienze che rendono la persona adatta per quel posto di lavoro. Sintetici sì, ma non vaghi o generici: l’impegno nello scrivere la lettera sta proprio nel risultare sinceri, con le idee chiare ma anche aperti a varie possibilità. La lettera deve far capire che si conosce, anche se dal di fuori, l’azienda e che se ne comprendono le necessità. Per avere queste informazioni è necessario visitarne il sito internet ma anche, ad esempio, cercare e, se si può, sperimentare i prodotti di quell’azienda. In questo modo sarà più facile mettersi dal punto di vista dell’azienda stessa, capire quali competenze potrebbero essere utili e puntare su quelle.

XII Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

CURRICULUM VITAE E LETTERA DI ACCOMPAGNAMENTO

Le possibilità di essere valutati crescono se la busta che contiene lettera e CV, o l’email, è indirizzata al direttore del settore nel quale vorremmo lavorare e non genericamente all’impresa o, ad esempio, all’ufficio delle risorse umane. In questo caso bisogna fare accurati controlli per essere certi di scrivere correttamente il nome, il titolo di studio, la posizione che ricopre la persona a cui indirizziamo la lettera ed essere sicuri che effettivamente lavori ancora lì.

Una lettera di accompagnamento. Carla è diplomata in Servizi per l’agricoltura e lo sviluppo rurale. Ha sfruttato un periodo di lavoro part-time in un call center per avere il tempo di cercare un corso di formazione che faccia al caso suo. Dopo ha frequentato un corso della Regione di 180 ore in Sicurezza alimentare. Nel frattempo visita i siti di varie aziende della zona in cui abita e ne individua alcune cui decide di inviare il CV. ELDQFRODWWH#ODPR]]DUHOODLW La ditta dove vorrebbe lavorare è “La Mozzarella”, che produce latte e deriva2IIHUWD GL FROODERUD]LRQH ti. Nel sito si insiste sulla qualità dei prodotti unita al rispetto dell’ambiente. (JU GRWW %LDQFRODWWH A chi vuole lavorare per “La MozKR IUHTXHQWDWR O¶,VWLWXWR SURIHVVLRQDOH SHU L 6HUYL]L SHU O¶DJULFROWXUD H OR VYLOXSSR UXUDOH GL $« GLSORPDQGRPL FRQ  'L UHFHQWH KR VHJXLWR XQ FRUVR GL VSHFLDOL]]D]LRQH zarella” è richiesta personalità, grinta GHOOD 5HJLRQH %« LQ 6LFXUH]]D DOLPHQWDUH FKH YHUWHYD VXOOH PRGHUQH WHFQLFKH GL DQDOLVL e condivisione dei valori dell’azienda. GHJOL DOLPHQWL Con una telefonata Carla verifica che il ,O YRVWUR QRPH FKH FRQRVFR VLQ GD SLFFROD SHU PH q VLQRQLPR GL VHULHWj H DI¿GDELOLWj responsabile della sicurezza alimentare H FRQGLYLGR O¶RELHWWLYR GL SXQWDUH VXOOD TXDOLWj H OD VRVWHQLELOLWj GHOOD SURGX]LRQH H VXO ULVSHWWR SHU O¶DPELHQWH PL q VHPSUH SLDFLXWD O¶LGHD GL ODYRUDUH QHOO¶DUHD GHOOD è il dott. Biancolatte. SURGX]LRQH H GHO FRQWUROOR DOLPHQWDUH H LQ SDUWLFRODUH QHOOD SURGX]LRQH GHL ODWWLFLQL Ecco la lettera di accompagnamento FKH DSSUH]]R PROWR SHUWDQWR YL FKLHGR JHQWLOPHQWH GL LQIRUPDUPL ULJXDUGR DOOD YRVWUD scritta da Carla. GLVSRQLELOLWj /H SRUJR L PLHL SL FRUGLDOL VDOXWL &DUOD %LDQFKL

XIII Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

IL COLLOQUIO E LO STAGE

E se mi fanno una domanda assurda? www. ideeperiltuofuturo.it

Il colloquio. La strategia per la buona riuscita di un colloquio di lavoro comincia nel momento in cui si viene contattati. Innanzitutto è importante rispondere subito e con gentilezza alla convocazione (che sia arrivata per telefono, lettera o e-mail) e presentarsi puntuali all’appuntamento. Per evitare ritardi, conviene informarsi bene su come raggiungere la sede del colloquio e partire con largo anticipo, così da non arrivare trafelati all’incontro. Il successo di un colloquio dipende anche da una serie di informazioni che sarà stato possibile raccogliere sull’azienda e utilizzare a proprio vantaggio. Ad esempio, per decidere quale sia l’abbigliamento più adatto, uno sguardo allo stile dell’azienda è consigliato. Basterà poi adattare questo stile al proprio e alla posizione alla quale si aspira. Se, ad esempio, cerchiamo lavoro in banca potrebbe essere una buona idea non mettere i jeans, se si tratta di un’azienda di grafica che ha uno stile giovane e casual i jeans andranno benissimo. Conoscere l’azienda per la quale si desidera lavorare è importante anche per mostrare in maniera mirata le competenze di cui si dispone, nonché interesse e sintonia con quella specifica linea imprenditoriale. Quando ci si trova di fronte alla persona incaricata della selezione bisogna mostrarsi sicuri e determinati senza essere spavaldi o sbruffoni. Non conviene mentire a proposito delle esperienze lavorative precedenti o essere disonesti riguardo alle proprie capacità: prima o poi si verrà scoperti, magari nel momento meno opportuno... È invece importante mostrarsi positivi, disponibili a imparare e a risolvere problemi. I reclutatori rivolgono al candidato una serie di domande, a volte prevedibili, che possono riguardare la sfera personale (ad esempio “Da quanto tempo cerca lavoro?”...) o la sfera professionale: sia sulle esperienze passate (ad esempio: “Mi parli del suo curriculum”, “Perché ha scelto proprio quel corso di studi?”...), sia sul lavoro per cui si è a colloquio (ad esempio “Cosa sa della nostra azienda?”, o anche “Perché dovremmo assumerla?”). Alcune aziende preparano un colloquio di gruppo, per osservare in che modo i candidati interagiscono tra loro, collaborano, affrontano alcune situazioni critiche che simulano quelle reali. In questi casi il consiglio è di non essere eccessivi: la cosa migliore è mostrare senso pratico e capacità di mediare e partecipare o guidare il gruppo verso la soluzione del problema. Lo stage (tirocinio formativo o internship). Si tratta di un’esperienza professionale utile per chi si avvicina al mondo del lavoro per la prima volta, per accrescere le proprie competenze e arricchire il Curriculum Vitae, anche perché è difficile trovare un impiego senza avere precedenti esperienze. Lo stage non rientra nelle tipologie di lavoro subordinato poiché è obbligatoria per il tirocinante solo un’assicurazione in caso di infortunio (e non lo stipendio). Per quantificare l’utilità dello stage è stato creato il sistema dei crediti formativi, ossia un punteggio che il giovane studente guadagna nel corso del suo tirocinio e che può spendere ai fini formativi: di diploma, per gli studenti del quinto anno di scuola media superiore; di esame o di laurea, per gli universitari. Un’esperienza di stage può anche arrivare a sostituire un esame universitario: è sufficiente certificare che l’esperienza svolta durante lo stage va a integrare le conoscenze acquisite nell’arco degli studi, completandole e arricchendole.

XIV Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

SEZIONE

A

Reti. Modello client/server e applicazioni Per affrontare adeguatamente i temi contenuti in questa sezione bisogna avere una sufficiente competenza su alcuni argomenti prerequisiti. Per verificare se la conoscenza necessaria degli argomenti è sufficiente, svolgere questa breve attività di autovalutazione. Se non si è in grado di rispondere a una domanda o si è solo parzialmente certi della risposta data, è meglio considerare la risposta come errata ai fini dell’autovalutazione. 1 a

In un protocollo disconnesso i pacchetti b arrivano, ma in disordine d non arrivano

possono non arrivare c arrivano ordinatamente 2 a 3 a 4

Il protocollo ICMP serve da supporto per il protocollo b TCP c Sliding Window

MAC

I protocolli a finestra scorrevole servono per b il controllo del flusso

il controllo dell’errore

c

d

IP

la parità

Il piggybacking si utilizza nelle comunicazioni b simplex c full duplex

a

half duplex

5

I seguenti apparati separano i domini di broadcast b managed switch e router d router e switch

a

d

d

il MAC

di tipo disconnesso

hub e switch c switch e managed switch 6

Gli indirizzi di livello 2 o MAC address sono sempre univoci

a

su scala mondiale b su reti private c non sono univoci d all’interno di una certa rete

7

Gli indirizzi di livello 3 (per esempio, IP address) sono sempre univoci b non sono univoci

a

su scala mondiale c solo su reti private 8

connesso c generalmente disconnesso a

all’interno di una certa rete

b

disconnesso simplex

Il protocollo IP è di tipo

a

9

d

d

Un pacchetto MAC di broadcast viene inoltrato automaticamente su tutte le porte di b un router c un host d un modem

uno switch

10 Per impostare a 0 i 4 LSb di v e lasciare invariati gli altri 4 bit, si esegue a v AND f0h b v OR 0fh c NOT v d v AND 00h 11 Un thread è: a uno speciale indirizzo IP c un sottoprocesso clone del padre 12 Un thread termina... a non termina c

solo se termina il processo padre

b d

b d

un sottoprocesso un programma in base ai suoi criteri locali solo quando termina il programma

Conoscenza necessaria: 10 risposte corrette. Risposte corrette: a d b c b a d b a a b b

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

A1

Il livello 4: Trasporto

Una volta giunti a destinazione attraverso i protocolli di livello 3 Rete (per esempio, IP), i messaggi contenuti nei pacchetti devono essere consegnati correttamente e ordinatamente ai livelli superiori operanti sugli End System (ES), come per esempio il livello 7 Applicazione operante su un host. Questo è il compito del livello 4 Trasporto (Transport Layer). Siccome gran parte dei protocolli di livello 4 operano quasi esclusivamente sugli ES (host mittente e host destinatario), il livello 4 è definito come livello end-to-end, analogamente a come il livello 2 Collegamento Dati era definito point-to-point. Come per il livello 2 e il livello 3, dove i pacchetti venivano indicati con nomi particolari (rispettivamente trame e datagrammi), anche il livello 4 chiama spesso i pacchetti con un nome particolare: segmenti. Siccome i livelli superiori possono generare messaggi anche molto ampi, il livello di trasporto deve essere in grado di frammentare i messaggi in segmenti (pacchetti) per rispettare l’MTU del livello di rete, e quindi ricompattare i segmenti in arrivo per ottenere il messaggio originale. A

M

utente

utente

L7 Applicazione L6 Presentazione

R2

R3

L5 Sessione L4 Trasporto

R6

R1

L3 Rete L2 Dati L1 Fisico

R4

R5

È importante ricordare che il livello 4 di Trasporto non ha come mittente e destinatario un host o un nodo di rete, bensì un processo in esecuzione su un host (normalmente un’applicazione utente o un servizio del sistema operativo). Un nodo potrebbe quindi possedere vari processi che intendono comunicare in rete. Il livello 4 di Trasporto deve identificarli affinché i flussi possano giungere al processo corrispondente del 2

A1

Il livello 4: Trasporto

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

destinatario, dato che anche il destinatario potrebbe avere più processi che intendono comunicare in rete. L’identificazione dei diversi flussi di un mittente (multiplazione) deve essere realizzata in modo tale che al processo ricevente sul destinatario giungano i flussi appropriati (demultiplazione). Per identificare e consegnare i flussi il livello 4 di Trasporto deve usare uno schema di indirizzamento. Gli indirizzi del livello 4 sono generalmente detti TSAP (Transport SAP). Quando il livello inferiore 3 (Rete) è disconnesso, il livello 4 (Trasporto) deve garantire tutti i servizi orientati alla connessione che il livello 3 non ha realizzato. Dovendo garantire la ricezione completa e ordinata della sequenza dei segmenti originali tramite richieste di ritrasmissione (di pacchetti errati, persi o ritardati), il livello 4 si trova a dover affrontare problemi di gestione del flusso, dell’errore e della congestione. Infatti i segmenti, trasportati dal livello 3 di Rete attraverso varie macchine intermedie, potrebbero incontrare vari nodi lenti, incapaci di sostenere il traffico originale; così come il nodo finale di destinazione potrebbe essere di capacità limitate rispetto al nodo mittente. In definitiva il livello 4 di Trasporto deve espletare le seguenti funzioni: ˜ indirizzamento e multiplazione a livello applicativo, cioè distinguere i flussi destinati a determinate applicazioni sugli host destinatari e, in ricezione, riconoscere i flussi che giungono per consegnarli alla relativa applicazione; ˜ frammentazione (e ricomposizione) del messaggio in segmenti numerati, per rispettare l’MTU del livello Rete; ˜ instaurare connessioni, se il livello di Rete non era connesso; pertanto anche riordinare le sequenze e recuperare gli errori; ˜ controllare il flusso, per evitare congestioni o sincronizzare host lenti con host veloci. Il livello di Trasporto è il livello classico utilizzato dai programmatori per scrivere il software di rete delle applicazioni utente (software di rete posizionato, per esempio, a livello 7 Applicazione). L’implementazione del livello di Trasporto è integrata al sistema operativo e i programmatori possono accedervi attraverso le chiamate di API (Application Program Interface) appositamente messe a disposizione dal sistema operativo. L’insieme delle librerie di sistema operativo disponibili al programmatore e che implementano le funzionalità di trasporto è detto entità di Trasporto. Ogni specifico linguaggio operante su un determinato sistema operativo fornisce normalmente un set di istruzioni (SDK, Software Development Kit) che adatta la sintassi di quel linguaggio alle chiamate del livello di Trasporto del sistema operativo (l’entità di Trasporto). Tra i protocolli di livello 4 Trasporto più diffusi sulle reti si ricordano UDP (User Datagram Protocol), TCP (Transmission Control Protocol), NBF (NetBIOS Frames protocol), TPx (OSI Transport Protocol class 0-4).

A1

Il livello 4: Trasporto

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

3

1

Connessioni

Molto spesso il livello 4 di Trasporto è connected oriented e quindi deve instaurare una connessione, ovvero creare un canale affidabile attraverso il quale mittente e destinatario possono scambiarsi messaggi attraverso i segmenti senza che siano corrotti da errori o persi durante il tragitto. Le connessioni sono gestite con tecniche di ARQ (Automatic RepeatreQuest, cfr. Sistemi e reti, vol. 1, Controllo di flusso) che confermano i segmenti o ne richiedono la ritrasmissione. L’instaurazione di una connessione è quindi un momento critico, che deve essere a sua volta affidabile dato che mittente e destinatario normalmente non operano sulla stessa rete fisica (contrariamente alle connessioni di livello 2 Data Link). Tutte le connessioni in rete soffrono potenzialmente del problema delle «due armate», schematizzato in figura: l’armata blu ha la superiorità numerica e se i due manipoli attaccano in modo coordinato (per esempio, alla stessa ora), l’armata blu ha buone probabilità di vittoria sull’armata bianca. Il fatto è che la comunicazione dell’ora dell’attacco deve essere confermata dal manipolo sull’altro lato, altrimenti nessuno dei due gruppi deciderebbe di attaccare con il rischio di rimanere in inferiorità. È impossibile che la conferma dell’ora dell’attacco sia certa da entrambi i lati, dato che la conferma stessa soffre dello stesso problema: il manipolo dall’altra parte ha la sicurezza che la sua conferma dell’ora sia stata ricevuta?

Il problema viene spesso affrontato tramite un accordo pragmatico per cui se le conferme reciproche sono state scambiate, allora si considera la comunicazione stabilita e l’accordo accettato. In altri termini una connessione viene ritenuta stabilita quando è stato completato uno scambio a tre vie (three-way handshake). Nel caso delle armate: 1. il manipolo di sinistra spedisce al manipolo di destra l’ora dell’attacco; 2. il manipolo di destra lo riceve e spedisce la conferma, ma non è ancora deciso per l’attacco; 3. il manipolo di sinistra riceve la conferma e ora è deciso per l’attacco; invia la conferma al manipolo di destra che, ricevendolo, è anch’esso deciso per l’attacco. In ogni caso rimane che, al punto 3), se la conferma al manipolo di destra non arriva a destinazione, l’armata blu di sinistra attaccherà comunque probabilmente perdendo la battaglia, mentre l’armata blu di destra starà ancora aspettando un orario condiviso per la battaglia. 4

A1

Il livello 4: Trasporto

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

A2

Il protocollo UDP

UDP (User Datagram Protocol, RFC 768) è un protocollo di trasporto utilizzato nella rete TCP/IP, di tipo non connesso (connectionless). Tra le funzioni tipiche di un livello di trasporto, UDP gestisce solo l’indirizzamento, la multiplazione e il controllo dell’errore sul singolo pacchetto, mentre lascia al livello superiore (Applicazione) tutti gli altri compiti. Siccome è un protocollo senza connessione, la sua affidabilità non è garantita: una volta che un pacchetto viene spedito non si ha alcuna conferma che sia giunto a destinazione; anche in questo caso il compito è delegato al livello superiore. OSI L7 Application L6 Presentation L5 Session L4 Transport L3 Network L2 Data Link L1 Physical

TCP/IP HTTP SMTP NFS FTP TCP UDP IP routing ICMP IGMP ARP non specificati

Per queste ragioni il pacchetto UDP viene chiamato non più segmento, ma datagramma (UDP): si tratta di un protocollo semplice e veloce, adatto per transazioni altrettanto semplici e veloci, per esempio veicolate su un livello 2 Data Link affidabile e ad alte prestazioni (per esempio Ethernet). UDP è un protocollo di tipo peer-to-peer (P2P), ovvero ognuno dei due lati della comunicazione ha le medesime capacità: se due host usano lo stesso indirizzo UDP, possono inviare e ricevere pacchetti, sempre che ognuno conosca a priori l’indirizzo IP dell’altro capo. UDP quindi consente una comunicazione full-duplex. Molti dei protocolli di servizio usati da TCP/IP si basano su UDP, come DHCP (cfr. il capitolo DHCP), mentre a livello applicativo trova spesso impiego per il trasporto di dati audio-video in tempo reale (real time). Lo schema di indirizzamento di UDP si basa sul concetto di porta (l’indirizzo di UDP): la porta è un identificativo numerico espresso su 16 bit capace di numerare 216 = 65536 flussi differenti. Le porte UDP sono classificate in tre categorie:

A2

Il protocollo UDP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

5

˜ intervallo 0-1023, well-known ports (porte ben note), dedicate a processi che usano protocolli applicativi comunemente usati sulla rete TCP/IP, spesso utilizzati da processi di sistema (servizi o demoni); sono assegnate da IANA; ˜ intervallo 1024-49151, registered ports (porte registrate), assegnate da IANA su richiesta di utenti o aziende che hanno intenzione di implementare servizi di rete pubblici; ˜ intervallo 49152–65535, dynamic ports (porte dinamiche o locali), non assegnate e utilizzabili localmente come porte temporanee o porte per servizi locali alla rete di appartenenza.

1

Pacchetto UDP

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Source Port

Destination Port

Length

Checksum

intestazione

dati

dati

Il significato dei campi dell’header del pacchetto UDP è il seguente (tra parentesi la dimensione in bit): ˜ Source Port (16): è il numero di porta sulla quale si intendono ricevere pacchetti (datagrammi). ˜ Destination Port (16): è il numero di porta verso la quale si spediscono i pacchetti (datagrammi). ˜ Length (16): è la lunghezza totale (espressa in byte) del datagramma, compreso l’header UDP. ˜ Checksum (16): checksum calcolata come complemento a due della somma dei complementi a due di tutti i gruppi da 16 bit costituenti i campi: IP Source Address, IP Destination address, 0011h (IP Protocol di UDP, riempito ai 16 bit con 8 zeri), UDP Length e tutte le parole a 16 bit contenute nella parte dati di UDP (eventualmente l’ultima parola riempita con 8 bit a zero se il numero di byte della parte dati è dispari). Se il campo checksum vale zero, il ricevente non esegue il calcolo di checksum. ATTENZIONE Una’applicazione che riceve datagrammi UDP su una porta prestabilita, riceve qualsiasi datagramma UDP in arrivo su quella porta, a prescindere dal mittente: il protocollo è senza connessione. Pertanto per essere certa che il datagramma giunga proprio da un mittente specifico, l’applicazione deve analizzare l’indirizzo IP del mittente del pacchetto. Anche in questo caso, però, se presso l’host che possiede quell’indirizzo IP è presente più di un’applicazione che spedisce pacchetti UDP su quella porta, è possibile riconoscere il mittente attraverso l’uso di un protocollo di livello 7 Applicazione prestabilito. 6

A2

Il protocollo UDP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

ESEMPIO

Comunicazioni UDP attive: netstat Sia su Windows sia su Linux è disponibile un’applicazione che consente di controllare lo stato delle comunicazioni UDP attive sull’host che esegue il comando netstat (in questo modo la lista mostrata viene aggiornata ogni 2 secondi):

&?:LQGRZV!QHWVWDW D S XGS  &RQQHVVLRQL DWWLYH 3URWR ,QGLUL]]R ORFDOH 8'3  8'3  8'3  8'3  8'3  8'3  8'3  8'3  8'3  8'3  8'3  8'3  8'3  8'3  8'3  8'3  8'3  &?:LQGRZV!

,QGLUL]]R HVWHUQR



































6WDWR

Utile anche l’opzione –b, che consente di mostrare i nomi delle applicazioni che stanno usando UDP:

&?:LQGRZV!QHWVWDW D S XGS  E &RQQHVVLRQL DWWLYH 3URWR ,QGLUL]]R ORFDOH ,QGLUL]]R HVWHUQR 8'3 

 >XGS33H[H@ 8'3 

 >VTOEURZVHUH[H@ 8'3 

 (YHQW6\VWHP >VYFKRVWH[H@ 8'3 

 (YHQW6\VWHP >VYFKRVWH[H@ 8'3 

 )'5HV3XE >VYFKRVWH[H@ 8'3 

 )'5HV3XE >VYFKRVWH[H@ 8'3 

 'QVFDFKH >VYFKRVWH[H@ 8'3 

 (YHQW6\VWHP >VYFKRVWH[H@ 8'3 

 )'5HV3XE >VYFKRVWH[H@ 8'3 

 66'3659 >VYFKRVWH[H@ 8'3 

 66'3659 >VYFKRVWH[H@ 8'3 

 >ZOPDLOH[H@ 8'3 

 66'3659 >VYFKRVWH[H@ 8'3 

 66'3659 >VYFKRVWH[H@ &?:LQGRZV!

1

6WDWR

Pacchetto UDP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

7

Comunicazioni UDP

2

Quando un host vuole comunicare con un altro host tramite UDP, deve conoscerne l’indirizzo IP, quindi specificare il n. di porta UDP su cui inviare i pacchetti e il n. di porta UDP attraverso la quale intende riceverne. L’host dall’altro capo dovrà fare altrettanto: basta che imposti il n. di porta UDP per la spedizione in modo identico al n. di porta UDP indicata per la ricezione dal primo Host e impostare il n. di porta UDP per la ricezione come il numero di porta UDP indicata per la trasmissione dal primo host. In definitiva ogni host UDP deve impostare un 3-pla (tripla) di valori se intende spedire e ricevere con UDP:

NB. Come per TCP, una «connessione» UDP in realtà è identificata da un quartetto di valori: oltre ai tre indicati dovrebbe farne parte anche l’ IP Source address. Siccome il protocollo UDP non è connesso, questo valore non serve (in qualche modello viene anche indicato come any, ovvero 0.0.0.0).

Questa 3-pla identifica per un host una comunicazione UDP(NB). In particolare, per spedire datagrammi UDP è sufficiente impostare una coppia di valori del tipo , su una speciale struttura dati detta socket, coppia di valori che in questo caso sono anche noti con la locuzione endpoint. Nello schema della figura seguente si nota una comunicazione UDP tra due host che hanno impostato i due socket in modo opportuno: l’host A indica come porta UDP di ricezione la numero 2000 (Source Port) e porta UDP di destinazione la numero 3000 (Destination Port). In modo duale, l’host B riceve sulla porta 3000 (Source Port) e trasmette sulla porta 2000 (Destination Port). ATTENZIONE. Nel disegno, il pacchetto dell’host B va letto in modo «big endian» cioè in base all’ordine dei campi nel pacchetto e non nel senso della comunicazione. A

UDP

192.168.0.1

192.168.0.1 2000

B

192.168.0.2

192.168.0.2 3000

192.168.0.2 3000

192.168.0.1 2000

tempo

tempo

I due host A e B così impostati possono scambiarsi datagrammi UDP in modo full duplex, anche se UDP non offre nessuna garanzia che i pacchetti inviati vengano effettivamente consegnati. Questa limitazione è praticamente assente su reti LAN, ove il protocollo di livello 2 Data Link garantisce la consegna dei frame; diventa inaccettabile su reti WAN ove UDP viene comunque utilizzato, ma guidato da un protocollo di livello superiore che si incarica di controllare la comunicazione (per esempio tramite l’uso di riscontri e timeout di spedizione). 8

A2

Il protocollo UDP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Inoltre non è escluso che anche applicazioni di rete «classiche» e operanti su WAN possano usare UDP malgrado l’assenza della frammentazione, del riordino e del controllo del flusso: è sufficiente che queste attività siano svolte dal protocollo applicativo usando UDP come semplice veicolo di trasporto (per esempio eMule). Un processo applicativo può anche utilizzare UDP come trasporto per servizi client/server, sempre che le funzionalità client e server siano organizzate dalla stessa applicazione attraverso l’uso di un protocollo specifico (per esempio, prevedendo l’uso di timeout e ritrasmissioni). Per la sua semplicità e la sua completa assenza di connessione, il protocollo UDP è detto protocollo fire and forget.

3

IGMP e UDP

Come si è visto a suo tempo (cfr. Sistemi e reti, vol. 2, Protocollo MPLS) il protocollo IP (così come l’intera rete TCP/IP) non è stato progettato per gestire flussi di traffico con priorità (QoS), né quindi per veicolare traffico in real time come contenuti multimediali, audio e/o video. Una maniera per ottenere una soddisfacente gestione del traffico multimediale (o del traffico con priorità) si appoggia proprio a UDP e alla sua natura di protocollo disconnesso. Il fatto che non sia garantita la consegna dei pacchetti UDP non è vitale per i flussi multimediali e, di fatto, spesso si assiste a spettacoli in rete che presentano brevi interruzioni o perdite di fotogrammi.

Streaming e Rete Il panorama della comunicazione streaming (traffico audio/video) in rete è molto articolato. Si possono distinguere, a grandi linee, due settori base: – IPTV, per la fruizione di contenuti on demand e la televisione via Internet presso operatori privati a pagamento (per esempio, Cubovision di Telecom) e – Adaptive bitrate streaming, per la fruizione di contenuti liberi e selezionabili su Internet (per esempio, Youtube o RaiReplay).

video server R

S1

Osservando la figura, che rappresenta una switched LAN con un centinaio di host, si supponga che l’host video server voglia fornire un flusso multimediale (per esempio una videoconferenza) con banda di 1 Mbit/s a 50 host della LAN. Nel modello classico TCP/IP, in cui il trasporto viene realizzato da TCP, l’host video server dovrebbe instaurare 50 connessioni, una per ognuno de-

3

IGMP e UDP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Sia nel primo che nel secondo caso il protocollo UDP viene utilizzato come modello di trasporto, magari in versioni specializzate (per esempio, SCTP, Stream Control Transmission Protocol) basate su versioni altrettanto specializzate di IP (per esempio, RTSP, Real Time Streaming Protocol). Per i contenuti fruibili via Web, esempio tramite Adobe Flash Player o Microsoft Silverlight, è utilizzata una speciale versione di HTTP denominata HTTP Live Streaming (originariamente sviluppata da Apple).

9

gli host interessati. Immediatamente si avrebbe, sullo switch S1, un traffico di 50 * 1 Mbit/s = 50 Mbit/s. Considerando poi che le connessioni TCP prevedono ARQ, cioè il controllo del flusso (che genera traffico in senso opposto), tale valore viene ulteriormente maggiorato. Se invece si potesse inviare un solo flusso multimediale a partire dall’host video server (ovvero solo 1 Mbit/s) in grado di raggiungere solo i 50 host interessati senza stabilire connessioni (ovvero senza traffico di ritorno), la situazione migliorerebbe anche di qualche ordine di grandezza: video server R

S1

Il protocollo IGMP (Internet Group Management Protocol, RFC 1112), a bordo degli host e dei router consente a ogni host di segnalare al proprio router di default la propria volontà di partecipare a un gruppo, indicando e impostandosi un indirizzo IP multicast (cfr. Appendice, IP multicast). I router, a loro volta, possono mantenere aggiornate le liste dei gruppi multicast nella rete inviando periodicamente un pacchetto IGMP agli host per conoscerne l’appartenenza a gruppi e la loro localizzazione. In questo modo i router IGMP sono in grado di inoltrare il singolo flusso in entrata ai soli host dotati dell’indirizzo IP multicast che identifica il gruppo di interesse. Se poi si utilizza UDP invece di TCP come protocollo di trasporto, vengono evitate le connessioni specifiche e quindi anche il traffico ARQ: ora l’host video server può emettere un solo flusso di datagrammi UDP con indirizzo IP destinazione, proprio l’indirizzo IP di multicast che individua gli host interessati. Il singolo flusso si propagherà nella LAN attraverso i router IGMP ai soli host interessati in ricezione sulla porta UDP. Per queste ragioni IGMP, di rigore, è un protocollo di livello 3 Rete o Network.

10

A2

Il protocollo UDP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

A3

Il protocollo TCP TCP (Transmission Control Protocol, RFC 793) è il protocollo di trasporto fondamentale della rete TCP/IP di tipo connesso (connection-oriented). Come protocollo connesso realizza tutte le funzioni tipiche di un protocollo di trasporto: indirizzamento, multiplazione, controllo dell’errore, controllo del flusso e delle congestioni. Per queste ragioni TCP è considerato un protocollo di trasporto affidabile. OSI L7 Application L6 Presentation L5 Session L4 Transport L3 Network L2 Data Link L1 Physical

TCP/IP HTTP SMTP NFS FTP TCP UDP IP routing ICMP IGMP ARP non specificati

Naturalmente TCP necessita della preventiva instaurazione di una connessione, dopodiché lo scambio di segmenti può avvenire in full duplex da entrambi i capi. Al termine di una sessione di comunicazione la connessione va chiusa. La sua natura di protocollo connesso implica che si tratti di un protocollo client-server, a differenza di UDP: uno dei due capi della comunicazione deve assumere il ruolo di «fornitore» del servizio di connessione (server), mentre l’altro capo interpreta il ruolo di «richiedente» del servizio di connessione (client). Molti dei protocolli applicativi più diffusi al mondo, come HTTP (HyperText Transfer Protocol, cfr. il capitolo HTTP) usato per la navigazione Web, si basano su TCP: gli host che «navigano» usano applicazioni che sono client TCP (browser), mentre gli host che ospitano i siti Web usano applicazioni che sono server TCP (Web server). Lo schema di indirizzamento di TCP si basa anch’esso sul concetto di porta (l’indirizzo di TCP), in modo del tutto analogo a UDP, benché porte TCP e UDP appartengano effettivamente a spazi numerici separati. Cionondimeno spesso lo stesso protocollo di livello superiore può funzionare sia su TCP sia su UDP e, in questi casi, i numeri di porta sono gli stessi (pur essendo indirizzi differenti). Anche nel caso di TCP abbiamo la medesima classificazione delle porte disponibili:

A3

Il protocollo TCP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

11

˜ intervallo 0-1023, well-known ports (porte ben note); ˜ intervallo 1024-49151, registered ports (porte registrate); ˜ intervallo 49152–65535, dynamic ports (porte dinamiche o locali).

Pacchetto TCP

1

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Source Port

Destination Port Sequence number

Acknowledgment number (se ACK = 1) intestazione Header 0 0 0 length

C E U A P R S F N W R C S S Y I S R C E G K H T N N

Checksum

Window size Urgent pointer (se URG = 1)

Options dati

dati

Il significato dei campi dell’header del pacchetto TCP è il seguente (tra parentesi la dimensione in bit): Wrap Around Il numero di sequenza di TCP (Sequence number) indicizza i singoli byte di ogni verso della connessione con una capacità di 32 bit. Ogni direzione della connessione procede con numeri di sequenza diversi e indipendenti. Ciò significa anche che in un singolo messaggio, dopo circa 4 miliardi di byte inviati, la numerazione ricomincia (Wrap Around). È fondamentale che quando la numerazione ricomincia non siano più in rete i segmenti che in precedenza avevano gli stessi numeri. Indicativamente, in funzione della banda disponibile (teorica), si può calcolare il tempo di Wrap Around di un messaggio «lungo»: 10 Mbit/s, WA = 57 minuti 100 Mbit/s, WA = 6 minuti 1 Gbit/s, WA = 36 secondi

12

˜ Source Port (16), Destination Port (16): i numeri di porta sui quali i processi ricevono e spediscono i segmenti. ˜ Sequence number (32): numero di sequenza del primo byte contenuto nel pacchetto. Il numero «ruota» entro i 32 bit. Quando il flag SYN vale 1, indica il numero di sequenza iniziale della sessione per quel verso (ISN, Initial Sequence Number). Serve per lo Sliding Window di TCP (cfr. Appendice). ˜ Acknowledgment number (32), se il flag ACK vale 1, il campo indica il numero di sequenza del prossimo byte da ricevere (in ARQ si dice pacchetto di Ack). Serve per lo Sliding Window di TCP e il piggybacking. ˜ Header length (4): indica il numero di parole a 32 bit dell’intestazione TCP, dato che si tratta di un’intestazione a lunghezza variabile a causa del campo Options. Il minimo valore del campo è 5 (per un’intestazione TCP minima di 5*4 = 20 byte), e il massimo valore è 15 (60 byte di intestazione TCP). Moltiplicato per 4, rappresenta anche l’indice del primo byte della parte dati del pacchetto (parte dati detta anche payload). ˜ Flags (9): una raccolta di 9 bit da interpretare: – NS (Explicit Congestion Notification-nonce), usato per la gestione delle congestioni. – CWR (Congestion Window Reduced), usato per la gestione delle congestioni.

A3

Il protocollo TCP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

– ECE (Explicit Congestion Notification-Echo), usato per la gestione delle congestioni. – URG (Urgent), se impostato a 1 nel flusso sono presenti dati urgenti (cfr. Urgent pointer). – ACK (Acknowledgment), a 1 quando il campo corrispondente contiene un ACK valido. – PSH (Push), a 1 quando i dati in arrivo non devono essere bufferizzati ma inviati al livello superiore. – RST (Reset), a 1 quando la connessione non è ritenuta valida. – SYN (Synchronize), a 1 quando l’host mittente del pacchetto intende avviare una connessione. L’host che riceve un tale pacchetto e accetta la connessione dovrà rispondere con i flag SYN e ACK impostati a 1. – FIN (Final), a 1 quando il mittente del pacchetto vuole chiudere la connessione. L’host che riceve un tale pacchetto e accetta la disconnessione dovrà rispondere con i flag FIN e ACK impostati a 1. ˜ Window size (16): indica quanti byte il mittente del pacchetto è in grado di ricevere a partire dall’ultimo byte confermato. In pratica l’host mittente è in grado di ricevere fino al numero di sequenza ottenuto da Acknowledgment number + Window size. Serve per lo Sliding Window di TCP ed è negoziato durante connessione, pur potendo variare nel corso della comunicazione. ˜ Checksum (16): somma di controllo (RFC 793) calcolata come complemento a due della somma dei complementi a due di tutti i gruppi da 16 bit costituenti i campi: IP Source Address, IP Destination address, 0006h (IP Protocol di TCP, riempito ai 16 bit con 12 zeri), TCP Length (calcolata tramite Header Length*4), tutte le parole a 16 bit dell’intestazione TCP (tranne il campo Checksum), e tutte le parole a 16 bit contenute nella parte dati di TCP (eventualmente l’ultima parola riempita con 8 bit a zero se il numero di byte della parte dati è dispari). A differenza di UDP, il calcolo e la verifica di Checksum in TCP sono obbligatorie. ˜ Urgent pointer (16), valido se il flag URG vale 1, indica l’indice del byte nella parte dati del pacchetto che inizia una sequenza di valori che devono essere consegnati (ed elaborati) urgentemente (fuori banda). Per esempio, una combinazione Ctrl-C (interruzione) durante una sessione interattiva. ˜ Options (variabile), contiene informazioni aggiuntive tra le quali la più importante è detta MSS (Maximum Segment Size), presente nei segmenti iniziali di una connessione e indicante l’ampiezza di segmento desiderata dal mittente del pacchetto. L’ampiezza selezionata sarà quella inferiore tra le due indicate dai lati della connessione. In assenza di opzione MSS il valore di default è 536 byte. Il campo Options deve essere riempito con zeri (padding) per ottenere che la sua dimensione risulti un multiplo di 32.

1

Pacchetto TCP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

13

ESEMPIO

Connessioni TCP attive: netstat Il programma netstat mostra naturalmente anche le connessioni TCP attive sull’host che lo invoca (in questo modo la lista mostrata viene aggiornata ogni 2 secondi con il nome dell’applicazione relativa):

&?:LQGRZV!QHWVWDW D S WFS  E &RQQHVVLRQL DWWLYH 3URWR ,QGLUL]]R ORFDOH ,QGLUL]]R HVWHUQR 7&3  'HOO( 5SF6V >VYFKRVWH[H@ 7&3  'HOO( :FHV&RPP >VYFKRVWH[H@ 7&3  'HOO( >'URSER[H[H@ 7&3  'HOO( >ZLQLQLWH[H@ 7&3  'HOO( (YHQWORJ >VYFKRVWH[H@ 7&3  'HOO( 6FKHGXOH >VYFKRVWH[H@ 7&3  'HOO( >VHUYLFHVH[H@ 7&3  'HOO( >OVDVVH[H@ 7&3  'HOO( >VSRROVYH[H@ 7&3  6(59(5 >VSRROVYH[H@ 7&3  KRVWVWDWLFSRS 7&3  QHZVQQWS 7&3  QHZVQQWS &?:LQGRZV!

2

6WDWR /,67(1,1* /,67(1,1* /,67(1,1* /,67(1,1* /,67(1,1* /,67(1,1* /,67(1,1* /,67(1,1* /,67(1,1* (67$%/,6+(' 7,0(B:$,7 7,0(B:$,7 7,0(B:$,7

Connessione TCP

Due processi che intendono comunicare con TCP devono instaurare una connessione e suddividersi nei ruoli di client e server. La connessione tra client e server viene instaurata dalle entità di Trasporto dei sistemi operativi su ordine dei processi, ed è ottenuta scambiando segmenti TCP di servizio (senza parte dati) in modo da completare uno schema three-way handshake. Durante lo scambio a tre vie, le entità di Trasporto client e server negoziano anche qualche parametro necessario all’implementazione dei numerosi algoritmi di supporto a TCP per la comunicazione che avverrà successivamente: porta effimera, numeri di sequenza iniziali (ISN), massima dimensione del pacchetto scambiabile (MSS) e la dimensione delle finestre (TCP Sliding Window). Siccome TCP offre il servizio di multiplazione, è frequente che più processi client di host differenti (o dello stesso host) intendano effettuare comunicazioni verso lo stesso processo server, cioè verso la stessa porta di destinazione (TCP Destination Port). 14

A3

Il protocollo TCP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Il protocollo TCP deve garantire che i vari flussi in arrivo sul server e diretti alla medesima porta siano distinguibili e separati, benché l’indirizzo TCP di destinazione dei vari client sia lo stesso. Affinché ciò possa avvenire: a) quando i due processi client sono avviati dallo stesso host, TCP impone a ogni processo di scegliere un numero di porta locale TCP (TCP Source Port) sempre diversa per ogni connessione, detta porta effimera; b) se invece i due processi agiscono su client differenti (in questo caso la porta effimera potrebbe anche coincidere), bisogna associare alle porte TCP anche gli indirizzi IP degli host. In definitiva un flusso TCP è identificato univocamente da un 4-pla (un quartetto) di numeri:

Questa 4-pla per i due host è detta TCB (Transmission Control Block). Nell’esempio seguente un processo sull’host client richiede una connessione TCP a un processo su un host server attraverso la porta TCP numero 80 (porta ben nota). Nell’esempio è omessa la negoziazione della dimensione delle finestre (cfr. Appendice, Sliding window TCP). connessione TCP A (client)

B (server)

192.168.0.1

192.168.0.2

192.168.0.1 192.168.0.2 50000 80 ISN (x) SYN MSS (1460)

192.168.0.2 192.168.0.1 80 50000 ISN (y) (x + 1) SYN+ACK MSS (3000)

192.168.0.1 192.168.0.2 50000 80 (x + 1) (y + 1) ACK

tempo

tempo

1) Il client invia un segmento TCP iniziale con: ˜ Source port = 50000 (porta effimera decisa localmente); ˜ Destination port = 80 (la porta su cui viene richiesta la connessione); ˜ flag SYN = 1 e relativo n. di sequenza iniziale ISN = x; ˜ infine la propria capacità di pacchetto MSS = 1460 (byte). 2) In risposta il server invia un segmento TCP con: ˜ Source port = 80 (su cui accettare la connessione); ˜ Destination port = 50000 (porta effimera ereditata dal client); ˜ flag SYN = 1 e relativo n. di sequenza iniziale ISN = y; ˜ flag ACK = 1, conferma del segmento e richiesta del prossimo (x+1); ˜ infine la propria capacità di pacchetto MSS = 3000 byte. Delle due sarà stabilita la capacità inferiore (1460). 3) Il client chiude il three-way handshake con un segmento TCP in cui:

2

Connessione TCP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

15

˜ Source e Destination port oramai sono stabilite; ˜ il proprio numero di sequenza successivo (x + 1); ˜ il flag ACK = 1 con relativo riscontro numerato (y + 1). Quando tramite il three-way handshake il server e il client fanno coincidere: TCP Source Port (server) a TCP Destination Port (client), TCP Destination Port (server) e TCP Source Port (client), allora si ha una connessione tra client e server. Nell’esempio della figura precedente al termine dello scambio a tre vie, il sistema operativo, ha assegnato al client A il TCB , mentre al server B è stato assegnato il TCB . La connessione è instaurata dato che: TCP Source Port (server) = TCP Destination Port (client) [50000 = 50000] e: TCP Destination Port (server) e TCP Source Port (client) [80 = 80].

2.1

Terminologie

Spesso i concetti esposti vengono riportati, a seconda dei contesti, tramite l’uso di nomi differenti pur indicando le stesse nozioni. In particolare il termine socket ha diversi significati e viene sottoposto a differenti usi nel gergo informatico. Prima di tutto il socket di cui si parla in questa trattazione dovrebbe dirsi network socket (per distinguerlo dall’inter process communication socket utilizzato come entità di endpoint tra due processi comunicanti sotto Unix). La definizione originale di network socket risulta dalla RFC 147 del 1971 (SUBJECT: The Definition of a Socket): «A socket is defined to be the unique identification to or from which information is transmitted in the network. The socket is specified as a 32 bit number with even sockets identifying receiving sockets and odd sockets identifying sending sockets. A socket is also identified by the host in which the sending or receiving processer is located.» In questa definizione il socket è identificato con l’handle (riferimento) ad una struttura dati che, tra gli altri valori, contiene un indirizzo IP e un numero di porta (UDP o TCP). Una definizione storicamente importante è anche quella che venne fornita da CISCO, come «combination of an IP address and a port number», intendendo direttamente la struttura dati e non l’handle. Il termine connessione TCP, è spesso inteso come unione di una coppia di socket impostati correttamente, anche se sarebbe più corretto intenderla come un TCB impostato correttamente. I componenti di una connessione, invece, vengono a volte detti: ˜ IP Source è anche detto Local IP o indirizzo IP locale; ˜ IP Destination è anche detto Remote IP o indirizzo IP remoto; ˜ TCP Source Port è anche detto TCP Local Port o porta locale; ˜ TCP Destination Port è anche detto TCP Remote Port, o porta remota. Il programma netstat indica spesso questi stessi valori con i nomi: ˜ la coppia (IP Source, TCP Source Port) è anche detta Indirizzo Locale (Local Address); ˜ la coppia (IP Destination, TCP Destination Port) è anche detta Indirizzo Esterno (Foreign Address). 16

A3

Il protocollo TCP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

ESEMPIO

Connessione Un Server si mette in attesa di connessioni sulla porta 8821. Con il programma netstat si possono visualizzare i passi della connessione. 6(59(5 ,3  3URWR ,QGLUL]]R ORFDOH  7&3

,QGLUL]]R HVWHUQR 

6WDWR /,67(1,1*

Si nota che il TCB del Server ha l’IP locale impostato su zero e la TCP Port remota impostata a zero. Quindi sono riprodotti i TCB della connessione avviata da un Client sulla porta 8221. Si nota che subito dopo la connessione, il Server crea un altro TCB identico a quello precedente (il Server si rimette in attesa di connessioni sulla porta 8221): &/,(17 ,3  3URWR ,QGLUL]]R ORFDOH  7&3

,QGLUL]]R HVWHUQR 

6WDWR (67$%/,6+('

6(59(5 ,3  3URWR ,QGLUL]]R ORFDOH 7&3  7&3 

,QGLUL]]R HVWHUQR  

6WDWR /,67(1,1* (67$%/,6+('

Siccome la parte locale del TCB del server coincide con la parte remota del TCB del Client, la connessione è attiva. La porta effimera è 49880.

3

Disconnessione TCP

Al termine di una sessione veicolata da una connessione TCP, la connessione deve essere rilasciata (disconnessione). Il rilascio viene avviato da un capo della connessione e confermato dall’altro. Affinché la connessione sia terminata, la disconnessione deve essere completata su entrambi i lati. In effetti spesso succede che un capo si disconnette ma l’altro capo continua a essere attivo per un po’ di tempo. Nella figura, prima si disconnette il server, poi il client.

disconnessione TCP A (client)

B (server)

192.168.0.1

192.168.0.2 192.168.0.2 192.168.0.1 80 50000 18365 480 FIN+ACK

192.168.0.1 50000

192.168.0.2 80 480 18366 ACK

1) Il server invia un segmento TCP con: ˜ flag FIN = 1 e relativo n. di sequenza attuale. Se il flag ACK = 1, anche il campo Acknoledgment è impostato.

192.168.0.1 50000

192.168.0.2 80 480 18366 FIN+ACK

2) In risposta il client invia un segmento TCP con: ˜ flag ACK = 1, conferma del segmento di disconnessione. 3) Il client invia un segmento TCP con: ˜ flag FIN = 1 e relativo n. di sequenza attuale. Se il flag ACK = 1, anche il campo Acknoledgment è impostato.

3

192.168.0.2 192.168.0.1 80 50000 18366 481 ACK

tempo

Disconnessione TCP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

tempo

17

4) In risposta il server invia un segmento TCP con: ˜ flag ACK = 1, conferma del segmento di disconnessione.

ESEMPIO

Si nota che i segmenti FIN non fanno aumentare il numero di sequenza. Disconnessione Facendo riferimento all’Esempio precedente, questi rappresentati sono gli stati dei TCB del Server e del Client quando il Client effettua la disconnessione. Con il programma netstat si possono visualizzare i passi della disconnessione. 6(59(5 ,3  3URWR ,QGLUL]]R ORFDOH 7&3 

,QGLUL]]R HVWHUQR 

6WDWR /,67(1,1*

&/,(17 ,3  3URWR ,QGLUL]]R ORFDOH 7&3 

,QGLUL]]R HVWHUQR 

6WDWR 7,0(B:$,7

4

Caratteristiche del protocollo

Come anticipato, il protocollo TCP realizza tutte le specifiche di un protocollo connesso. Lo schema di indirizzamento e la multiplazione sono ottenuti tramite l’uso dei socket TCP, ovvero utilizzando indirizzi TCP (porte), indirizzi IP e porte effimere. La connessione è instaurata con uno schema three-way handshake tramite i flag SYN e ACK, così come la disconnessione tramite i flag FIN e ACK. Il controllo di flusso è ottenuto con la numerazione dei byte nei segmenti secondo uno schema ARQ di tipo Sliding Window go back n con selective reject, senza riscontri negativi (senza NACK) e con ACK cumulativi, con piggybacking (cfr. Sistemi e reti, vol. 1, Controllo di flusso), e con dimensione di finestra negoziata e variabile. Infine, il controllo della congestione e vari altri metodi di ottimizzazione del trasporto sono realizzati da algoritmi ad hoc che agiscono all’interno del protocollo Sliding Window di TCP. Per una trattazione più esaustiva consultare l’Appendice. ATTENZIONE Bisogna ricordare che lo Sliding Windows di TCP non garantisce il confine dei messaggi trasportati nei segmenti: durante il percorso end-to-end, TCP segmenta e riassembla i dati secondo le sue necessità. Per esempio, se un’applicazione fa sei scritture da due byte l’una su una porta TCP (trasmissione), l’applicazione destinataria può dover effettuare 12 letture da un byte l’una per ottenere tutti i dati, oppure ottenerli tutti in una sola lettura di quella porta (ricezione). Ciò significa che i protocolli di livello superiore (Applicazione) devono definire i confini dei messaggi prevedendone una gestione esplicita all’interno del protocollo (per esempio usando delimitatori o intestazioni che riportano la dimensione dei pacchetti). 18

A3

Il protocollo TCP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Programmazione

A4

La programmazione in TCP/IP avviene, praticamente per ogni linguaggio e sistema operativo, secondo il modello Berkeley sockets o BSD sockets (Berkeley Software Distribution sockets), una libreria con un’API per Internet e per Unix, sviluppata nel 1983 e resa disponibile nel 1989 tramite il lavoro effettuato all’interno dell’Università Berkeley (California, USA). La libreria è scritta in linguaggio C, e gli altri linguaggi, di norma, ne realizzano un wrapper (un livello di adattamento) per la propria piattaforma. I sistemi operativi di classe Windows ne offrono un’implementazione all’interno dei propri sistemi denominata Winsock. L’uso della libreria non è limitato a TCP/IP, e può essere utilizzata anche per diverse famiglie di protocolli di rete, tra cui ATM e Bluetooth. L’entità di trasporto TCP/IP è solitamente operativa all’interno dei sistemi operativi e, tramite la libreria BSD sockets/Winsock (o wrapper equivalenti a seconda dei linguaggi), i programmatori possono scrivere applicazioni per comunicare tramite UDP, creare connessioni e comunicare tramite TCP o inviare e ricevere datagrammi direttamente tramite IP. L’entità di trasporto TCP/IP viene spesso inserita anche in microcontrollori o in generale su dispositivi embedded, dai telefoni cellulari ai sistemi di domotica, per consentirne l’accesso in rete.

1

Socket e funzioni BSD sockets

La libreria BSD sockets si basa sulla struttura dati denominata socket, che concettualmente coincide con le definizioni di socket che sono state fornite precedentemente (cfr. Comunicazioni UDP, Connessioni TCP). La funzione fondamentale della libreria, infatti, è quella che consente di creare la struttura dati socket e che ne restituisce un handle (un numero intero) a cui le altre funzioni della libreria fanno spesso riferimento. La lista delle principali funzioni della libreria(NB) è la seguente (se la funzione è utilizzata indifferentemente da entrambi i lati di una connessione viene tralasciata l’indicazione d’uso): ˜ VRFNHW , crea un socket a livello di sistema operativo, di un certo tipo (per esempio, per comunicare tramite IP, UDP o TCP). Restituisce un valore intero (handle) da usare come parametro per le funzioni successive; ˜ ELQG ,non usata dal lato client TCP, serve per impostare gli indirizzi (porte) locali del socket;

1

Socket e funzioni BSD sockets

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

NB. Benché l’utilizzazione dei socket possa anche avvenire tramite le consuete operazioni dedicate alla gestione del file system (per esempio, open()/ close(), read()/write()), in questa trattazione questo approccio viene tralasciato.

19

˜ OLVWHQ , usata dal lato server TCP, serve per rendere operativo il socket in attesa di connessione; ˜ FRQQHFW , usata dal lato client TCP per avviare una connessione (primo passo del three-way handshake); ˜ DFFHSW , usata dal lato server TCP per accettare una connessione (secondo passo del three-way handshake); ˜ VHQGWR , UHFYIURP , usate per spedire e ricevere pacchetti in UDP; ˜ VHQG , UHFY , usate per spedire e ricevere pacchetti in TCP; ˜ FORVH , per avviare la disconnessione. La lista delle principali funzioni di supporto: ˜ JHWKRVWE\QDPH , JHWKRVWE\DGGU , usate per risolvere gli hostname in indirizzi IPv4 e gli indirizzi IPv4 in hostname; ˜ VHOHFW , SROO , per consultare lo stato di un socket; ˜ JHWVRFNRSW , VHWVRFNRSW , per impostare o leggere il campo Options (TCP).

1.1

Socket

ESEMPIO

La creazione del socket è il momento base della programmazione con le librerie BSD sockets. Il modello, infatti, consente di creare un socket in base a tre parametri che consentono di specificare la famiglia (rete o file system), il tipo (per esempio, stream o datagramma), e il protocollo (per esempio IP, UDP o TCP) desiderati. Il prototipo della funzione per la creazione di un socket: LQW VRFNHW LQW IDPLO\ LQW W\SH LQW SURWRFRO  Nel nostro caso prenderemo in considerazione solo socket di rete (family AF_INET), di tipo stream o datagramma (type = SOCK_STREAM o type = SOCK_DGRAM), per i protocolli UDP o TCP (protocol = IPPROTO_ UDP o protocol = IPPROTO_TCP). Pur essendo piuttosto interessante, si tralascierà la programmazione di socket di tipo RAW (per esempio, type = SOCK_RAW e protocol = IPPROTO_RAW), che consente di creare comunicazioni direttamente per il protocollo IP o ICMP. Funzione socket() Dopo aver indicato i files di intestazione della libreria BSD sockets (o equivalente), la creazione di un socket UDP (P2P): 62&.(7 VRFN8'3 VRFN8'3 VRFNHW $)B,1(762&.B'*5$0 ,335272B8'3  La creazione di un VRFNHW 7&3 VHUYHU: 62&.(7 VRFN7&3V VRFN7&3V VRFNHW $)B,1(7 62&.B675($0   La creazione di un socket TCP client: 62&.(7 VRFN7&3F VRFN7&3F VRFNHW 3)B,1(7 62&.B675($0 ,335272B7&3  Si nota che la creazione di VRFNHW 7&3 client e server è identica. Le costanti $)B,1(7 e 3)B,1(7, infatti, coincidono. Anche il valore delle costanti ,335272B8'3, ,335272B7&3 e  (zero) sono equivalenti. Il tipo 62&.(7 può essere scambiato con il tipo LQW (per esempio, LQW VRFN8'3).

20

A4

Programmazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

1.2

Modelli di server TCP

AF_INET e PF_INET, IPPROTO_ e zero

Tramite queste funzioni di libreria (o le analoghe offerte dai wrapper dei vari linguaggi), il programmatore può scrivere software utente (o di servizio) per codice di tipo sequenziale o concorrente, almeno nel caso di socket di tipo TCP. Nel primo caso (programmi sequenziali), il server TCP che entra in colloquio con un client TCP, quando termina di servirlo chiude la connessione con lui prima di accettare esplicitamente un’eventuale altra connessione richiesta da un altro client TCP. Nel secondo caso (programmi concorrenti), il server TCP che entra in colloquio con un client TCP si «duplica» automaticamente (crea un altro socket identico a quello presente prima della connessione) all’atto della connessione. Mentre il socket «clonato» si mette in attesa di nuove richieste di connessione da parte di altri client TCP (server multiconnessione), il socket connesso «serve» il client TCP, terminandosi regolarmente al termine del compito.

1.3

Modello sincrono e asincrono

Le funzioni di libreria BSD socket sono normalmente sincrone (bloccanti), ovvero mettono il chiamante in stato di wait (blocco) e il chiamante si sblocca solo quando la funzione ritorna. In particolare questo vale per DFFHSW e UHFY UHFYIURP . Questo a volte può rappresentare un problema se l’applicazione utente necessita di una comunicazione full duplex in tempo reale. Per esempio, la funzione UHFY è bloccante; un’applicazione monoprogrammata (monotask o single thread), se ha lanciato UHFY per ricevere i dati dal destinatario, non può trasmettere fino a quando la UHFY non ritorna. Se il destinatario non spedisce, nemmeno il mittente può spedire. Queste condizioni vengono spesso affrontate scrivendo applicazioni multiprogrammate (multithread) o, in altri casi, utilizzando le analoghe funzioni BSD sockets in versione asincrona (per esempio, le funzioni WSA di Winsock per i sistemi operativi Win32).

2

Queste costanti, in origine, dovevano poter specificare il formato degli indirizzi usati da un sistema di rete (AF significa Address Family) e l’architettura generale di un sistema di rete (PF sta per Protocol Family). Questa distinzione, almeno per la funzione socket(), è inutilizzata così come confermato dalla man page del documento originale delle BSD sockets: “[...]The protocol family generally is the same as the address family[...]”. Analoghe considerazioni per le costanti IPPROTO_UDP e IPPROTO_TCP: nella versione originale queste costanti valgono sempre 0 se la famiglia e il tipo indicati nella chiamata socket() valgono AF_INET e SOCK_ STREAM o SOCK_DGRAM. In altri termini un socket UDP si definisce solo tramite la costante SOCK_DGRAM, così come un socket TCP attraverso la costante SOCK_STREAM.

Comunicazioni UDP e connessioni TCP

Il protocollo UDP, non essendo connesso, si trova praticamente sempre in un solo stato attivo. La sequenza delle chiamate delle funzioni della libreria BSD sockets può essere sintetizzata dal primo diagramma alla pagina seguente (con fondo azzurro le chiamate bloccanti). Come si può notare si tratta di uno schema del tutto simmetrico o P2P (peer-to-peer). I due capi inviano datagrammi verso socket creati in manie-

2

Comunicazioni UDP e connessioni TCP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

21

ra duale. Addirittura si può utilizzare lo stesso numero di porta UDP sia per la spedizione sia per la ricezione in entrambi i lati della connessione (ma solo se i due programmi risiedono su macchine differenti). Va ricordato che non tutti i linguaggi, anche tra quelli più diffusi, riescono a gestire UDP in modo asincrono (per esempio, Java), soprattutto a causa della chiamata bloccante UHFYIURP . UDP

UDP

socket()

socket()

bind()

bind()

sendto()

recvfrom()

recvfrom()

sendto()

close()

close()

Il protocollo TCP, come protocollo connesso, può invece assumere diversi stati e lo schema delle chiamate alla BSD sockets è sostanzialmente differente per i due capi della connessione (client e server). server TCP

client TCP

socket()

socket()

bind()

listen() connect() accept()

send()

recv()

recv()

send()

close()

close()

Può essere indicativo mostrare il diagramma degli stati di una connessione TCP in funzione della sequenza delle chiamate alla libreria BSD sockets da parte di client e server e rispetto al ruolo dell’entità di trasporto TCP/IP gestita dal sistema operativo. Nel diagramma sottostante sono indicati gli stati tipici di client e server così come riportati dal programma netstat. Lo schema a pagina seguente 22

A4

Programmazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

mostra il three-way handshake che conduce all’instaurazione di una connessione end-to-end tra client e server. Nella terminologia socket, lo stato iniziale del server TCP è detto connessione passiva (/,67(1, o «in attesa di connessione»), mentre l’avvio della connessione effettuato dal client TCP è detto connessione attiva. 1

server

client

CLOSE

CLOSE

listen() –/– connect() –/SYN

SYN/RST

2

LISTEN 3 accept() SYN/SYN,ACK

RST/–

SYN SENT tcp SYN, ACK/ACK

4

RCVD 5

tcp ACK/–

ESTABLISHED

ESTABLISHED nome()

Nella figura si usa la convenzione per cui il rettangolo R/T indica una azione compiuta dalle funzioni BSD socket (per esempio listen(), in blu) o dall’entità di trasporto TCP del sistema operativo (per esempio tcp, in nero), mentre R/T indica quali flag (SYN e/o ACK) sono ricevuti (R) e/o trasmessi (T) in quell’azione.

3

Disconnessioni

La comunicazione UDP, per la sua natura di protocollo disconnesso, può essere terminata chiamando semplicemente la funzione FORVH sul socket attivo. La chiamata è identica e casuale per ogni capo della comunicazione. Per il protocollo TCP invece, la logica degli stati appare più articolata benché le primitive che il programmatore deve usare sono anche in questo caso limitate alla sola FORVH . Come per la connessione, anche la disconnessione dovrebbe essere di norma avviata dal client TCP, anche se in realtà ciò non fa molta differenza. Una disconnessione avviata dal client, è detta disconnessione simmetrica, o disconnessione attiva, altrimenti è detta disconnessione asimmetrica. Più rara è la disconnessione three-way handshake, che è analoga alla procedura di connessione (con il flag FIN al posto del flag SYN).

3

Disconnessioni

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

23

client server

ESTABLISHED close() –/FIN

1

ESTABLISHED

2

tcp FIN/ACK

FIN WAIT1

4

3

tcp ACK/–

CLOSE WAIT close() –/FIN

FIN WAIT2 5

tcp FIN/ACK

LAST ACK TIME_WAIT

6

tcp ACK/–

tcp tout/–

CLOSE

7

CLOSE

Si noti la presenza di un timeout di disconnessione nello stato 7,0(B:$,7 del client TCP. L’entità TCP di sistema operativo chiude realmente la connessione solo dopo lo scadere di un tempo ben preciso, il doppio del tempo massimo di vita di un pacchetto TCP (MSL, Maximum Segment Life definito «arbitrariamente» in RFC 793 con il valore di 120 secondi). Il timeout del client TCP scade quindi dopo 240 secondi, cioè 4 minuti. In questo modo l’entità TCP di sistema operativo si accerta che non possano esistere lungo la rete pacchetti TCP troppo ritardati. Ciò è necessario affinché nuove connessioni TCP tra le due macchine possano avere numeri di sequenza sicuramente differenti da numeri di sequenza utilizzati in precedenti connessioni.

4

Programmazione disconnessa in UDP

Il codice proposto realizza un programma UDP peer-to-peer per Win32 (Windows) di nome udpp2p.exe. Il codice sorgente usa la versione Winsock per Win32 (Windows) delle librerie BSD sockets; alcune chiamate hanno nome leggermente differente (per esempio, FORVH FORVHVRFNHW a riga 67 e 94). Il programma usa due socket UDP, creati a riga 45 e a riga 80, l’uno per spedire datagrammi, l’altro per riceverne, ma sempre sulla stessa porta UDP (8'3B3257  ). Per questo motivo il programma deve essere lanciato su due host differenti (sullo stesso host non si possono creare due socket in ricezione UDP con lo stesso numero di porta). In alternativa si possono usare due porte UDP «simmetriche» come descritto nella trattazione. 24

A4

Programmazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Per gestire la ricezione asincrona viene utilizzato un thread. Il programma richiede all’utente l’indirizzo IP destinazione (se digitato 0 mantiene quello impostato 192.168.0.1; se digitato x, il programma termina) e la stringa del Messaggio da spedire. Il programma si può compilare tramite Code::Blocks 10.5 (con gcc 4.4.1) oppure con Ms Visual C++ 2010 Express (o versioni successive).

PROGRAMMA

˜ Nel primo caso (switch di compilazione BB*18&BB attivo) è necessario creare un progetto con target Console e impostare la libreria Winsock: Project\Build options\Linker settings\Add, digitare ZVB. ˜ Nel secondo caso (switch di compilazione B06&B9(5 attivo), bisogna creare un progetto Win32 di tipo Console Win32. La libreria Winsock viene collegata da codice (riga 3).

UDP peer-to-peer per Win32                                       

LQFOXGH VWGLRK! LIGHI B06&B9(5 SUDJPD FRPPHQW OLEZVBOLE SUDJPD ZDUQLQJ GLVDEOH   B&57B6(&85(B12B:$51,1*6 LQFOXGH ZLQVRFNK! HQGLI LIGHI BB*18&BB LQFOXGH ZLQGRZVK! HQGLI GH¿QH 8'3B3257  FKDU V],3'HVW>@ ':25' :,1$3, WKUHDG5LFH]LRQH /392,' OS3DUDPHWHU  LQW 7UDVPLVVLRQH YRLG  LQW PDLQ YRLG ^ ':25' GZWKUHDG :25' Z9HUVLRQ5HTXHVWHG :6$'$7$ ZVD'DWD SULQWI ?W8'3 SS?Q  Z9HUVLRQ5HTXHVWHG 0$.(:25'   LI :6$6WDUWXS Z9HUVLRQ5HTXHVWHG ZVD'DWD UHWXUQ  LI /2%@  ^ VWUFS\ V],3'HVWV]7PS  DGGU5HPRWRVLQBDGGU6BXQ6BDGGU LQHWBDGGU V],3'HVW  ` LI V]7PS>@ [ ^ SULQWI ?Q?W0HVVDJJLR   VFDQI VVHQG%XI  VHQGWR VRFN7[ VHQG%XI VWUOHQ VHQG%XI   62&.$''5 DGGU5HPRWR VL]HRI 62&.$''5  ` ` FORVHVRFNHW VRFN7[  :6$&OHDQXS  UHWXUQ  ` ':25' :,1$3, WKUHDG5LFH]LRQH /392,' OS3DUDPHWHU ^ 62&.(7 VRFN5[ 62&.$''5B,1 DGGU/RFDOH DGGU5HPRWR FKDU UHF%XII>@ LQW OVRFNDGGU QE\WHV OVRFNDGGU VL]HRI 62&.$''5  VRFN5[ VRFNHW $)B,1(762&.B'*5$0  DGGU/RFDOHVLQBIDPLO\ $)B,1(7 DGGU/RFDOHVLQBDGGU6BXQ6BDGGU KWRQO ,1$''5B$1<  DGGU/RFDOHVLQBSRUW KWRQV 8'3B3257  ELQG VRFN5[ 62&.$''5 DGGU/RFDOH VL]HRI 62&.$''5  SULQWI ?Q?W,Q ULFH]LRQH VX SRUWD G?Q8'3B3257  ZKLOH  ^ QE\WHV UHFYIURP VRFN5[ UHF%XII VL]HRI UHF%XII   62&.$''5 DGGU5HPRWR OVRFNDGGU  UHF%XII>QE\WHV@  SULQWI ?Q?W5LFHYXWR GD?WV LO PHVVDJJLR V?QLQHWBQWRD DGGU5HPRWRVLQBDGGU UHF%XII  SULQWI ?Q?W,3 GHVWLQD]LRQH  V [ ([LW  V],3'HVW  ` FORVHVRFNHW VRFN5[  :6$&OHDQXS  `

A4

Programmazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

L’output del programma eseguito da un host con indirizzo IP 192.168.0.17: /$@ ^  6WUXWWXUD GDWL SHU :LQVRFN  :6$'$7$ ZVD'DWD  6RFNHW FOLHQW  LQW VRFN VWUXFW VRFNDGGUBLQ DGGU&OLHQW  (FKR VHUYHU DGGUHVV  XQVLJQHG VKRUW UHPRWHSRUW  (FKR VHUYHU SRUW  FKDU V],36HUYHU>@  6HUYHU ,3 DGGUHVV GRWWHG  FKDU V]7[>5&9%8)6,=(@ UHFY%XII>5&9%8)6,=(@  6WULQJD GL WUDVPLVVLRQH  LQW W[6L]H E\WHV5FYG WRWDO%\WHV5FYG FKDU FK  VWUFS\ V],36HUYHU  VWUFS\ V]7[,7,6 35  UHPRWHSRUW   VWULQJD GD WUDVPHWWHUH VX OLQHD GL FRPDQGR  LI DUJF !  VWUFS\ V]7[ DUJY>@  LI DUJF !  VWUFS\ V],36HUYHU DUJY>@   ,3 GHO VHUYHU VX OLQHD GL FRPDQGR  W[6L]H VWUOHQ V]7[ 

LI :6$6WDUWXS 0$.(:25'    ZVD'DWD    LQL]LDOL]]D]LRQH OLEUHULD :LQVRFN  ^ ISULQWI VWGHUU :6$6WDUWXS IDLOHG  H[LW   `  &UHD]LRQH VRFNHW FOLHQW  LI VRFN VRFNHW 3)B,1(7 62&.B675($0 ,335272B7&3   2Q(UURU VRFNHW IDOOLWD   9DORUL GL LPSRVWD]LRQH VRFNHW FOLHQW  PHPVHW DGGU&OLHQW  VL]HRI DGGU&OLHQW  DGGU&OLHQWVLQBIDPLO\ $)B,1(7 DGGU&OLHQWVLQBDGGUVBDGGU LQHWBDGGU V],36HUYHU   ,3 UHPRWR   3RUWD UHPRWD  DGGU&OLHQWVLQBSRUW KWRQV UHPRWHSRUW  SULQWI ?W7&3 &RQFRUUHQWH?Q  SULQWI ?W&RQQHVVLRQH D ,3 UHPRWR V VX 3RUWD UHPRWD G?Q V],36HUYHU UHPRWHSRUW   7HQWDWLYR GL FRQQHVVLRQH 

A4

Programmazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica



PROGRAMMA



                                    `

LI FRQQHFW VRFN VWUXFW VRFNDGGU DGGU&OLHQW VL]HRI DGGU&OLHQW   2Q(UURU FRQQHFW IDOOLWD  SULQWI ?Q?W&OLHQW FRQQHVVR D 6HUYHU?Q?W,3 5HPRWR V 3RUWD 5HPRWD G 3RUWD /RFDOH KX?Q ?W [ 7HUPLQD LQHWBQWRD DGGU&OLHQWVLQBDGGU UHPRWHSRUW*HW3RUW VRFN  FK  ZKLOH FK [  ¿QFKp QRQ VL GLJLWD [   ^ LI FK ^ IÀXVK VWGLQ  VFDQI F FK  LI FK [ VWUFS\ V]7[[  V]7[>W[6L]H@ FK V]7[>W[6L]H@  W[6L]H VWUOHQ V]7[  ` HOVH FK

   6SHGL]LRQH GHO PHVVDJJLR DO VHUYHU  LI VHQG VRFN V]7[ W[6L]H   W[6L]H 2Q(UURU VHQG IDOOLWD  SULQWI ?Q?W7UDVPHVVR VV]7[   RUD PL DVSHWWR OD ULVSRVWD HFKR GHO VHUYHU  WRWDO%\WHV5FYG  ZKLOH WRWDO%\WHV5FYG  W[6L]H ^ UHFY VRFN UHFY%XII 5&9%8)6,=(     LI E\WHV5FYG WRWDO%\WHV5FYG  E\WHV5FYG UHFY%XII>E\WHV5FYG@  SULQWI ?Q?W5LFHYXWR V?QUHFY%XII  `

 2Q(UURU UHFY IDOOLWD 

` FORVHVRFNHW VRFN  SULQWI ?Q?W&RQQHVVLRQH WHUPLQDWD  :6$&OHDQXS   &OHDQXS :LQVRFN  6OHHS   H[LW  

Il programma client accetta due parametri su linea di comando (in un caso SOXWR e ; nell’altro caso nulla, e vengono usati i valori di default). Il primo parametro rappresenta il primo messaggio che il client invia automaticamente dopo la connessione; il secondo è l’indirizzo IP del server a cui connettersi. ˜ Client. Creazione socket (righe 57÷62) Il socket del client che tenterà la connessione è creato con i parametri rete, stream (connesso) e TCP (benché quest’ultimo valore sia ancora ininfluente); quindi ne sono impostati gli indirizzi remoti, TCP (6000) e IP (l’indirizzo IP del server che sta attendendo la connessione). ˜ Client. Connessione (riga 67) La chiamata FRQQHFW sollecita l’entità di trasporto ad avviare il three-way handshake e ritorna solo a tentativo concluso. Se l’esito è positivo, il socket può essere usato per spedire e ricevere. ˜ Client. Comunicazione (righe 71÷95) Il ciclo indicato rimane in attesa di un input utente (e termina sull’input di una «x»). Anche se sembra un codice interattivo, in realtà la chiamata UHFY a riga 90 è sincrona, ma non blocca il ciclo solo perché dopo una spedizione (riga 83), il server risponde immediatamente (echo) e quindi sblocca la UHFY .

5

Programmazione connessa in TCP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

33

UESITI ESERCIZI PER LA VERIFICA ORALE Saper rispondere ai Requisiti fondamentali dà una sufficiente garanzia per sentirsi pronti all’interrogazione. Saper anche rispondere ai Requisiti avanzati dimostra una padronanza eccellente degli argomenti del capitolo. Requisiti fondamentali

Requisiti avanzati

1

Spiegare cosa si intende per funzione end-toend a proposito del livello di Trasporto.

1

Ricordare i compiti principali di un livello 4 di Trasporto.

2

Commentare i termini multiplazione e demultiplazione.

2

Illustrare il problema delle «due armate» e che cosa significa in ordine al concetto di connessione.

3

Spiegare il concetto di connessione e il sistema three-way handshake.

3

Ricordare i nomi particolari con cui si indicano i pacchetti UDP e i pacchetti TCP.

Elencare gli intervalli delle porte UDP/TCP più significativi e commentare il significato di Source e Destination port per UDP.

4

Spiegare il calcolo di checksum applicato in UDP (o in TCP).

5

Siccome UDP è un protocollo disconnesso, indicare come sia possibile conoscere il mittente dei pacchetti ricevuti.

6

Commentare il termine endpoint.

7

Mostrare per quale motivo un traffico multicast è preferibilmente trasportato da UDP.

8

Commentare la nozione di porta effimera per il protocollo TCP e spiegare perché è necessario che sia specificata.

9

Spiegare come si calcola la dimensione dell’header del pacchetto TCP.

4

5

Spiegare cosa significa che UDP non è un protocollo connesso.

6

Spiegare per quale motivo è necessario che TCP sia un protocollo connesso e indicare quali flag di TCP sono utilizzati per instaurare una connessione.

7

Mostrare come è possibile verificare l’esistenza di connessioni TCP su un host.

8

Commentare i ruoli di client e di server per due host coinvolti in una connessione TCP.

9

Ipotizzare una connessione TCP tra due host e indicare i valori delle porte dei due socket connessi.

10 Elencare

le principali caratteristiche del protocollo TCP in ordine al modo ARQ che utilizza.

11 Elencare le principali funzioni primitive BSD sockets utilizzate da client e server TCP.

12 Illustrare il modo concorrente per programmare un server TCP.

13 Spiegare

la locuzione peer-to-peer riferita alla programmazione UDP.

34

A4

10 Commentare il concetto di Wrap Around per TCP. 11 Spiegare cosa significa il fatto che «TCP non garantisce il confine dei messaggi».

12 Elencare quali primitive BSD sockets sono bloccanti e cosa implica.

13 Provare a indicare il protocollo three-way handshake nel caso di una connessione TCP, mettendo in evidenza quali passi sono attivati da funzioni «socket» del programma e quali dal sistema operativo.

Programmazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

UESITI ESERCIZI PER LA VERIFICA DI LABORATORIO Per la quinta classe gli esercizi proposti sono in realtà progetti software da svolgere organizzando vario materiale didattico appreso anche nelle discipline parallele come Informatica o Telecomunicazioni. Lo scopo delle proposte seguenti è quello di fornire le conoscenze necessarie per la realizzazione degli approfondimenti da presentare all’Esame di Stato e per affrontare l’eventuale prova scritta. Le soluzioni di questi esercizi possono essere recuperate dal materiale Online in varie versioni per vari linguaggi e piattaforme. UDP

1

Scrivere un’applicazione di rete in linguaggio C basata su UDP/P2P con interfaccia a carattere che si limita a spedire stringhe di testo verso un host con indirizzo IP letto da linea di comando.

2

Scrivere un’applicazione di rete basata su UDP/ P2P con interfaccia grafica e con un linguaggio a piacere (per esempio C, MsVb6.0, Java, MsVisual C#) che si limita a spedire testo verso un host con indirizzo IP impostabile da programma. Questa applicazione deve interagire anche con quella realizzata per l’esercizio precedente.

Esempio del flusso di pacchetti tra due programmi (uno con nickname «pippo» e l’altro con nickname «pluto»; il primo a giocare è «pippo» e pone il segno sulla seconda casella; «pluto» risponde con una mossa al centro): Programma1 q P2

3

4

‘4’“pluto” ‘2’‘1’ ‘2’‘4’ ‘2’‘5’ ... ... ‘3’ ...

Scrivere due applicazioni di rete basate su UDP client/server con interfaccia grafica e con un linguaggio a piacere (per esempio C, MsVb6.0, Java, MsVisual C#) in cui il server distribuisce le stringhe ricevute dai singoli client a tutti i client attivi. Scrivere un’applicazione di rete basata su UDP/ P2P con interfaccia grafica e con un linguaggio a piacere (per esempio C, MsVb6.0, Java, MsVisual C#) che realizzi il gioco del tris (o tic-tac-toe). Progettare un protocollo di livello 7 a piacere o utilizzare il protocollo suggerito. Formato del pacchetto:

... ‘5’

Una versione del programma attiva su Internet per questo protocollo è disponibile all’indirizzo IP SistemieReti.no-ip.com sulla porta UDP 6000.

TCP

5

Scrivere due applicazioni di rete basate su TCP con interfaccia a carattere in cui il server accetta una sola connessione da un solo client. I due programmi si scambiano stringhe e il server termina quando il client spedisce una stringa ben definita («EXIT», e a sua volta si termina).

6

Scrivere un’applicazione di rete basata su TCP con interfaccia grafica e con un linguaggio a piacere (per esempio C, MsVb6.0, Java, MsVisual C#). L’applicazione è un client dello stesso server dell’esercizio precedente con cui deve essere interoperabile.

7

Scrivere un’applicazione di rete basata su TCP con interfaccia a carattere che realizzi lo stesso server dell’esercizio 5, ma multiconnessione.

7 6 54321 0

CODICE

optional

˜ CODICE (1 byte): il codice Ascii di uno tra i

seguenti: ‘1’ (nickname), ‘2’ (mossa), ‘3’ (nuova partita), ‘4’ (nickname accettato), ‘5’ (disconnessione); ˜ optional (variabile): stringa AsciiZ contenente il nickname. Le nove caselle del gioco sono indicate con i codici Ascii ‘0’, ‘1’, ..., ‘8’ a partire dall’angolo superiore sinistro e corrispondono alle mosse.

Programma2 q P1 ‘1’“pippo”

Esercizi Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

35

Questo server deve essere interoperabile con entrambi i client dei due esercizi precedenti contemporaneamente.

8

Scrivere due applicazioni di rete basate su TCP con interfaccia grafica e con un linguaggio a piacere (per esempio C, MsVb6.0, Java, MsVisual C#) che realizzino il gioco del tris (o tic-tac-toe). L’applicazione server non gioca e si limita a orchestrare due client connessi che giocano. Il server è multiconnessione ma monopartita. Progettare un protocollo di livello 7 a piacere o utilizzare il protocollo suggerito. Formato del pacchetto:

‘A’: il Server fa attendere il Client la mossa dell’avversario + propria mossa + eventuale esito (‘v’ = vinto, ‘n’ = pareggio). ‘M’: il Client invia la sua mossa in optional. Alla ricezione di un “Tp” o “Tn” o “Av” o “An” la connessione TCP/IP del Client termina. Esempio del flusso di pacchetti tra due Client (uno con nickname “IO” e l’altro con nickname “LUI”; il primo a giocare è “LUI” e pone il segno X sulla prima casella in alto a sinistra; “IO” risponde con una O al centro): Client1

Client2

Server q C1 Server q C2 (listening)

7 6 54321 0 7 6 54321 0

(listening)

(connect) length

CODICE

(accept)

optional

5’V’”1.0” 2’V’

˜ length (1 byte): lunghezza del pacchetto; ˜ CODICE (1 byte): il codice Ascii di uno tra i

4’N’”IO” 3‘S’‘O’ 3’A’NULL

seguenti: ‘V’ (versione), ‘N’ (nickname), ‘S’ (segno), ‘T’ (turno), ‘A’ (attesa), ‘M’ (mossa); ˜ optional (variabile): se length > 2, un valore da interpretare.

(connect) (accept) 5’V’”1.0”

Le nove caselle del gioco sono indicate con i codici Ascii ‘0’, ‘1’, ..., ‘8’ a partire dall’angolo superiore sinistro e corrispondono alle mosse. Nessuna mossa è indicata con 0 (NULL). Il significato dei valori per CODICE è: ‘V’: il Client invia la sua versione di programma in optional. Il Server risponde con ‘V’ + ‘E’ se c’è errore o con ‘V’ se è ok. ‘N’: il Client invia il suo nickname in optional. Il Server risponde con ‘S’ + ‘O’ (assegna segno ‘O’) oppure ‘S’ + ‘X’ (assegna segno ‘X’). ‘N’ : il Server invia al Client il nickname dell’avversario in optional. ‘T’: il Server abilita il Client alla mossa + mossa avversario + eventuale esito (‘p’ = perso, ‘n’ = pareggio).

36

A4

2’V’ 5’N’”LUI”

5’N’”LUI”

3’S’’X’ 3’A’NULL 4’N’”IO” 3’T’NULL

3’M’’0’ 3’A’’0’ 3’T’’0’ 3’M’’4’ ...

...

...

...

Un server attivo su Internet per questo protocollo è disponibile all’indirizzo IP SistemieReti.no-ip. com sulla porta TCP 5500. L’esempio del codice Client per una App di Android di questo protocollo è disponibile in Appendice.

Programmazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

A5

Livello 7: Applicazione

Le reti TCP/IP non prevedono alcun livello intermedio tra il livello L4 Trasporto e il livello L7 Applicazione. I compiti dei livelli L5 Sessione e L6 Presentazione sono affrontati e risolti dai protocolli di livello L7 Applicazione, adottando una serie di contromisure che, alla fine, si riducono nell’uso di sottoprotocolli addizionali e specifici per ogni protocollo applicativo. OSI L7 Application L6 Presentation L5 Session

TCP/IP HTTP DHCP DNS NFS HTTPS SMTP FTP

L4 Transport

TCP UDP

L3 Network

IP routing ICMP IGMP ARP

L2 Data Link

non specificati

L1 Physical

Per esempio, uno dei protocolli applicativi più importanti di TCP/IP, cioè HTTP (HyperText Transfer Protocol), per affrontare il problema della sicurezza, può utilizzare un protocollo specifico denominato HTTPS (HyperText Transfer Protocol over Secure Socket Layer). Spesso nel livello 7 Applicazione vengono identificate le applicazioni con i protocolli relativi. Questo non è corretto. Un applicativo come MS Explorer (un browser) utilizza uno o più protocolli di livello 7 (per esempio HTTP, HTTPS, ma anche DNS), così come altre applicazioni di tipo browser (per esempio Mozilla Firefox) a loro volta usano magari gli stessi protocolli di livello 7 (per esempio HTTP, HTTPS e DNS), anche sullo stesso host e nel medesimo tempo. Infine, data la natura connessa e client/server di TCP e il fatto che numerosi protocolli di livello 7 utilizzano TCP come strato di trasporto, i protocolli applicativi vengono spesso implementati in modo asimmetrico dalle relative applicazioni. In questi casi si hanno quindi due applicazioni differenti che usano il medesimo protocollo di livello 7 ai due capi della connessione, un’applicazione client e un’applicazione server. Per esempio, l’applicazione client MS Explorer usa il protocollo HTTP per richiedere servizi all’applicazione server MS IIS, che a sua volta usa il protocollo HTTP, ma da lato server.

A5

Livello 7: Applicazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

37

Bisogna ricordare che molti protocolli di livello 7 sono trasportati da TCP (o UDP) su porte ben note e che risulta abbastanza normale associare un protocollo al numero di porta su cui è veicolato (per esempio, HTTP su porta TCP n. 80). Anche questo, seppur lecito, non è sempre corretto (infatti HTTP viene spesso trasportato sul numero di porta TCP 8080). In questa trattazione vengono affrontati i protocolli di livello 7 per TCP/IP più significativi, in particolar modo quelli previsti per la configurazione e l’organizzazione ottimale di una rete TCP/IP.

1

DHCP

DHCP (Dynamic Host Configuration Protocol, RFC 2131) è un protocollo client/server trasportato da UDP su reti LAN, o PPP su collegamento WAN. È utilizzato per assegnare gli indirizzi IP e altri valori di impostazione agli host di una rete TCP/IP, evitando di doverli configurare manualmente per ogni singolo host della rete. In una LAN i pacchetti DHCP sono sempre inviati in broadcast (MAC e IP broadcast); la parte client del protocollo DHCP spedisce le richieste sulla porta UDP 67 (dove un server DHCP attende i datagrammi), mentre aspetta le risposte sulla porta UDP 68 (sulla quale un server DHCP spedisce i datagrammi). L’obiettivo di DHCP è quello di mantenere la configurazione degli host di una rete priva di management da parte dell’amministratore. Il compito di assegnare manualmente gli indirizzi IP ai calcolatori comporta un rilevante onere per gli amministratori di una rete, soprattutto in reti di grandi dimensioni o in caso di numerosi computer che si connettono, si disconnettono o vengono semplicemente spostati da un ramo a un altro di una sottorete. L’amministratore ha però il compito di impostare adeguatamente la parte server di DHCP, in modo che la distribuzione degli indirizzi sia coerente con il piano di indirizzamento della rete TCP/IP. In ambito geografico il DHCP previene lo spreco degli indirizzi IP, potendo distribuire solo gli indirizzi IP per le stazioni effettivamente connesse a un ISP (Internet Service Provider). Gli indirizzi ottenuti dai client in questo modo sono i cosiddetti indirizzi IP dinamici. DHCP su LAN opera a livello di dominio di broadcast: un client DHCP agisce durante la fase di bootstrap del sistema operativo (avvio) di un host, richiedendo la propria configurazione in broadcast, dato che ancora l’host non possiede un indirizzo IP per la propria subnet. Un server DHCP deve essere presente in quel dominio di broadcast per rispondere alla richiesta. Se così non fosse, deve essere presente nel dominio di broadcast una stazione su cui opera la parte DHCP Relay del protocollo, incaricata di ritrasmettere su un altro dominio di broadcast la richiesta del client e di riportare sul dominio di broadcast del client le risposte del server. Oltre all’indirizzo IP, DHCP consente di impostare automaticamente quasi tutti i parametri fondamentali TCP/IP per una stazione, ovvero subnet mask, gateway di default, indirizzi di server DNS, e altro ancora. 38

A5

Livello 7: Applicazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

2

Il protocollo DHCP

Il protocollo DHCP è costruito su un modello client/server dove il server è la macchina designata dall’amministratore di rete a fornire alle macchine che ne fanno richiesta (i client) i parametri di inizializzazione, e a tenerne traccia in un database locale. La distribuzione deve essere definita su un ambito, ovvero su un gruppo ben preciso di indirizzi IP (per esempio, una subnet): l’ambito è l’insieme di indirizzi IP da cui DHCP sceglie gli indirizzi da distribuire. Per un host generico, la modalità di assegnazione standard è quella dinamica: in base a criteri impostati sul DHCP server, il client ottiene un indirizzo IP dall’ambito, coerente e valido per un determinato periodo di tempo denominato lease (alla scadenza del quale potrebbe ricevere un diverso indirizzo IP, ma altrettanto valido). Per quegli host che invece necessitano di indirizzi IP permanenti (per esempio, perché a loro volta server di servizi che devono sempre essere indentificabili in rete), l’assegnazione dell’indirizzo IP può essere ottenuta in modo tale che il server DHCP identifichi tali host attraverso il loro indirizNB. A volte è opportuno escluzo MAC durante la richiesta e gli assegni un indirizzo IP predeterminato dere alcuni host di una rete (reservation)(NB). dal meccanismo di assegnazione automatico del DHCP. Il protocollo utilizza un tipo di pacchetto nel quale una serie di campi In questi casi l’indirizzo IP e identificano 4 messaggi principali che realizzano un handshake simmetrico i parametri di configurazione a 4 vie detto DORA (Discovery, Offer, Request, Acknowledgement): dell’interfaccia dell’host escluso sono impostati manualmena) DHCPDISCOVER, il client cerca un server (in broadcast) e chiede la te dall’amministratore di rete e configurazione. quell’indirizzo IP deve essere b) DHCPOFFER, un server offre una configurazione (in broadcast) al escluso dall’ambito DHCP. client, indicando il proprio IP. DHCP c) DHCPREQUEST, il client accetta la configuA (client) razione (in broadcast) di un server. d) DHCPACK,ilserverconfermaidati(inbroad0.0.0.0 ff:ff:ff:ff:ff:ff 00:0b:82:01:ff:42 cast) e chiude la sessione. 0.0.0.0 255.255.255.255 67 68 Lo schema logico di DHCP può essere sintetizB (server DHCP) DHCPDISCOVER zato nel diagramma qui a lato. Si nota che il client A inizia l’handshake DHCP ff:ff:ff:ff:ff:ff 00:08:74:ad:ff:42 192.168.0.1 192.168.0.1 255.255.255.255 presentandosi con un indirizzo IP convenziona67 68 DHCPOFFER le (0.0.0.0, This host on this network), dato che ) non possiede (ancora) un indirizzo IP valido. Il pacchetto DHCPDISCOVER viene inoltrato in MAC broadcast e IP broadcast sulla rete fisica. ff:ff:ff:ff:ff:ff 00:0b:82:01:ff:42 Se esiste un server DHCP sulla rete fisica 0.0.0.0 255.255.255.255 67 68 (l’host B), esso ricava un indirizzo IP valido per DHCPREQUEST ) quella subnet (per esempio 192.168.0.10) da un database locale e risponde in MAC broadcast e ff:ff:ff:ff:ff:ff 00:08:74:ad:ff:42 A (client) 192.168.0.1 255.255.255.255 IP broadcast sulla rete fisica con un DHCPOF67 68 DHCPACK FER, indicando il proprio indirizzo IP. (192.168.0.10) Il client che aveva fatto la richiesta ora at- 192.168.0.10 tempo tempo tende eventuali altre risposte DHCPOFFER 192.168.0.10 (Server IP 192.168.0.1

(Server IP 192.168.0.1

2

Il protocollo DHCP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

39

Il nome del pc?

ESEMPIO

Quando un Personal Computer di una rete viene avviato e acquisisce automaticamente la configurazione con DHCP, in realtà, si presenta al server DHCP con un’identità (oltre all’indirizzo MAC della scheda di rete): il proprio nome letterale di host (host name). Il protocollo DHCP, infatti, consente di specificare delle opzioni (Option) nel pacchetto, tra le quali Host Name. In questo modo il server DHCP ottiene la stringa del nome dell’host che potrà utilizzare in collaborazione con DNS (cfr. DNS e DHCP). È sempre attraverso le Option che DHCP è in grado di fornire, oltre all’indirizzo IP, tutti i parametri fondamentali di configurazione di un host (subnet mask, gateway di default, indirizzi IP DNS server) e altre decine di valori impostabili.

di altri eventuali server DHCP. Quindi ne sceglie uno e risponde con un DHCPREQUEST indicando l’IP del server DHCP scelto. Infine il server DHCP che si riconosce con quell’indirizzo IP conferma l’indirizzo IP indicato in precedenza con un datagramma DHCPACK. Ora il client A richiedente può utilizzare l’indirizzo IP ricevuto e tutti gli altri parametri eventualmente presenti nell’offerta. Lo schema descritto risolve la situazione di più DHCP server operanti nella stessa rete fisica, che ricevono la stessa richiesta da un client. Le richieste contemporanee di più client allo stesso DHCP server sulla stessa rete fisica, invece, sono risolte da un id. di sessione creato dal client all’inizio della fase (DHCPDISCOVER) e ricopiato in tutti i pacchetti fino al messaggio finale (DHCPACK). I parametri di configurazione fondamentali offerti da DHCP a un client sono: ˜ IP address, l’indirizzo IP che dovrà utilizzare il client nella rete TCP/IP. ˜ Subnet Mask, la maschera di sottorete utilizzata nella subnet di appartenenza del client. ˜ Default Gateway IP address, l’indirizzo IP del router di default per il client per il routing di default del client. ˜ DNS IP address, l’indirizzo IP di uno o due host della rete che ospitano un server DNS. Inoltre un server DHCP può inviare molte altre informazioni di configurazione ai client (Option), come specificato in RFC 2132.

Individuare il server DHCP Per un client DHCP potrebbe essere utile sapere l’indirizzo IP della macchina server DHCP da cui riceve la configurazione. Per Windows: &?:LQGRZV!LSFRQ¿J DOO &RQ¿JXUD]LRQH ,3 GL :LQGRZV 1RPH KRVW               6XI¿VVR '16 SULPDULR         7LSR QRGR               5RXWLQJ ,3 DELOLWDWR         3UR[\ :,16 DELOLWDWR        

    

'HOO( ,EULGR 1R 1R

         

,QWHO 5 /0 *LJDELW &$%( 6u 6u      $WWLYDWR

6FKHGD (WKHUQHW /$1 6XI¿VVR '16 VSHFL¿FR SHU FRQQHVVLRQH 'HVFUL]LRQH              ,QGLUL]]R ¿VLFR           '+&3 DELOLWDWR            &RQ¿JXUD]LRQH DXWRPDWLFD DELOLWDWD ,QGLUL]]R ,3Y            6XEQHW PDVN              *DWHZD\ SUHGH¿QLWR          6HUYHU '+&3             6HUYHU '16              1HW%,26 VX 7&3,3           &?:LQGRZV!

40



A5

Livello 7: Applicazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

ESEMPIO



Per Linux invece è necessario consultare un file di configurazione (per esempio GKFOLHQWOHDVHV). In una rete Microsoft con dominio (cfr. con dominio), è possibile individuare tutti i DHCP server operanti nella rete con un comando netsh (solo con sistema operativo server e diritti amministrativi): &?:LQGRZV6HUYHU!QHWVK GKFS VKRZ VHUYHU  VHUYHU WURYDWL QHO VHUYL]LR GLUHFWRU\ 6HUYHU >FXRUHLWLVSULW@ ,QGLUL]]R >@ 3RVL]LRQH '6 FQ FXRUHLWLVSULW 6HUYHU >FXRUHLWLVSULW@ ,QGLUL]]R >@ 3RVL]LRQH '6 FQ &825(LWLVSULW 6HUYHU >SRVWDLWLVSULW@ ,QGLUL]]R >@ 3RVL]LRQH '6 FQ SRVWDLWLVSULW 6HUYHU >FXRUHLWLVSULW@ ,QGLUL]]R >@ 3RVL]LRQH '6 FQ FXRUHLWLVSULW 6HUYHU >DFWLYHLWLVSULW@ ,QGLUL]]R >@ 3RVL]LRQH '6 FQ DFWLYHLWLVSULW (VHFX]LRQH FRPDQGR ULXVFLWD &?:LQGRZV6HUYHU!

Esistono altri protocolli per l’assegnazione automatica degli indirizzi IP e delle configurazioni degli host, anche se non standardizzati in documenti RFC: Zeroconf dell’IETF e APIPA (Automatic Private Internet Protocol Addressing) di Microsoft, che utilizzano automaticamente indirizzi IP locali di una certa classe e verificano periodicamente la presenza di eventuali server DHCP per evitare conflitti.

3

Sicurezza DHCP

Siccome DHCP è un protocollo studiato per reti trust (reti sicure, dato che opera all’interno di reti LAN o in collegamenti punto-punto), esso non prevede autenticazioni, né da parte client né da parte server. In altri termini un server DHCP non è certo che la richiesta che riceve sia una richiesta legittima, così come le risposte che riceve un client non è certo che siano risposte legittimate. Un programma speciale potrebbe infatti fare molte richieste DHCP impersonando MAC address diversi, causando l’esaurimento del pool di indirizzi IP disponibili e facendo in modo che host legittimi non riescano più a ottenere una configurazione. Questa situazione è detta DHCP address starvation. D’altra parte un programma speciale potrebbe sostituirsi ai server DHCP presenti nella rete fisica, inviando configurazioni scorrette ai client DHCP. Questa situazione è detta DHCP rogue server.

4

DNS

Il DNS (Domain Name System) indica un sistema complessivo per ottenere l’indirizzo IP di un nodo della rete dal suo nome simbolico o host name (risoluzione DNS); oppure offre la conversione inversa, da un indirizzo IP a un host name assegnato a un nodo della rete (risoluzione inversa). Con lo stesso acronimo (DNS) si intende anche il protocollo omonimo di livello 7 (RFC 882 e successivi) che regola il funzionamento del sistema

4

DNS

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

41

NB. Attraverso il DNS sono localizzate anche le macchine che operano come server di posta elettronica. Si consulti l’Appendice, Posta elettronica.

RFC-Italia Tra gli autori italiani di RFC va menzionato Claudio Allocchio, probabilmente il primo europeo a collaborare con IETF. Attorno ai primi anni ’90 una sua iniziativa riguardò proprio il DNS e la possibilità di integrarne il funzionamento con lo schema di indirizzamento per la posta elettronica di OSI, denominato X.400, ai tempi molto diffuso. Il lavoro si concluse nel 1993 con la pubblicazione dell’RFC 1405. (Mapping between X.400 (1984/ 1988) and Mail-11 (DECnet mail))

attraverso le macchine server che hanno accesso ai database su cui sono memorizzate le associazioni nomi/indirizzi(NB). Il DNS è una delle caratteristiche più visibili della rete Internet dato che i nomi simbolici sono molto più facili da ricordare rispetto agli equivalenti indirizzi IP. Cionondimeno tutta la rete TCP/IP necessita di indirizzi IP in formato numerico (per esempio in formato dotted) per far funzionare i protocolli, pertanto il servizio DNS è fondamentale sia per le reti TCP/IP locali (DNS privato), sia per la rete Internet mondiale (DNS pubblico). Il protocollo DNS è anch’esso di tipo client/server e viene trasportato da UDP (in qualche caso anche da TCP) sul numero di porta 53. In sostanza il protocollo DNS deve essere in grado di agire a livello 7 come supporto ad altre applicazioni dello stesso livello che utilizzano nomi simbolici al posto di indirizzi IP (come per esempio HTTP che utilizza gli URL al posto degli indirizzi IP). In queste occasioni il client DNS deve intercettare il nome simbolico utilizzato dall’applicazione (per esempio, un URL) e fare una richiesta di risoluzione DNS alla parte server del protocollo DNS. Ottenuta la risoluzione, l’applicazione originaria potrà proseguire utilizzando l’indirizzo IP al posto del nome simbolico. La parte client del protocollo DNS è sempre attiva su ogni host di una rete TCP/IP ed è spesso chiamata resolver; la parte server del protocollo invece è realizzata solo su macchine che hanno accesso a un database locale dei nomi (server DNS), ed è detta name server (ns). ATTENZIONE. Per la funzione fondamentale di risolutore dei nomi, ogni host di una rete TCP/IP deve possedere, nella propria configurazione di rete (indirizzo IP, subnet mask e indirizzo IP gateway di default), anche l’indirizzo IP di almeno una macchina server DNS in modo tale che i protocolli di livello 7 possano invocarlo alla bisogna.

5

Protocollo DNS

Nella sua forma più semplice il protocollo DNS consiste in due passi: la richiesta del resolver (client DNS) e la risposta del name server (server DNS). Il resolver invia una richiesta di risoluzione di un nome con un pacchetto DNS Standard query su UDP, con IP remoto impostato sull’indirizzo di un DNS server (indirizzo IP che l’host deve avere nella sua configurazione di base) e Porta remota UDP 53. La Porta locale sarà designata in modo casuale. Nel pacchetto sarà presente il nome simbolico che deve essere risolto. Il name server risponde con un pacchetto DNS Standard response su UDP con IP remoto coincidente con l’IP del resolver e Porta remota la porta designata dal client (la Porta locale invece sarà ancora la 53). Nel pacchetto sarà presente l’indirizzo IP relativo al nome simbolico ricevuto in consegna. Il name server prima di tutto consulta un database locale nel quale sono memorizzate le corrispondenze tra gli host name della rete privata e i relativi indirizzi IP privati (DNS privato). 42

A5

Livello 7: Applicazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

DNS

A (resolver)

Whois Registro.it Nel 1987 IANA approva e riconosce il ccTLD italiano, .it. Ne affida la gestione al Consiglio Nazionale delle Ricerche (CNR) in virtù delle competenze tecniche e scientifiche maturate dai suoi ricercatori (tra i primi in Europa ad adottare il protocollo IP). Il servizio di registrazione e mantenimento dei domini italiani è stato erogato inizialmente dall’Istituto Cnuce del CNR. Dal 1997 tale competenza è passata all’Istituto per le Applicazioni Telematiche (IatCNR) e, a seguire, all’Istituto di Informatica e Telematica (Iit-CNR). Oggi il servizio è disponibile su www.registro.nic, con 2478184 domini .it registrati a dicembre 2012 (quinto ccTLD europeo). Il CNR delega quindi i cosiddetti Registrar (aziende autorizzate) a operare sul database dei domini.

192.168.0.10

192.168.0.10 192.168.0.1 3060 53 Standard query (www.eos.com)

B (name server)

192.168.0.1 192.168.0.1 192.168.0.10 53 3060 Standard response (www.eos.com = 208.13.1.24)

tempo

tempo

Se la ricerca dà esito negativo, il name server diventa a sua volta resolver verso un name server più profondo (il cui indirizzo IP deve essere impostato nella sua configurazione base). Il processo si ripete fino a raggiungere un name server che possiede la corrispondenza richiesta: le risposte DNS scalano le richieste e giungono infine al resolver iniziale (DNS pubblico). Le richieste di risoluzione di host name pubblici si basa su un database distribuito e sulla gerarchia dei nomi di dominio (domain name) che sono stati previsti per la gestione del DNS. Un nome di dominio è quindi una stringa separata da punti, come per esempio LWLVSULW. I nomi di dominio si leggono in «little endian»: la parte più significativa del nome di dominio sta a destra. Quando un nome di dominio indica un preciso nodo nell’albero, si chiama FQDN (Fully Qualified Domain Name). FQDN interessanti sono quelli che in prima posizione contengono il nome di un host; per esempio LQIRUPDWLFDLWLVSULW oppure QVLWLVSULW sono FQDN. spazio dei nomi e gerarchia DNS

name server unnamed (root name server)

com

net

org

 it



 de

 zw

domini di primo livello

domini di secondo livello

 

eos.com



www.eos.com

 

pr.it

ns.itis.pr.it



informatica00.itis.pr.it

zona

5

Protocollo DNS

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

43

L’organizzazione dei nomi di dominio è affidata a ICANN/IANA che ha predisposto uno schema di nomi gerarchico ad albero invertito, alla cui radice sta il carattere ‘.’ (punto). Sotto la radice, IANA ha previsto nomi di dominio di primo livello TLD (Top Level Domain) come i ccTLD (country code TLD, per esempio LW, HQ, IU, GH, ecc.), o gli usTLD (Usa TLD, come PLO, HGX, JRY) o i gTLD (generic TLD, per esempio FRP, QHW, RUJ). I nomi di dominio di secondo livello (o livelli ancora più profondi) sono invece delegati via via agli enti territoriali. In Italia l’ente responsabile della gestione dei domini di secondo livello della gerarchia LW è il CNR. Quando il resolver di un client DNS avvia una richiesta che si espande al dominio pubblico, la richiesta viene presa in carico da più name server che possono operare in modo ricorsivo e/o iterativo: se un name server delega un altro name server, allora la richiesta è ricorsiva; se invece coopera con altri name server, la richiesta è iterativa. Nella figura, l’applicazione di un host informatica00.itis.pr.it di rete privata con indirizzo IP 192.168.0.10 necessita dell’indirizzo IP relativo a un host name (per esempio, un browser nel quale si è digitato www.eos.com, con indirizzo IP 208.13.1.24). L’applicazione avvia il resolver operativo sull’host il quale, verificato di non avere in cache DNS la risoluzione di quel nome, avvia una richiesta ricorsiva al suo name server di default (il cui indirizzo IP è memorizzato nelle sue configurazioni TCP/IP, in questo caso ns.itis.pr.it, con IP 192.168.0.1). Ora il name server operante su questa macchina può decidere se avviare una risoluzione ricorsiva (figura a destra) o una risoluzione iterativa (figu-

Root name servers Fino al 2007 i root name servers operanti erano solo 13, coadiuvati da 137 macchine sparse per il mondo (di cui tre in Italia). I domain name dei 13 root name servers sono: DURRWVHUYHUVQHW EURRWVHUYHUVQHW  PURRWVHUYHUVQHW. ASN Operatore A AS26415 Verisign inc. B N/A ns1.isi.edu C AS2149 Cogent Communications D AS27 University of Maryland E AS297 NASA F AS3557 Internet Systems Consortium G AS5927 Defense Information Systems Agency H AS13 U.S. Army Research Lab I AS29216 Netnod J N/A K AS25152 RIPE NCC L N/A M AS7500 WIDE Project

risoluzione DNS iterativa

risoluzione DNS ricorsiva www.eos.com ?

3

3 IP di ns.com

IP 208.13.1.24

 com

4



eos ?

7

2

IP 208.13.1.24



www ?





2 www.eos.com ?

eos.com

6

8

IP 208.13.1.24

5



com ?

7

IP 208.13.1.24

4

pr.it

www.eos.com (208.13.1.24)

ns.itis.pr.it (192.168.0.1)

pr.it

www.eos.com (208.13.1.24)

8



ns.itis.pr.it (192.168.0.1)

208.13.1.24

208.13.1.24

www.eos.com ?

1

informatica00.itis.pr.it (192.168.0.10)

44

it

www.eos.com ?

it

 



6

com

5

IP di ns.eos.com

eos.com





A5

www.eos.com ?

informatica00.itis.pr.it (192.168.0.10)

Livello 7: Applicazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

1

ESEMPIO

ra a sinistra). Nell’esempio rappresentato nessun name server recupera la risoluzione nella propria cache. Quando una richiesta viene esaudita, potrebbe significare che un name server ha trovato nel suo database la corrispondenza nome di dominio/ indirizzo IP: questo name server è detto autoritativo. I server autoritativi posseggono la parte di database distribuito necessaria per la mappatura di una precisa zona della gerarchia DNS a essi assegnata dalle autorità deleganti. In altri casi la risposta può essere fornita da un name server in base a un valore nella cache. Per evitare che le cache possano diventare inaffidabili, i record ivi presenti hanno un tempo di vita (TTL). Utility amministrative per DNS Nslookup e Whois sono le classiche utility amministrative per DNS, praticamente presenti come applicazioni console su tutti i sistemi operativi. ˜ Nslookup accetta come parametro un domain name e restituisce l’indirizzo IP equivalente (come un resolver), oppure da un indirizzo IP restituisce il domain name equivalente (risoluzione inversa). &?:LQGRZV!QVORRNXS ZZZLWLVSULW 6HUYHU &DVDPVKRPHQHW $GGUHVV  5LVSRVWD GD XQ VHUYHU QRQ DXWRUHYROH 1RPH :HELWLVSULW $GGUHVV  $OLDVHV ZZZLWLVSULW &?:LQGRZV! &?:LQGRZV!QVORRNXS  6HUYHU &DVDPVKRPHQHW $GGUHVV  1RPH KRVWVWDWLFEEXVLQHVVWHOHFRPLWDOLDLW $GGUHVV  &?:LQGRZV! ˜ Whois è altrettanto interessante, e consente di visualizzare numerosi parametri relativi a un indirizzo IP o a un nome di dominio, come l’ISP a cui quell’indirizzo appartiene o dati riguardanti l’intestatario del dominio e il Registrar. Whois non esiste nativamente in Windows; viene distribuito però gratuitamente da Microsoft presso il sito di Mark Russinovich (Sysinternals, http://download.sysinternals.com/files/WhoIs.zip). &?:LQGRZV!ZKRLV LWLVSULW :KRLV Y  'RPDLQ LQIRUPDWLRQ ORRNXS XWLOLW\ 6\VLQWHUQDOV  ZZZV\VLQWHUQDOVFRP &RS\ULJKW &  0DUN 5XVVLQRYLFK &RQQHFWLQJ WR ,7ZKRLVVHUYHUVQHW 'RPDLQ LWLVSULW 6WDWXV RN



5

Protocollo DNS

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

45

ESEMPIO



&UHDWHG /DVW 8SGDWH ([SLUH 'DWH

    

5HJLVWUDQW 1DPH 2UJDQL]DWLRQ &RQWDFW,' $GGUHVV

,7,6 /HRQDUGR 'D 9LQFL ,7,6 /HRQDUGR 'D 9LQFL ,7,6 9LD 7RVFDQD  3DUPD  35 ,7    

&UHDWHG /DVW 8SGDWH $GPLQ &RQWDFW 1DPH 2UJDQL]DWLRQ &RQWDFW,' $GGUHVV

1



1

,7,6 /HRQDUGR 'D 9LQFL 11 9LD 7RVFDQD  3DUPD  35 ,7    

&UHDWHG /DVW 8SGDWH 7HFKQLFDO &RQWDFWV 1DPH &RQWDFW,'

*



%



*%

5HJLVWUDU 2UJDQL]DWLRQ 1DPH

/DERUDWRULR GL 7HOHPDWLFD SHU LO 7HUULWRULR /775(*

1DPHVHUYHUV GQVLWLVSULW GQVOWWLW &?:LQGRZV! ˜ Un altro interessante comando per ispezionare il DNS è ottenuto tramite l’utility amministrativa ipconfig, con parametro /displaydns (non disponibile su Linux): &?:LQGRZV!LSFRQ¿J GLVSOD\GQV &RQ¿JXUD]LRQH ,3 GL :LQGRZV ZZZV\VDGPLQLW  1RPH UHFRUG       ZZZV\VDGPLQLW 7LSR UHFRUG        'XUDWD 77/        /XQJKH]]D GDWL      6H]LRQH         5LVSRVWD 5HFRUG $ +RVW      ZZZVWRQHVRIWFRP  1RPH UHFRUG       ZZZVWRQHVRIWFRP 7LSR UHFRUG       

46

A5

Livello 7: Applicazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica



ESEMPIO



'XUDWD 77/   /XQJKH]]D GDWL 6H]LRQH     5HFRUG $ +RVW

   

   

   

   

  5LVSRVWD 

1RPH UHFRUG   7LSR UHFRUG   'XUDWD 77/   /XQJKH]]D GDWL 6H]LRQH     5HFRUG $ +RVW

     

     

     

     

ZZZVWRQHVRIWFRP    5LVSRVWD 

&?:LQGRZV! In questo caso viene visualizzata la cache DNS locale (le ultime risposte a DNS Standard query avviate da qualche applicazione), ovvero i record del database locale del DNS. Si nota il campo TTL (in secondi): se il comando viene ripetuto, il valore del campo diminuisce e, una volta giunto a zero, il record viene eliminato dalla cache. ˜ Se la connessione alla rete pubblica non funziona, a volte il problema è da addebitare al malfunzionamento del DNS (server DNS irraggiungibile o malfunzionante, errata configurazione del protocollo, ecc.). Un test semplice ed efficace consiste nel verificare la raggiungibilità di un sito senza usare DNS, ovvero usando direttamente l’indirizzo IP pubblico del sito (per esempio 8.8.8.8, IP di una macchina Google): &?:LQGRZV!SLQJ ZZZJRRJOHLW ,PSRVVLELOH WURYDUH O¶KRVW ZZZJRRJOHLW 9HUL¿FDUH FKH LO QRPH VLD FRUUHWWR H ULSURYDUH &?:LQGRZV!SLQJ  (VHFX]LRQH GL 3LQJ  FRQ  E\WH GL GDWL 5LVSRVWD GD  E\WH  GXUDWD PV 77/  5LVSRVWD GD  E\WH  GXUDWD PV 77/  5LVSRVWD GD  E\WH  GXUDWD PV 77/  5LVSRVWD GD  E\WH  GXUDWD PV 77/  6WDWLVWLFKH 3LQJ SHU  3DFFKHWWL 7UDVPHVVL  5LFHYXWL  3HUVL   SHUVL  7HPSR DSSURVVLPDWLYR SHUFRUVL DQGDWDULWRUQR LQ PLOOLVHFRQGL 0LQLPR PV 0DVVLPR PV 0HGLR PV &?:LQGRZV!

5.1

DNS e DHCP

Per forza di cose gli applicativi basati sui protocolli DHCP e DNS operanti su reti private devono cooperare. Dopotutto se la distribuzione degli indirizzi IP sulla rete viene realizzata da DHCP, è il processo DHCP che conosce l’associazione tra host e indirizzo IP e quindi è il processo DHCP che deve informare il processo DNS che il tale host ha un determinato indirizzo IP. In effetti funziona proprio così, ed è per questo che i server DHCP operano spesso sulla stessa macchina su cui opera il server DNS. Quando un nuovo host si avvia e recupera la propria configurazione tra-

5

Protocollo DNS

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

47

mite DHCP client, invia al DHCP server anche il proprio host name (che è stato deciso in locale, quindi anche passibile di omonimia, almeno su reti workgroup). Il server DHCP che alla fine dello scambio DORA conferma la configurazione, contatta il server DNS della rete e gli comunica la coppia host name/indirizzo IP in modo che il DNS server possa aggiornare il proprio database locale con i valori ricevuti. Si ricorda, infatti, che l’indirizzo IP concesso da DHCP server non è sempre lo stesso (alla scadenza del lease potrebbe cambiare). Per un esempio di configurazione dei server DHCP e DNS consultare l’Appendice.

Sicurezza DNS

6

Anche il protocollo DNS non prevede autenticazioni: resolver e name server si scambiano pacchetti UDP senza un meccanismo di legittimazione reciproca. In realtà esiste una versione del protocollo che realizza autenticazione (DNSSEC, Domain Name System Security Extensions, RFC 2535), ma per varie ragioni – tra cui una difficile retrocompatibilità con DNS classico, non è molto utilizzato. Il tipico attacco al DNS comporta la simulazione di pacchetti DNS Standard response falsi, contenenti indirizzi IP differenti da quello che una risposta autentica avrebbe fornito. Ciò è molto insidioso dato che l’applicazione richiedente viene rediretta su un sito diverso da quello prestabilito. Questa situazione è detta DNS cache poisoning.

Reti Microsoft

7

L’organizzazione di una LAN prevede numerosi servizi necessari affinché le informazioni e le risorse possano essere condivise proficuamente. Il piano dell’indirizzamento TCP/IP degli host di una LAN (switched o segmentata in più subnet) è il passo necessario affinché tutta una serie di servizi di rete possano essere operativi e fornire agli utenti le funzionalità di base: ˜ ˜ ˜ ˜ ˜

accesso controllato alla rete (user account); individuazione degli host appartenenti alla rete (browsing); distribuzione di spazi disco (condivisione di file e cartelle); accesso a periferiche remote (condivisione stampanti e periferiche); accesso a rete pubblica (condivisione WAN/Internet).

Naturalmente le reti offrono miriadi di servizi aggiuntivi e supplementari. In ogni caso ognuno di questi servizi deve essere realizzato da uno o più protocolli applicativi (livello 7) operanti sulla rete, ovvero attivi sugli host che partecipano alla rete. Per ragioni storiche tra le quali la primogenitura, i modelli di rete LAN 48

A5

Livello 7: Applicazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

più diffusi sono quelli adottati dall’azienda multinazionale Microsoft Corporation. I due modelli di rete LAN proposti da Microsoft sono: ˜ workgroup (peer-to-peer), adatto per reti con pochi host (< 20); ˜ dominio (client/server), adatto per reti aziendali con molti host. Nel primo caso (workgroup), pur condividendo un nome comune di rete (il workgroup), gli host e gli utenti sono definiti e gestiti in modo locale su ogni singola macchina, così come le condivisioni delle risorse. Un modo efficace per organizzare una rete workgroup è creare gli stessi utenti sui vari host. Gli utenti devono avere la coppia user name/password identica per ogni host. Nel secondo caso (dominio), sotto il nome di rete opera almeno una macchina con un sistema operativo di classe «server» su cui viene configurato un servizio denominato DC (Domain Controller) che gestisce almeno un database centralizzato contenente le utenze comuni a tutti gli host della rete: l’accesso alla rete e alle risorse viene effettuato previa autenticazione presso il server di dominio. A differenza del modello workgroup, un host che vuole partecipare alla rete con dominio deve essere preventivamente autorizzato da un amministratore della rete tramite una procedura dedicata (unione al dominio). In entrambi i casi le reti Microsoft necessitano di almeno un protocollo di livello 7 di supporto, denominato SMB (Server Message Block, di tipo proprietario). Per le reti a dominio è necessario anche un altro protocollo di livello 7 denominato LDAP (Lightweight Directory Access Protocol, RFC 1777). La grande diffusione delle reti Microsoft ha indotto la comunità Linux a sviluppare e rendere disponibile un protocollo di livello 7 compatibile con SMB detto Samba (SaMBa, licenza GPL) che consente l’interoperabilità tra reti Linux e reti Microsoft (sia workgroup sia dominio). Per un elenco significativo dei protocolli di applicazione utilizzati in reti Microsoft, consultare l’Appendice, Protocolli applicativi per reti Microsoft.

8

Record DNS Un name server conserva le informazioni per risolvere i nomi (e gli indirizzi) su una tabella che contiene righe denominate record DNS (resource record o RR), in cui il campo chiave è detto Nome del record. I record DNS possono essere di vario tipo: Tipo A, classico, che associa al nome del record il suo indirizzo IP. Tipo PTR, risoluzione inversa, che associa al nome del record espresso in indirizzo IP, un nome. Tipo CNAME, che associa al nome del record un altro nome (alias). Tipo MX, che al nome del record associa il server di posta elettronica per quel nome. Tipo NS, che al nome del record associa il nome del suo name server autoritativo. Per ogni record è indicata anche una durata di tempo di validità denominata TTL (Time to live) per consentire ai record DNS di essere aggiornati periodicamente.

SMB

SMB (conosciuto anche come SMB/CIFS) è un protocollo di livello 7 Applicazione, di tipo client/server, che consente di denominare gli host e le risorse di una rete, compreso il file system, quindi di consentirne la condivisione tra le utenze. Una volta condivise le risorse, SMB consente le classiche operazioni di creazione, cancellazione, lettura, scrittura, modifica, ecc. La condivisione è di tipo share (con password definita e registrata in locale sulla risorsa) se SMB è usato in modo workgroup; è di tipo user, cioè in base ai privilegi (questa volta memorizzati sul server di dominio) dell’utenza alla quale si concede la condivisione, se SMB opera in modalità dominio. SMB agisce con un approccio client/server, per cui un client avanza le sue richieste e il server risponde opportunamente. Sia la parte client sia la parte server del protocollo devono essere implementate su ogni host.

8

SMB

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

49

8.1 Browsing e broadcast Nel modello workgroup nulla è garantito a proposito del servizio di browsing, cioè il servizio che consente di «sfogliare» la rete e visualizzare i client che vi appartengono. Tutto dipende dalla versione del sistema operativo del client, anche se da Windows 7 in avanti le configurazioni automatiche sono abbastanza efficaci e usano l’annuncio broadcast correttamente. Per evitare che ogni nodo debba contenere una copia completa della lista dei nomi NetBIOS registrati (e delle relative risorse condivise), il protocollo elegge tra i computer, in modo trasparente e automatico, un host Browser Master, a cui verrà affidata un’unica lista: gli altri host potranno utilizzare questa lista per mantenere aggiornati i nomi NetBIOS della rete. Se il servizio di browsing non funziona, significa che i client non si annunciano correttamente, e un’ulteriore possibilità è impostare opportunamente sul client il «record DNS» sul file KRVWV (in C:\Windows\System32\drivers\etc\). Per client con versioni di sistema operativo inferiori a Win2000/XP, le reti Microsoft possono implementare un servizio di risoluzione dei nomi NetBIOS (su indirizzi IP) denominato WINS (Windows Internet Name Service).

50

Protocollo SMB

Si tratta di un protocollo piuttosto complesso, risultato di una storia di modifiche ed evoluzioni che inizia negli anni ’80. Inizialmente SMB usava le API di una libreria denominata NetBIOS (Network Basic Input Output System) per accedere alla rete; quindi fu scritto uno strato di trasporto/ sessione apposito denominato NetBEUI (NetBios Extended User Interface), anch’esso basato sulle API NetBIOS su cui SMB si appoggiava per ottenere i servizi di rete. Infine, con l’estendersi dell’uso di TCP/IP, Microsoft ha sostituito NetBEUI con TCP e UDP, fornendo una versione di SMB che opera con NetBIOS over TCP/IP denominata NBT (o NetBT). In generale SMB usa quindi le API di NetBIOS per operare sulle risorse condivise e viene trasportato normalmente in TCP sulla porta 445 (DirectSMB). Per mantenere la retrocompatibilità, SMB prima di effettuare qualsiasi richiesta, negozia la corretta versione del protocollo (pacchetto Negotiate Protocol Request). SMB usa un proprio sistema per denominare e utilizzare gli elementi di una rete (dischi, files, directory, utenti, periferiche, ecc.) detto UNC (Universal Naming Convention) che ha forma: ??KRVWQDPH?UHVRXUFH?VXEUHVRXUFH La parte hostname è detta nome NetBIOS, ed è una stringa ASCII di 16 caratteri. Purtroppo il nome NetBIOS, a differenza dello schema DNS e TCP/IP, non consente alcuna operatività di routing: i nomi NetBIOS erano diffusi originariamente tramite MAC broadcast in un solo dominio di collisione. Per questa ragione SMB può essere supportato da NBT con tre servizi base a livello applicativo: ˜ risoluzione dei nomi NetBIOS, su porta UDP 137; ˜ servizio datagrammi NetBIOS, su porta UDP 138; ˜ servizio sessioni NetBIOS, su porta TCP 139. Per client che partecipano a reti Microsoft con dominio, almeno da Windows 2000 Server in avanti, la risoluzione dei nomi NetBIOS (in indirizzi IP) è garantita dall’uso di DNS: all’atto dell’unione al dominio, il nome NetBIOS del client è aggiunto al DNS con il nome qualificato QRPH1HW %,26QRPHUHWH. In questo caso SMB è implementato senza usare NetBIOS ma solo DirectSMB. In questi casi è anche possibile disabilitare NBT sulle macchine client senza perdere funzionalità. Per client che partecipano a reti Microsoft di tipo workgroup la situazione è più complessa, a prescindere dalla versione di sistema operativo client utilizzato. L’uso del suffisso automatico 0V+RPH1HW da parte dei sistemi operativi Microsoft XP e successivi per le reti workgroup dovrebbe consentire la risoluzione dei nomi NetBIOS in modo automatico tramite DNS (come su reti con dominio); il nome qualificato di un client dovrebbe essere: QRPH1HW%,26PVKRPHQHW. Purtroppo non sempre questo succede. In questi casi l’ultima possibilità per la risoluzione dei nomi consiste nel lasciare attivo NBT sulle macchine e sperare che in broadcast i client si annuncino regolarmente e i nomi vengano risolti.

A5

Livello 7: Applicazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

ESEMPIO

SMB oltre a essere di supporto per le operazioni utente di condivisione delle risorse e ad altri protocolli di Applicazione, offre anche un’interfaccia utente, in modo console, con l’applicativo net. NetBIOS su client Microsoft Se un host Microsoft ha attivato NBT, è possibile consultarne lo stato con l’applicazione nbtstat. È possibile anche visualizzare lo stato NBT di una macchina remota (ma sempre sulla LAN, specificandone l’indirizzo IP): &?:LQGRZV!QEWVWDW D  /$1 ,QGLUL]]R ,3 QRGR >@ ,' DPELWR >@ 7DEHOOD GHL QRPL 1HW%,26 GHO FRPSXWHU UHPRWR 1RPH 7LSR 6WDWR  6(59(5 ! 81,&2 5HJLVWUDWR 6(59(5 ! 81,&2 5HJLVWUDWR /$1&$6$ ! *58332 5HJLVWUDWR /$1&$6$ (! *58332 5HJLVWUDWR /$1&$6$ '! 81,&2 5HJLVWUDWR BB06%52:6(BB! *58332 5HJLVWUDWR ,QGLUL]]R 0$& &?:LQGRZV!

)&&

Il comando è stato eseguito da un host di indirizzo IP 192.168.0.17 su una rete Microsoft di tipo workgroup (/$1&$6$). L’host di cui si richiede lo stato NBT ha indirizzo 192.168.0.1, il cui nome NetBIOS è 6(59(5. Si nota che l’host remoto di cui si è richiesto lo stato NBT è un Browser Master.

9

Sicurezza SMB

Il protocollo è ovviamente protetto da un sistema di sicurezza basato su password e utenza, nelle due modalità dominio/workgroup. SMB usa un protocollo di tipo sfida/risposta (challenge/response), NTLM per reti workgroup e Kerberos per reti a dominio: prima di accedere alla risorsa condivisa il client invia un valore cifrato (desunto dal proprio account, cfr. SID in Sicurezza Active Directory) direttamente al server senza specificare la password in chiaro. Il server effettua i calcoli necessari e verifica se il valore che possiede in memoria è uguale a quello ricevuto dal client. In tal caso avviene l’autenticazione. Durante questa fase viene anche negoziata la chiave simmetrica da utilizzare per la firma e la cifratura dei messaggi successivi (chiave di sessione). La parte di NetBIOS realizzata da NBT costituiva invece una pericolosa vulnerabilità, dato che alcune versioni di sistemi operativi Microsoft client (per esempio Windows 95/98) erano impostati di default per fornire la condivisione anche sull’interfaccia di rete esterna: un processo intrusivo poteva quindi tentare di violare le cartelle condivise cercando di individuare la password di protezione della risorsa. Infine SMB attiva automaticamente per ogni host alcune condivisioni di

9

Sicurezza SMB

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

51

base (dette condivisioni amministrative) molto ampie: praticamente gli interi dischi di un host sono sempre condivisi con la sigla QRPHGULYH. Per esempio, digitando ??QRPHKRVW??F, SMB chiede un’utenza amministrativa e, se autenticata, l’intero disco risulta disponibile. Così per ogni disco dell’host (e anche qualche altra condivisione automatica, tipo $'0,1). La creazione automatica delle condivisioni amministrative può essere disabilitata.

10

LDAP

LDAP (Lightweight Directory Access Protocol, RFC 1777) è un protocollo di livello 7 Applicazione necessario per le reti Microsoft a dominio. Si tratta di un protocollo per l’interrogazione e la modifica dei servizi di directory, ovvero tutte quelle operazioni che consentono di definire e individuare su un sistema una serie di oggetti informativi, come per esempio l’elenco delle utenze (account) o le caratteristiche delle risorse. I servizi di directory facilitano le attività degli sviluppatori, degli amministratori e degli utenti. Per uno sviluppatore facilitano la memorizzazione e la ricerca di informazioni relative alle varie risorse presenti sulla rete. Le applicazioni possono ottenere informazioni che possono essere utilizzate da altre applicazioni; gli amministratori di rete possono usufruire di uno strumento per organizzare gruppi e organizzazioni (di utenti o computer) per distribuire opportunamente gli accessi. Gli utenti beneficiano di un modello di protezione comune senza la necessità di diverse password (SSO, Single Sign On, accesso con una sola fornitura di credenziali): fornendo l’accredito sul logon (nome utente/password), le attività seguenti sono automaticamente associate all’utente ‘autenticato’ in modo che possano usufruire della condivisione di dati tra applicazioni e non debbano più ricordare elementi specifici di una risorsa nella directory (come per esempio i percorsi di rete delle risorse utilizzate). In pratica LDAP gestisce un database centralizzato anche se in modo più semplice e veloce rispetto alla gestione di un classico DBMS relazionale. LDAP è un protocollo client/server ove la parte server è realizzata su una macchina (con sistema operativo server) che ospita il database di directory denominato DIT (Directory Information Tree). La versione di LDAP utilizzata da Microsoft per i suoi sistemi server è detta Active Directory (AD), ed è trasportata da TCP o UDP. I sistemi Linux, a partire da uno schema di directory denominato NIS, utilizzano in realtà sistemi di directory anch’essi basati su LDAP come OpenLDAP.

11

Sicurezza Active Directory

Active Directory implementa LDAP utilizzando tre grandi gruppi di oggetti principali: risorse (per esempio computer), servizi (per esempio DNS server) e utenti (per esempio account). 52

A5

Livello 7: Applicazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Ogni oggetto in Active Directory è individuato da un identificativo univoco su scala mondiale definito automaticamente all’atto della creazione dell’oggetto (SID, Security IDentifier) e agli utenti viene definita una lista di controllo degli accessi agli oggetti (ACL, Access Control List), in base al ruolo che si intende assegnare all’interno della rete. Tramite GINA (Graphical Identification and Authentication, la classica interfaccia grafica che consente l’inserimento dell’account utente) l’utente richiede l’accesso autenticato alla rete durante il logon al server di autenticazione (KDC, Key Distribution Center). Il servizio di autenticazione è sempre operativo su un Domain Controller e integrato al database di Active Directory, da cui preleva i dati per verificare l’autenticazione. Per l’autenticazione Microsoft usa il protocollo Kerberos V5. La parte client del protocollo Kerberos, quindi, deve essere attiva su ogni client. Alla fine del processo, all’utente viene rilasciato un «ticket» di servizio che garantisce l’identità dell’utente per l’accesso ai successivi servizi di rete. In questo caso si ottiene un servizio di tipo Single Sign On. Gli accessi ad Active Directory tramite protocollo LDAP (o CLDAP se trasportato in modo non connesso da UDP) sono quindi garantiti dal ticket Kerberos. Il traffico LDAP utilizzato per le richieste/risposte ad Active Directory contenenti le garanzie Kerberos può essere a sua volta protetto utilizzando il protocollo applicativo crittografato SSL/TLS (Secure Sockets Layer/Transport Layer Security).

11.1

Versioni di sistema e management

I sistemi operativi Microsoft si distinguono, essenzialmente, in due categorie: di classe Server e di classe Workstation. Oggi (2013) sono in commercio Windows Server 2012 e Windows Home Server nella categoria Server; oppure Windows 7 e Windows 8 nella categoria Workstation. Ancora molto diffusi sono Windows Server 2003 e Windows Server 2008 R2 nella categoria Server e Windows XP nella categoria Workstation. Alla prima categoria appartengono i sistemi operativi che sono utilizzati in reti medio grandi e che sono in grado di supportare il modello server di Active Directory, ospitando tutti gli applicativi necessari per la configurazione dei servizi di rete con dominio. Alla seconda categoria appartengono i sistemi operativi di tipo host che partecipano alle reti (dominio o workgroup) ma che non dispongono di servizi server per le reti a dominio (se non integrandoli con speciali pacchetti di aggiornamento denominati Administrative Pack). Per entrambi i sistemi lo strumento di configurazione dei servizi e delle applicazioni è la cosiddetta console amministrativa (MMC, Microsoft Management Console) un’interfaccia grafica che opera sui singoli servizi tramite i singoli moduli dedicati detti snap-in. Una raccolta di snap-in è raggiungibile dalla voce Gestione (pulsante de-

11

Sicurezza Active Directory

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

svchost.exe Usando alcuni task manager di terze parti o il programma interno WDVNOLVWH[H di Windows, si nota sistematicamente una serie di processi attivi tutti con la stessa origine eseguibile: VYFKRVWH[H. Siccome i processi di servizio di Windows (servizi o services) sono spesso realizzati in formato GOO (Dynamic Link Library) e non in formato H[H, questo programma ha lo scopo di caricare la libreria dinamica relativa a uno o più servizi di sistema specifici implementati nella GOO. Molti processi client relativi alla gestione della rete sono attivati con VYFKRVWH[H, tra cui il client DHCP e il client DNS. Per visualizzarli: WDVNOLVW VYF ¿ ³LPD JHQDPH HT VYFKRVWH[H´. Tra i servizi server lanciati da VYFKRVWH[H troviamo DHCP: VYFKRVWH[H N GKFSVHU YHU.

53

ESEMPIO

stro su Computer) oppure, su un sistema server, tramite la voce di menu Strumenti di amministrazione. Con MMC si configurano sia servizi locali (per esempio, periferiche, utenti locali, ecc.) sia servizi di rete sui sistemi che li prevedono. In una rete con dominio e armati di un account amministrativo, una MMC può anche agire su uno snap-in di un host remoto della rete come la macchina server di altri servizi (dal menu di MMC, Connetti a). MMC Le MMC di Windows possono essere eseguite da riga di comando su una shell a caratteri tramite il programma cmd (Start-Esegui-cmd o Prompt dei comandi). In alcuni casi è necessario avere diritti di amministratore sulla shell (Prompt dei comandi-Esegui come Amministratore). L’eseguibile di console è PPFH[H, mentre gli snap-in hanno estensione PVF. Per esempio, lo snap-in per configurare le utenze locali si chiama OXVUPJUPVF. Da una shell quindi: F?:LQGRZV!OXVUPJUPVF oppure: F?:LQGRZV!PPF OXVUPJUPVF oppure: F?:LQGRZV!UXQDV XVHUSLSSR PPFH[H OXVUPJUPVF Molto importante lo snap-in che consente di controllare (avviare o fermare) i servizi di sistema: F?:LQGRZV!PPF VHUYLFHVPVF Per agire sulle configurazioni di DHCP e DNS (solo sistemi server o dotati di Administrative Pack e con utenza amministrativa): F?:LQGRZV!LSDGGUPJPWPVF Per agire su LDAP di Active directory, per esempio amministrare il database delle utenze e delle macchine (solo sistemi server o dotati di Administrative Pack e con utenza amministrativa): F?:LQGRZV!GVDPVF Infine, per gestire la console di un altro host della rete (dove >,3 DGGUHVV@ è l’indirizzo IP dell’host remoto da gestire): F?:LQGRZV!PPF FRPSPJPWPVF FRPSXWHU >,3 $GGUHVV@

La console amministrativa più importante e che offre i moduli di configurazione per i principali servizi di rete di un sistema Microsoft di classe Server è denominata Server Manager (servermanager.msc). Le configurazioni dei singoli servizi tramite MMC (per esempio DHCP server e DNS server) sono effettuate quindi tramite un’interfaccia grafica, a differenza di quanto avviene nei sistemi Linux in cui le configurazioni sono specificate su file di testo. In ogni caso è possibile utilizzare file di testo come configurazione delle MMC tramite l’uso del comando netsh o dell’ambiente a console denominato Microsoft PowerShell. 54

A5

Livello 7: Applicazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

ESEMPIO

netsh Praticamente tutte le configurazioni di rete in Windows si possono leggere e/o impostare tramite comandi di shell attraverso il programma netsh, anche se il modo standard per configurare i servizi di rete avviene attraverso l’uso di MMC a interfaccia grafica. Per impostare la configurazione TCP/IP di un’interfaccia, si può usare netsh con i seguenti parametri: F?:LQGRZV!QHWVK LQWHUIDFH LS VHW DGGUHVV /$1 VWDWLF    

In questo caso un’interfaccia di nome “LAN” acquisisce l’indirizzo IP 192.168.0.17, la subnet mask 255.255.255.0 e il gateway di default 192.168.0.1. Per impostare la stessa interfaccia in modo che acquisisca i parametri via DHCP: F?:LQGRZV!QHWVK LQWHUIDFH LS VHW DGGUHVV /$1 GKFS

Per esportare le configurazioni del servizio DHCP su file di testo e quindi editarle per poi reimportarle si può usare netsh con i seguenti parametri (dove >,3 DGGUHVV@ è l’indirizzo IP del server DHCP da cui estrarre la configurazione; se il server è la macchina da cui è stato eseguito il comando si può omettere): F?:LQGRZV!QHWVK GKFS VHUYHU  GXPS ! GKFSFRQIW[W

Per riconfigurare il servizio si può utilizzare lo stesso comando ma con la redirezione dell’input.

12

HTTP

Tra i vari protocolli di livello 7 Applicazione che hanno contribuito al successo eccezionale di Internet e TCP/IP, il protocollo HTTP (HyperText Transfer Protocol, RFC 1945 ver. 1.0 e RFC 2616 ver 1.1) è sicuramente il più significativo. In effetti, assieme al linguaggio HTML (HyperText Markup Language, RFC 1866 e seguenti) il protocollo HTTP costituisce l’ossatura del World Wide Web (WWW), ovvero il servizio di rete più utilizzato al mondo. Le specifiche del protocollo sono gestite dal World Wide Web Consortium (W3C), il cui presidente è Tim Berners-Lee. Si tratta di un classico protocollo client/server trasportato da TCP sulla porta 80, cioè il processo server rimane in «ascolto» (listen) sul numero di porta TCP 80 (o, a volte soprattutto per servizi web proxy, sul numero di porta TCP 8080), su cui attende connessioni TCP da parte dei processi client. Lo schema del protocollo è abbastanza semplice e consiste in una serie di richieste espresse in modo testo (effettuate dal client) e relative risposte sottoforma di file (fornite dal server). Le applicazioni client HTTP sono denominate web browser, come per esempio Ms Internet Explorer o Mozilla Firefox. Le applicazioni server HTTP sono denominate web server, come per esempio Ms Internet Information Services (IIS) o Apache HTTP Server, e provvedono a fornire le risposte ai client prelevando le risorse richieste (solitamente file ipertestuali di tipo HTML, ma anche altro) da un sito web. Le richieste dei client HTTP vengono effettuate tramite un indirizzamento delle risorse (tipicamente file) denominato URL (Uniform Resource Locator, RFC 3986). Dopo una serie continua e ininterrotta di definizioni e precisazioni (che coinvolgono anche le nozioni di URI e URN), ci possiamo accontentare di definire l’URL come una stringa strutturata che identifica univocamente una risorsa sulla rete TCP/IP, e il modo in cui raggiungerla.

12

HTTP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

TimBL Il britannico Sir Timothy John «Tim» Berners-Lee (8 giugno 1955) è l’inventore del World Wide Web, ovvero l’insieme di ipertesti interconnessi con link attraverso i quali avviene la navigazione web in rete utilizzando il linguaggio HTML da lui ideato. È anche colui che ha, per primo, implementato la comunicazione TCP/IP tramite il protocollo HTTP, di cui ha fornito la prima versione (HTTP V0.9, 1991). TimBL fu anche l’ideatore del primo web browser (WorldWideWeb, 1991) e del primo web browser grafico (Mosaic, 1993). «Egli ha tessuto il World Wide Web e creato un enorme supporto per la cultura di massa del 21° secolo. Il WWW è Berners-Lee. L’ha progettato. Ha sciolto il mondo. Ed egli più di ogni altro ha lottato per tenerlo aperto, non proprietario e libero.» (Joshua Quittner, «Tim Berners Lee, Time 100 People of the Century», Time Magazine, 29 marzo 1999)

55

La struttura formale di un URL corrisponde a (in azzurro le parti obbligatorie): SURWRFROORXVHUQDPHSDVVZRUG#!QRPHKRVWSRUWD!SHUFRUVR!"TXHU\VWULQJ!IUDJPHQW LGHQWLILHU!

Come si può notare, in un URL deve sempre essere presente un indirizzo IP (nomehost), magari sottoforma di nome di dominio da risolvere con DNS. Esempio, KWWSZZZLWLVSULWPDWHULDOHBGLGDWWLFRKWPO è un URL. La parte iniziale obbligatoria dell’URL (protocollo) è anche detta schema dell’URL e indica il nome del protocollo di livello applicativo con cui quella risorsa può essere recuperata (per esempio, KWWS, IWS, KWWSV, ecc.). Una particolarità di HTTP è che, a differenza di quasi tutti gli altri protocolli di livello 7 per TCP/IP, le connessioni vengono immediatamente chiuse subito dopo che la risposta è stata fornita dal server. Ciò implica che HTTP è un protocollo stateless (senza stato), ovvero il server non ha la possibilità di associare dati specifici ai client che fanno le richieste durante una sessione di navigazione. Questo, pur rendendo il protocollo molto snello, impedisce ai server web di guidare le sessioni di comunicazione avviate da un client in maniera interattiva, per esempio in base a dati personalizzati provenienti dal client.

13

Cookie Il coockie (biscotto) è la soluzione adottata da HTTP (benché non standardizzata in nessun documento tecnico se non fino al 2011, RFC 6265), per aggirare la sua natura stateless. Il meccanismo viene attuato tramite headers dedicati (per esempio Set-Cookie:index=c1a5) con cui il server chiede al client di impostare dei valori in locale. Il client, quando richiederà di nuovo quella risorsa (per esempio, quando ritornerà a navigare su quel sito), invierà i valori locali memorizzati in precedenza dando modo al server di tracciare gli accessi di quel particolare client alla propria risorsa. In questo modo il server Web riesce a stabilire, per esempio, se la pagina Web è stata già visitata da quel client (utente), e quante volte.

56

Protocollo HTTP

Aldilà della sua apparente semplicità (solo 9 tipi di richieste, dette anche metodi, di cui solo due frequentemente utilizzate, GET e POST), HTTP è un protocollo molto arzigogolato a causa delle numerose revisioni che si sono succedute nel tempo, al tentativo di mantenere la retrocompatibilità e alle numerose e arbitrarie variazioni aggiunte da terze parti. Sostanzialmente i pacchetti HTTP sono di due tipi: HTTP request (inviato dal client e ricevuto dal server) e HTTP response (inviato dal server e ricevuto dal client), entrambi con una struttura simile: request (client)

response (server)

richiesta (per esempio GET /index.htm HTTP/1.1) stato (per esempio HTTP/1.1 200 OK) headers (nella forma nome:valore)

headers (nella forma nome:valore)

riga vuota

riga vuota

corpo (opzionale)

corpo (opzionale)

Una classica sessione HTTP avviene secondo le fasi: 1) HTTP server si pone in TCP listening (per esempio, sul numero di porta TCP 80). 2) HTTP client si connette ed effettua la richiesta di una risorsa (per esempio, un file) con un metodo tramite un URL (ma senza schema) e indica con gli headers le caratteristiche della richiesta. 3) HTTP server invia una risposta con l’esito nella riga di stato (positivo o negativo), indicando con gli headers le caratteristiche della risorsa. 4) HTTP server spedisce il corpo del messaggio, tipicamente la risorsa richiesta. Quindi effettua la disconnessione TCP.

A5

Livello 7: Applicazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

ESEMPIO

Queste fasi sono intercalate da eventuali richieste ARP o DNS (per esempio dopo il passo 2), per individuare l’host su una LAN (se la richiesta è locale) o l’host su Internet (se la richiesta è pubblica). Inoltre quando al termine delle fasi il client HTTP riceve la risorsa, magari sottoforma di file HTML, ne interpreta il contenuto e individua tutte le ulteriori risorse in esso contenute (per esempio, i files di immagine), avviando altrettante sessioni HTTP, ancora con altrettante richieste GET. I metodi per le richieste previste da HTTP 1.1 sono GET, POST, HEAD, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH. La richiesta GET, utilizzata dai browser per ottenere le pagine Web e i loro contenuti, è costituita da una riga che contiene il metodo GET seguito dall’URI (un URL senza l’indicazione del protocollo o schema) e la versione del protocollo; quindi si specificano gli headers che indicano varie informazioni utili al server per espletare la richiesta. Il tutto deve essere terminato con un singolo avanzamento di riga CRLF (codici Ascii 0dh e 0ah). In questo caso il corpo non viene utilizzato. Il metodo POST invece serve affinché il client possa inviare informazioni al server (per esempio tratte dai valori inseriti dall’utente in moduli HTML). In questo caso oltre agli headers viene utilizzato anche il corpo per veicolare i dati utente. Metodi HTTP Un client che effettua la richiesta di una pagina Web a un server con il metodo GET (in azzurro la riga della richiesta, in neretto gli headers): FOLHQW *(7 LQGH[KWP +773 8VHU$JHQW 2SHUD :LQGRZV 17  3UHVWR 9HUVLRQ +RVW  $FFHSW WH[WKWPO DSSOLFDWLRQ[KWPO[PO LPDJHSQJ LPDJHMSHJ LPDJHJLI $FFHSW/DQJXDJH LW,7LWT HQT  $FFHSW(QFRGLQJ J]LS GHÀDWH &RQQHFWLRQ .HHS$OLYH

(notare la riga vuota finale). A questa richiesta un server può rispondere con una riga di stato di accettazione e la risorsa richiesta (in azzurro la riga di stato, in neretto gli headers, quindi la risorsa nel corpo): VHUYHU +773  2. &RQWHQW7\SHWH[WKWPO KWPO!ERG\!K!&LDR FLDRK!ERG\!KWPO! oppure con una riga di stato che indica un errore (per esempio, se il file non è nella disponibilità del server): VHUYHU +773  1RW )RXQG &RQWHQW7\SHWH[WKWPO KWPO!ERG\!K!)LOH QRQ WURYDWRK!ERG\!KWPO!

13

Protocollo HTTP

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica



57

ESEMPIO



Un client che invia dati a un server con il metodo POST (in azzurro la riga del metodo, in neretto gli headers e al termine il messaggio, nel corpo, i dati): FOLHQW 3267 GDWLSKS +773 +RVW ZZZLWLVSULW 8VHU$JHQW 2SHUD :LQGRZV 17  3UHVWR 9HUVLRQ &RQWHQW7\SH WH[WSODLQ &RQWHQW/HQJWK  ,7,6 3$50$

Per approfondire il protocollo HTTP viene riportato in Appendice il codice sorgente di un server Web che risponde alle richieste di un browser.

14

Sicurezza HTTP

Essendo il protocollo più utilizzato sulle reti pubbliche, HTTP pone dei seri problemi circa la sicurezza delle sue sessioni di comunicazione. Tramite HTTP circola traffico di ogni genere, e quindi anche traffico che trasporta dati personali o estremamente riservati come comunicazioni private o intere transazioni finanziarie con relativi codici d’accesso. Il tipo di violazione più diffusa per HTTP è denominata man in the middle. Con questa tecnica una persona terza è in grado di leggere e/o modificare i messaggi tra due parti inconsapevoli senza che queste siano in grado di stabilire se il loro collegamento sia stato effettivamente compromesso. Per come è stato descritto, il protocollo HTTP si presta a questo tipo di violazione, per esempio se vengono modificati gli indirizzi IP nei pacchetti (IP spoofing o Web spoofing): i capi della connessione non sanno se l’altro capo è proprio quello con cui hanno deciso di comunicare. Oppure intercettando i pacchetti HTTP che, come si è visto, trasportano i dati nei messaggi «in chiaro», senza alcuna protezione circa il loro contenuto. Per prevenire queste eventualità è stato emanato un protocollo HTTP sicuro denominato HTTPS (HyperText Transfer Protocol over Secure Socket Layer, RFC 2818, cfr. Sezione B, HTTPS). Questo protocollo alternativo a HTTP (URL con schema KWWSV invece di KWWS e porta TCP 443 invece di 80) garantisce l’autenticazione dei capi della connessione e la cifratura (cioè la protezione) dei contenuti dei messaggi tramite una serie di algoritmi a chiave asimmetrica con scambio di certificati. Altre questioni legate alla riservatezza sono sorte a proposito della massiccia utilizzazione di cockie da parte di molti server Web: in questo modo gli operatori dei siti sono in grado di effettuare una «profilazione» degli utenti e utilizzarla per veicolare contenuti pubblicitari se non addirittura per realizzare pratiche di hijacking (cfr. Sezione B, Il quadro normativo in Italia, crimini informatici).

58

A5

Livello 7: Applicazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

UESITI ESERCIZI PER LA VERIFICA ORALE Saper rispondere ai Requisiti fondamentali dà una sufficiente garanzia per sentirsi pronti all’interrogazione. Saper anche rispondere ai Requisiti avanzati dimostra una padronanza eccellente degli argomenti del capitolo. Requisiti fondamentali

Requisiti avanzati

1

Spiegare la differenza tra protocolli di livello 7 Applicazione e applicazioni (di rete).

1

Spiegare cosa comporta il fatto che i protocolli di livello 7 Applicazione sono spesso di tipo client/ server.

2

Elencare almeno tre protocolli di livello 7 e i relativi numeri di porta TCP/UDP su cui operano.

2

Elencare i parametri di configurazione fondamentali per l’interfaccia di un host di una rete TCP/IP.

Chiarire la ragione per cui a volte è necessario che su una rete sia operativo il servizio DHCP Relay.

3

Mostrare e commentare i passi dell’handshake DORA per DHCP.

4

Illustrare gli scopi della risoluzione diretta e della risoluzione inversa per il protocollo DNS.

3

4

Illustrare il compito fondamentale del protocollo DHCP e riportare un esempio in cui è necessario utilizzarlo.

5

Descrivere i concetti relativi ai termini ambito, lease e reservation per DHCP.

5

Definire l’acronimo FQDN e farne un esempio disegnando uno schema di gerarchia DNS.

6

Mostrare come si determina se un host riceve la configurazione con DHCP o se è configurato manualmente.

6

Ricordare cosa sono i root name server.

7

Spiegare il ruolo della cache DNS nel processo di risoluzione.

8

Descrivere il protocollo LDAP e commentarne la funzione.

9

Commentare i due modelli di reti supportati dai sistemi Microsoft.

7 8 9

Illustrare il compito fondamentale del protocollo DNS. Ricordare che nome prendono i processi client e server DNS. Elencare i principali nomi di dominio di primo livello e i nomi dei gruppi di cui fanno parte.

10 Elencare e commentare le principali utility ammi-

10 Descrivere il protocollo SMB e il protocollo Samba.

nistrative per il servizio DNS.

11 Elencare i protocolli per la sicurezza utilizzati in 11 Spiegare per quale motivo i servizi DHCP e DNS

reti Microsoft.

sono in forte relazione.

12 Ricordare 12 Elencare i principali protocolli applicativi utilizzati in reti Microsoft.

13 Commentare

le nozioni di dominio e Active Directory per reti Microsoft.

le due classi di sistemi operativi Microsoft circa l’approccio alla rete ed elencarne le versioni più diffuse.

13 Confrontare i modi di configurazione dei servizi di rete utilizzati in reti Microsoft e in reti Linux.

Esercizi Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

59

A6

Internetworking

Dopo aver analizzato i principali protocolli di livello 7 Applicazione operanti all’interno delle reti private, è necessario analizzare le tecniche utilizzate per dotare le reti private del supporto per la connessione alla rete pubblica, intesa quasi sempre come Internet. Come si è visto nel Volume 2 (Sistemi Reti, vol. 2, Sez. B, Il livello 3: Rete), la connessione di reti differenti avviene tramite il dispositivo di livello 3 denominato router: per connettere una rete privata a una rete pubblica, pertanto, è necessario un router, ovvero un apparato di rete che possegga almeno due interfacce, una sulla rete privata e una sulla rete pubblica. In molti casi (per esempio per reti casalinghe) il router può essere direttamente un computer avente una delle sue interfacce di rete connessa a un modem (per esempio un modem ADSL) per l’accesso alla rete pubblica. RETE INTERNA

RETE ESTERNA

192.168.0.0/24 (255.255.255.0)

82.10.79.32/28 (255.255.255.240)

host X 192.168.0.x

ROUTER 192.168.0.1

82.10.79.39

Modem

host B 192.168.0.3

host A 192.168.0.2

Per tutta una serie di ragioni, però, il solo router non è sufficiente a garantire un internetworking efficace tra rete interna ed esterna. Prima di tutto rimane la questione della scarsità degli indirizzi IP: i molti host di una rete privata non possono, da tempo, essere configurati con indirizzi IP pubblici, nemmeno se ottenuti dinamicamente. È necessario che una rete privata si doti di un meccanismo per concedere agli host interni di usufruire dei servizi resi dalla rete pubblica (per esempio NAT). In secondo luogo è estremamente serio il problema della sicurezza: sulla rete pubblica operano milioni di utenze, tra le quali anche quelle ansiose di intercettare, violare o accedere ai dati contenuti nelle reti private che si affacciano al dominio pubblico. È necessario dotare le reti private di sistemi in grado di assicurare la rete da intrusioni indesiderate pur concedendo l’accesso alle utenze legittime (per esempio firewall). 60

A6

Internetworking

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Infine il traffico di una rete privata verso la rete pubblica può essere anche molto sostenuto e variegato; il bitrate di una rete privata è senz’altro superiore al bitrate di una rete pubblica e lo stesso canale di connessione è utilizzato continuamente in contemporanea da numerose utenze. È spesso necessario dotare una rete privata di meccanismi per ottimizzare e controllare il traffico verso e dalla rete esterna (per esempio proxy).

1

NAT

L’indirizzamento IP degli host di una rete tramite indirizzi privati sottrae tutti gli host della rete, di fatto, dalla partecipazione alla rete pubblica: quegli indirizzi non sono univoci su scala mondiale e non appartengono all’indirizzamento TCP/IP di Internet. Viene così definita una tecnica per cui un processo operante su un router è in grado di sostituire gli indirizzi IP nei pacchetti che giungono da una interfaccia (per esempio su una rete privata) in indirizzi IP differenti e poi inoltrati su un’altra interfaccia (per esempio, su una rete pubblica). Questa tecnica è detta NAT (Network Address Translation, RFC 1631). Non si tratta di un protocollo, ma di una programma, o meglio, di un processo. Ora, se un host con un indirizzo IP privato tentasse una connessione TCP/IP verso un host con indirizzo IP pubblico attraversando un router provvisto di NAT, il router potrebbe: a) cambiare l’IP sorgente (privato) con il proprio IP (pubblico), inoltrare il pacchetto sulla rete pubblica, attendere le risposte e, su queste, b) sostituire nei pacchetti ricevuti l’indirizzo IP destinazione (proprio) con l’indirizzo IP (privato) dell’host e inoltrarlo a esso sulla rete privata. In questo modo l’host privato ottiene il servizio di rete pubblica: NAT A (client)

Server pubblico

R (ROUTER)

192.168.0.2

192.168.0.1

ICS Una forma rudimentale di NAT (source NAT) può essere realizzata «nativamente» anche sui sistemi operativi non server di Windows (per esempio Windows 98 e successivi). Questa implementazione di source NAT è detta ICS (Internet Connection Sharing). Se per esempio una piccola rete privata con qualche host su uno switch, ne prevede uno con una connessione a un modem ADSL per Internet, questa connessione può essere «nattata», ovvero condivisa con altri host. Sull’host connesso a Internet è sufficiente impostare una «spunta» nella cartelletta «Condivisione» delle proprietà dell’interfaccia di rete che sta offrendo la connessione pubblica. Gli altri host della LAN dovranno impostare come gateway di default l’indirizzo IP (privato) dell’host che ha condiviso la connessione pubblica.

73.94.35.15

82.10.79.39

a) 192.168.0.2 50000

73.94.35.15 80

82.10.79.39 50000

b)

73.94.35.15 80

tempo

73.94.35.15 80

73.94.35.15 80

82.10.79.39 50000

192.168.0.2 50000

tempo

tempo

1

NAT

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

61

Ora, se tutti i client della rete privata intendono usufruire di NAT, il router sarebbe costretto a mapparne le richieste (per ricordarne le restituzioni) basandosi sul numero di porta effimera utilizzata nei pacchetti client (nel disegno, 50000). Infatti l’ipotesi più sfavorevole è che due o più client vogliano connettersi sulla stessa porta di un server pubblico (per esempio Google): al router non rimarrebbe che «ricordare» le connessioni in entrata in base alla porta TCP sorgente (la porta effimera), l’unico parametro identificativo del client. A rigor di logica, anche le porte effimere potrebbero coincidere (sono infatti decise casualmente in locale ai client). Un NAT effettivo, quindi, mappa le connessioni sulle porte effimere, e prende il nome di PAT (Port Address Translation, oppure IP masquerading, oppure ancora NAPT, Network Address and Port Translation). In questo caso la porta effimera (porta TCP sorgente) viene effettivamente modificata dal server NAT in modo che sia univoca e che possa contraddistinguere i pacchetti di ritorno per la riconsegna all’host originario. Naturalmente è possibile che un router effettui l’operazione opposta, ovvero mappi le connessioni provenienti dall’esterno e dirette a un suo indirizzo pubblico verso l’indirizzo privato di un host interno alla rete privata. In questo caso si ottiene che un host privato fornisce un servizio alla rete pubblica (per esempio un server Web). destination NAT A (Server privato)

Client pubblico

R (ROUTER)

192.168.0.2

192.168.0.1

73.94.35.15

82.10.79.39

a) 73.94.35.15 30000 73.94.35.15 30000

82.10.79.39 80

192.168.0.2 80

b) 192.168.0.2 80

73.94.35.15 50000 82.10.79.39 80

tempo

73.94.35.15 50000

tempo

tempo

In questo caso si parla di destination NAT, duale al NAT/PAT (che spesso, per questo motivo, è anche chiamato source NAT). A volte l’host privato che fornisce il servizio pubblico è detto «host pubblicato». 62

A6

Internetworking

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

2

Sicurezza NAT

ESEMPIO

Il NAT, come processo complessivo, induce alcune considerazioni: ˜ obbliga i router a mantenere grandi tabelle di correlazione, quando invece i router non hanno questo scopo. Ciò significa che i router che realizzano NAT sono sottoposti ad alte sollecitazioni prestazionali. ˜ La modifica dell’indirizzo IP nell’header IP implica il ricalcolo della checksum IP (e TCP/UDP), aumentando l’onere di elaborazione da parte dei router. ˜ Qualche protocollo negozia gli indirizzi IP o le porte TCP/UDP: NAT, effettuando una sostituzione «alla cieca», non è in grado di gestire questi protocolli (dovrebbe infatti analizzare il contenuto dei pacchetti e calcolare quali sostituzioni fare). In generale il servizio di NAT offre qualche attributo di sicurezza. In fondo gli host privati non si presentano mai con il loro reale indirizzo IP sulla rete pubblica e, almeno in teoria, il source NAT impedisce «nativamente» a macchine pubbliche di raggiungere le macchine private della rete. Inoltre, pur rappresentando un «single point of failure» (un aspetto critico perché il malfunzionamento di un solo elemento della rete determina il malfunzionamento di tutti gli elementi della rete), il server NAT, se ben configurato, riflette automaticamente la sua configurazione di sicurezza a tutti gli host interni senza che questi debbano preoccuparsene espressamente. NAT con router CISCO Nella terminologia CISCO la rete interna è denominata Inside, mentre la rete esterna Outside. Si nota che il router ha una configurazione multihomed single link, ovvero su un’interfaccia sono configurati più indirizzi IP (in questo caso due indirizzi IP pubblici). INSIDE

OUTSIDE

192.168.0.0/24 (255.255.255.0)

82.10.79.32/28 (255.255.255.240)

ROUTER CISCO host x

192.168.0.254 eth0/0

192.168.0.x

82.10.79.39 s0/0 82.10.79.40

host 2 192.168.0.2

host 1 192.168.0.1

Prima di tutto vanno configurati i ruoli delle interfacce del router: 5RXWHU FRQ¿J LQWHUIDFH 5RXWHU FRQ¿JLI LS QDW 5RXWHU FRQ¿J LQWHUIDFH 5RXWHU FRQ¿JLI LS QDW

HWKHUQHW  LQVLGH VHULDO  RXWVLGH

Quindi si può passare a configurare una delle tre modalità di NAT disponibili sui router CISCO: 5RXWHU FRQ¿J LS QDW LQVLGH VRXUFH VWDWLF  

2

Sicurezza NAT

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica



63

ESEMPIO



Questa configurazione è detta Static NAT. Il comando IOS può essere interpretato come: esponi l’indirizzo interno (inside, 192.168.0.1) tramite l’indirizzo esterno 82.10.79.39. Si tratta di un destination NAT. L’utilizzo tipico è di esporre un server interno in modo che sia accessibile da Internet. 5RXWHU FRQ¿J DFFHVVOLVW  SHUPLW   5RXWHU FRQ¿J LS QDW SRRO ,3(;7   5RXWHU FRQ¿J LS QDW LQVLGH VRXUFH OLVW  SRRO ,3(;7 Questa configurazione è detta Dynamic NAT. Il primo comando IOS definisce una ACL (Access Control List) di identificativo 15 composta da tutti gli host privati a cui è concesso un permesso; quindi il secondo comando imposta un gruppo (pool) di due indirizzi IP pubblici, infine l’ultimo comando imposta un source NAT in modo tale che i vari host privati si presentino sulla rete pubblica con uno di quei due indirizzi IP pubblici. 5RXWHU FRQ¿J DFFHVVOLVW  SHUPLW   5RXWHU FRQ¿J LS QDW LQVLGH VRXUFH OLVW  LQWHUIDFH VHULDO  RYHUORDG Questa configurazione è detta Overloading NAT. Dopo avere impostato l’ACL di tutti gli host privati, il secondo comando consente agli host privati di presentarsi sulla rete pubblica tramite un unico indirizzo IP pubblico impostato sull’interfaccia esterna (in questo caso il router non deve essere multihomed). Anche in questo caso si tratta di un source NAT.

3

Firewall

Anche in questo caso siamo di fronte a un processo, e non a un protocollo applicativo. Per una rete il termine firewall indica un processo attivo su un sistema in grado di controllare, a vari livelli, il contenuto dei pacchetti in entrata e in uscita su una o più interfacce di rete al fine di impedire il transito di pacchetti non autorizzati. L’uso di un sistema firewall ha lo scopo di proteggere una rete o una parte di rete considerata sicura da possibili intrusioni più o meno volontarie e/o dannose che possono compromettere la sicurezza o la funzionalità della rete da proteggere. I sistemi firewall possono essere semplicemente programmi softpersonal firewall ware (personal firewall), ovvero programmi da installare su uno o più host della rete sicura. Il programma ha lo scopo di proteggere l’host e controllerà il traffico sull’unica scheda di rete dell’host. Il firewall più propriamente detto, invece, è anche noto come firewall perimetrale, dato che deve essere installato su un apparato router che ha accesso alla rete pubblica. In questo caso il processo firewall opera su almeno due interfacce di rete del router, una affacciata sulla rete sicura (normalmente una firewall perimetrale rete privata detta anche trust), l’altra connessa a una rete insicura, tipicamente Internet. In altri casi il sistema firewall perimetrale è costituito da un apparato hardware con almeno due interfacce di rete sulle quali il processo effettua il controllo (firewall hardware). Anche in questo caso 64

A6

Internetworking

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

una delle due interfacce è posizionata su una rete trust e l’altra sulla rete pubblica. Ora l’apparato firewall perimetrale di tipo hardware svolge anche la funzione di router e può sostituirlo come apparato di interconnessione tra una rete privata e una rete pubblica. Infine un firewall perimetrale può essere una vera e propria applicazione di livello 7 (application layer firewall) che opera su una macchina server dotata di più interfacce di rete (macchina server agente da router), magari integrato con applicazioni di rete specifiche che effettuano anche il controllo delle connessioni e l’ottimizzazione del traffico (cfr. Proxy più oltre).

3.1

firewall hardware

application firewall

Livelli di controllo

Di norma si tende a distinguere i processi di firewalling in alcune grandi categorie in base al tipo di ispezione che esercitano: ˜ firewall packet filter, funzionalità minima che controlla il traffico a livello di indirizzamento IP e ispezione del flag SYN di TCP per intercettare tentativi di connessione. Livello indispensabile per bloccare o permettere il traffico tra subnet e/o reti IP pubbliche; ˜ firewall stateful inspection, in grado di valutare la qualità delle connessioni TCP tramite il controllo approfondito dell’header dei pacchetti TCP, ovvero analisi fino a livello 4 di Trasporto. Questa funzionalità consente di intercettare traffico TCP che apparentemente appartiene a una connessione ma in realtà costituisce un tentativo di intrusione; ˜ firewall deep inspection, in grado di analizzare il traffico dei pacchetti fino a livello 7 Applicazione, analizzando il corretto uso dei protocolli applicativi e ispezionandone anche il contenuto. In base a un glossario su database, questo tipo di processo riesce a intercettare le firme dei virus o degli applicativi d’intrusione più diffusi. Inoltre è in grado di bloccare il traffico per determinati siti o in base a un elenco di parole chiave. Queste funzionalità richiedono una cospicua capacità prestazionale, pertanto un processo firewall di questo tipo è presente, solitamente, su apparati dedicati o firewall realizzati a livello applicativo su host dedicati (proxy server).

3.2

ACL

ACL (Access Control List) o lista di controllo degli accessi è un concetto legato alla sicurezza informatica, ed esprime la lista dei permessi d’uso legati a un determinato oggetto. L’ACL è impiegata nei sistemi operativi (per esempio, per esprimere i permessi di accesso al file system) e nelle reti, sottoforma di regole da valutare in modo tale che un processo possa poi prendere una decisione coerente. Ogni singolo criterio di una ACL è detto ACE (Access Control Entry) o regola. I firewall controllano il traffico circolante sulle interfacce in base ad ACL impostate dall’amministratore di rete.

3

Firewall

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Netshell Sui sistemi operativi Windows è disponibile un’utile applicazione di rete denominata netshell, invocabile su linea di comando con il nome netsh. Netsh offre un ambiente interattivo a contesto che consente di visualizzare numerosissime informazioni sulle configurazioni di rete dell’host su cui è eseguito. Inoltre netsh è in grado di interpretate script di configurazione contenuti in file di testo. Sui sistemi Windows Server e Windows Vista e successivi, è possibile visualizzare le ACL del personal firewall fornito dal sistema operativo con il comando: QHWVK DGY¿UHZDOO ¿UHZDOO VKRZ UXOH QDPH DOO

65

La sintassi per esprimere ACL per il controllo del traffico nelle reti è estremamente variegata e non rispetta standard noti. Ciononostante è possibile stabilire alcuni criteri base che verranno poi utilizzati dai vari processi che fungono da firewall, sia su router propriamente detti (per esempio ACL Cisco IOS, definibili con l’omonimo sistema operativo per i processi di firewall operanti nei router Cisco), sia su routing ottenuto da macchine con kernel Linux (tramite il processo netfilter e relativa interfaccia di configurazione detta iptables), sia da processi di firewall operanti su apparati dedicati (per esempio, Firewall Cisco, Firewall SonicGuard, Firewall WatchGuard, Firewall Juniper, ecc.). L’ACE di una ACL normalmente esprime: ˜ obiettivo: cosa fare del pacchetto, se scartarlo (per esempio deny, drop, discard) o inoltrarlo (per esempio permit, accept, allow); ˜ interfaccia e verso: su quale interfaccia la regola deve essere applicata e in quale verso (input o output); ˜ specifiche: le caratteristiche del pacchetto, tipo l’indirizzo IP, la net/subnet di appartenenza, il n. di porta (TCP o UDP), il protocollo, ecc.

ESEMPIO

Le regole di una ACL sono riportate con un numero d’ordine che ne riflette la restrittività: le prime sono più restrittive. Per ogni pacchetto vengono verificate le singole regole a partire da quelle più restrittive: la prima che risulta verificata per il pacchetto viene applicata (eseguito l’obiettivo) e l’analisi termina. Se nessuna regola di una ACL risulta vera per un pacchetto, al pacchetto si applica la regola di default, come per esempio «blocca tutto» (per esempio deny all) o «consenti tutto» (permit all). Firewall e ACL Data una rete con due subnet private e un firewall perimetrale, elencare una ACL per il firewall/router in modo tale che una subnet non sia raggiungibile da Internet e nell’altra un solo host sia raggiungibile da Internet con il protocollo HTTP (porta TCP 80):

192.168.0.x

LAN1 192.168.0.0/24 (255.255.255.0) 192.168.0.2

ROUTER FIREWALL 192.168.0.254

192.168.0.1 eth0 82.10.79.39 s0 eth1 192.168.1.254 192.168.1.x

LAN2 192.168.1.0/24 (255.255.255.0) 192.168.1.2

192.168.1.1

66

A6

Internetworking

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica



ESEMPIO



Proto source Port

interfaccia IN

interfaccia OUT

IP source

IP dest

s0 s0

eth0 eth1

* 192.168.1.1

* TCP

*

*

* * *

*

*

* * *

dest Port

Azione

* 80

deny permit deny

*

L’uso dell’asterisco (*) indica «qualsiasi valore» per quel campo; nel gergo dei firewall si usa anche il termine any. Si nota che l’ultima regola dell’ACL (regola di default) blocca qualsiasi altro traffico sulle interfacce del firewall/ router. Ciò significa, per esempio, che le due subnet non sono comunicanti, e anche che nessun host di questa rete privata può accedere a Internet. Affinché l’host 192.168.1.1 possa essere raggiunto da Internet, il firewall/router deve realizzare anche la funzione di NAT per esporre l’host sulla rete pubblica (destination NAT). Nel gergo delle reti si dice anche che l’host 192.168.1.1 è nattato (o anche pubblicato) su Internet.

4

Sicurezza firewall

Il firewall è un servizio progettato per fornire sicurezza a una rete. A volte l’apparato su cui gira un processo di firewall, apparato che è quindi esposto alla rete pubblica, è detto bastion host. Queste macchine devono essere particolarmente attrezzate per respingere i tentativi di intrusione, quindi devono possedere un sistema operativo sicuro (per esempio, sempre aggiornato rispetto alle patch rilasciate dal produttore), con pochissimi account d’accesso e un numero minimo di processi in esecuzione. Tra i tentativi di intrusione che un firewall può tentare espressamente di contrastare si ricorda l’IP spoofing, quella tecnica per cui si tenta di accedere ai servizi di una rete simulando un’identità dei pacchetti diversa da quella reale. Ciò si ottiene inviando pacchetti TCP/IP con l’indirizzo IP sorgente modificato (falsificato). Obiettivo di vari tipi di pirateria informatica è il DoS (Denial of Service), ovvero un’attività intrusiva il cui scopo è mettere in difficoltà un servizio di rete sottoponendolo a stress eccessivo o sfruttandone alcune caratteristiche malfunzionanti. Una tipica attività di DoS attuata verso i firewall riguarda l’uso distorto del programma ping (IP smurfing). Il software «distorto» invia una grande quantità di pacchetti ICMP Echo Request, tutti con IP sorgente modificato (spoof) e indirizzo destinazione un IP broadcast diretto. Se il router/ firewall non è impostato correttamente per ignorare pacchetti ICMP con destinazione IP broadcast, inoltra il pacchetto a tutte le sue interfacce e la richiesta ICMP si diffonde velocemente sia sulla rete privata sia sulla rete pubblica su cui si affaccia il router. Siccome la destinazione è broadcast, molti host risponderanno alla richiesta inviando pacchetti ICMP Echo Reply all’indirizzo IP mittente (falsificato), costringendolo a una attività stressante. Per questa ragione i firewall hanno spesso una ACL che gli impone di non inoltrare pacchetti ICMP con IP destinatario un indirizzo di broadcast.

4

Sicurezza firewall

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Windows smurf Sui sistemi operativi Windows è stata risolta la vulnerabilità alle attività di IP smurfing a partire dall’aggiornamento XP Service Pack 3.

67

ESEMPIO

ACL antispoofing e antismurf Se dalla rete pubblica giungono pacchetti TCP/IP provenienti da reti private, ciò significa che probabilmente si è di fronte a una intrusione ,3 6SRR¿QJ, dato che è impossibile che dalla rete pubblica giungano pacchetti originati da reti private. Riferendosi alla rete riportata nell’Esempio precedente: interfaccia IN

interfaccia OUT

IP source

IP dest

s0 s0 s0

eth0, eth1 eth0, eth1 eth0, eth1

192.168.0.0/16 172.16.0.0/16 10.0.0.0/8

* * *

Proto source Port * * *

* * *

dest Port

Azione

* * *

deny deny deny

L’ACL implementata per sistemi router con firewall CISCO potrebbe essere: 5RXWHU FRQ¿J DFFHVVOLVW  5RXWHU FRQ¿J DFFHVVOLVW  5RXWHU FRQ¿J DFFHVVOLVW  5RXWHU FRQ¿J LQWHUIDFH V 5RXWHU FRQ¿J LS DFFHVVJURXS

GHQ\ LS   DQ\ GHQ\ LS   DQ\ GHQ\ LS   DQ\  LQ

L’ACL realizzata invece con iptables/netfilter su un sistema Linux: LSWDEOHV $ )25:$5' L V V  M '523 LSWDEOHV $ )25:$5' L V V  M '523 LSWDEOHV $ )25:$5' L V V  M '523 Sui router CISCO per evitare lo VPXUI si impone al router/firewall di scartare i pacchetti ICMP con IP destinazione un indirizzo broadcast con un comando ad hoc (normalmente attivo di default): 5RXWHU FRQ¿J QR LS GLUHFWHGEURDGFDVW Per Linux invece si può scrivere l’ACL: LSWDEOHV $ )25:$5' L HWK S LFPS LFPSW\SH SLQJ G  M '523

5

Proxy

NB. Il termine gateway, in effetti, trova la sua accezione originale proprio in questa definizione. L’uso del termine gateway come sinonimo di router (per esempio, gateway di default) ingenera a volte qualche ambiguità sull’uso del termine.

Quando il processo di firewalling è svolto a livello 7 Applicazione (Application Layer firewall), molto spesso ci si trova di fronte ad apparati che integrano varie funzionalità di rete, come: ˜ il routing (tra rete privata e rete pubblica); ˜ l’esposizione di client privati su rete pubblica (analogamente a NAT); ˜ il rilevamento e il controllo degli accessi. In particolare, quando un’attività di routing viene realizzata a livello 7 Applicazione, il sistema non viene più denominato router, ma gateway(NB). Queste, sostanzialmente, sono le caratteristiche di un servizio complessivo denominato proxy (proxy server), normalmente realizzato tramite applicazioni utente il cui uso è riservato agli amministratori di rete. Come per NAT e firewall, la funzionalità proxy non è un protocollo di livello 7 Applicazione, ma un processo applicativo. Esso deve essere avviato su una piattaforma hardware ad alte prestazioni (per esempio un computer server) per poter fornire tutti i servizi promessi. Le prestazioni dei firewall applicativi si misurano in PPS (Pacchetti Per Secondo, da 100 000 a 1 milione, 2012).

68

A6

Internetworking

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

L’application firewall agente su un proxy, oltre alle consuete attività di controllo dei pacchetti e delle connessioni (packet filter e stateful inspection), è in grado di approfondire l’analisi del contenuto dei pacchetti (deep inspection) individuando comunicazioni sospette in base alle stringhe contenute nei dati o a particolari patterns impostabili (per esempio, firme di riconoscimento per i virus informatici). La funzionalità di livello 7 consente a questi sistemi di analizzare e controllare i contenuti nei principali protocolli applicativi utente, come per esempio il protocollo per il Web (HTTP), la posta elettronica (POP3 e IMAP) e il trasferimento file (FTP). Con semplici impostazioni di management, i proxy possono anche bloccare interi siti Web ritenuti non idonei o aggiornare i propri criteri di controllo importando periodicamente database appositi di criteri alfanumerici (per esempio, black list). Per far accedere gli host privati alla rete pubblica il proxy usa un modo molto differente da NAT. Per usare un servizio di proxy gli host privati devono essere configurati espressamente per usufruire dei servizi su rete pubblica, mentre NAT è completamente trasparente agli host privati (nessun management sull’host). Un client proxy (un host della rete privata) deve essere configurato in modo tale da raggiungere la macchina server proxy, attraverso un protocollo di livello 7 (quello che l’host vuole utilizzare su rete pubblica) e un numero di porta TCP attraverso la quale comunicare con il proxy server. Ora il client può effettuare le richieste di accesso alla rete pubblica (tipicamente con connessioni TCP/IP) tramite proxy. Tale richiesta giunge al processo proxy che si connette all’host della rete pubblica con la propria identità pubblica (IP pubblico del proxy) ed evade la richiesta per conto del client privato. Il processo proxy colloquia con l’host pubblico al posto del client privato e reindirizza le risposte dell’host pubblico all’host privato che quindi può usufruire del servizio della rete pubblica. Nello schema seguente è mostrato un frammento dell’uso di un proxy HTTP da parte di un host della rete privata. L’applicazione client (un browser) deve essere configurata per effettuare una richiesta modificata al sistema proxy, invece di cercare di parlare con la destinazione finale. Le richieste «modificate» sono espressamente previste dal protocollo, in questo caso HTTP(NB). NB. Se la richiesta del client fosse stata fatta senza proxy, l’indirizzo IP del server sarebbe stato immesso direttamente nei pacchetti IP della connessione TCP (previa consultazione del DNS) e la richiesta della pagina in HTTP sarebbe stata: *(7 ZLNL3DJLQDBSULQFLSDOH +773 8VHU$JHQW 0R]LOOD +RVW LWZLNLSHGLDRUJ   Se invece la richiesta di un client viene fatta con un browser impostato per utilizzare un proxy server HTTP, la richiesta sarebbe stata: *(7 KWWSLWZLNLSHGLDRUJZLNL3DJLQDBSULQFLSDOH +773 8VHU$JHQW 0R]LOOD +RVW LWZLNLSHGLDRUJ   La differenza fondamentale tra le due richieste è la presenza di un URL totalmente qualificato (FQDN) nella prima riga della richiesta effettuata tramite proxy (KWWSLWZLNLSHGLDRUJZLNL3DJLQDBSULQ FLSDOH), che indica al proxy dove collegarsi al posto dell’utente (e quindi come reperire l’indirizzo IP del server Web pubblico a cui connettersi).

5

Proxy

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

69

proxy HTTP P (proxy server)

A (client)

192.168.0.1

192.168.0.2

Server pubblico

82.10.79.39

73.94.35.15

192.168.0.2 192.168.0.1 50000 8080 SYN

192.168.0.2 192.168.0.1 50000 8080 SYN+ACK 192.168.0.2 192.168.0.1 50000 8080 ACK

192.168.0.2 50000

192.168.0.1 8080

HTTP Request

82.10.79.39 73.94.35.15 45030 80 SYN

73.94.35.15 82.10.79.39 80 45030 SYN+ ACK 82.10.79.39 73.94.35.15 45030 80 ACK

82.10.79.39 45030

73.94.35.15 80

HTTP Request

73.94.35.15 80 192.168.0.1 8080

82.10.79.39 45030

HTTP Response

192.168.0.2 50000

HTTP Response

tempo

5.1

tempo

tempo

Reverse proxy

Esattamente come il DNAT (destination NAT) consentiva a host privati di fornire servizi pubblici pur non disponendo di un indirizzo IP pubblico, anche per i processi proxy esiste il servizio di reverse proxy che consente a host pubblici di utilizzare i servizi implementati sugli host di una rete privata (per esempio, un server Web). Reverse proxy funziona esattamente come proxy, sebbene in verso opposto: un host pubblico richiede un servizio di rete connettendosi all’indirizzo pubblico del proxy server, quindi il reverse proxy crea una nuova connessione verso l’host privato che supporta effettivamente quel servizio duplicando la richiesta e rispondendo all’host pubblico con le risposte ricevute dall’host privato. Anche in questo caso deve essere fatta un’opportuna configurazione sull’host privato che offre il servizio pubblico. Naturalmente il reverse proxy è in grado di ispezionare i pacchetti, controllare la bontà delle connessioni ed effettuare il logging degli accessi delle connessioni ricevute dall’esterno. 70

A6

Internetworking

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Inoltre il servizio di cache offerto dal reverse proxy risulta estremamente efficiente: dopotutto le richieste pubbliche all’host privato tendono a essere ripetitive (per esempio, la pagina principale del sito Web). In generale l’approccio al routing/firewalling tramite proxy consente numerosi vantaggi rispetto all’approccio base router/firewall/NAT, come per esempio un controllo del traffico molto più accurato (deep inspection, black list, blocco dei siti, ecc.). I processi proxy, per loro natura, forniscono un efficace servizio di cache, dato che il traffico richiesto dai client viene memorizzato sul server proxy e può essere restituito immediatamente nel caso una richiesta successiva fosse identica (per il traffico Web, si pensi a tanti client privati che accedono allo stesso motore di ricerca pubblico...). D’altra parte un processo proxy è molto oneroso da un punto di vista computazionale per la macchina che lo ospita e richiede speciali configurazioni da effettuare sul lato client da parte degli utenti (non è trasparente). Inoltre un proxy server non sempre supporta ogni tipo di protocollo applicativo e, per ognuno, necessita di un processo specifico.

6

Sicurezza proxy

Un processo proxy offre nativamente un importante supporto per la sicurezza: il controllo completo dell’accesso alla rete pubblica a vari livelli, prima di tutto a livello utente. Quando un server proxy riceve una richiesta di servizio può attivare un processo di autenticazione nei confronti dell’host o dell’utente che ha effettuato la richiesta (cosa impossibile per NAT, dato che è completamente trasparente). L’autenticazione può essere agganciata ai database di gestione degli oggetti operanti sul sistema di rete (per esempio, LDAP di Active Directory per reti Microsoft o Linux/Samba) e possono essere impostate numerose politiche di controllo e autenticazione in base alle esigenze della rete. Un servizio proxy offre anche un completo sistema di logging (traccia temporale degli accessi memorizzata su disco) che consente di espletare le varie incombenze legislative che sono richieste agli amministratori di rete, consentendo le più svariate attività di audit. Per i sistemi operativi di tipo Windows Server l’applicativo proxy più utilizzato è Microsoft Forefront Threat Management Gateway (Forefront TMG, ex MS ISA Server), mentre per i sistemi Linux l’applicativo proxy classico è Squid.

6

Sicurezza proxy

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Audit Gli audit sono attività di valutazione e/o di controllo attivate su precise basi di analisi come raccolte dati sistematiche, informazioni standardizzate, protocolli di riferimento. Lo scopo di un audit è verificare l’efficienza o la correttezza dei servizi resi da un’organizzazione, sia a scopo interno (per migliorare il servizio), sia a scopo esterno (per rilevare infrazioni o violazioni normative). Le attività di audit informatico spesso riguardano i servizi di sicurezza attivati nei sistemi informatici a livello di singole macchine (per esempio, sistemi server) o delle reti in cui operano (accessi, utenti, applicazioni, dati).

71

A7

Internetworking: modelli

Alla luce dei vari processi descritti che consentono un internetworking efficiente e (relativamente) protetto tra reti TCP/IP private e pubbliche, sono stati proposti nel tempo vari modelli di configurazione per le reti private affinché possano organizzare la disposizione ottimale degli apparati di interconnessione e di controllo. A partire da una rete privata di carattere domestico, con poche macchine e una connessione pubblica ADSL residenziale fino a reti private di grandi dimensioni con connessioni pubbliche tramite interfacce ad alta velocità, la disposizione e l’organizzazione di router, firewall e proxy risulta fondamentale.

1 Configurare gli apparati Gli apparati di rete come switch, modem ADSL, router, Access Point ecc. sempre più spesso sono configurabili, dopo l’acquisto, tramite il browser di un PC, digitando nella barra degli indirizzi uno speciale indirizzo IP riportato sulla confezione. All’interno del firmware dell’apparato (spesso una distribuzione Linux embedded) è attivo un server Web che risponde alle richieste effettuate all’indirizzo IP di cui sopra. La prima pagina proposta è la richiesta di un login di sicurezza (tipo user name/password) a cui rispondere con i dati riportati anch’essi sulla confezione. Questi tre valori (indirizzo IP, user name e password) sono i dati da conservare per poter agire sulla configurazione dell’apparato anche in futuro.

72

Reti residenziali

Un primo schema per una piccola rete residenziale prevede un modem ADSL, un host gateway (router), un apparato AP (Access Point) e alcuni host paritari (Personal Computer e/o laptop): gateway LAN 192.168.0.0/24 (255.255.255.0) eth 192.168.0.1

pppoe 82.10.79.39

AP 192.168.0.100

modem ADSL 192.168.0.245 Internet

192.168.0.254 192.168.0.3

192.168.0.2

In questo schema un host server denominato gateway (non necessariamente equipaggiato con un sistema operativo server) attraverso un’unica interfaccia fisica (di tipo Ethernet) possiede due indirizzi IP (multihomed single link): uno assegnato per la rete privata, l’altro ottenuto dal DHCP di un ISP (indirizzo IP pubblico dinamico) presso il quale è stato effettuato un contratto di accesso a Internet.

A7

Internetworking: modelli

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

La connessione pubblica proveniente dal modem ADSL raggiunge il gateway attraverso lo strato fisico 802.3 (Ethernet) che veicola un livello 2 punto-punto di tipo PPP (cfr. Sistemi e reti, vol. 1, Protocollo PPP). Questa forma di tunneling è detta PPPoE (PPP over Ethernet, RFC 2516). Pur condividendo il livello fisico, il tunnel PPPoE è a tutti gli effetti un canale dedicato che accede via modem al router pubblico dell’ISP con l’indirizzo IP pubblico assegnato (nello schema 82.10.79.39). La connessione pubblica va fatta quindi specificando una coppia username/password e superando lo schema sfida/risposta utilizzato da PPP. Il gateway ora offre la connessione pubblica agli host privati della rete LAN domestica tramite NAT (su Windows con ICS; su Linux con netfilter/iptables). Come si può notare, anche il modem e l’AP possiedono un indirizzo IP privato, attraverso i quali si possono raggiungere le relative pagine Web di configurazione. Il resolver DNS pubblico è attivo sul gateway, che avrà ricevuto in DHCP dall’ISP un paio di indirizzi pubblici di altrettanti server DNS pubblici; gli host della rete privata, invece, dovranno indicare come gateway di default e DNS l’indirizzo IP del gateway della rete privata (nello schema precedente 192.168.0.1). In una rete del genere si può attivare un server DHCP per esempio sull’AP; il gateway, infatti può possedere un server DHCP solo se equipaggiato da un sistema Microsoft Server (o, in alternativa, da un sistema Linux su cui attivare il servizio DHCP). Le configurazioni degli host Wi-Fi sono analoghe alle configurazioni degli host cablati. Per organizzare una rete e i suoi servizi in modo workgroup (o Linux Samba) è opportuno definire su ogni host sempre le stesse coppie user name/password. In una rete di questo tipo spesso è inutile usare un servizio proxy, e quindi la protezione dalle intrusioni può essere delegata a un personal firewall installato sul gateway (o integrato al sistema operativo): gli host cablati erediteranno la sicurezza garantita dal personal firewall. Per gli host mobili invece è necessario configurare un proprio personal firewall allo scopo di garantire la mobilità protetta anche per altre reti su cui il dispositivo mobile potrà connettersi. Un secondo schema di rete residenziale è quello che prevede un unico apparato integrato switch/router/firewall/modem/AP.

DDNS Le reti che non dispongono di un indirizzo IP pubblico statico, ovvero quelle che ottengono con il DHCP dell’ISP un indirizzo IP pubblico dinamico a ogni connessione (per esempio, le reti residenziali classiche) non hanno teoricamente la possibilità di fornire servizi sulla rete Internet (per esempio, pubblicare un server Web, cioè un sito personale). DDNS (Dynamic DNS) è una serie di tecniche (descritte anche in RFC 2136) che consente di associare il proprio indirizzo IP dinamico, di volta in volta, a un nome di dominio fisso e registrato sul DNS pubblico. Ora, attraverso quel nome di dominio, anche un host con indirizzo IP dinamico può essere raggiunto dalla rete pubblica a prescindere dal valore dell’indirizzo IP posseduto. DDNS può essere concesso da fornitori di servizi su Internet, sia gratuitamente sia a pagamento (per esempio, http:// www.no-ip.com), fornendo uno speciale programma da mandare in esecuzione sulla macchina su cui effettuare l’hosting (programma che informerà il servizio DDNS dei cambiamenti di IP) o mantenendosi collegati a determinate pagine Web. Alcuni router forniscono DDNS all’interno del proprio firmware, previa configurazione.

LAN 192.168.0.0/24 (255.255.255.0)

apparato integrato 192.168.0.100

ppp Internet

82.10.79.39 192.168.0.254 192.168.0.3

192.168.0.2

1

Reti residenziali

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

73

Questi apparati sono molto diffusi nel mercato di consumo (nel quale sono conosciuti con il nome generico di «router ADSL») perché tendono a ridurre al minimo le operazioni di configurazione (management) e, nello stesso tempo, a offrire numerosi servizi aggiuntivi come multiconnessione cablata (switch e DHCP server), connessione Wi-Fi (Access Point), controllo perimetrale (firewall integrato) e multiconnessione alla rete pubblica (NAT, routing e modem ADSL). In questo caso tutti gli host connessi all’apparato sono paritari e ottengono i servizi in maniera centralizzata dall’apparato. L’apparato possiede un proprio sistema operativo minimale dotato di interfaccia di configurazione tramite un Web server minimale raggiungibile con un indirizzo IP che deve risiedere nello schema di indirizzamento della rete privata a cui parteciperanno gli host. Tra le poche configurazioni da impostare, la chiave di sicurezza dell’apparato Wi-Fi e i dati della connessione al fornitore del servizio (ISP), normalmente con la coppia user name/password rilasciata al momento della sottoscrizione del contratto. I servizi preconfigurati di DHCP, NAT e firewall faranno il resto.

2

Reti single-homed e dual-homed

In questo caso il modello può essere adatto per reti aziendali di piccole dimensioni provviste di un servizio di controllo degli accessi (proxy/firewall installato su bastion host). Il primo caso è detto single-home bastion host e prevede un apparato (proxy o firewall) con una sola interfaccia di rete: proxy/firewall LAN 192.168.0.0/24 (255.255.255.0) pubblicabile

192.168.0.1

AP 192.168.0.100 192.168.0.245

ROUTER packet filter 82.10.79.39 Internet

192.168.0.254 192.168.0.3

192.168.0.2

I servizi «pubblicabili» su Internet sono contenuti sulla macchina proxy/ firewall tramite reverse proxy (o destination NAT). Il router protegge la rete privata a livello 3 (packet filter) e instrada tutti i pacchetti in entrata dalla rete pubblica (incoming) sul proxy, che così può effettuarne il controllo anche a livello 7 (application layer filtering). Il proxy, a sua volta, può concedere i servizi pubblici agli host privati (out74

A7

Internetworking: modelli

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

going), che devono avere proprio l’indirizzo IP del proxy come gateway di default. In questo modo può effettuare anche il controllo degli accessi. In alternativa gli host privati possono uscire verso la rete pubblica semplicemente con un source NAT offerto dal router. Il punto debole di questo schema è che consente a pacchetti pubblici (incoming) di transitare fisicamente sulla rete privata, benché controllati dalle ACL sul router. Una variante di questa configurazione prevede un apparato con due interfacce di rete (gateway) per obbligare tutto il traffico uscente ed entrante (incoming e outgoing) della rete pubblica a transitare su entrambi i dispositivi di controllo. Questa condizione è considerata un attributo di sicurezza soprattutto se i due firewall sono di marche (commerciali) differenti: pacchetti indesiderati potrebbero oltrepassare un firewall ma non l’altro. Questa variante è anche detta dual-home bastion host, e prevede l’uso di una subnet di link: pubblicabile

LAN 192.168.0.0/24 (255.255.255.0)

gateway proxy/firewall

AP 192.168.0.100 192.168.0.245

ROUTER packet filter

10.0.0.1

82.10.79.39 Internet

10.0.0.254 192.168.0.1

subnet link 192.168.0.3

10.0.0.0/24 (255.255.255.0) 192.168.0.2

I servizi pubblicati su Internet dovranno risiedere sulla macchina proxy (reverse proxy). Rispetto alla soluzione single-home, la dual home non consente a pacchetti pubblici di circolare sulla rete privata. Configurazioni come queste (single-home e dual-home bastion host) non sono ideali per fornire servizi pubblici tramite host privati (tramite destination NAT o reverse proxy) dato che il traffico «pubblico» incoming dovrebbe per forza di cose circolare sulla LAN privata (caso single-home), mentre nel caso dello schema dual-home un solo server pubblico è a volte insufficiente per un buon servizio.

3

Reti trust/DMZ

La configurazione dual-home prevede una subnet di link. Sfruttando in modo specifico questa segmentazione si ottengono due sottoreti dedicate. L’una, considerata «sicura» e detta trust, contenente tutti gli host privati con solo traffico pubblico di outgoing (per esempio, la navigazione Web); l’altra, considerata «insicura» e detta DMZ (DeMilitarized Zone), contenente le macchine che devono esporre servizi pubblici e su cui, quindi, circola traffico incoming potenzialmente vulnerabile. Questo primo schema di rete trust/DMZ risponde al nome di screened subnet:

3

Reti trust/DMZ

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

75

Il traffico incoming (proveniente dalla rete pubblica e destinato a server privati tramite destination NAT o reverse proxy) è confinato all’interno della subnet DMZ dopo aver passato il controllo del router perimetrale ed essere stato bloccato dal router interno: la subnet trust non è toccata da questo tipo di traffico. Lo schema in alto alla pagina precedente (screened subnet) realizza sia il confinamento del traffico incoming, sia l’attraversamento di due dispositivi di controllo (possibilmente di marche differenti). I due schemi in basso alla pagina precedente (DMZ 1 e DMZ 2), del tutto analoghi tra loro, mostrano il modello trust/DMZ realizzato attraverso un gateway/firewall hardware con 3 interfacce, e lo stesso schema realizzato con un gateway proxy/firewall anch’esso con 3 interfacce. In tutte le configurazioni trust/DMZ è bene che sull’interfaccia del router siano attestati più indirizzi IP pubblici (multihomed), per esempio uno per l’accesso verso Internet degli host privati della subnet trust (traffico outgoing) e uno per ogni servizio pubblico realizzato dai server della subnet DMZ (traffico incoming). L’unico punto di contatto tra la rete trust e DMZ riguarda il traffico interno diretto al server Web sulla subnet DMZ (per esempio, servizi di intranet, posta elettronica o altro).

4

Rete modello Microsoft

L’idea che sta alla base di questo modello suggerito da Microsoft in alcuni documenti tecnici suggerisce la creazione di due subnet DMZ, una dedicata al traffico incoming (DMZ out, traffico potenzialmente pericoloso), l’altra dedicata al traffico outgoing (DMZ in, traffico relativamente sicuro). server web internet

DMZ out 10.0.1.0/24 (255.255.255.0)

10.0.1.2 pubblicabile

10.0.1.254

10.0.1.1 gateway/firewall

gateway proxy

82.10.79.40 Internet

82.10.79.39 10.0.2.1

10.0.2.254

192.168.0.1

DMZ in 10.0.2.0/24 (255.255.255.0)

10.0.2.2

server web intranet

AP 192.168.0.100

192.168.0.2 192.168.0.245 192.168.0.3

TRUST 192.168.0.0/24 (255.255.255.0)

4

Rete modello Microsoft

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

77

Come nel caso classico, il traffico incoming rimane confinato nella DMZ out, ma il traffico interno non raggiunge direttamente i server sulla DMZ out come nel modello precedente, ma la DMZ in su cui sono replicati i server dei servizi. Per uscire verso Internet i pacchetti degli host privati devono dapprima entrare nel firewall (su DMZ in), passare attraverso il gateway/proxy e ripassare dal firewall (su DMZ out) per poi uscire sulla rete pubblica. Quantunque relativamente complesso, lo schema garantisce il fatto di poter specificare ACL dedicate al solo traffico della rete trust sull’interfaccia che nello schema della pagina precedente riporta l’indirizzo IP 192.168.0.1, operando un controllo raffinato del traffico interno (e outgoing) di una rete di dimensioni medio-grandi. Il proxy in posizione strategica (sia su traffico incoming che outgoing) è in grado di pubblicare servizi sia pubblici (DMZ out), sia privati (DMZ in) con gli applicativi tipici operanti su reti Microsoft (per esempio, Microsoft Shared Point).

5

Virtualizzazione

Come già introdotto nel corso precedente (cfr. Sistemi e reti, vol. 2, Switch virtuali), sempre più spesso la gestione di una rete locale si avvale di tecniche di virtualizzazione dell’hardware. Allora si trattava di inserire in un solo sistema hardware (per esempio una macchina server ad alte prestazioni) varie macchine virtuali autonome (VM, Virtual Machine), costituite ognuna di un sistema operativo proprio, con propri e specifici applicativi server i cui servizi venivano offerti alle macchine della rete attraverso switch virtuali. Tra gli altri benefici, si poteva installare un sistema operativo «legacy» (obsoleto, ma ancora in uso con i relativi applicativi) su un sistema hardware OS2 più efficiente di quello originale, conferendo al serOS1 OS3 vizio prestazioni migliorate rispetto alla piattaforma applicativi originale. applicativi applicativi HARDWARE 2 La centralizzazione dell’hardware per vari sistemi HARDWARE 1 HARDWARE 3 di rete offre una gestione semplificata del sistema complessivo: un solo sistema hardware è più facilmente gestibile di molti sistemi hardware ed è tendenzialmente meno costoso. Per esempio, la memoria principale (RAM) viene gestita in maniera più SISTEMA OPERATIVO VM Server efficiente e senza le duplicazioni che la gestione di più sistemi fisici comporta. La gestione di pochi ma VM1 VM2 VM3 ampi ed efficienti hard disk è sicuramente migliore applicativi applicativi applicativi della gestione di tanti hard disk, magari di diverso virtual machine monitor formato, taglio e velocità. Il costo dell’alimentazione di una sola macchina, benché più potente, è inferiore HARDWARE alla somma dei costi delle alimentazioni di più macchine, ecc. Inoltre le funzionalità avanzate di una singola macchina ad alte prestazioni vengono distribuite a tutte le macchine virtuali, come per esempio la tol78

A7

Internetworking: modelli

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

ESEMPIO

leranza ai guasti degli hard disk (sistemi RAID), le funzionalità avanzate dei più recenti microprocessori, le prestazioni delle schede di rete più sofisticate, ecc. Anche la manutenzione di un solo hardware è nettamente più semplice della manutenzione di molti hardware, magari diversi tra loro e di case costruttrici differenti: la gestione dei driver di periferica, da sempre, è un cruccio per i sistemisti. I servizi generali, come per esempio l’effettuazione periodica della copia dei dati (backup) può essere gestita in modo centralizzato su tutti i sistemi virtualizzati senza dover prevedere, per ogni singolo sistema, una politica dedicata. I benefici delle tecniche di virtualizzazione, però, non finiscono qui. Una macchina virtuale (che ospita un sistema operativo e tutte le sue configurazioni e applicazioni), essendo del tutto scorrelata dall’hardware su cui è installata, può essere completamente salvata su un disco di copia (snapshot), sia i dati sia soprattutto il sistema operativo con tutte le sue configurazioni. Questa opzione è fondamentale: effettuando il backup periodico di una macchina virtuale, essa potrà essere recuperata completamente in seguito a un guasto o a una errata configurazione, oppure spostata interamente su un nuovo hardware virtualizzato senza alcuna necessità di reinstallazione e riconfigurazione del sistema operativo e dei servizi. Infine, i sistemi virtualizzati si rendono particolarmente efficienti per quanto riguarda la loro gestione remota: tramite un software di sistema l’accesso al sistema virtualizzato da remoto consente la gestione di tutti i server in esso contenuti. È così che molti datacenter (il cuore di una LAN che ospita le macchine server), normalmente organizzati con più macchine server fisiche, decidono sempre più spesso la migrazione verso sistemi virtualizzati.

Emulazione La virtualizzazione (dell’hardware) e l’emulazione (del software) sono tecniche simili ma non equivalenti. Nel primo caso abbiamo un sistema operativo (host) dedicato a ospitare altri sistemi operativi (guest) e, tramite uno strato software specializzato (VMM Virtual Machine Monitor o hypervisor) l’host simula gli strati hardware dei vari guest attraverso il proprio. Nel secondo caso (emulazione), un sistema operativo «standard» ospita un software specializzato (l’emulatore) che è in grado di tradurre ogni singola istruzione assembly dei programmi di un sistema operativo ospite (il guest) nelle istruzioni macchina del sistema operativo ospitante (l’host). Tra i programmi di emulazione si ricorda MAME (Multiple Arcade Machine Emulator), in grado di emulare i sistemi operativi che ospitavano i vecchi giochi delle macchine da bar e delle sale giochi. Altri emulatori di rilievo sono QEMU, DOSBox, VMware Workstation, VirtualBox e MS Virtual PC.

Virtualizzazione con VMware La società VMware Inc. è una delle società leader del mercato del software di virtualizzazione. Il prodotto di punta, ovviamente, è il sistema operativo host che ospita le macchine virtuali (Vmware ESX Server e Vmware ESXi vSphere) all’interno delle quali sono installati i vari sistemi operarativi guest. L’host server ESXi di VMware è un pacchetto di qualche centinaio di MB disponibile anche in versione gratuita: dal sito omonimo si scarica un file ISO da masterizzare direttamente (VMware vSphere Hypervisor ESXi o server ESXi). L’installazione del sistema server ESXi su una macchina fisica è estremamente veloce e avviene tramite riavvio e boot con il cd masterizzato. Una volta installato e riavviato il sistema, bisogna configurare i parametri TCP/IP dell’interfaccia di rete fisica (impostazione dell’indirizzo IP e del server DNS), in modo che il sistema server ESXi sia gestibile da remoto con un applicativo dedicato denominato vSphere Client. Ora su un pc della rete si installa vSphere Client e ci si connette al server ESXi tramite l’indirizzo IP configurato precedentemente. Con vSphere Client vanno definite le singole macchine virtuali, specificando quanta CPU fisica dovranno utilizzare, quanta memoria centrale e quanto disco, a partire dalle caratteristiche della macchina fisica. Una volta creata, la macchina virtuale rappresenta un vero e proprio Personal Computer autonomo: lo si può accendere (e spegnere) con comandi software. Ovviamente all’accensione (software) di una VM «vuota», lo schermo mostrerà l’impossibilità di proseguire, almeno fino a quando non si sarà installato un sistema operativo sulla VM, esattamente come si farebbe con una 씰

5

Virtualizzazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

79

ESEMPIO



macchina fisica (per esempio tramite il boot da DVD equipaggiato con una versione di installazione del sistema operativo desiderato). Un modo molto interessante di creare una VM è migrarne una fisica già configurata e funzionante presente nella rete. Installando un applicativo dedicato sulla macchina da migrare denominato VMware Converter, si avvia la migrazione dal sistema fisico al sistema virtuale, specificando solo l’indirizzo IP del server ESXi di virtualizzazione e assegnando un nome alla VM che sarà creata. Una volta completata la procedura, va avviata una fase di installazione dei driver di dispositivo relativamente alla nuova VM, fase completamente automatica, che garantisce la virtualizzazione delle specifiche periferiche a bordo del sistema fisico appena virtualizzato: ora la nuova VM si ritrova funzionante e operativa sulla rete. Il server ESXi ha configurato la condivisione dell’interfaccia di rete fisica con le configurazioni delle interfacce di rete proprie del server appena virtualzzato. VMware Server ESXi VM1

VM2

VM3

Hypervisor HARDWARE

VMware Client

VMware Converter

NB. Il sistema VMware Server ESXi (scaricabile presso il sito in formato ISO) viene installato in modalità trial per 60 giorni, con tutte le funzionalità sbloccate. Per installare la licenza Free e prolungarla indefinitamente è necessario registrarsi sul sito di VMware e inserire poi il codice che verrà fornito per la versione Free Hypervisor. Gli applicativi client WMware Client e WMware Converter sono invece direttamente disponibili liberamente per sistemi operativi Windows (2012).

Altri famosi sistemi di virtualizzazione sono: Microsoft Hyper-V, Citrix XwnServer, Xen, Linux KVM.

80

A7

Internetworking: modelli

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Internetworking: accesso da remoto

A8

Una volta installata e configurata una rete privata (per esempio, TCP/IP), installati i suoi servizi tramite sistema operativo (per esempio workgroup, Active Directory o Samba) e abilitati per essa i servizi su Internet (per esempio, sia di tipo client sia di tipo server), è molto interessante verificare come sia possibile accedere a una rete privata attraverso la rete pubblica (Internet). Le persone, infatti, non sempre sono materialmente disponibili per l’accesso diretto alla propria rete privata, per questioni legate alla vita personale, ai tempi del lavoro o alle sue caratteristiche (lavoratori mobili o senza sede fissa), a contingenze particolari quali spostamenti o migrazioni temporanee di vario tipo. La stessa esigenza è presente per le aziende o le organizzazioni che hanno realizzato più reti sul territorio e che intendono connettere sedi, uffici distaccati, filiali, ecc. per condividere i servizi presenti nelle varie infrastrutture. In particolare, l’esigenza di disporre di un accesso remoto è molto importante per gli amministratori di rete che, per avere sotto controllo la propria infrastruttura, spesso devono intervenire da luoghi differenti rispetto a quelli in cui è richiesto l’intervento. Con programmi di accesso remoto gli amministratori di rete possono controllare una rete anche di grandi dimensioni attraverso una sola console fisica e anche da postazioni pubbliche esterne alla rete da controllare (amministrazione remota). L’accesso remoto a una rete può avvenire a vari livelli e offrire differenti opportunità e funzioni. Quasi sempre un accesso remoto, però, utilizza una tecnica specifica per realizzare le sue funzioni, denominata tunneling. Tunneling Il tunneling è una tecnica per cui un protocollo viene completamente incapsulato all’interno di un altro protocollo che ha la funzione di trasportarlo da mittente a destinazione. Lo scopo è fare in modo che il protocollo «incapsulato» possa utilizzare le funzioni tipiche del protocollo «incapsulante» per attraversare un tratto di rete che altrimenti non avrebbe potuto percorrere, o attraverso il quale non avrebbe potuto transitare con la necessaria sicurezza. Normalmente il protocollo da incapsulare è di livello (OSI) superiore a quello che lo incapsula, ma può anche essere dello stesso livello. Per esempio, su una rete LAN il protocollo IP è incapsulato all’interno del protocollo Ethernet in pacchetti MAC; oppure il protocollo TCP è incapsulato nel protocollo IP.

A8

Internetworking: accesso da remoto

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

81

Internet

LAN

tunnel sicuro 192.168.0.2 73.94.35.15

192.168.0.2 73.94

168.0.2 73.94.35.15

192.168.0.2 73.94.35.15

Questo è un segreto

tfrX45iu89-likK9

45iu89-likK900x

Questo è un segreto

NOTA: Questi requisiti fondamentali e i protocolli di rete relativi alla sicurezza sono trattati nella Sezione B di questo volume.

Un altro caso evidente di tunneling è il protocollo PPP incapsulato in frame Ethernet, ovvero PPPoE. In questo caso il protocollo PPP, che è punto-punto, usa i frame Ethernet per passare attraverso una rete broadcast e raggiungere il modem: senza l’incapsulamento PPP non sarebbe stato in grado di farlo. Il tunneling ha il pregio di mantenere il protocollo incapsulato totalmente indipendente dal protocollo incapsulante, pertanto i due estremi del tunnel possono utilizzare il protocollo estratto dal tunnel dopo aver sfruttato le capacità di trasporto del protocollo che lo ha veicolato. In ogni caso per l’accesso remoto sono fondamentali alcuni requisiti di sicurezza, tra i quali l’autenticazione dell’identità, la riservatezza dei contenuti e l’integrità dei dati (authentication, confidentiality, integrity). Questi requisiti sono fondamentali dato che l’accesso remoto avviene praticamente sempre attraverso la rete pubblica (Internet) e quindi l’identità e i dati che devono essere trasportati per realizzare una connessione remota sono potenzialmente alla portata di chiunque operi su Internet. Per l’accesso remoto il tunneling garantisce anche i requisiti di sicurezza: i dati transitanti su rete pubblica sono prima cifrati e poi incapsulati in tunnel che trasportano i dati cifrati dal mittente al destinatario. Una volta giunti a destinazione attraverso il tunnel potranno essere decifrati dal destinatario.

1

Terminale remoto

Una prima modalità per fruire di accesso remoto è costituita dal cosiddetto terminale remoto (storicamente anche noto come rlogin o telnet). In questo caso un applicativo (client) di livello 7 è in grado di fornire un’intera sessione di un host remoto da gestire tramite interfaccia a riga di comando. In questo modo sull’host remoto si possono riconfigurare servizi, verificare il file system, avviare programmi e, in generale, fare tutto ciò che è consentito dalla shell a carattere dell’host remoto (amministrazione remota). 82

A8

Internetworking: accesso da remoto

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

ESEMPIO

Il protocollo dominante per effettuare accessi con terminale remoto è SSH (Secure Shell, RFC 4253), successore di telnet, ma che offre il servizio in sicurezza garantendo autenticazione, riservatezza e integrità sia con schemi a chiave simmetrica sia asimmetrica. Si tratta di un protocollo client/server trasportato in un tunnel TCP, pertanto l’host remoto deve avere avviata la parte server del protocollo tramite un’applicazione dedicata affinché un host client possa effettuare la connessione. Siccome il terminale remoto offre un’interfaccia a caratteri è lo strumento di amministrazione remota più idoneo per controllare sistemi Linux. PuTTY Il programma PuTTY è il più utilizzato client SSH sia in ambiente Linux sia in ambiente Windows. La parte server di SSH su Windows può essere ottenuta usando un software libero denominato OpenSSH for Windows. Il server SSH su una macchina Linux può essere avviato con:

>URRW#OLQX[ URRW@ HWFLQLWGVVKG VWDUW VVKG VWDUWHG >URRW#OLQX[ URRW@ HWFLQLWGVVKG VWDWXV VVKG SLG     LQ HVHFX]LRQH >URRW#OLQX[ URRW@ Il client SSH PuTTY è liberamente scaricabile da Internet, per esempio per un sistema Windows. La configurazione per una connessione a un server è semplice. Nelle Basic options di configurazione del programma basta indicare: Host Name or IP address (l’indirizzo IP su cui opera un server SSH), il numero di Porta TCP (22) e il tipo di connessione (SSH), dato che PuTTY è in grado di gestire più protocolli di accesso remoto. Avviata la connessione, se il server SSH è in linea, PuTTY apre una finestra console su cui richiede prima di tutto un login (nell’esempio si effettua con l’utente root del sistema Linux a cui ci si è connessi), quindi viene concessa la console del sistema remoto (la password non viene mostrata):

¿QHVWUD :LQGRZV GHOOD FRQVROH UHPRWD GHO VLVWHPD 5VLVWHPLODQ ORJLQ DV URRW URRW#OLQX[¶V SDVVZRUG /DVW ORJLQ :HG 'HF    IURP DVLVWHPLODQ >URRW#OLQX[ URRW@ FG YDU >URRW#OLQX[ YDU@ OV DPDYLV FDFKH HPSW\ OLE ORFDO ORFN ORJ PDLO QDPHG UXQ VSRRO WPS \S >URRW#OLQX[ YDU@ Nell’esempio la connessione è richiesta al sistema R.sistemi.lan riportato nell’Appendice (cfr. Appendice. Configurazione DHCP e DNS).

2

Desktop remoto

Desktop remoto (Remote desktop) offre la medesima funzionalità di terminale remoto ma estende il controllo dalla tastiera al mouse e quindi presenta al client l’interfaccia grafica del server che si intende amministrare da remoto. Nell’ambito dell’amministrazione remota con interfaccia grafica operano sostanzialmente due tipi di protocolli client/server con analoghe funzionalità: RDP (Remote Desktop Protocol), protocollo proprietario Microsoft e

2

Desktop remoto

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

83

ESEMPIO

utilizzato per l’amministrazione remota nativamente sui sistemi operativi Windows; oppure RFB (Remote Frame Buffer, RFC 6143), protocollo che poi ha dato origine a numerosi software per l’amministrazione remota anche con versioni a licenza gratuita (software VNC). Entrambi i protocolli garantiscono autenticazione, riservatezza e integrità della connessione tramite protocolli SSH o TLS quasi sempre inseriti in un tunnel TCP. Siccome desktop remoto offre una completa interfaccia grafica è lo strumento di amministrazione remota più idoneo per controllare sistemi Windows. Desktop remoto Il programma PVWVFH[H è il client di desktop remoto nativo dei sistemi Windows. Il servizio server, invece, è attivato da processo VYFKRVWH[H (-k termsvcs) ed è disponibile sia sui sistemi Windows Server sia sui sistemi Workstation. Sui sistemi Microsoft Server sono possibili solo due sessioni contemporanee allo stesso server di Desktop Remoto, più la sessione console. La sessione console è la speciale sessione che viene avviata quando il login viene eseguito fisicamente sulla macchina server. Per utilizzare un numero superiore di sessioni allo stesso server di Desktop Remoto vanno abilitati i cosiddetti servizi Terminal. Sui sistemi Microsoft Workstation il server di Desktop Remoto è avviabile tramite Pannello di controllo. Per Windows XP, 2003: Pannello di controllo-Sistema-Connessione remota. Per Windows Vista, 7, 8: Pannello di controllo-Sistema-Impostazioni di connessione remota. In entrambi i casi (Server o Workstation) vanno specificati gli utenti autorizzati ad accedere tramite il client di Desktop Remoto. Sono poi disponibili varie applicazioni client/server di terze parti che offrono il servizio di desktop remoto (TeamViewer, RealVNC, ecc.) che, a differenza del Desktop Remoto di Microsoft offrono anche la modalità interattiva: l’utente connesso alla console del server «vede» l’attività svolta dal client connesso da remoto (e viceversa) e può interagire con esso.

3

VPN

Una VPN (Virtual Private Network) è un modo di utilizzare la rete pubblica (per esempio, Internet) per veicolare un traffico privato, cioè relativo a una rete privata (per esempio, una rete locale TCP/IP residenziale o aziendale). Così facendo i servizi tipici di una rete privata (per esempio il programma di contabilità di un’azienda) può essere utilizzato da un utente anche se non si trova materialmente all’interno della rete privata ma, per esempio, in un ufficio estero. L’accesso remoto dell’utente alla propria rete privata viene ottenuto utilizzando l’infrastruttura pubblica di Internet e l’utente remoto opera come se si fosse connesso (login) dall’interno della rete privata. Il concetto può essere esteso, pertanto una VPN può consentire di mettere in comunicazione, come se agissero sulla stessa LAN, due o più sedi distaccate di una stessa organizzazione, e quindi anche due (o più) LAN private. Sebbene il campo operativo delle VPN possa essere molto esteso (per esempio, Trusted VPN, acquistate e organizzate da un fornitore di servizi 84

A8

Internetworking: accesso da remoto

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Internet che può anche prevedere connessioni dedicate), in questo testo ci si limita a discutere delle secure VPN, ovvero di quelle VPN che sono create e utilizzate in completa autonomia da un’organizzazione privata, e che usano come transito dei dati l’infrastruttura TCP/IP Internet esistente tramite tunneling. Internet

SEDE

sede distaccata

ufficio esterno

VPN

azienda partner

lavoratore mobile

telelavoro

Il tunneling è necessario affinché i dati trasferiti attraverso la rete pubblica rimangano isolati all’interno di flussi ben definiti e siano trasportati in maniera sicura: i dati privati circolano dentro il tunnel sulla rete pubblica senza avere contatti con essa. Le tecnologie di virtual private networking sono un esempio di integrazione di applicazioni di sicurezza. Per realizzare una VPN, infatti, sono necessarie soluzioni di autenticazione (affinché alla VPN possano accedere solo utenti autorizzati), riservatezza (affinché i messaggi in transito non siano trafugati) e integrità (affinché i dati trasmessi coincidano sempre con quelli ricevuti) tramite tecniche di tunneling anche per attraversare reti differenti. Alle VPN, inoltre, possono essere associate anche tecnologie di Quality of Service (QoS), a seconda dei servizi che devono essere garantiti su queste connessioni. Il protocollo più consolidato per organizzare VPN è sicuramente IPsec (IP security, RFC 1825 e seguenti), che in realtà è una serie di protocolli che agiscono a livello 3 Rete come sostituti di IP. IPsec è in grado di garantire l’autenticazione con il sottoprotocollo IKE (Internet Key Exchange, RFC 2401). IKE è la parte di IPsec che interviene inizialmente, consentendo lo scambio sicuro delle chiavi private dei due capi della VPN e in alcuni casi inizializzando il tunnel VPN. Inoltre definisce anche la chiave di sessione per cifrare la comunicazione seguente (riservatezza). È un protocollo di livello Applicazione ed è trasportato sulla porta UDP 500. In seguito le sessioni di IPsec sono organizzate con il sottoprotocollo ESP (Encapsulating Security Payload) che sostituisce tutto il payload del pacchetto IP originale (il campo dati) con un payload cifrato, autenticato e integro.

3

VPN

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

VPN workstation Client e server VPN sono disponibili su Windows (2000+, anche workstation come XP, 7 e 8) tramite «Crea nuova connessione», opzioni: – connessione a rete aziendale per la parte client; – connessione avanzata per la parte Server. All’atto della creazione della VPN sono necessarie alcune operazioni di impostazione. Lato server 1) Specificare le utenze della rete LAN locale che possono effettuare una connessione VPN da rete pubblica. 2) Specificare gli indirizzi IP, coerenti con la LAN privata, che dovranno stabilirsi sul server locale e sull’host remoto per ogni connessione VPN entrante. Lato client 1) Indicare l’indirizzo IP del server VPN che dovrà accettare la connessione VPN entrante. 2) Autenticarsi come uno degli utenti previsti nella configurazione del server VPN.

85

ESEMPIO

VPN La Sede di un’organizzazione strutturata su LAN privata, dispone di numerosi Uffici sparsi sul territorio ai quali deve concedere l’utilizzazione dei propri programmi e dei propri database interni. Affinché i vari Uffici possano accedere attraverso la rete pubblica alla LAN privata della Sede, si possono organizzare tanti tunnel VPN, uno per ogni ufficio. I vari Uffici pertanto potranno accedere alla rete privata della Sede acquisendone un indirizzo IP opportunamente riservato a queso scopo. UFFICIO1 192.168.0.0/24 (255.255.255.0)

SEDE 172.16.0.0/16 (255.255.255.0)

U1

192.168.0.1

172.16.1.1

S1

Internet

172.16.0.1

UFFICIO2 192.168.0.0/24 (255.255.255.0)

U2 S2

172.16.2.1 192.168.0.1

172.16.0.2 172.16.0.254 Sx 172.16.0.x U3 172.16.3.1

192.168.0.1 UFFICIO3 192.168.0.0/24 (255.255.255.0)

Nel disegno si nota come i tre host U1, U2 e U3 di tre Uffici distaccati abbiano ognuno due indirizzi IP privati: uno appartenente alla propria LAN privata; l’altro appartenente alla LAN della Sede e acquisito tramite connessione VPN. Le reti Microsoft usano IPsec per realizzare VPN, e inseriscono a livello 2 OSI (ovvero sotto IPsec) un protocollo di supporto: L2TP (Layer 2 Tunneling Protocol) che, dopo l’autenticazione iniziale di IPsec, ha il compito di creare il tunnel su cui verrà trasportato IPsec. L’accoppiata dei due protocolli L2TP/IPsec è standardizzata in un’apposita RFC (3193).

4

Cloud computing

Con cloud computing si intende un modello di gestione della rete tale per cui gli utenti di una rete privata delegano a terzi la gestione di uno o più servizi della propria rete interna. La delega viene decisa per sollevare gli amministratori dalla gestione in prima persona dei servizi, gestione interna che viene ritenuta o troppo costosa o troppo tecnicamente impegnativa o non all’altezza del servizio richiesto. In questo senso si può affermare che il primo caso rilevante di cloud computing attuato in massa dall’utenza Internet è stato la posta elettronica con la migrazione verso il Web mail ben prima che il termine cloud si imponesse come modello specifico. Modi di gestione che hanno anticipato il cloud computing sono anche 86

A8

Internetworking: accesso da remoto

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

l’hosting e l’housing offerto dagli ISP o da altri operatori. Essi realizzano sui propri server, dislocati geograficamente distanti dal cliente, i servizi Web più importanti, come siti, posta elettronica, spazio disco (storage), sottraendone la gestione dalle macchine private del cliente e ospitandone l’implementazione sui propri datacenter raggiungibili via Internet. Normalmente i fornitori di cloud computing offrono una notevole schiera di macchine ad alte prestazioni in grado di ospitare i servizi di molte aziende, sia sotto forma di processi dedicati su macchine specifiche, sia sotto forma di processi attivati all’interno di sistemi virtualizzati (VM, Virtual Machine). Nel contempo questi grandi datacenter sono provvisti di una connettività sulla rete pubblica ad altissime prestazioni. modello classico

modello cloud CLOUD provider

LAN infrastrutturata

applicazione server privata Internet

applicazione server privata

VM

applicazione server CLOUD pubblica Service

Internet

LAN senza infrastruttura

applicazione server pubblica

ROI In generale il cloud computing investe soprattutto le aziende che operano in rete. Anche in questo caso gli utenti privati di una rete aziendale richiedono sempre maggiori servizi e l’introduzione immediata delle nuove tecnologie. L’infrastruttura IT interna si ritrova a dover rispondere velocemente alle richieste e l’amministrazione della rete è impegnata continuamente alla configurazione e alla gestione di nuovi servizi. Questo sforzo spesso non è compensato dal ROI (Return On Investment): i costi di gestione dell’infrastruttura interna della rete superano i benefici ricavati da essi. Questi costi di gestione riguardano le voci di: ˜ investimento iniziale (ovvero l’acquisto dell’hardware quali server, apparati e cablaggi); ˜ mantenimento (la gestione nel tempo della manutenzione efficiente del servizio); ˜ risorse umane (la forza lavoro degli amministratori di sistema); ˜ licensing (i costi delle licenze dei prodotti software); ˜ consumi energetici (per mantenere accesi i server e gli apparati interni); ˜ formazione (per mantenere tecnicamente aggiornata la forza lavoro interna). Per queste ragioni molte aziende IT ricorrono al cloud computing. In questo modo le risorse interne, ora delegate a terzi in cloud, non risiedono più all’interno della propria infrastruttura, ma vengono fruite tra-

4

Cloud computing

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

87

Web mail Nello schema originale il servizio di posta elettronica viene gestito da un applicativo di livello 7 (il client di posta elettronica) configurato e avviato sulla macchina dell’utente. Nel corso del tempo i client di posta elettronica sono stati sostituiti progressivamente dal servizio di gestione della posta elettronica fornito direttamente dal fornitore delle caselle di posta tramite un altro applicativo di livello 7, il browser Web (Web mail). Molti utenti di posta elettronica trovavano inutilmente complesso installare e configurare un client di posta per leggere le proprie mail, mentre l’equivalente servizio disponibile via Web dal gestore risultava più semplice e immediato. Nello stesso tempo il servizio diventava più efficiente: gli utenti possono ora gestire la posta elettronica anche da host diversi da quello personale, conferendo al servizio un importante attributo di mobilità.

mite TCP/IP e Internet e distribuite tra diversi datacenter di terze parti. I costi suddetti sono praticamente tutti a carico della struttura che fornisce il cloud computing. Tutta la gestione dei nuovi servizi è completamente trasparente per l’utilizzatore, che «vede» un unico punto virtuale di accesso alle proprie risorse delegate. Per organizzare un sistema cloud normalmente sono previsti tre soggetti: ˜ il cliente (end user): l’utente o l’azienda che richiede il servizio e sottoscrive un contratto per esso; ˜ l’amministratore (cloud user): un utente tecnico che sceglie e configura i servizi offerti dal fornitore. Mette in contatto il cliente finale con il fornitore di cui conosce l’infrastruttura e ne cura i rapporti tecnici. Questa figura di intermediazione è presente soprattutto quando il servizio è richiesto da un’azienda; ˜ il fornitore (cloud provider): l’azienda che possiede le piattaforme hardware e software (datacenter) con cui il servizio viene erogato: connettività, macchine, archiviazione, applicazioni, ecc., e che si fa pagare in base all’uso (pay-per-use). I costi del cloud computing si concentrano quasi esclusivamente sul contratto di fornitura che il cliente stipula con l’azienda fornitrice e/o con l’amministratore, il cosiddetto SLA (Service Level Agreement). Questi contratti sono evidentemente critici e vanno valutati con molta attenzione, dato che, tra gli altri oneri, l’azienda fornitrice deve assicurare garanzie adeguate per quanto riguarda il rischio (cioè eventi che causano guasti, malfunzionamenti, perdite dati e interruzioni del servizio) e la riservatezza (cioè la garanzia che i dati «delegati» non siano dispersi). Aldilà delle ragioni puramente economiche, il cloud computing promette una funzionalità sempre più importante per i servizi di rete: la mobilità. Con il cloud computing i servizi di una rete privata diventano realmente accessibili da ogni postazione generica su Internet, che sia un host privato dell’utente, un notebook personale, uno smartphone o dei tablet mobili. Naturalmente la bontà di un servizio di cloud computing dipende in maniera stringente dalla qualità della connessione alla rete pubblica: la riduzione del digital divide e il miglioramento della qualità della connessione (banda larga) sono fattori essenziali per la sua diffusione. Le subscriber line (l’ultimo miglio) sono fondamentali per un servizio cloud efficace. Oggi in Italia (2013) i costi per realizzare un cavidotto da un punto di accesso all’utente finale (per esempio per un collegamento in fibra ottica, che ha un indice di guasto di due ordini di grandezza inferiore rispetto al rame) valgono dai 5 ai 10 euro/metro se non bisogna scavare i condotti, mentre si attesta sull’ordine di 50-100 euro/metro se bisogna eseguire gli scavi.

4.1

Servizi cloud

Un fornitore di cloud computing può offrire alcune classi di servizi che realizzano altrettante modalità d’uso da parte dei clienti. 88

A8

Internetworking: accesso da remoto

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Il modello più semplice è definito SaaS (Software as a Service). In questo caso il cliente utilizza il software messo a disposizione del fornitore per ottenere servizi quali file sharing, archiviazione, gestione posta elettronica, messaggistica, applicativi d’ufficio, ecc. Il SaaS si interfaccia agli utenti prevalentemente via HTTP e con Web Browser: il cliente, oltre all’uso delle applicazioni cloud, può solo configurarne i servizi e non ha altro controllo sul loro funzionamento. Esempi di cloud Saas: GoogleDocs (file sharing), Gmail (posta elettronica), Dropbox (file sharing), Microsoft Office 365 (applicativi di produttività personale), ecc. A un livello superiore si pone il PaaS (Platform as a Service). In questo caso il cliente usa ambienti di sviluppo messi a disposizione del fornitore e, tramite SDK specializzati, può scrivere applicazioni personalizzate che verranno poi messe a disposizione come servizi cloud. Il cliente ha un buon controllo sul servizio, potendone programmare le funzionalità direttamente. Esempi di cloud PaaS: Google App Engine, Microsoft Windows Azure Compute, Amazon Elastic Beanstalk, Joyent public cloud (usata da Facebook e LinkedIn), ecc. Infine il servizio più promettente viene denominato IaaS (Infrastructure as a Service). In questo caso il cliente affitta spazio di calcolo presso il fornitore in termini di quantità di CPU, spazio disco e connettività in base alle esigenze dei servizi che intende sviluppare. Il cliente può quindi scrivere o migrare le proprie applicazioni private nell’infrastruttura del fornitore che, tipicamente, le farà «girare» su macchine virtuali (VM) oppotunamente configurate. Esempi di cloud IaaS: Google Compute Engine, Amazon EC2, Microsoft Windows Azure VM, HP Cloud, IBM Blue cloud, VMware IaaS, MobileMe (Apple), GoGrid.

4

Cloud computing

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

89

UESITI ESERCIZI PER LA VERIFICA ORALE Saper rispondere ai Requisiti fondamentali dà una sufficiente garanzia per sentirsi pronti all’interrogazione. Saper anche rispondere ai Requisiti avanzati dimostra una padronanza eccellente degli argomenti del capitolo. Requisiti fondamentali

Requisiti avanzati

1

1

Spiegare le caratteristiche di un router e quelle di un gateway.

2

Mostrare per quale motivo NAT deve usare i numeri di porta effimera delle connessioni TCP.

3

Commentare i tre livelli base di controllo per i firewall.

4

Disegnare uno schema di rete privata con un router e una connessione pubblica. Quindi scrivere una ACL che impedisca tutto il traffico incoming tranne che verso un host.

5

Descrivere le intrusioni di tipo spoofing e DoS.

6

Ricordare le caratteristiche di un servizio proxy e reverse proxy a confronto con source NAT e destination NAT.

7

Disegnare su un foglio una configurazione per l’internetworking di tipo residenziale e una di tipo aziendale. Discuterne le caratteristiche.

8

Spiegare cosa si intende per DDNS e quando è necessario realizzarlo.

9

Disegnare su un foglio lo schema screened subnet. Spiegare perché in questo caso è conveniente usare un’interfaccia multihomed.

2

3

Elencare le principali tecniche di internetworking agenti tra reti private e reti pubbliche e commentarne gli obiettivi.

Descrivere le tecniche di source NAT e destination NAT, ricordandone gli scopi. Elencare e descrivere le principali tipologie di firewall, a partire dal personal firewall.

4

Chiarire la sigla ACL e descriverne il significato. Mostrare almeno una regola di una ACL e commentarla.

5

Mettere a confronto la tecnica di proxy con la tecnica di NAT.

6

Ricordare l’obiettivo del reverse Proxy e l’utilità della gestione di una cache.

7

Elencare le configurazioni più rappresentative di reti private circa l’internetworking con reti pubbliche.

8

Chiarire la natura del traffico incoming e outgoing su una rete privata.

9

Discutere il modello di configurazione trust/DMZ.

10 Spiegare in cosa consistono le tecniche di tunneling. Riportare un paio di esempi di tunnel di rete.

11 Elencare le principali applicazioni che consentono l’accesso da remoto a una rete privata.

10 Spiegare in cosa consiste il tunnel PPPoE. 11 Ricordare tutti i protocolli utilizzati per garantire sicurezza agli accessi da remoto per una rete privata.

12 Ricordare i tre requisiti di sicurezza necessari per un accesso da remoto e discuterli.

12 Illustrare lo scopo fondamentale di una VPN ed elencare i casi reali in cui è utile realizzarla.

13 Mostrare un esempio di VPN verso la rete privata della sede di un’organizzazione.

90

A8

13 Ricordare i protocolli di IPsec e le loro funzioni.

Internetworking: accesso da remoto

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

SEZIONE

B

La sicurezza nei sistemi informatici Per affrontare adeguatamente i temi contenuti in questa sezione bisogna avere una sufficiente competenza su alcuni argomenti prerequisiti. Per verificare se la conoscenza necessaria degli argomenti è sufficiente, svolgere questa breve attività di autovalutazione. Se non si è in grado di rispondere a una domanda o si è solo parzialmente certi della risposta data, è meglio considerare la risposta come errata ai fini dell’autovalutazione. 1

Le sigle OSI e ISO si riferiscono

a

protocolli di rete

b

enti di certificazione

c

enti di standardizzazione

d

tipi di pacchetti

2

Il protocollo HTTP opera a livello b 6 Presentazione 5 Sessione

c

7 Applicazione

d

4 Trasporto

Il protocollo HTTPS è utilizzato b dalla posta elettronica

c

dal DNS

d

dal DHCP

a 3 a

dai browser

4

Un numero naturale è primo se

a

è divisibile per uno e per se stesso

c

i suoi divisori sono numeri primi

b è maggiore di 1 ed è divisibile solo per 1 e per se stesso d è solo divisibile per 1

5

Due numeri naturali sono primi tra loro

a

se sono entrambi numeri primi

b

se si dividono a vicenda

c

se uno dei due è primo

d

se l’unico divisore in comune è 1

Il resto della divisione modulo 3 di 4 vale b 2

c

3

d

4

Il risultato di 3 % 4 vale b 2

c

3

d

4

c

1, 7, 10

d

nessuno

14

d

15

6 a 7 a 8 a 9 a

1

1

x

Quali valori di x verificano 3 % 5 = 4? b 2, 6, 10

3, 7, 11

Il calcolo di 12 XOR 3 (ovvero 12 † 3) vale b 13 c

12

10 I più importanti protocolli di livello 2 Datalink per reti LAN e MAN, e di livello 4 Trasporto sono, rispettivamente a PPP, LLC, TCP b LLC, PPP, TCP c HDLC, LLC, TCP d HTTP, IP, TCP 11 IPsec è un protocollo per la sicurezza nelle reti che opera a livello a 2 Datalink b 3 Rete c 4 Trasporto

d 7 Applicazione

12 HTTPS è un protocollo per la sicurezza nelle reti che opera a livello a 2 Datalink b 3 Rete c 4 Trasporto d 7 Applicazione

Conoscenza necessaria: 10 risposte corrette Risposte corrette: c c a b d a c b d b b d

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

B1

ISO 27001

Il problema della sicurezza in un sistema informatico (SI) abbraccia numerosi ambiti che è abbastanza complicato descrivere in maniera completa. In generale la sicurezza nei sistemi informatici riguarda tutte quelle attività che vengono messe in campo per evitare che le informazioni contenute nel sistema informatico possano essere compromesse, disperse o trafugate. Le informazioni contenute in un SI sono quindi il valore che il SI produce, e che lo stesso deve preservare da eventi che possono intaccarle, eventi di tipo accidentale (come per esempio guasti alle apparecchiature del SI) o eventi di tipo volontario (come attività di manomissione delle informazioni di un SI). In questa sezione del testo si affronterà la questione della sicurezza soprattutto riguardo la seconda tipologia di eventi, ovvero quelli causati da attività di tipo abusivo, e si accennerà solo in subordine agli eventi di tipo accidentale. Il problema della sicurezza dei SI è estremamente sentito dagli addetti dell’IT (Information Technology), come sistemisti, amministratori, programmatori o anche singoli utenti di sistemi, perché le conseguenze derivanti da un evento che compromette la sicurezza spesso presentano il conto di un cospicuo danno economico e sociale. Inoltre ogni paese possiede un quadro normativo che impone alle organizzazioni pubbliche (PA, Pubblica Amministrazione) e private (aziende, ma anche ai singoli utenti) tutta una serie di obblighi di legge che riguardano proprio i comportamenti per garantire un livello di sicurezza sociale accettabile. Dopo aver tentato di definire l’ambito delle attività per la sicurezza nei SI si analizzerà il quadro legislativo italiano e, infine, i modelli informatici che possono essere usati come strumenti per ottenere il livello di sicurezza idoneo, soprattutto per quanto riguarda le attività nelle reti di calcolatori. A partire dalla fine degli anni ’80 l’ISO (International Standard Organization) ha emanato una serie impressionante di documenti tecnici che, a partire dalle specifiche di qualità aziendale di un’organizzazione (ISO 9000, 1987), giunge a descrivere in maniera internazionalmente condivisa quelli 92

B1

ISO 27001

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

che sono i criteri essenziali per la sicurezza di un sistema informatico (ISO 27000, 2005, detta anche ISO 27K). Le normative contenute nella serie di documenti ISO 27000/27001 (e nella sua versione italiana nota come Standard UNI CEI ISO/IEC 27001:2006) è ritenuta una buona base di partenza affinché un SI si possa adeguare a standard di sicurezza accettabili. In effetti la norma è stata concepita a fini certificativi: speciali aziende autorizzate da ISO sono in grado di stabilire se aziende «terze» posseggono i requisiti di sicurezza contenuti nella norma. Quando un’azienda viene certificata come conforme ISO 27001, quell’azienda può esibire un valore aggiunto importante alle sue credenziali. La norma è applicabile a imprese operanti nella gran parte dei settori commerciali e industriali, come finanza e assicurazioni, telecomunicazioni, servizi, trasporti, settori governativi e altro. La normativa, nel suo complesso, descrive come realizzare il cosiddetto Sistema di Gestione per la Sicurezza delle Informazioni (SGSI, in inglese ISMS, Information Security Management System) senza specificare il «come», ma descrivendo quali processi aziendali devono essere realizzati per adeguarsi agli standard di sicurezza. Essa parte dal cosiddetto risk management (gestione del rischio), ovvero quel processo mediante il quale prima si misura o si stima il rischio (assessment), e solo successivamente si sviluppano delle strategie per governarlo (governance). Quindi suggerisce un modello attivo per implementare le strategie per la sicurezza denominato PDCA (Plan Do Check Act, o ciclo di Deming).

1

Certificazioni Naturalmente il sistema delle certificazioni, inducendo un grosso volume d’affari privato per le aziende coinvolte (certificanti e certificande), suggerisce qualche perplessità negli esiti. Per esempio, secondo la statistica emessa dalla stessa ISO nel dicembre 2012, l’Italia risulta la seconda nazione al mondo per numero di certificazioni ISO 9001 (sistema di qualità aziendale) dopo la Cina e con un numero quasi triplo di certificazioni rispetto alla Germania. Anche per quanto riguarda il numero di certificazioni ISO 27001, l’Italia si colloca a un ottimo ottavo posto mondiale, scavalcando naturalmente la Germania. (fonte: www.accredia.it ex Sincert, testo: ISO Survey 2010, 6 febbraio 2012).

Sistema di Gestione per la Sicurezza delle Informazioni

La norma ISO 27001 offre un’efficace definizione di sicurezza per un SI, ovvero una serie di attributi che la contraddistinguono: ˜ riservatezza (confidentiality): esprime la garanzia che l’informazione del SI sia disponibile solo a coloro (utenti o processi) che hanno l’autorizzazione a usarla; ˜ integrità (integrity): esprime la garanzia che l’informazione del SI sia esattamente quella generata dal sistema e non altro; ˜ disponibilità (availability): esprime la garanzia che l’informazione del SI sia sempre reperibile, sia rispetto alle esigenze del sistema, sia rispetto alle esigenze delle leggi. Questi attributi che definiscono la sicurezza di un SI sono a volte ricordati con l’acronimo RID. Il modello suggerito dalla norma per realizzare il SGSI è denominato Plan Do Check Act (PDCA) e consiste in una serie ciclica di attività volte al miglioramento continuo del sistema di sicurezza:

1

Sistema di Gestione per la Sicurezza delle Informazioni

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

93

valutazione del rischio contromisure

requisiti

PLAN

DO

ACT

CHECK

efficacia

modifiche

audit

˜ Plan: pianificare la politica del SGSI, stabilire gli obiettivi generali e indicare la valutazione dei rischi. ˜ Do: realizzare la politica del SGSI, implementare i controlli, i processi e attuare le contromisure decise durante la valutazione del rischio. ˜ Check: controllare e valutare l’efficacia delle contromisure realizzate e raccogliere i dati di controllo. ˜ Act: intraprendere le azioni correttive e preventive, basate sui risultati delle fasi di controllo (audit) o definire nuovi requisiti per il ciclo successivo. Aldilà della semplificazione dello slogan e dell’acronimo tipicamente statunitensi, PDCA costituisce un modello abbastanza interessante: la gestione della sicurezza è vista come un processo continuo e dialettico (tra analisi e prassi), attraverso cui un’organizzazione si impegna in modo continuativo per migliorare la propria condizione tecnica. In particolare la valutazione del rischio è l’aspetto sicuramente più impegnativo e critico dell’intero ciclo, e infatti esistono decine di metodologie e protocolli standard (emanati in altrettante documentazioni tecniche) adottati in varie parti del mondo, tra le quali: NIST 800-300, pubblicato dal National Institute of Standards and Technology (USA, 2002-2007). AS/NZS 4360, uno standard per la gestione del rischio australiano e neozelandese (2004-). CRAMM (CCTA Risk Analysis and Management Method) standard di analisi del rischio britannico (1987-). EBIOS (Expression des Besoins et Identification des Objectifs de Sécurité), sistema di analisi e valutatazione del rischio adottato in Francia (19952004). IT-Grundschutz (in inglese: IT Baseline Protection Manual), standard per l’identificazione, la valutazione e l’analisi del rischio utilizzato in Germania (1995-2008). RiskWatch, tool per la gestione del rischio statunitense (2002-). 94

B1

ISO 27001

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

MIGRA (Metodologia Integrata per la Gestione del Rischio Aziendale), ambiente per la gestione del rischio adottato da Finmeccanica (19992007).

2

Terminologia

Il complesso di norme ISO 27001 suggerisce un’utile serie di termini tecnico-gergali e di definizioni di base circa gli elementi, i soggetti e gli eventi che gravitano attorno al tema della sicurezza, specificandone in maniera sufficientemente precisa le caratteristiche. Questa tassonomia ritornerà utile anche durante la trattazione dei successivi argomenti relativi alla sicurezza dei sistemi informatici. Al di là dello stile semantico strettamente tecnico, le definizioni costituiscono un riferimento stabile per discutere con precisione dei relativi aspetti trattati (tra parentesi la fonte originale o quella da cui ISO 27001 ha tratto il contenuto). ˜ asset (bene) Una qualsiasi cosa di valore per l’organizzazione [ISO 27001]. ˜ policy (politica) L’insieme dei criteri e delle direttive espresse formalmente da un’organizzazione [ISO/IEC 17799]. ˜ incident (incidente) Evento o serie di eventi relativi alla sicurezza dell’informazione non desiderati o inattesi che hanno una probabilità significativa di compromettere le operazioni tecniche e di minacciare la sicurezza delle informazioni [ISO 27001]. ˜ threat (minaccia) La causa potenziale di un incidente che può causare danni a un’organizzazione [ISO 27001]. ˜ vulnerability (vulnerabilità) La parte critica e debole di un’attività o di un gruppo di attività che può essere sfruttata da una o più minacce [ISO 27001]. ˜ event (evento) L’occorrenza identificabile dello stato di un sistema, servizio o rete indicante una possibile vulnerabilità della politica di sicurezza delle informazioni, un malfunzionamento delle contromisure o una situazione non osservata in precedenza ma rilevante per la sicurezza [ISO 27001]. ˜ risk (rischio) Il potenziale che una data minaccia sfrutti le vulnerabilità di un bene o di un gruppo di attività e quindi causare danni all’organizzazione [ISO/ IEC Guide 73:2002]. ˜ attack (attacco) Ogni tentativo di sfruttare la vulnerabilità di un sistema [ISO/IEC 15947]. ˜ authenticity (autenticità) La proprietà che assicura che l’identità di un soggetto o di una risorsa sia proprio quella rivendicata (dal soggetto o dalla risorsa). L’autentici-

2

Terminologia

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

95

˜

˜

˜

NB.privatézza s.f.[der.di privato]. In genere, carattere privato, riservato, soprattutto nei rapporti con altri; intimità familiare; è anche termine proposto, e talora adoperato, come equivalente dell’ingl. privacy (v.). (Vocabolario Treccani, 2012).

˜

˜

˜

˜

˜

96

tà si applica a cose come utenti, processi, sistemi e informazioni [ISO 27001]. accountability (tracciabilità) La proprietà che assicura che le azioni di un ente possono essere ricondotte solo a quell’ente [ISO/IEC 7498-2]. non-repudiation (non ripudio o innegabilità) La capacità di provare che un’azione o un evento ha avuto luogo, in modo tale che questo evento o azione non possa essere negata in seguito [ISO/IEC 13888-1; ISO IS 7498-2]. reliability (affidabilità) La proprietà per cui un comportamento è coerente tra obiettivi e risultati [ISO 27001]. privacy (privatezzaNB) Il diritto di ogni individuo che la sua vita privata e familiare (tra cui l’abitazione e la corrispondenza) siano trattati con riservatezza. Non può esservi ingerenza di un’autorità nell’esercizio di tale diritto se non in conformità con la legge [ISO/IEC 18028-1]. control (controllo) Nel contesto della sicurezza, il termine può essere considerato sinonimo di «salvaguardia» [ISO 27001]. access control (controllo dell’accesso) Attività atte a prevenire l’uso non autorizzato di una risorsa, compresa la prevenzione dell’uso di una risorsa in modo non autorizzato [ISO/ IEC 18028-2: 2006]. authentication (autenticazione) La prestazione di garanzia dell’identità dichiarata di un’entità. Nel caso dell’autenticazione di un utente, essi vengono identificati o dalla specifica conoscenza di qualcosa (per esempio password), o da uno speciale possesso (per esempio smart card o token) o da un’univoca caratteristica personale (un elemento biometrico come l’impronta digitale o la firma scritta). L’autenticazione forte si ottiene tramite meccanismi “forti” come i dati biometrici, o fa uso di almeno due dei suddetti fattori (la cosiddetta autenticazione a più fattori) [ISO/IEC 18028-4]. audit (revisione) Indagine formale, esame formale o verifica dei fatti a partire dalle previsioni al fine di rispettare dei criteri di conformità [ISO/IEC 18028-1].

B1

ISO 27001

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Il quadro normativo in Italia

B2

Purtroppo l’intervento del legislatore italiano nel settore della sicurezza relativamente all’Information Technology (IT) è caratterizzato da una discreta confusione e, in alcuni casi, da provvedimenti anche contraddittori (per esempio, confrontare il paragrafo Misure e prescrizioni: DPS). L’elenco delle normative italiane che regolano l’uso legale delle infrastrutture informatiche e disciplinano la sicurezza dei dati è sconsiderato e non organico. Tuttavia si può provare a classificare l’insieme delle normative (leggi, decreti legislativi, decreti legge, decreti del presidente della repubblica, sentenze e quant’altro) in alcune grandi aree corrispondenti a: ˜ ˜ ˜ ˜

disciplina sulle frodi e i crimini informatici; tutela della riservatezza; disciplina della sicurezza per la Pubblica Amministrazione; tutela del diritto d’autore(NB).

Naturalmente la legislazione non si occupa della sicurezza che le aziende devono fornire al proprio interno ma solo degli obblighi che i privati hanno nei confronti di terzi o delle norme attive presso la PA. L’altro grande problema della legislazione italiana in materia è che i singoli provvedimenti sono sempre emendati, corretti, integrati o parzialmente annullati da norme successive e quindi risulta oltremodo complicato ottenere la corretta disciplina circa un particolare evento o una procedura per la quale si intende essere legalmente conformi. Per un elenco tendenzialmente omogeneo delle normative più importanti per area, consultare l’Appendice. Antologia normativa sulla sicurezza informatica in Italia.

1

NB. I reati informatici connessi alla tutela del diritto d’autore per le opere dell’ingegno, come per esempio lo scambio di file su reti P2P (file sharing), non riguardano direttamente questioni concernenti la sicurezza dei sistemi informatici, quindi saranno tralasciati in questo contesto.

Frode e crimini informatici

Il Codice di Procedura Penale italiano prevede alcuni articoli che trattano di reati connessi a pratiche illegali di tipo informatico. In particolare è previsto il reato di Frode Informatica (Art. 640 ter): «Chiunque, alterando in qualsiasi modo il funzionamento di un sistema informatico o telematico o intervenendo senza diritto con qualsiasi modalità su dati, informazioni o programmi contenuti in un sistema informatico o telematico o a esso pertinenti, procura a sé o ad altri un ingiusto profitto con altrui danno, è punito con la reclusione da sei mesi a tre anni e con la multa

1

Frode e crimini informatici

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

97

Password «Quando non molto tempo fa ho deposto davanti al Congresso [degli Stati Uniti] ho spiegato che spesso riuscivo a ottenere password e altre informazioni delicate dalle aziende fingendo di essere qualcun altro e, banalmente, chiedendole.» (Kevin Mitnick, William Simon, The art of deception, 2002). Kevin Mitnick, detto «Condor», fu condannato alla fine degli anni ’90 a 5 anni e 6 mesi di detenzione per crimine informatico.

da cinquantuno euro a milletrentadue euro. La pena è della reclusione da uno a cinque anni e della multa da lire seicentomila (309.87 Euro) a tre milioni (1549.37 Euro) se ricorre una delle circostanze previste dal numero 1) del secondo comma dell’articolo 640, ovvero se il fatto è commesso con abuso della qualità di operatore del sistema». Inoltre è previsto il reato di Accesso abusivo a un sistema informatico (Art. 615 ter) come: «Chiunque abusivamente si introduce in un sistema informatico o telematico protetto da misure di sicurezza ovvero vi si mantiene contro la volontà espressa o tacita di chi ha il diritto di escluderlo, è punito con la reclusione fino a cinque anni». Il Codice Penale individua anche il reato di Detenzione e diffusione abusiva di codici di accesso a sistemi informatici (Art. 615 quater) come: «Chiunque, al fine di procurare a sé o ad altri un profitto o di arrecare ad altri un danno, abusivamente si procura, riproduce, diffonde, comunica o consegna codici, parole chiave o altri mezzi idonei all’accesso a un sistema informatico o telematico, protetto da misure di sicurezza, o comunque fornisce indicazioni o istruzioni idonee al predetto scopo, è punito con la reclusione sino a un anno e con la multa sino a euro cinquemilacentosessantaquattro». Più in particolare la legislazione che tratta dei crimini informatici si riferisce soprattutto a una legge, la Legge 547 del 1993. Successivamente la disciplina giuridica italiana ha integrato tale normativa con varie emanazioni (per un elenco delle quali si rimanda all’Appendice. Antologia normativa sulla sicurezza informatica in Italia). Tra le varie fattispecie di reato informatico sono quindi di fatto citate le seguenti tipologie: Dialer (o numerazioni a valore aggiunto): il caso in cui gli utenti installano senza consapevolezza e circuìti da pratiche illecite software autoinstallanti denominati dialer che deviano la connessione alla rete pubblica verso utenze molto costose. Furto di identità semplice: attuata tramite cosiddette tecniche di pishing. Si tratta di un’attività perfezionata su Internet spesso tramite l’invio di un alto numero di email a numerosi utenti. Nelle email viene proposto uno «stimolo» e l’indirizzo di un sito (falso) su cui effettuare un login per rispondere allo stimolo. In questo modo l’utente rivela un proprio account per l’accesso a un bene economico (per esempio user/password di un conto corrente) consentendo bonifici o ricariche poi disconosciute. Violazione del profilo: in questi casi i profili di piattaforme Internet per il commercio elettronico (per esempio eBay) vengono illecitamente trafugati per mettere in vendita beni inesistenti e ricevere i relativi pagamenti su un conto differente da quello del profilo trafugato. Molto diffuse sono le violazioni dei profili delle piattaforme Web 2.0 (per esempio Facebook). Accessi abusivi: tecniche per accedere a sistemi informatici senza disporre di autenticazione, spesso allo scopo di utilizzare i sistemi violati per effettuare operazioni illecite come truffe bancarie o postali. Queste intrusioni sfruttano le lacune del sistema di sicurezza dei sistemi informatici. A volte chi accede abusivamente installa speciali programmi deno-

98

B2

Il quadro normativo in Italia

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

minati trojan che consentono di controllare il sistema violato. Questi programmi, apparentemente innocui per l’utente legittimo, in realtà contengono programmi server di amministrazione remota, tipicamente con codice di tipo backdoor o keylogger. Impedimento o interruzione illecita di servizi informatici: in questi casi speciali programmi appositamente scritti per stressare un sistema informatico sono introdotti illecitamente in sistemi vulnerabili allo scopo di rallentare e infine bloccare alcuni servizi resi dal sistema. Questo tipo di violazione è detta DoS (Denial Of Service). Anche l’abuso di spam configura questo reato (per esempio, impedimento all’uso della posta elettronica): l’invio di una grande quantità di messaggi (per esempio, di posta elettronica) indesiderati, oltre che provocare perdite di tempo alle utenze, può rendere inutilizzabile il servizio. I programmi hijacker possono configurarsi come software atto all’impedimento dell’uso dei sistemi informatici. In questo caso vengono modificati i parametri dei browser in modo tale che la navigazione Web sia continuamente redirezionata verso pagine indesiderate rendendo il servizio HTTP inservibile. Infine anche la categoria dei programmi noti come worm sono da configurare come software atto a impedire i servizi informatici: si integrano al sistema operativo che li ospita sfruttandone le vulnerabilità. A questo punto un worm utilizza la rete pubblica per replicarsi e mettere in crisi i sistemi che raggiunge. Una speciale categoria di software dedicati al DoS sono quelli che realizzano le cosiddette botnet, in cui un gruppo di sistemi informatici violati con trojan o malware formano una rete virtuale di macchine coordinate da un botmaster. Il botmaster utilizza quindi una grande quantità di potenza di calcolo (anche migliaia di macchine ignare) al fine di compromettere la funzionalità di altri sistemi, per esempio creando una grande quantità di spam. Danneggiamento di sistemi informatici: questi reati vengono attuati tramite speciali programmi di classe malware, e hanno lo scopo di creare danni di varia natura al sistema informatico che li ospita. Tra questi si ricordano i virus, ovvero programmi che vengono inconsapevolmente installati sugli host e che provocano danni di vario tipo (effetti dannosi detti payload del virus) con la particolarità di diffondersi automaticamente nel sistema. Programmi malware piuttosto diffusi sono anche gli spyware, programmi installati inconsapevolmente che hanno lo scopo di carpire informazioni riservate degli utenti, tra cui gli account (user/password) o chiavi crittografiche per violare informazioni strettamente riservate. Particolarmente insidiosi sono i rootkit, speciali programmi che si integrano con gli strati più bassi del sistema operativo che li ospita (in forma di driver) per consentire il funzionamento di spyware e backdoor. Una legislazione più estesa e circostanziata riguarda poi i reati legati alla pedopornografia online (e, in misura analoga, al cyber stalking, ovvero le molestie perpetrate via email, social network, sms, ...).

1

Frode e crimini informatici

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

99

In questi casi il reato spesso non viene attuato tramite la violazione della sicurezza dei sistemi informatici, ma si configura come attività illegale che usa la rete pubblica come mezzo per perpetrare i reati connessi. Le principali fonti di proliferazione dei programmi che minacciano la sicurezza informatica e che si configurano come attività che possono divenire un crimine informatico sono: ˜ ˜ ˜ ˜ ˜

l’esecuzione automatica di programmi giacenti su drive personali; le applicazioni ottenute via email o da altri servizi di messaggistica; le applicazioni prelevate tramite file sharing; l’intrusione abusiva attraverso la rete; la navigazione Web incauta.

Per scongiurare queste eventualità vanno seguite le seguenti prescrizioni: ˜ mantenere controllati i propri dispositivi come dischi esterni e pendrive con programmi antivirus aggiornati; ˜ verificare sempre la bontà di un’applicazione ricevuta da terze parti con un antivirus aggiornato prima di avviarla; ˜ mantenere i dispositivi di controllo della rete come i firewall, sempre attivati e ben configurati; ˜ aggiornare il sistema operativo sistematicamente in modo che anche i browser siano sempre aggiornati; ˜ porre molta attenzione ai siti contattati via Web e alle richieste ambigue che presentano. Un tentativo di sintesi delle minacce informatiche più diffuse in Internet viene elencato periodicamente dal SANS Institute (USA) che emana i documenti «SANS Top Twenty List» e «SANS Critical Security Controls» contenenti la lista delle vulnerabilità più diffuse e dei controlli da effettuare come contromisura.

2

La riservatezza

Le reti di calcolatori, soprattutto se connesse all’infrastruttura pubblica, diventano anche sistemi di comunicazione di massa: esse veicolano dati di ogni natura e quindi anche dati che non dovrebbero essere resi pubblici. Un principio costituzionale che vale per quasi tutti i Paesi del mondo recita che ogni cittadino ha diritto alla riservatezza delle informazioni che lo riguardano in prima persona e nell’ambito della sua vita privata (privacy). In Italia tale principio, in relazione alle informazioni digitali, viene tutelato da una importante norma di legge: il decreto legislativo del 30 giugno 2003, n. 196, denominato «Codice in materia di protezione dei dati personali» (Dlgs n.196/2003). Il Dlgs n.196/2003 è stato nel tempo modificato e integrato più volte, cfr. Appendice. Antologia normativa sulla sicurezza informatica in Italia. Il Codice esplica il suo contenuto con il primo articolo: Art. 1. Diritto alla protezione dei dati personali «1. Chiunque ha diritto alla protezione dei dati personali che lo riguardano.» 100

B2

Il quadro normativo in Italia

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

A partire da questo articolo, il Codice definisce in modo abbastanza chiaro i termini su cui operare al fine di garantire la cosiddetta privacy e fornisce anche una serie di indicazioni tecniche affinché i responsabili dei trattamenti dei dati personali (Pubblica Amministrazione, aziende e privati) offrano questa garanzia in termini di legge.

2.1

Definizioni

Le definizioni degli elementi su cui insiste il Codice sono inaspettatamente concise, pertanto è utile riportarle letteralmente (omettendo quelle meno rilevanti). Da questo elenco dovrebbe risultare chiaro quali sono i cosiddetti dati sensibili e giudiziari, ovvero quei dati su cui il Codice prevede le restrizioni più forti. Inoltre sono sufficientemente chiari i ruoli degli attori, quali il titolare, il responsabile e l’incaricato come garanti, a vario titolo, della riservatezza dei dati personali. Art. 4. Definizioni «1. Ai fini del presente codice si intende per: a) “trattamento”, qualunque operazione o complesso di operazioni, effettuati anche senza l’ausilio di strumenti elettronici, concernenti la raccolta, la registrazione, l’organizzazione, la conservazione, la consultazione, l’elaborazione, la modificazione, la selezione, l’estrazione, il raffronto, l’utilizzo, l’interconnessione, il blocco, la comunicazione, la diffusione, la cancellazione e la distruzione di dati, anche se non registrati in una banca di dati; b) “dato personale”, qualunque informazione relativa a persona fisica, persona giuridica, ente o associazione, identificati o identificabili, anche indirettamente, mediante riferimento a qualsiasi altra informazione, ivi compreso un numero di identificazione personale; (omissis) d) “dati sensibili”, i dati personali idonei a rivelare l’origine razziale ed etnica, le convinzioni religiose, filosofiche o di altro genere, le opinioni politiche, l’adesione a partiti, sindacati, associazioni od organizzazioni a carattere religioso, filosofico, politico o sindacale, nonché i dati personali idonei a rivelare lo stato di salute e la vita sessuale; e) “dati giudiziari”, i dati personali idonei a rivelare provvedimenti di cui all’articolo 3, comma 1, lettere da a) a o) e da r) a u), del d.P.R. 14 novembre 2002, n. 313, in materia di casellario giudiziale, di anagrafe delle sanzioni amministrative dipendenti da reato e dei relativi carichi pendenti, o la qualità di imputato o di indagato ai sensi degli articoli 60 e 61 del codice di procedura penale; f) “titolare”, la persona fisica, la persona giuridica, la pubblica amministrazione e qualsiasi altro ente, associazione od organismo cui competono, anche unitamente ad altro titolare, le decisioni in ordine alle finalità, alle modalità del trattamento di dati personali e agli strumenti utilizzati, ivi compreso il profilo della sicurezza; g) “responsabile”, la persona fisica, la persona giuridica, la pubblica ammi-

2

La riservatezza

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

101

nistrazione e qualsiasi altro ente, associazione od organismo preposti dal titolare al trattamento di dati personali; h) “incaricati”, le persone fisiche autorizzate a compiere operazioni di trattamento dal titolare o dal responsabile; (omissis) q) “Garante”, l’autorità di cui all’articolo 153, istituita dalla legge 31 dicembre 1996, n. 675.»

ESEMPIO

In particolare, il Codice prevede che il trattamento dei dati sensibili e giudiziari di un individuo sia possibile solo con il consenso scritto da parte dell’interessato. La scuola Nel caso di una struttura scolastica, il titolare è il Dirigente scolastico (il dirigente o preside), mentre il responsabile, quasi sempre, è il Direttore dei Servizi Generali e Amministrativi (DSGA) delegato dal titolare. Infine gli incaricati sono tutti quei dipendenti che hanno una delega implicita o esplicita a trattare «materialmente» i dati personali (e quindi i dati sensibili e giudiziari) degli utenti e dei dipendenti. In questo caso si tratta di dipendenti amministrativi (delega implicita legata al tipo di mansione) o di docenti (delega esplicita in base a particolari funzioni loro attribuite dal titolare o dal responsabile). In generale non sono considerati dati sensibili, pur essendo dati personali, informazioni tipo l’indirizzo anagrafico, la data di nascita, l’ammontare dello stipendio, il voto scolastico ecc..., pertanto il trattamento di queste informazioni può essere svolto anche senza il consenso scritto dell’interessato. In particolare per le scuole, Il Garante per la privacy ha emanato un opuscolo esemplificativo nel quale compaiono alcune fattispecie interessanti: ˜ non lede la privacy l’insegnante che assegna ai propri alunni lo svolgimento di temi in classe riguardanti il loro mondo personale; ˜ l’uso di cellulari e smartphone è in genere consentito per fini strettamente personali, per esempio per registrare le lezioni, e sempre nel rispetto delle persone; ˜ i voti dei compiti in classe e delle interrogazioni, gli esiti degli scrutini o degli esami di Stato sono pubblici. Le informazioni sul rendimento scolastico sono soggette a un regime di trasparenza e il regime della loro conoscibilità è stabilito dal Ministero dell’istruzione; ˜ si possono in generale installare telecamere all’interno degli istituti scolastici, ma devono funzionare solo negli orari di chiusura degli istituti e la loro presenza deve essere segnalata con cartelli.

2.2

Misure e prescrizioni: DPS

Il Codice n.196/2003 indica precise attività che il titolare deve attuare per garantire il diritto alla privacy. Tra queste la più importante è sicuramente la stesura di un documento tecnico denominato DPS (Documento Programmatico sulla Sicurezza) contenuto nel Disciplinare tecnico in materia di misure minime di sicurezza (Allegato B del Codice). Il DPS è un vero e proprio documento di prescrizioni tecniche che deve essere redatto e aggiornato entro il 31 marzo di ogni anno da ogni organizzazione che tratta dati personali, almeno fino a quando due successive normative hanno svincolato dall’obbligo quasi tutti gli operatori, limitandone la tenuta solo a quelle organizzazioni che trattano dati sensibili con «indicazione di diagnosi» (cfr. Appendice. Antologia normativa sulla sicurezza informatica in Italia). 102

B2

Il quadro normativo in Italia

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

Tra le misure minime per garantire la privacy previste dal Codice: Art. 34. Trattamenti con strumenti elettronici «1. Il trattamento di dati personali effettuato con strumenti elettronici è consentito solo se sono adottate, nei modi previsti dal disciplinare tecnico contenuto nell’allegato B), le seguenti misure minime: a) autenticazione informatica; b) adozione di procedure di gestione delle credenziali di autenticazione; c) utilizzazione di un sistema di autorizzazione; d) aggiornamento periodico dell’individuazione dell’ambito del trattamento consentito ai singoli incaricati e addetti alla gestione o alla manutenzione degli strumenti elettronici; e) protezione degli strumenti elettronici e dei dati rispetto a trattamenti illeciti di dati, ad accessi non consentiti e a determinati programmi informatici; f) adozione di procedure per la custodia di copie di sicurezza, il ripristino della disponibilità dei dati e dei sistemi; g) tenuta di un aggiornato documento programmatico sulla sicurezza; h) adozione di tecniche di cifratura o di codici identificativi per determinati trattamenti di dati idonei a rivelare lo stato di salute o la vita sessuale effettuati da organismi sanitari.» Un esempio significativo di DPS completo è disponibile nel materiale Online.

3

La Pubblica Amministrazione

Un’importante applicazione di questioni legate alla sicurezza informatica riguarda le attività digitali della Pubblica Amministrazione (PA), attività note anche con l’anglicismo e-government (electronic government o amministrazione digitale). L’e-government rappresenta l’applicazione dell’IT in tutte quelle procedure burocratiche e decisionali che consentono ai cittadini di fruire dei servizi dell’amministrazione dello Stato, dalla richiesta dei certificati alla fruizione di documentazione, fino alla partecipazione digitale ai procedimenti amministrativi (iscrizioni, concorsi, procedure legali, compilazione di atti fiscali, ecc...). In proposito la legislazione italiana si basa sulle leggi 241/90, 150/2000 e il Decreto legislativo 82/2005, modificato dal Decreto legislativo 159/2006 e meglio conosciuto come Codice dell’Amministrazione Digitale (CAD). Nel corso degli anni le forme di e-government italiane hanno subito varie modifiche e integrazioni, come si desume dall’evoluzione del nome dell’organo statale preposto «[...] alla definizione degli indirizzi, delle regole tecniche e delle linee guida in materia di sicurezza informatica, delle procedure e degli standard volte a ottenere la piena interoperabilità e cooperazione applicativa tra i sistemi informatici della pubblica amministrazione [...]»: AIPA, CNIPA, DigitPA e ora AID (Agenzia per l’Italia Digitale, 2012). I principali elementi di cui si occupa il CAD e dei quali disciplina l’uso sono: ˜ valore giuridico dei documenti informatici: stabilire i criteri tecnici secondo i quali la forma digitale di un documento sia garantita originale e di equivalente valore giuridico dell’omologo cartaceo;

3

La Pubblica Amministrazione

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

103

Il www della PA In base all’art. 54 del CAD i siti della Pubblica Amministrazione devono contenere: a) l’organigramma di ciascun ufficio compreso dei nomi dei responsabili; b) l’elenco dei procedimenti svolti da ciascun ufficio compreso del nome del responsabile, delle modalità e dei tempi di adempimento; c) l’elenco delle caselle di posta attive e obbligatoriamente di una casella di posta certificata; d) l’elenco di tutti i bandi di gara; e) i bandi di concorso.

˜ valore giuridico delle comunicazioni elettroniche: stabilire i criteri secondo i quali la comunicazione in rete tra PA e cittadino sia considerata giuridicamente valida; ˜ garanzia dell’accesso ai documenti e alla trasparenza degli atti amministrativi: stabilire i criteri di autenticazione informatica affinché sia possibile l’accesso sicuro alla documentazione digitale della PA; ˜ dematerializzazione progressiva dei documenti amministrativi: indicare le strategie informatiche per ridurre progressivamente la mole di documentazione cartacea relativa agli atti amministrativi della PA. Per rispondere a queste problematiche il CAD introduce varie procedure digitali che coinvolgono direttamente le tecniche atte a garantire le tre componenti fondamentali della sicurezza informatica, il RID: riservatezza, integrità, disponibilità (cfr. ISO 27001. Sistema di Gestione per la Sicurezza delle Informazioni). Tra le innovazioni introdotte dal CAD per la Pubblica Amministrazione vanno citate: ˜ ˜ ˜ ˜

la carta di identità elettronica (CIE); la posta elettronica certificata (PEC); il sistema pubblico di connettività (SPC); la firma elettronica.

NB. I server di posta (mittente e destinatario) non coincidono con il mittente e il destinatario (cfr. Appendici. Posta elettronica). In altri termini, quando un mittente spedisce una email con PEC e riceve il riscontro positivo della sua trasmissione, NON è detto che il destinatario abbia effettivamente ricevuto l’email (né, a maggior ragione, che l’abbia letta). Il riscontro che il mittente riceve viene restituito dal server di posta elettronica del destinatario, NON dal destinatario. Il destinatario potrebbe non aver mai ricevuto (né letto) quella mail, o perché, semplicemente, non si è connesso al proprio server di posta; o perché ne ha perso la configurazione, o perché il proprio client di posta non funziona bene o per altri motivi ancora.

Tra i numerosi ambiti su cui agisce il CAD vanno anche ricordate le linee guida per la realizzazione dei siti istituzionali della PA. Purtroppo sia la carta d’identità elettronica (CIE) sia la posta elettronica certificata (PEC) non si possono considerare progetti pienamente riusciti. La CIE, che vede la sua nascita alla fine degli anni ’90, di fatto non è utilizzabile per nessun servizio aggiuntivo rispetto alla carta d’identità tradizionale; addirittura alcuni Paesi esteri tendono a non riconoscerla nemmeno come valida, esigendo la versione cartacea. Nel 2005 una norma la rese obbligatoria per tutti i cittadini entro il 2006, ma ciò non avvenne. Ancora oggi (2013) si possono leggere annunci governativi che indicano nell’immediato futuro l’adozione della CIE, benché molti comuni italiani abbiano di fatto smesso di emetterne a causa dei costi e della sua inutilità. La PEC, pur consistendo in un servizio effettivamente attivo e obbligatorio per un’ampia fascia di utenze, difetta invece nell’impostazione: si tratta di una tecnica del tutto italiana e di fatto non interoperabile con nessun altro standard internazionale di comunicazione sicura e certificata. Il servizio che rende, poi, è abbastanza povero: la mera certificazione dell’invio e della ricezione(NB) di una comunicazione non copre l’integrità del messaggio: in altri termini per inviare un documento avente validità legale, è necessario integrare la comunicazione PEC con altri processi (firma digitale). Infine, è utile ricordare che la garanzia legale della comunicazione tramite PEC è valida solo se entrambe le caselle di posta elettronica di mittente e destinatario sono certificate.

104

B2

Il quadro normativo in Italia

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

ESEMPIO

4

PEC La posta elettronica certificata (PEC) è un sistema di posta elettronica nel quale è fornita al mittente la documentazione elettronica (sottoforma di mail denominate ricevute), con valore legale, attestante l’invio e la consegna di documenti digitali. Questo sistema di posta elettronica viene fornito da un gestore specializzato a cui va richiesto il servizio. Il gestore deve essere accreditato presso l’Agenzia per l’Italia Digitale (ex DigitPA) e comparire in un apposito registro pubblico. Per ottenere gratuitamente una casella di posta certificata da un gestore accreditato si può consultare il sito governativo PostaCertificat@ (www.postacertificata.gov.it). Certificare l’invio e la ricezione di una comunicazione in rete – i due momenti critici nella trasmissione di documenti digitali – significa che il gestore della PEC fornisce al mittente una ricevuta che costituisce la prova legale dell’avvenuta spedizione del messaggio. Analogamente, quando il messaggio giunge al ser-

ver di posta del destinatario, il gestore invia al mittente la ricevuta di avvenuta consegna. Entrambe le ricevute contengono le indicazioni temporali (timestamp) delle attività, compresa un’eventuale mancata ricezione da parte del destinatario. Le ricevute danno solo garanzia di autenticazione, ma non di riservatezza né di integrità. Il contenuto del messaggio rimane in chiaro, mentre mittente e destinatario del messaggio sono garantiti dal sistema e dal gestore come autentici dall’iscrizione al servizio e dai server di posta (del mittente e del destinatario) altrettanto certificati. Affinché il servizio sia garantito al di là delle condotte del mittente, che per esempio può smarrire le ricevute dei suoi messaggi, i gestori conservano per legge e per 30 mesi la traccia informatica delle attività di ogni singolo utente in possesso di una casella di posta certificata, fornendo la cosiddetta tracciabilità (accountability, cfr. ISO 27001. Terminologia), che mantiene lo stesso valore giuridico delle ricevute.

Firma elettronica

Il CAD stabilisce inequivocabilmente che «un documento informatico è valido agli effetti della legge» (Art. 20). Pertanto, così come per i documenti cartacei, affinché la validità del documento informatico sia riconosciuta come tale e non ripudiabile, si rende necessaria una pratica di autenticazione (cfr. ISO 27001. Terminologia) analoga alla firma autografa. Per firma elettronica (di un documento informatico) si intende l’atto informatico equivalente alla firma autografa (di un documento cartaceo). Nel testo del CAD, in realtà, si citano vari tipi di firme elettroniche: Art. 1. Definizioni firma elettronica: «L’insieme dei dati in forma elettronica, allegati oppure connessi tramite associazione logica ad altri dati elettronici, utilizzati come metodo di identificazione informatica»; firma elettronica avanzata: «insieme di dati in forma elettronica allegati oppure connessi a un documento informatico che consentono l’identificazione del firmatario del documento e garantiscono la connessione univoca al firmatario, creati con mezzi sui quali il firmatario può conservare un controllo esclusivo, collegati ai dati ai quali detta firma si riferisce in modo da consentire di rilevare se i dati stessi siano stati successivamente modificati»; firma elettronica qualificata: «un particolare tipo di firma elettronica avanzata che sia basata su un certificato qualificato e realizzata mediante un dispositivo sicuro per la creazione della firma»; firma digitale: «un particolare tipo di firma elettronica avanzata basata su

4

Firma elettronica

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

105

un certificato qualificato e su un sistema di chiavi crittografiche, una pubblica e una privata, correlate tra loro, che consente al titolare tramite la chiave privata e al destinatario tramite la chiave pubblica, rispettivamente, di rendere manifesta e di verificare la provenienza e l’integrità di un documento informatico o di un insieme di documenti informatici». Per quanto riguarda la sicurezza nelle reti, si tralasciano le varie tipologie di firme elettroniche citate tranne quella che, effettivamente, incarna il reale concetto di firma elettronica, ovvero la firma digitale (nel testo del CAD la firma digitale è equiparata alla firma elettronica qualificata). La firma digitale è un particolare segreto in possesso del firmatario di un documento, segreto espresso con un dato informatico (detto chiave privata). Attraverso uno schema di nome crittografia asimmetrica, chi è in possesso di un secondo valore strettamente associato a quel segreto (la chiave pubblica), può stabilire l’identità del firmatario. In questo modo si ottiene l’autenticazione di un utente (cfr. ISO 27001. Terminologia). Non rimane altro che trovare una modalità per rendere i documenti integri (cioè non modificabili) dopo aver apposto la firma digitale. Ciò si ottiene utilizzando un procedimento informatico denominato MAC (Message Authentication Code): verrà creato un dato informatico che rappresenta l’«impronta» (digest) del documento originale. L’impronta di un documento è una sintesi biunivoca del documento, benché non lo contenga: se il documento verrà modificato, la sua nuova impronta sarà differente da quella firmata. In questo modo si ottiene l’integrità e la non ripudiabilità dei documenti (cfr. ISO 27001. Terminologia). Infine, esattamente come succede con le firme autografe, è necessario che un ente terzo abbia la possibilità di decidere se una firma digitale appartiene proprio all’autore che la rivendica. Per la firma autografa ci si affida a un notaio presso il quale la firma viene depositata dal suo titolare (o, nei casi più controversi, a periti calligrafi). Nel caso della firma digitale, invece, si utilizzano speciali organizzazioni riconosciute dalla Pubblica Amministrazione (ovvero dallo Stato), che hanno lo scopo di custodire le firme digitali degli utenti e garantire che le stesse siano associate proprio a quegli utenti che le hanno depositate presso di loro. Queste autorità sono dette enti di certificazione accreditati e il loro elenco è disponibile sul sito dell’Agenzia per l’Italia Digitale.

106

B2

Il quadro normativo in Italia

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

UESITI ESERCIZI PER LA VERIFICA ORALE Saper rispondere ai Requisiti fondamentali dà una sufficiente garanzia per sentirsi pronti all’interrogazione. Saper anche rispondere ai Requisiti avanzati dimostra una padronanza eccellente degli argomenti del capitolo. Requisiti fondamentali

Requisiti avanzati

1

Fornire la spiegazione dei seguenti acronimi: SI, IT, PA.

1

Spiegare da quali tipologie di eventi derivano i rischi alla sicurezza per un sistema informatico.

2

Ricordare il nome del gruppo di documenti tecnici ISO che si occupa di sicurezza informatica.

2

Illustrare la funzione di un sistema di certificazione.

3

Fornire una spiegazione per il termine inglese «audit».

4

Commentare i seguenti termini definiti nelle norme ISO 27001: asset, threat, authenticy, non-repudiation, authentication, accountability.

5

Provare a definire in maniera sintetica il concetto di frode informatica.

6

Spiegare le seguenti attività informatiche: pishing, keylogging, spamming, DoS.

7

Elencare i comportamenti a rischio che possono minacciare la sicurezza informatica di un sistema.

8

Ricordare i ruoli dei responsabili del trattamento dei dati personali e in quali casi è previsto il consenso scritto dell’interessato per il trattamento dei dati personali. Illustrare il concetto di dematerializzazione dei documenti e le prescrizioni per i siti della PA.

3

Fornire una spiegazione per gli acronimi SGSI e PDCA.

4

Commentare i tre termini che compongono l’acronimo RID.

5

Riportare almeno tre definizioni contenute nel pacchetto ISO 27001 e commentarle.

6

Ricordare gli ambiti fondamentali entro i quali il diritto italiano ha emanato norme giuridiche riguardo la sicurezza informatica.

7

Elencare almeno tre «fattispecie» riconosciute come reati informatici dal Codice Penale italiano. Elencare tutte le norme di comportamento per evitare la proliferazione di software potenzialmente dannoso.

8

Illustrare il concetto di privacy e la norma fondamentale che lo tutela.

9

9

Indicare cosa si intende con la sigla DPS.

10 Chiarire i concetti di timestamp e tracciabilità per la PEC.

10 Spiegare il termine e-government e ricordare la norma fondamentale che lo disciplina.

11 Chiarire

i concetti di autenticazione e integrità per la firma digitale.

11 Riportare

le principali innovazioni informatiche introdotte nell’e-government italiano.

12 Confrontare

la non-ripudiabilità relativamente a documenti cartacei e a documenti informatici.

12 Illustrare il concetto di PEC. 13 Descrivere il ruolo di un ente di certificazione ac13 Illustrare il concetto di firma digitale.

creditato presso la PA.

Esercizi Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

107

B3

Sicurezza informatica In questo capitolo verranno trattate le tecniche che stanno alla base degli algoritmi informatici preposti a garantire la sicurezza per quanto concerne le minacce di tipo volontario, ovvero dei tentativi compiuti da terzi per compromettere o impossessarsi dei dati di un Sistema Informatico (SI). In particolare, ci si soffermerà sulle tecniche utilizzate per proteggere i dati transitanti sulle reti di calcolatori. Le attività di violazione di un sistema informatico tendono a mettere in crisi il RID, ovvero la riservatezza, l’integrità e la disponibilità dei dati di un SI. A questo proposito bisogna notare che gli aspetti più critici della sicurezza riguardano la riservatezza intesa come proprietà di garantire a) la segretezza dei dati: essi devono essere disponibili solo al destinatario di una comunicazione e risultare inutilizzabili per chiunque altro. La riservatezza però si esprime anche in termini di b) autenticazione: chi trasmette e chi riceve dati deve essere certo di farlo effettivamente con chi aveva intenzione di comunicare. Inoltre, un terzo fattore critico riguarda la proprietà di conservare c) l’integrità dei dati oggetto della comunicazione: si esige la certezza che il destinatario riceva esattamente i dati che gli sono stati inviati. Come si vedrà, per rispondere a queste tre richieste della sicurezza richiesta dalle attività in rete, verranno utilizzate tecniche denominate: a) crittografia a chiave simmetrica; b) crittografia a chiave asimmetrica; c) sintesi di messaggi.

1

Crittografia a chiave simmetrica

Per garantire la segretezza dei dati viene impiegato uno strumento informatico noto come cifratura del dato (E, encoding), l’operazione per la quale un gruppo di dati detto testo in chiaro (plaintext) viene reso momentaneamente incomprensibile ottenendo così un testo cifrato (ciphertext). In questo modo il dato viene mantenuto segreto e può anche essere intercettato da terzi,ma risulta di fatto inservibile. Ovviamente un testo cifrato deve poter essere riportato in chiaro dal destinatario del messaggio mediante decifrazione (D, decoding), operazione logicamente inversa rispetto alla cifratura (si riserva il termine decrittazione alla stessa operazione, ma compiuta da un soggetto diverso dal destinatario). La lunga storia della crittanalisi (e dei relativi tentativi di decrittazione di testi cruciali), ha condotto le moderne tecnologie ad assumere qualche concetto fondamentale circa la cifratura in ambito informatico. 108

B3

Sicurezza informatica

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

1) La cifratura avviene tramite una sequenza di operazioni dette algoritmo di cifratura. Benché appaia a prima vista sconcertante, l’algoritmo di cifratura non è necessario che sia segreto (cfr. Auguste Kerckhoffs, La cryptographie militaire, 1883). Questa considerazione si basa sul fatto che, per motivi pratico-funzionali, il sistema che cifra (e che decifra) il testo deve essere comunque diffuso tra gli utenti che dovranno usarlo per fruire del servizio di protezione dei dati. Quando un segreto viene rivelato a molte persone, non è più un segreto. 2) Ciò che deve rimanere segreto sono i parametri dell’algoritmo, cioè i dati che utilizza l’algoritmo, detti chiave (key). 3) Non si conosce nessun sistema di cifratura completamente indecifrabile. La validità della cifratura informatica si basa sulla mancata computabilità della migliore tecnica di decrittazione possibile, ovvero sulla valutazione che con le tecnologie computazionali attuali e con quelle ragionevolmente prevedibili per i prossimi anni non sia possibile ottenere come risultato la «rottura» dell’algoritmo e la scoperta delle chiavi in tempi ragionevoli. I sistemi di cifratura che prevedono un algoritmo e una chiave si dicono sistemi crittografici a chiave simmetrica: il mittende e il destinatario devono condividere il segreto della stessa chiave (key), usata sia per cifrare (il mittente), sia per decifrare (il destinatario) il messaggio.

Alice e Bob Nella letteratura relativa alla crittografia informatica compare sistematicamente la coppia Alice e Bob, rispettivamente nei ruoli di mittente e destinatario di un messaggio più o meno segreto. L’uso dei due nomi risale a Ron Rivest (1978), uno degli studiosi più influenti del settore (coautore del noto algoritmo a chiave asimmetrica RSA e del sistema di sintesi MD5). Con Alice e Bob le iniziali della coppia (A e B) sono impersonate, e quindi rendono più semplice la descrizione degli algoritmi. Oltre ad Alice e Bob sono noti Trudy (intruder, o woman-inthe-middle) e Chuck, tipicamente un hacker.

cifratura simmetrica Rete

key

192.168.0.2

73.94.35.15

Questo è un segreto

key

192.168.0.2

192.168.0.2

73.94.35.15

73.94.35.15

tfrX45iu89-likK900x

tfrX45iu89-likK900x

Alice

192.168.0.2

73.94.35.15

Questo è un segreto

Bob

L’algoritmo prescelto per la cifratura, normalmente, viene utilizzato «al contrario» per decifrare, cioè D = E–1: E(plaintext, key) = ciphertext e E–1(ciphertext, key) = plaintext La crittografia simmetrica utilizza il principio del cifrario a sostituzione combinato al principio del cifrario a trasposizione, i due modi storici di cifrare un testo. Si consideri il seguente testo cifrato: «(...) So che ci sono persone che hanno fatto affari con terreni simili e con cifre più grosse, mi riferisco a 1781920816182281313167121542464 e così per vie traverse ho cercato di sapere come si fa (...)».

1

Crittografia a chiave simmetrica

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

109

Cifratura con codice a sostituzione Dal testo in chiaro ogni lettera viene codificata con la sua posizione alfabetica (A = 1, B = 2,..., Z = 21), quindi si somma alla posizione una costante detta chiave (nell’esempio, il numero 3), trovando la lettera cifrata (p → 14; 14 + 3 = 17 → s). La decifratura del testo avviene analizzando le singole lettere cifrate, trovandone la posizione e sottraendo 3 a quella posizione per individuare la lettera in chiaro (s → 17; 17 – 3 = 14 → p).

Cifratura con codice a trasposizione Il testo in chiaro viene disposto su righe di lunghezza pari alla chiave, nell’esempio AFRODITE. Per ogni carattere della chiave si trascrive la rispettiva posizione nell’alfabeto. La cifratura avviene riportando il testo in chiaro per colonne, nell’ordine indicato dalle posizioni della chiave.

La cifratura con sostituzione cambia i simboli del testo in chiaro, ma ne mantiene l’ordine e la frequenza. Per esempio, la doppia ‘oo’ che compare nel testo cifrato corrisponde alla doppia ‘ll’ del testo in chiaro.

La cifratura con trasposizione mantiene gli stessi simboli del testo in chiaro, conserva la frequenza ma non ne conserva l’ordine.

«(...) So che ci sono persone che hanno fatto affari con terreni simili e con cifre più grosse, mi riferisco a shuvhrtahoorgnqdcfd e così per vie traverse ho cercato di sapere come si fa (...)».

A 1

F 6

R 16

O 13

D 4

I 9

T 18

E 5

s o n n f

o n e o f

c o c f a

h p h a r

e e e t i

c r h t c

i s a o o

s o n a n

«(...) sonnfeeetisonanoneofcrhtchpharcocfaisaoo terreni simili e con cifre più grosse, mi riferisco a Perseo quello di Nazca e così per vie traverse ho cercato di sapere come si fa (...)».

Fin dai primi anni del secondo dopoguerra lo studioso Claude Shannon (1916-2001) indicò due criteri fondamentali per una cifratura ottimale: rendere la relazione tra chiave e testo cifrato molto complessa (principio di confusione) e rendere il rapporto tra testo in chiaro e testo cifrato molto complessa (principio di diffusione). Per esempio, la cifratura con codice a sostituzione non rispetta il principio di diffusione: le sequenze delle doppie sono facilmente individuabili (nell’esempio la coppia «oo» rappresenta una «doppia» in italiano), così come le frequenze delle vocali. I due principi si colgono meglio se espressi mediante il criterio valanga (Avalanche Criterion): affinché una cifratura sia efficiente è necessario che: a) la modifica anche di un singolo simbolo della chiave, dovrebbe implicare l’alterazione di tutto il testo cifrato (confusione); b) la modifica anche di un singolo simbolo del testo in chiaro dovrebbe implicare l’alterazione di tutto il testo cifrato (diffusione). I moderni algoritmi di cifratura simmetrica utilizzano gli stessi principi di sostituzione e trasposizione, ma soddisfando il criterio valanga. Gli algoritmi per generare i codici di cifratura simmetrica possono essere esemplificati con schemi denominati P-box (trasposizione) e S-box (sostituzione). 110

B3

Sicurezza informatica

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

ESEMPIO

Crittografia con SPN Sia data una P-box a 12 linee e una S-box a 3 bit, criptare i 12 bit 001110101001 con la chiave a 12 bit 011111000010 in due round. Nel primo round si usi la chiave assegnata, nel secondo round si usi la chiave XOR 111111111111b. input

input

0 1 2 3 4 5 6 7 8 9 10 11

2

1

0

0 1 2 3 4 5 6 7 P-box

S-box 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 9 10 11

2

1

0

La P-box traspone (sposta) i bit in base alle connessioni del diagramma: il primo bit a sinistra (posto 0) viene trasposto al posto 4; il secondo bit da sinistra (posto 1) viene trasposto al posto 6, ..., il dodicesimo bit da sinistra (posto 11) viene trasposto al posto 9. La S-box permuta tre bit alla volta: se l’ingresso è la tripletta 110b (6 decimale), in base alle connessioni del diagramma, l’uscita vale 101b (5 decimale): la linea del posto 6 si congiunge al posto 5. Ognuno dei due round consiste dei passi: 1. calcolo di: Testo XOR chiave; 2. applicazione della P-box; 3. applicazione della S-box. Il Testo del primo round è il testo in chiaro. Il Testo dei round successivi è il risultato del round precedente. Al termine dell’ultimo round si ottiene il testo cifrato. (In blu i dati; in neretto i risultati delle operazioni) Round 1 Testo: Chiave: Testo XOR chiave: Applicazione P-box: Applicazione S-box:

    

    

    

 XOR    

Applicazione P-box: Applicazione S-box:

        

        

        

  XOR    XOR    

In definitiva: testo in chiaro (plaintext): testo cifrato (ciphertext):

 

Round 2 Testo: Chiave:

Testo XOR chiave:

1

Crittografia a chiave simmetrica

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

111

Reti di Feistel Come mostrato nell’Esempio sulla crittografia con SPN, l’uso dell’operatore binario XOR (ˆ) è molto utilizzato: A

B

A XOR B

0 0 1 1

0 1 0 1

0 1 1 0

In realtà gli schemi SPN utilizzati nella cifratura simmetrica moderna non usano solo lo XOR come funzione per «mescolare» la chiave a ogni round, ma funzioni più complesse, la cui utilizzazione fu proposta dallo studioso Horst Feistel (1915-1990) (Reti di Feistel).

Gli standard di cifratura simmetrica più utilizzati in ambito informatico sono il DES (Data Encryption Standard, con chiave a 56 bit), RC2 e RC4 (Rivest cipher 2 e 4, con chiave a 128 bit), l’IDEA (International Data Encryption Algorithm, con chiave a 128 bit), il 3DES (Triple DES, con chiave a 168 bit), Camellia (con chiave a 256 bit), l’AES (Advanced Encryption Standard, con chiave a 256 bit). Tra questi solo IDEA, Camellia e AES sono tuttora (2013) inviolati. La crittografia a chiave simmetrica ha due caratteristiche che vanno ricordate: a) è veloce: crittografare e decriptare sono operazioni che non necessitano di onere computazionale. Le SP-box sono vettori indicizzati e lo XOR è un’operazione molto semplice; b) la chiave segreta deve essere condivisa: questo è un problema. Lo scambio delle chiavi spesso deve avvenire proprio tramite la stessa rete dalla quale ci si vuole proteggere con la crittografia simmetrica: se la violazione avviene sullo scambio delle chiavi e venisse intercettata (per esempio, con un keylogger), anche la crittografia simmetrica più efficiente viene compromessa.

Crittografia a chiave asimmetrica

2

La crittografia asimmetrica nasce fondamentalmente per risolvere alla radice il problema dello scambio della chiave: con questa tecnica non c’è scambio di chiave segreta. Gli utenti che usano la crittografia asimmetrica sono tutti dotati di due chiavi: la chiave privata e la chiave pubblica. Se Alice vuole mandare un messaggio cifrato a Bob, usa la chiave pubblica di Bob per cifrare il messaggio, quindi lo invia. Quando Bob riceve il messaggio, egli può decrifrarlo solo con la sua chiave privata. Nessun altro è in grado di decifrare il messaggio, neppure chi conosce la chiave pubblica di Bob: solo con la chiave privata di Bob si decifra il messaggio.

cifratura asimmetrica Rete

key Bob public

192.168.0.2

73.94.35.15

Questo è un segreto

192.168.0.2

key Bob private

73.94.35.15

192.168.0.2

73.94.35.15

AbrX1iu8allkiac03

AbrX1iu8allkiac03

Alice

112

192.168.0.2

73.94.35.15

Questo è un segreto

Bob

B3

Sicurezza informatica

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

ESEMPIO

In altri termini ogni utente mantiene segreta la propria chiave privata, e non ha necessità di scambiarla. Le chiavi pubbliche, invece, devono essere scambiate senza problemi, dato che non servono per decifrare, ma solo per cifrare. Nel caso della crittografia a chiave asimmetrica gli algoritmi, anch’essi noti, si basano sulla caratteristica di alcune operazioni matematiche di essere difficilmente invertibili. Gran parte delle operazioni matematiche comunemente conosciute sono facilmente invertibili: dati due addendi si calcola facilmente la loro somma, così come dato un solo addendo e una somma, si trova altrettanto facilmente il secondo addendo. In alcuni casi però non è così: un verso dell’operazione è facile; il verso opposto è estremamente difficile. Per esempio, la fattorizzazione di un numero in numeri primi è un’operazione che si inverte con estrema difficoltà. Se si scelgono due numeri primi molto grandi (p e q) e si moltiplicano tra loro, si ottiene un numero anch’esso molto grande (m = p · q) di cui si conosce, evidentemente, la fattorizzazione (p e q). Quando m è veramente molto grande, per esempio un numero con trecento cifre, si può renderlo pubblico senza temere che vengano scoperti p e q: chiunque tentasse di fattorizzare m impiegherebbe molti anni con un buon calcolatore prima di scovare che m = p · q.

«Craccare» carte magnetiche Nel gergo informatico il termine «craccare» indica l’operazione per cui una comunicazione segreta viene violata da un intruso (forzatura). Alcune carte a banda ottica e/o magnetica contengono la chiave o i dati di login per accedere a sistemi protetti. Strisciando la carta su un dispositivo lettore collegato al PC, i dati di accesso contenuti nella carta vengono inviati al software che li attende per attivare il sistema protetto. Sotto Windows, in alcuni casi, si può tenere aperto, anche iconizzato, Blocco Note mentre si striscia la carta: magicamente i dati segreti della carta compariranno nel documento di Blocco Note.

Crittografia con fattorizzazione (RSA) Calcolare la chiave pubblica e la chiave privata di un utente affinché sia possibile cifrare in modo sicuro il codice Ascii di zero (48) con lo schema asimmetrico RSA. Prima di tutto si individuano due numeri primi p e q a piacere, per esempio 13 e 7. Quindi se ne calcola il prodotto n = p · q = 13 · 7 = 91. Ora si calcola un particolare valore +(n) = (p – 1) · (q – 1) +(91) = (13 – 1) · (7 – 1) = 12 · 6 = 72 Serve ora un numero e con la proprietà che +(n) ed e siano primi tra loro (senza fattori in comune). Se si sceglie 5, il numero 72 e il numero 5 non hanno fattori comuni, quindi e = 5. I due numeri e = 5 ed n = 91 sono la chiave pubblica. Infine il passaggio più noioso: trovare un numero d per cui e · d = 1 + k · +(n), con un k a piacere. Dopo qualche prova, calcolando l’espressione con qualche valore di k (per esempio, k = 1, k = 2, ecc.), risulta che per k = 2 il numero d vale 29. Infatti: d = (1 + k · 72)/5; se k = 2, allora d = (1 + 2 · 72)/5 = (1 + 144)/5 = 145/5 = 29. Il numero d = 29 sarà la chiave privata. L’algoritmo per cifrare e decifrare è semplice e può essere reso noto. Per cifrare un byte b in un byte c si calcola: c = b(public key0) mod (public key1) Per decifrare un byte c e ottenere b, si calcola: b = c(private key) mod (public key1) Ora si può cifrare il codice Ascii di zero (48) con la chiave pubblica: c = b(public key0) mod (public key1) = 485 mod 91 = 254803968 mod 91 = 55 Quindi si può decifrare il messaggio (55) con la chiave privata per riottenere il codice Ascii di zero: b = c(private key) mod (public key1) = 5529 mod 91 = 2,9547313175564474880964247600939e + 50 mod 91 = 48 In definitiva: testo in chiaro (plaintext): 48 testo cifrato (ciphertext): 55

2

Crittografia a chiave asimmetrica

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

113

Il resto L’operatore mod restituisce il resto della divisione tra due numeri interi. Per esempio, se A = 10 e B = 3: A mod B = 10 mod 3 = 1 perché «10 diviso 3 fa 3 con il resto di 1». L’operatore è sempre definito nelle librerie di tutti i linguaggi di programmazione. Nei linguaggi C/C++/Java è indicato con il simbolo della percentuale (%): LQW 0 0     0 YDOH 

Lo zaino Lo studioso Ralph Merkle nel 1978 propose di utilizzare, come funzione difficilmente invertibile per un algoritmo a chiave asimmetrica, quella dedotta dal problema dello zaino. Promise quindi 100$ a chi avrebbe violato il suo algoritmo. Adi Shamir, la «A» di RSA, lo forzò immediatamente e intascò la ricompensa. Non contento, Merkle rinforzò il suo algoritmo e promise 1000$ a chiunque lo avrebbe forzato. Ron Rivest, la «R» di RSA, lo forzò immediatamente e incassò la ricompensa. (Andrew Tanenbaum, Reti di computer, 1997)

114

In altri termini un utente (per esempio Bob) può consegnare, senza proteggerlo, il numero m ad Alice. Il numero m contiene il segreto (p e q), ma nessuno riesce a ottenerlo. Alice usa m per crittografare e Bob, l’unico che conosce il segreto, può decifrare. Il numero m sarebbe la chiave pubblica di Bob; i numeri p e q sono la chiave privata di Bob. ATTENZIONE. Affinché anche Alice possa ricevere messaggi cifrati da Bob, è necessario che possegga anch’essa una coppia di chiavi (una pubblica, da consegnare a Bob, e una privata, da non consegnare a nessuno). Rispetto alla cifratura con chiave privata ora Alice e Bob hanno bisogno di 4 chiavi per scambiarsi messaggi segreti, invece di una sola. La crittografia simmetrica evita lo scambio delle chiavi con il costo di dover usare 4 chiavi invece di una. Il modo di crittografia asimmetrica utilizzato nell’esempio alla pagina precedente è noto come RSA (dalle iniziali dei suoi autori Ronald Rivest, Adi Shamir e Leonard Adleman, 1977). Gli standard di cifratura asimmetrica più utilizzati in ambito informatico sono il già citato RSA, PGP (Pretty Good Privacy) e OpenPGP. Lo standard RSA è tuttora (2013) inviolato. Come si può notare, stabilire una coppia di chiavi asimmetriche (privata e pubblica) può costituire un ostacolo dal punto di vista computazionale: più i due numeri p e q sono grandi, maggiore è la sicurezza, ma anche maggiore è il tempo impiegato per il calcolo della chiave pubblica m. Questo tuttavia non è necessariamente un problema: dopotutto l’assegnazione delle chiavi a un utente viene eseguita una sola volta per tutte. La questione rimane aperta nel momento in cui si cifra e decifra un intero documento con chiavi asimmetriche. Per esempio, calcolare potenze con esponenti molto grandi è un’operazione computazionalmente molto onerosa. Questo è un problema, dato che cifrare e decifrare sono operazioni che devono essere ripetute molte volte per ogni messaggio. La crittografia a chiave asimmetrica ha alcune caratteristiche che vanno ricordate: ˜ è lenta: cifrare e decifrare numerosi blocchi di bit implica tempi inaccettabili. Viene quindi usata per cifrare messaggi brevi, come per esempio la chiave segreta da utilizzare per una cifratura simmetrica. La chiave simmetrica protetta dalla cifratura asimmetrica è detta chiave di sessione; ˜ implica un meccanismo di distribuzione delle chiavi pubbliche dei destinatari, in modo che si possano cifrare i messaggi per il destinatario desiderato; ˜ ha la proprietà che, cifrando un messaggio con la propria chiave privata, il messaggio può essere decifrato solo con la propria chiave pubblica: questo è ideale per autenticare il mittente di un messaggio.

B3

Sicurezza informatica

Paolo Ollari CORSO DI SISTEMI E RETI - Vol. 3 © Zanichelli 2013 per Informatica

ESEMPIO

Calcolo delle chiavi RSA (Linux) Utilizzando l’applicazione openssl si può generare in un file una coppia di chiavi pubblica e privata con RSA: OLQX[a RSHQVVO JHQUVD GHV RXW LWLV56$NH\  *HQHUDWLQJ 56$ SULYDWH NH\  ELW ORQJ PRGXOXV   H LV  [ (QWHU SDVV SKUDVH IRU LWLV56$NH\ SDVVZRUG 9HULI\LQJ  (QWHU SDVV SKUDVH IRU LWLV56$NH\ SDVVZRUG OLQX[a La creazione non è immediata nemmeno su una macchina ad alte prestazioni: le chiavi sono a 2048 bit. Il file risultato viene cifrato con 3DES e una chiave derivata dalla password inserita dall’utente. Ora si può visualizzare il contenuto del file: OLQX[a FDW LWLV56$NH\ %(*,1 56$ 35,9$7( .(V]+WWS6WULQJ

V @?Q V]+WWS6WULQJ  FORVHVRFNHW VRFN&  ([LW7KUHDG   `  /D UHTXHVW HUD XQD *(7 6L DSUH LO ¿OH IK RSHQ V])LOH1DPH>@ 2B5'21/< _ 2B%,1$5