UNIVERSTA DEGLI STUDI DI GENOVA FACOLTÀ DI INGEGNERIA TESI DI LAUREA STRUTTURE DATI DI TIPO SKETCH PER L ANALISI DEL TRAFFICO DI RETI INFORMATICHE

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "UNIVERSTA DEGLI STUDI DI GENOVA FACOLTÀ DI INGEGNERIA TESI DI LAUREA STRUTTURE DATI DI TIPO SKETCH PER L ANALISI DEL TRAFFICO DI RETI INFORMATICHE"

Transcript

1 UNIVERSTA DEGLI STUDI DI GENOVA FACOLTÀ DI INGEGNERIA Corso di Laurea in Ingegneria Elettronica TESI DI LAUREA STRUTTURE DATI DI TIPO SKETCH PER L ANALISI DEL TRAFFICO DI RETI INFORMATICHE Relatore: Correlatori: Chiar.mo Prof. Ing. Rodolfo Zunino. Dott. Ing. Francesco Picasso, Dott. Ing. Paolo Gastaldo, Dott. Ing. Judith Redi. Candidato: Francesco Carlino Anno Accademico

2 Sommario Abstract... 5 Dichiarazione del relatore... 6 Introduzione... 8 Capitolo La sicurezza informatica Definizione Proprietà Tipi di sicurezza Minacce alla sicurezza Exploit Buffer overflow Stack overflow Shellcode Backdoor Port scanning Sniffing Keylogging Spoofing Triojan Virus Worms Denial of Service SQL Injection Ingegneria sociale Come difendersi Capitolo Intrusion detection system Definizione di IDS Le fasi di un attacco Obiettivi degli IDS Tipi di IDS

3 2.5 Come misurare l efficienza di un IDS Problematiche degli IDS Capitolo Data streams: Algoritmi e applicazioni Introduzione ai data streams Data streaming: modelli Data streaming: uno scenario interessante Principi matematici base Sampling Random projection Capitolo Count-Min Sketch Introduzione Famiglie di funzioni hash universali Metodo della Funzione Universale Collisioni improbabili Come costruire un insieme universale di funzioni hash Count-Min Sketches Procedure di stima Point query Inner Product Query Range Query Capitolo Implementazione e test dell algoritmo Count-Min Sketch Implementazione dell algoritmo Inizializzazione Update Query Verifica di funzionamento Capitolo La comunicazione TCP/IP e l attacco Denial Of Service Come funziona il TCP/IP

4 6.2 Il protocollo TCP Definizione Caratteristiche principali L header TCP Apertura di una connessione - Three-way handshake Chiusura di una connessione - Chiusura a 4 vie Internet Protocol Il pacchetto IPv Indirizzamento IPv Capitolo Strumenti utilizzati e risultati ottenuti Il dataset Darpa La libreria WinPcap Architettura per l analisi del traffico di rete Cattura di Pacchetti in ambiente UNIX Struttura dello stack di cattura BPF Cattura di Pacchetti in ambiente Windows Comportamento del Driver Il processo di filtraggio Il processo di lettura Il processo di scrittura PACKET.DLL: packet driver API Algoritmo di detection basato su Count-Min Sketch Riduzione dei falsi postivi Risultati ottenuti

5 Abstract This Thesis deals data streaming techniques such as Count-Min Sketch to obtain an Intrusion Detection System that can operate in real-time manner. In particular the detection of Denial of Service attacks (i.e. TCP SYN flooding) is concerned. The Count-Min sketch is a new sublinear space data structure for summarizing data streams. This sketch allows also fundamental queries in data stream summarization such as point, range, and inner product queries to be approximately answered very quickly. The performance of this algorithm has been studied by using real network traffic. The dataset, used for the experiments, is DARPA 1998 the first standard corpora for evaluation of computer network intrusion detection systems. 5

6 Dichiarazione del relatore Alla Commissione Tirocini e Tesi Alla Commissione di Laurea e di Diploma Sottopongo la tesi redatta dallo studente Francesco Carlino dal titolo Strutture dati di tipo sketch per l analisi del traffico di reti informatiche. Ho esaminato, nella forma e nel contenuto, la versione finale di questo elaborato scritto, e propongo che la tesi sia valutata positivamente assegnando i corrispondenti crediti formativi. Il Relatore Accademico Prof. Rodolfo Zunino 6

7 Ringraziamenti Ringrazio il mio relatore, il Prof. Rodolfo Zunino, per la disponibilità, la pazienza e la gentilezza dimostrata durante il periodo della tesi. Un ringraziamento va inoltre ai miei correlatori il Dott. Ing. Paolo Gastaldo, il Dott. Ing. Francesco Picasso e la Dott.ssa Ing. Judith Redi che mi hanno seguito assiduamente nei momenti di difficoltà che inevitabilmente si sono presentati prestandomi un grande aiuto nel corso della tesi. Ringrazio infine la mia famiglia per avermi incoraggiato e sostenuto durante lo svolgimento del lavoro. 7

8 Introduzione Lo sviluppo esplosivo di reti di calcolatori (Internet) e di dispositivi con potenza e versatilità inimmaginabili solo alcune decine di anni fa, ha reso la sicurezza dell informazione uno dei principali problemi della realtà odierna. La tendenza ad appoggiarsi a sistemi informatici nelle più svariate realtà è cresciuta enormemente, portando a chiedersi quanto ci si possa fidare di tali sistemi (problema che diventa più critico al crescere del valore delle informazioni scambiate in rete). Le minacce alla sicurezza sono andate aumentando negli ultimi decenni. Nella maggior parte dei casi si tratta di tentativi, da parte di malintenzionati, di accesso non autorizzato a sistemi informatici, magari contenenti dati sensibili. L accesso da parte di un malintenzionato ad un sistema può essere fonte di danni di qualsiasi tipo: oltre all acquisizione di dati riservati, questi può voler danneggiare il sistema, in modo da farlo funzionare in maniera non corretta, oppure utilizzarlo a proprio piacimento, o addirittura renderlo inutilizzabile. Allo scopo di difendersi, oltre a strumenti software come antivirus, antispyware, firewall, nascono gli Intrusion Detection System, strumenti hardware o software in grado di rilevare la presenza di utenze non autorizzate all interno di un sistema e notificare la sopraggiunta situazione di pericolo ad un amministratore, prima che il corretto funzionamento dello stesso sia del tutto compromesso. Esistono diversi tipi di IDS (host e network based, anomaly e misuse detection, on-line e off-line), ma se pur ben configurati questi sistemi risentono della problematica di un analisi real-time del traffico di rete, dovuta all enorme ammontare di informazioni che ogni giorno vengono scambiate in Internet ed alla ridotta capacità che uno strumento hardware di questo tipo potrebbe avere. A questa difficoltà viene incontro la teoria emergente sui data streams, in cui vengono proposte tecniche e modelli matematici atti a creare proiezioni (sketches) del flusso di dati in grado di sintetizzare il flusso stesso e compiere un analisi alla ricerca di anomalie con l ausilio di poco spazio e molto velocemente. Nella presente tesi si è studiato e implementato un algoritmo basato sulla teoria dei data streams, il Count-Min Sketch. Questa nuova struttura dati, a spazio sublineare, permette di 8

9 effettuare queries fondamentali come point, range e inner-product query, con possibilità di risposta molto veloce. Tale struttura dati è stata applicata a supporto dell attività dell intrusion detection system. Per testare bontà e performance dell algoritmo si sono utilizzati dataset ottenuti da situazioni di traffico di rete reali (DARPA 1998), concentrandosi su di un particolare tipo di attacco Denial of Service, il SYN flooding. L algoritmo si è dimostrato efficace ed efficiente in termini di memoria e tempo nel rilevare il suddetto attacco. La presente tesi è strutturata come segue. Nel Capitolo 1 si introduce il concetto di sicurezza informatica ponendo particolare attenzione sulle proprietà di quest ultima, sulle minacce alla stessa e sui meccanismi di difesa al momento conosciuti. Nel Capitolo 2 si definisce un Intrusion Detection System, elencando e descrivendo le diverse tipologie di IDS esistenti in questo campo. Nel Capitolo 3 è riportata la teoria emergente nel campo dei data streams. Nel Capitolo 4 si descrive l algoritmo Count-Min Sketch studiato ed implementato in tesi. Nel capitolo 5 sono riportati alcuni risultati derivanti da test effettuati sull algoritmo stesso mediante uso di generatore di numero pseudo-casuali. Nel Capitolo 6 sono descritte le basi della comunicazione TCP/IP e si analizza l attacco DOS. Nel Capitolo 7 si riportano gli strumenti utilizzati per l intrusion detection e i risultati ottenuti dai test su traffico di rete reale. 9

10 Capitolo 1 La sicurezza informatica 1.1 Definizione La Sicurezza informatica[1] è quella branca dell'informatica che si occupa della salvaguardia dei sistemi informatici da potenziali rischi e/o violazioni dei dati. I principali aspetti di protezione del dato sono la confidenzialità, l'integrità e la disponibilità. La protezione dagli attacchi informatici viene ottenuta agendo su più livelli: innanzitutto a livello fisico e materiale, ponendo i server in luoghi il più possibile sicuri, dotati di sorveglianza e/o di controllo degli accessi; anche se questo accorgimento fa parte della sicurezza normale e non della "sicurezza informatica" è sempre il caso di far notare come spesso il fatto di adottare le tecniche più sofisticate generi un falso senso di sicurezza che può portare a trascurare quelle semplici. Il secondo livello è normalmente quello logico che prevede l'autenticazione e l'autorizzazione di un'entità che rappresenta l'utente nel sistema. Successivamente al processo di autenticazione, le operazioni effettuate dall'utente sono tracciate in file di log. Questo processo di monitoraggio delle attività è detto audit o accountability. Lo sviluppo esplosivo dei sistemi collegati in rete e di dispositivi con potenza e versatilità francamente inimmaginabili solo pochi anni fa ha reso necessario, urgente, lo sviluppo di un'ingegneria della sicurezza informatica, dove il termine ingegneria va inteso nel suo senso tradizionale di scienza applicata, con definizione formale di concetti, metodi e tecniche conosciute, esplorate da una ampia letteratura scientifica, e globalmente diffuse. La sicurezza dell informazione esce quindi da un lungo periodo di gestazione in cui veniva considerata più che una scienza un'arte, da apprendere tramite l'esperienza e non attraverso lo studio. Solo pochi studi pionieristici stendevano le basi dei metodi formali che negli ultimi anni sono stati poi sviluppati. Questo, unito all'intrinseca difficoltà dell argomento, spiega il motivo per cui gran parte degli approcci al tema della sicurezza dell'informazione sono basati su esperienza e conoscenza euristica più che su tecniche raffinate validate dalla letteratura scientifica. L'unico settore della sicurezza che vanta una lunga tradizione 10

11 nell'uso dei metodi formali è il campo della crittografia, che, non sorprendentemente, è molto più avanzato e stabile degli altri. La tendenza generale ad appoggiarsi a sistemi informatici sempre più ampi e complessi porta a chiedersi quanto ci si possa fidare di tali sistemi soprattutto nel momento in cui il valore delle informazioni scambiate in forma digitale cresce. 1.2 Proprietà Il traguardo di un sistema relativamente sicuro può essere raggiunto suddividendo l obiettivo finale in sotto-obiettivi, proprietà fondamentali, che diventano i requisiti del sistema stesso; tali proprietà, sono: Availability: questo requisito assicura che l accesso ai dati ed il servizio progettato nella specifica non vengano negati agli utenti autorizzati del sistema. Far valere tale proprietà implica proteggere il sistema da tentativi, intenzionali o accidentali, di cancellazioni non autorizzate di dati e da attacchi DOS. Integrity: questa proprietà coinvolge da un lato i dati, garantendo che questi non siano stati alterati durante l immagazzinamento o durante il trasferimento, dall altro il sistema, garantendo che questo non sia stato vittima di manipolazioni non autorizzate, e che quindi il suo comportamento rispecchi esattamente quello previsto dalla specifica. Confidentiality: con questo requisito si vuole garantire l impossibilità, da parte di individui non autorizzati, di accedere ad informazioni private e confidenziali. È importante, al fine di garantire tale proprietà in modo globale, far si che questa sia preservata durante tutte le possibili fasi della vita dei dati, quindi immagazzinamento, elaborazione e trasferimento. Anche in sistemi informatici estremamente semplici e non destinati a compiti critici, difficilmente si può accettare la mancanza di tale requisito. 11

12 Accountability: tramite questa proprietà si richiede che le azioni svolte sul sistema da una qualsiasi entità, sia questa un utente, un altro sistema o più semplicemente una periferica, siano attribuibili univocamente a tale entità. L attività di logging è uno dei metodi per cercare di garantire l accountability. Le quattro proprietà appena descritte dipendono fortemente l una dall altra, non è possibile e non ha significato alcuno parlare di una di queste proprietà senza citarne un altra. Per esempio la confidenzialità dipende dall integrità: se quest ultima è violata anche i meccanismi legati alla confidenzialità potrebbero essere compromessi. Si può dire la stessa nel caso in cui si violasse la confidenzialità (un intruso riesce ad ottenere la password di amministratore di un sistema), i controlli per l integrità possono essere aggirati banalmente. Availability e accountability sono fortemente legate a confidentiality ed integrity; proprio per questo, se una delle ultime due venisse a mancare, si aprirebbero innumerevoli strade per aggirare i meccanismi tesi a garantire le proprietà in oggetto. 1.3 Tipi di sicurezza Si analizzano di seguito le varie tipologie di sicurezza informatica distinguendo alcuni concetti fondamentali come sicurezza attiva e passiva, sicurezza nelle aziende e sicurezza dei programmi. Per sicurezza passiva normalmente si intendono le tecniche e gli strumenti di tipo difensivo, ossia quel complesso di soluzioni il cui obbiettivo è quello di impedire che utenti non autorizzati possano accedere a risorse, sistemi, impianti, informazioni e dati di natura riservata. Il concetto di sicurezza passiva pertanto è molto generale: ad esempio, per l'accesso a locali protetti, l'utilizzo di porte di accesso blindate, congiuntamente all'impiego di sistemi di identificazione personale, sono da considerarsi componenti di sicurezza passiva. 12

13 Per sicurezza attiva si intendono, invece, le tecniche e gli strumenti mediante i quali le informazioni ed i dati di natura riservata sono resi intrinsecamente sicuri, proteggendo gli stessi sia dalla possibilità che un utente non autorizzato possa accedervi, sia dalla possibilità che un utente non autorizzato possa modificarli. Le violazioni possono essere molteplici: vi possono essere tentativi non autorizzati di accesso a zone riservate, furto di identità digitale o di file riservati, utilizzo di risorse che l'utente non dovrebbe potere utilizzare ecc. La sicurezza informatica si occupa anche di prevenire eventuali Denial of service (DoS). I DoS sono attacchi sferrati al sistema con l'obiettivo di rendere non utilizzabili alcune risorse in modo da danneggiare gli utenti del sistema. Per prevenire le violazioni si utilizzano strumenti hardware e software. Dal momento che l informazione è un bene che aggiunge valore all impresa, e che ormai la maggior parte delle informazioni sono custodite su supporti informatici, ogni organizzazione deve essere in grado di garantire la sicurezza dei propri dati, in un contesto dove i rischi informatici causati dalle violazioni dei sistemi di sicurezza sono in continuo aumento. Per questo esistono, a carico delle imprese, precisi obblighi in materia di privacy, tra cui quello di redigere annualmente uno specifico documento programmatico sulla sicurezza. È stato anche approvato a livello internazionale il nuovo Standard ISO 27001:2005 finalizzato alla standardizzazione delle modalità adatte a proteggere i dati e le informazioni da minacce di ogni tipo, al fine di assicurarne l'integrità, la riservatezza e la disponibilità. Lo standard indica i requisiti di un adeguato sistema di gestione della sicurezza delle informazioni (ISMS) finalizzato ad una corretta gestione dei dati dell azienda. Una fase indispensabile di ogni pianificazione della sicurezza è la valutazione del rischio e la gestione del rischio. Il problema della sicurezza dei programmi e soprattutto dell'invio e ricezione di dati confidenziali protetti, si è posto all'attenzione degli sviluppatori di software come conseguenza della sensibile crescita dell'uso degli strumenti informatici e di internet. Per quanto riguarda la produzione di software "protetti" possiamo partire col definire il concetto di sicurezza come l'assenza da condizioni conflittuali capaci di produrre danni mortali o irreparabili ad un sistema. Nella progettazione di software è quindi 13

14 fondamentale raggiungere il compromesso più funzionale tra l'efficienza d'uso del programma in questione e la sua capacità di "sopravvivenza" ad attacchi esterni e ad errori più o meno critici. 1.4 Minacce alla sicurezza Le minacce alla sicurezza sono ovviamente rappresentate da persone non autorizzate che cercano di guadagnare l accesso ad un sistema protetto o di sovvertirne il funzionamento. Esistono minacce esterne ed interne al sistema: gran parte degli attacchi vengono proprio da dentro l organizzazione stessa sebbene oggigiorno definire i confini di un azienda è diventato molto difficile: concetti come le extranet che estendono il sistema informativo mediante Internet fino ad interfacciarlo con quello dei partner, dei clienti e dei fornitori, rendono molto labile il confine tra ciò che è interno ad un impresa e ciò che rimane esterno ad essa. Per quanto riguarda gli aggressori interni si può parlare di: Disgruntled Employees cioè persone che stanno coscientemente aggredendo l organizzazione, per diversi motivi (ostilità nei confronti dell azienda, corruzione da parte di terzi, spionaggio industriale, ecc ); Trasgressori Ingenui cioè persone che cercano di abusare in qualche modo delle risorse loro concesse, per esempio violando le linee guida aziendali sull uso responsabile di Internet (molto pericolosi sebbene inconsapevoli). Discorso più ampio va fatto per gli aggressori esterni: si può trattare infatti di persone esperte dotate di conoscenze tecniche approfondite, capaci di elaborare attacchi innovativi o di inventare procedimenti nuovi; molto spesso sono più esperti dei sistemi che stanno attaccando di quanto non siano le persone incaricate di difenderli. Con il termine Script- Kiddies si intendono persone prive di reali conoscenze tecniche, che studiano ed utilizzano exploit, attacchi preconfezionati rilasciati da esperti. Gli attacchi esterni possono avere un obbiettivo preciso (rubare dati o cancellare informazioni scomode), possono avere un fine di danneggiamento del sistema informativo o addirittura un fine ludico (si prova ad entrare in un sistema altrui quasi per gioco, per sperimentare le proprie capacità). Le finalità ultime di un attaccante possono essere, come abbiamo visto, moltissime: dal guadagno diretto al guadagno derivante dalla vendita di informazioni, dalla rappresaglia al 14

15 divertimento. Ogni organizzazione deve quindi considerare che sarà valutata da ogni tipo di nemici, e che se risulterà interessante anche solo da un punto di vista sarà sicuramente attaccata ed aggredita. Di seguito verrà presentato un elenco dei più noti attacchi informatici, elenco che non risulta possibile tenere aggiornato e completo visto il numero quotidiano di innovazioni in tale ambito Exploit Un exploit[2] è un termine usato in informatica per identificare un codice che, sfruttando un bug o una vulnerabilità, porta all'acquisizione di privilegi o al denial of service di un computer. Ci sono diversi modi per classificare gli exploit. Il più comune è una classificazione a seconda del modo in cui l'exploit contatta l'applicazione vulnerabile. Un exploit remoto è compiuto attraverso la rete e sfrutta la vulnerabilità senza precedenti accessi al sistema. Un exploit locale richiede un preventivo accesso al sistema e solitamente fa aumentare i privilegi dell'utente oltre a quelli impostati dall'amministratore. Lo scopo di molti exploit è quello di acquisire i privilegi di root su un sistema. È comunque possibile usare exploit che dapprima acquisiscono un accesso con i minimi privilegi e che poi li alzano fino ad arrivare a root. Normalmente un exploit può sfruttare solo una specifica falla, e quando viene pubblicato questa falla è riparata e l'exploit diventa inutile per le nuove versioni del programma. Per questo motivo alcuni blackhat hacker non divulgano gli exploit trovati ma li tengono riservati per loro o per la loro comunità. Questi exploit sono chiamati zero day exploit, e scoprire il loro contenuto è il più grande desiderio per gli attacker senza conoscenze, altrimenti detti script kiddie Buffer overflow Il buffer overflow[3] consiste nel fatto un programma non controlla in anticipo la lunghezza dei dati in arrivo, ma si limita a scrivere il loro valore in un buffer di lunghezza 15

16 prestabilita, confidando che l'utente (o il mittente) non immetta più dati di quanti esso ne possa contenere: questo può accadere se il programma è stato scritto usando funzioni di libreria di input/output che non fanno controlli sulle dimensioni dei dati trasferiti. Quando quindi, per errore o per malizia, vengono inviati più dati della capienza del buffer destinato a contenerli, i dati extra vanno a sovrascrivere le variabili interne del programma, o il suo stesso stack; come conseguenza di ciò, a seconda di cosa è stato sovrascritto e con quali valori, il programma può dare risultati errati o imprevedibili, bloccarsi, o (se è un driver di sistema o lo stesso sistema operativo) bloccare il computer. Conoscendo molto bene il programma in questione, il sistema operativo e il tipo di computer su cui gira, si può precalcolare una serie di dati malevoli che inviata per provocare un buffer overflow consenta ad un malintenzionato di prendere il controllo del programma (e a volte, tramite questo, dell'intero computer). Questo tipo di debolezza dei programmi è noto da molto tempo, ma solo di recente la sua conoscenza si è diffusa tanto da permettere anche a dei cracker dilettanti di sfruttarla per bloccare o prendere il controllo di altri computer collegati in rete. Non tutti i programmi sono vulnerabili a questo tipo di inconveniente: perché un dato programma sia a rischio è necessario che: 1. il programma preveda l'input di dati di lunghezza variabile e non nota a priori; 2. li immagazzini entro buffer allocati nel suo spazio di memoria dati vicini ad altre strutture dati vitali per il programma stesso; 3. il programmatore non abbia implementato alcun mezzo di controllo della correttezza dell'input in corso; 4. l'area di memoria dello stack sia eseguibile, se si tenta di scrivere dello shellcode sullo stack; questo non è vero sui computer più recenti dotati di NX bit. 16

17 1.4.3 Stack overflow Lo stack overflow consiste ugualmente nella sovrascrittura dell'area dati del programma, ma questa volta la causa è l'attività del programma stesso: chiamando con dei parametri particolari una funzione ricorsiva del programma, questa accumula chiamate in sospeso sullo stack fino a riempirlo completamente e inizia a sovrascrivere la memoria vicina Shellcode Uno shellcode[4] è un programma in linguaggio assembly che tradizionalmente esegue una shell, come la shell Unix '/bin/sh' oppure la shell command.com sui sistemi operativi DOS e Microsoft Windows. Uno shellcode può essere utilizzato per sfruttare un exploit, consentendo ad un hacker o un cracker di acquisire l'accesso alla riga di comando di un computer Backdoor Le backdoor[5] sono paragonabili a porte di servizio che consentono di superare in parte o in tutto le procedure di sicurezza attivate in un sistema informatico. Queste "porte" possono essere intenzionalmente create dai gestori del sistema informatico per permettere una più agevole opera di manutenzione dell'infrastruttura informatica, e più spesso da cracker intenzionati a manomettere il sistema. Possono anche essere installate autonomamente da alcuni malware (come virus, worm o trojan), in modo da consentire ad un utente esterno di prendere il controllo remoto della macchina senza l'autorizzazione del proprietario. Oltre ad essere molto pericolosi per l'integrità delle informazioni presenti sul sistema, le backdoor installate dai virus possono essere utilizzate per condurre degli attacchi di tipo DDoS. 17

18 1.4.6 Port scanning Il Port Scanning[6] è utlizzato per raccogliere informazioni su un computer connesso ad una rete stabilendo quali porte siano in ascolto su una macchina. Letteralmente significa "scansione delle porte" e consiste nell'inviare richieste di connessione al computer bersaglio (soprattutto pacchetti TCP, UDP e ICMP creati ad arte): elaborando le risposte è possibile stabilire (anche con precisione) quali servizi di rete siano attivi su quel computer. Una porta si dice "in ascolto" ("listening") o "aperta" quando vi è un servizio o programma che la usa. Il risultato della scansione di una porta rientra solitamente in una delle seguenti categorie: aperta (accepted): l'host ha inviato una risposta indicando che un servizio è in ascolto su quella porta chiusa (denied): l'host ha inviato una risposta indicando che le connessioni alla porta saranno rifiutate bloccata (dropped): non c'è stata alcuna risposta dall'host filtrata (filtered): rileva la presenza di un firewall o di un ostacolo di rete in grado di bloccare l accesso alla porta impedendo di individuarne lo stato. Di per sé il port scanning non è pericoloso per i sistemi informatici, e viene comunemente usato dagli amministratori di sistema per effettuare controlli e manutenzione. Rivela però informazioni dettagliate che potrebbero essere usate da un eventuale attaccante per preparare facilmente una tecnica mirata a minare la sicurezza del sistema, pertanto viene posta molta attenzione dagli amministratori a come e quando vengono effettuati port scan verso i computer della loro rete. Un buon amministratore di sistema sa che un firewall ben configurato permette alle macchine di svolgere tutti i loro compiti, ma rende difficile (se non impossibile) la scansione delle porte, ad esempio implementando meccanismi di accesso selettivo basati sul port knocking. 18

19 1.4.7 Sniffing Si definisce sniffing[7] l'attività di intercettazione passiva dei dati che transitano in una rete telematica. Tale attività può essere svolta sia per scopi legittimi (ad esempio l'individuazione di problemi di comunicazione o di tentativi di intrusione) sia per scopi illeciti (intercettazione fraudolenta di password o altre informazioni sensibili). I prodotti software utilizzati per eseguire queste attività vengono detti sniffer ed oltre ad intercettare e memorizzare il traffico offrono funzionalità di analisi del traffico stesso. Gli sniffer intercettano i singoli pacchetti, decodificando le varie intestazioni di livello datalink, rete, trasporto, applicativo. Inoltre possono offrire strumenti di analisi che analizzano ad esempio tutti i pacchetti di una connessione TCP per valutare il comportamento del protocollo o per ricostruire lo scambio di dati tra le applicazioni Keylogging Un keylogger[8] è, nel campo dell'informatica, uno strumento in grado di intercettare tutto ciò che un utente digita sulla tastiera del proprio computer. Esistono vari tipi di keylogger: hardware: vengono collegati al cavo di comunicazione tra la tastiera ed il computer o all'interno della tastiera software: programmi che controllano e salvano la sequenza di tasti che viene digitata da un utente. I keylogger hardware sono molto efficaci in quanto la loro installazione è molto semplice e il sistema non è in grado di accorgersi della loro presenza. I keylogger software sono invece semplici programmi che rimangono in esecuzione captando ogni tasto che viene digitato e poi, in alcuni casi, trasmettono tali informazioni ad un computer remoto. 19

20 Spesso i keylogger software sono trasportati ed installati nel computer da worm o trojan ricevuti tramite Internet ed hanno in genere lo scopo di intercettare password e numeri di carte di credito ed inviarle tramite posta elettronica al creatore degli stessi. Sempre a livello software, un programma di Keylogging può sovrapporsi fra il browser e il mondo internet. In questo caso intercetta le password, comunque vengano inserite nel proprio PC. La password viene catturata indipendentemente dalla periferica di input (tastiera, mouse, microfono): sia che l'utente la digiti da tastiera, sia che l'abbia salvata in un file di testo prima di collegarsi a Internet, e poi si limiti a fare copia/incolla, in modo da evitarne la digitazione, sia questa venga inserita da un programma di dettatura vocale Spoofing Tecnica basata sull assenza di meccanismi di autenticazione a partire dal livello tre della pila protocollare (IP) a scendere e sulla possibilità di raggirare i meccanismi a livello TCP, quali per esempio il numero di sequenza pseudocasuale, in modo da potersi fingere host fidato [9] Triojan Un trojan[10] o trojan horse (dall'inglese per Cavallo di Troia), è un tipo di malware. Deve il suo nome al fatto che le sue funzionalità sono nascoste all'interno di un programma apparentemente utile; è dunque l'utente stesso che installando ed eseguendo un certo programma, inconsapevolmente, installa ed esegue anche il codice trojan nascosto. I trojan non si diffondono autonomamente come i virus o i worm, quindi richiedono un intervento diretto dell'aggressore per far giungere l'eseguibile maligno alla vittima. Spesso è la vittima stessa a ricercare e scaricare un trojan sul proprio computer, dato che i cracker amano inserire queste "trappole" ad esempio nei videogiochi piratati, che in genere sono molto richiesti. Vengono in genere riconosciuti da un antivirus aggiornato come tutti i malware. Se il trojan in questione non è ancora stato scoperto dalle software house degli antivirus, è possibile che esso venga rilevato, con la scansione euristica, come probabile malware. 20

21 Un trojan può contenere qualsiasi tipo di istruzione maligna. Spesso i trojan sono usati come veicolo alternativo ai worm e ai virus per installare delle backdoor o dei keylogger sui sistemi bersaglio Virus Nell'ambito dell'informatica un virus[11] è un software, appartenente alla categoria dei malware, che è in grado, una volta eseguito, di infettare dei file in modo da riprodursi facendo copie di sé stesso, generalmente senza farsi rilevare dall'utente. I virus possono essere o non essere direttamente dannosi per il sistema operativo che li ospita, ma anche nel caso migliore comportano un certo spreco di risorse in termini di RAM, CPU e spazio sul disco fisso. Come regola generale si assume che un virus possa danneggiare direttamente solo il software della macchina che lo ospita, anche se esso può indirettamente provocare danni anche all'hardware, ad esempio causando il surriscaldamento della CPU mediante overclocking, oppure fermando la ventola di raffreddamento. Un virus è composto da un insieme di istruzioni, come qualsiasi altro programma per computer. È solitamente composto da un numero molto ridotto di istruzioni, (da pochi byte ad alcuni kilobyte), ed è specializzato per eseguire soltanto poche e semplici operazioni e ottimizzato per impiegare il minor numero di risorse, in modo da rendersi il più possibile invisibile. Caratteristica principale di un virus è quella di riprodursi e quindi diffondersi nel computer ogni volta che viene aperto il file infetto Worms Diversamente dai virus, non sono pezzi di codice che si agganciano ad altri programmi, bensì programmi che clonano se stessi, lanciandosi in esecuzione in vari modi. Spesso i worms contengono del codice backdoor, installando sulle macchine infettate un accesso per il proprio creatore. Inoltre, mentre un virus infetta tipicamente un calcolatore e si sposta da questo soltanto quando si spostano file infetti, un worms utilizza esplicitamente la rete (quindi, Internet) per mandare copie di se stesso ad altri calcolatori (non ha bisogno dell interazione dell utente). 21

22 Il core di un worms è rappresentato dallo specifico exploit che gli permette di muoversi nella rete: questo exploit sfrutta una vulnerabilità software di un applicativo come ad esempio buffer overflow Denial of Service Letteralmente negazione del servizio, in questo tipo di attacco si cerca di portare il funzionamento di un sistema informatico che fornisce un servizio, ad esempio un sito web, al limite delle prestazioni, lavorando su uno dei parametri d'ingresso, fino a renderlo non più in grado di erogare il servizio. Gli attacchi vengono abitualmente attuati inviando molti pacchetti di richieste, di solito ad un server Web, FTP o di posta elettronica saturandone le risorse e rendendo tale sistema "instabile", quindi qualsiasi sistema collegato ad Internet e che fornisca servizi di rete basati sul TCP è soggetto al rischio di attacchi DoS. Tale tipo di attacco verrà in seguito analizzato più nel dettaglio in quanto utilizzato per testare il funzionamento dell algoritmo implementato[12] SQL Injection La SQL injection è una tecnica dell'hacking mirata a colpire le applicazioni web che si appoggiano su un database di tipo SQL. Questo exploit sfrutta l'inefficienza dei controlli sui dati ricevuti in input ed inserisce codice maligno all'interno di una query SQL. Le conseguenze prodotte sono imprevedibili per il programmatore: l'sql Injection permette al malintezionato di autenticarsi con ampi privilegi in aree protette del sito (ovviamente, anche senza essere in possesso delle credenziali d'accesso) e di visualizzare e/o alterare dati sensibili Ingegneria sociale Per ingegneria sociale (dall'inglese social engineering) si intende lo studio del comportamento individuale di una persona al fine di carpire informazioni. 22

23 Un ingegnere sociale (social engineer) per definirsi tale deve saper fingere, sapere ingannare gli altri, in una parola saper mentire. Un social engineer è molto bravo a nascondere la propria identità, fingendosi un'altra persona: in tal modo egli riesce a ricavare informazioni che non potrebbe mai ottenere con la sua identità reale. Nel caso sia un cracker, può ricavare informazioni attinenti ad un sistema informatico. Il social engineering è quindi una tecnica per ricavare informazioni molto usata dagli hacker esperti e dalle spie, e dato che comporta (nell'ultima fase dell'attacco) il rapporto più diretto con la vittima, questa tecnica è una delle più importanti per carpire informazioni. In molti casi il cosiddetto ingegnere potrà riuscire a ricavare tutto ciò che gli serve dalla vittima ignara[13]. 1.5 Come difendersi Per prevenire tali violazioni si utilizzano strumenti hardware e software di vario genere di cui si presenta una breve panoramica di seguito[1]. Antivirus: consente di proteggere il proprio personal computer da software dannosi conosciuti come virus. Un buon antivirus deve essere costantemente aggiornato ed avere in continua esecuzione le funzioni di scansione in tempo reale. Per un miglior utilizzo l utente deve avviare con regolarità la scansione dei dispositivi del PC (dischi fissi, CD e DVD), per verificare la presenza di virus e worms. Per evitare la diffusione di virus è inoltre utile controllare tutti i file che si ricevono o che vengono spediti tramite posta elettronica facendoli verificare dall antivirus correttamente configurato a tale scopo. Anti-Spyware: software facilmente reperibile sul web in versione freeware, shareware o a pagamento. È diventato un utilissimo tool per la rimozione di file spia, gli spyware appunto, in grado di carpire informazioni riguardanti le attività on line dell utente ed inviarle ad un'organizzazione che le utilizzerà per trarne profitto. Firewall: installato e ben configurato un buon personal firewall garantisce un sistema di controllo degli accessi verificando tutto il traffico che lo attraversa. Protegge contro 23

24 aggressioni provenienti dall esterno e blocca eventuali programmi presenti sul computer che tentano di accedere ad internet senza il controllo dell utente. Firma digitale, Crittografia: è possibile proteggere documenti e dati sensibili da accessi non autorizzati utilizzando meccanismi di sicurezza specifici quali: la crittografia, la firma digitale, e l utilizzo di certificati digitali e algoritmi crittografici per identificare l autorità di certificazione, un sito, un soggetto o un software. Backup: più che un sistema di difesa si tratta di un utile sistema per recuperare dati eventualmente persi o danneggiati. Il backup consiste nell esecuzione di una copia di sicurezza dei dati di un personal computer o comunque di dati considerati importanti onde evitare che vadano persi o vengano resi illeggibili. Honeypot: (letteralmente barattolo di miele ) sistema o componente, hardware o software, usato come trappola o esca per la protezione da attacchi informatici. Solitamente consiste in un computer o un sito che sembra essere parte della rete e contenere informazioni preziose, ma che in realtà e ben isolato e non ha contenuti sensibili o critici. Potrebbe anche essere un file, un record o un indirizzo IP non utilizzato. Possono cosi essere rilevate intrusioni non autorizzate o malevoli in corso senza il rischio di perdita di informazione. Tuttavia devono essere maneggiati con cura poiché un hacker potrebbe utilizzarli per entrare in altri sistemi. Intrusion Detection System (IDS): Il concetto di Intrusion Detection System è stato sviluppato da James P.Anderson in un suo rapporto tecnico del 15 aprile 1980 [4]. L'idea alla base di un intrusion detection system (o IDS) è che sia possibile rilevare i segnali caratteristici di un'intrusione in un sistema informatico allo scopo di dare l'allarme. Questo dispositivo rileva, infatti, anomalie nel traffico in transito attraverso il firewall generando segnali di allerta all amministratore di rete. L Intrusion Detection System può non solo segnalare l anomalia, ma anche gestire la situazione in modo da chiudere eventuali falle nel sistema informatico: in questo caso si parla di Intrusion Prevention System (IPS). 24

25 Network Intrusion Detection System (NIDS): e un tipo particolare di IDS in cui il dispositivo e totalmente indipendente dalla piattaforma in grado di controllare il traffico in transito attraverso hub e network switch a seconda di come viene configurato. Steganografia: nel campo dell informatica, due utenti possono utilizzare la steganografia digitale per inviarsi messaggi nascosti all interno di file di copertura (filigrana elettronica), come immagini o altri file multimediali: in questo tipo di file l alterazione di pochi bit non modifica in modo evidente il contenuto del documento. Sistema di autenticazione: potrebbe rivelarsi utile, in particolare nelle aziende, l utilizzo di software per l autenticazione sicura con un secondo elemento di autenticazione basato su un insieme di caratteri disposti in uno schema suddiviso in file e colonne conosciute dall utente che dovrà poi inserirle in una combinazione di valori per dimostrare di essere in possesso dei dati corretti. Altro sistema, più sofisticato, è quello del riconoscimento dell utente tramite l utilizzo dell impronta digitale come forma di autenticazione. 25

26 Capitolo 2 Intrusion detection system Nel primo capitolo è stata presentata una panoramica riguardante varie tipologie di attacco informatico, note al momento, e diversi modi per difendersi. Si pone l attenzione adesso su un particolare sistema di difesa che consenta di rilevare l intrusione prima che essa possa causare un danno. Si cercherà di capire che cos è e cosa fa un Intrusion Detection System, definendo il concetto di intrusione e analizzando le fasi di un attacco informatico. 2.1 Definizione di IDS Con la dicitura intrusion detection system ci si riferisce ad uno strumento, composto da hardware e/o software, che sia in grado di fare intrusion detection; ossia, quel processo di monitoraggio degli eventi, che si verificano in un sistema o su di una rete, e di analisi degli stessi in cerca di tentativi mirati a compromettere l availability, l integrity, la confidentiality o a scavalcare i meccanismi di sicurezza previsti per l entità monitorata. Gli IDS non hanno niente a che vedere con sistemi di firewalling e affini, ai quali sono semmai complementari: se, ad esempio, paragonassimo il sistema informatico da proteggere ad una casa, il ruolo del firewall verrebbe interpretato da una recinzione alta e difficile da superare, mentre l IDS rappresenterebbe uno di quei sofisticati sistemi di allarme installati nelle abitazioni, che cominciano a suonare non appena un ladro cerchi di aprire la finestra o passeggi per un corridoio dopo essere entrato da una finestra lasciata aperta! Un buon IDS infatti deve essere in grado di segnalarci, in tempo reale, tentativi di intrusioni generate da cracker, da virus, da tools automatici oppure da utenti smanettoni che utilizzano programmi realizzati appositamente. Perché possa agire nel migliore dei modi l IDS deve essere configurato al meglio, in particolare deve conoscere: l attuale versione del o dei sistemi operativi, le eventuali patch o service pack installati, lo stack di rete, ecc 26

27 Per quanto riguarda la classificazione delle intrusioni, se ne possono definire quattro tipologie: 1. External Penetrator, colui che accede fisicamente a computer a cui non dovrebbe avere accesso; 2. Masquerader, colui che riesce ad accedere ad un sistema autenticandosi come utente autorizzato; 3. Misfeasor (malintenzionato), colui che, pur avendo diritto di accedere a risorse protette, abusa dei suoi privilegi attaccando la sicurezza del sistema; 4. Clandestine user, colui che riesce ad accedere al sistema autenticandosi come amministratore del sistema. 2.2 Le fasi di un attacco E possibile fornire una indicazione di massima sulle fasi che costituiscono un tipico attacco. Esse sono rappresentate all interno dello schema seguente: 1-HIDING (Mascheramento) Durante questa prima fase, l attacker compie delle operazioni (a volte anche piuttosto complesse) allo scopo di camuffarsi, nascondendo la propria reale ubicazione per scongiurare il pericolo di essere tracciato ed identificato(utilizzo di sistemi ponte e mascheramento della propria utenza telefonica). 2-INFORMATION GATHERING (Raccolto di Informazioni) Affinché un attacco abbia esito positivo, è fondamentale che l attacker raccolga il maggior numero di informazioni possibili sulla rete scelta come bersaglio. E importante notare che in questa fase non viene eseguita alcuna reale intrusione, ma ci si limita a raccogliere le informazioni pubbliche reperibili attraverso canali standard (database del NIC, WHOis record, DNS, traceroute, ping, ecc.). Le tecniche comunemente utilizzate allo scopo sono: 27

28 Network Surveying: si tratta di una sorta di combinazione di ricerca dei dati, accolta di informazioni importanti e controllo delle politiche di sicurezza e di information disclosure. Al termine di questa sottofase, l attaccante è tipicamente in possesso dei nomi di dominio interessati, delle denominazioni e delle funzioni primarie dei singoli server, degli indirizzi IP di proprietà dell azienda bersaglio, di una mappa di rete approssimativa, di indirizzi e- mail validi e di informazioni specifiche riguardanti l ISP che fornisce la connettività Internet. Port Scanning: Ogni sistema che implementa il TCP/IP ha possibili porte TCP e altrettante UDP: lo scopo di questa fase e fornire un elenco dei sistemi attivi nell intervallo di indirizzi individuato durante l attività di Network Surveying ed ottenere una mappa di rete ad un maggiore livello di dettaglio. Service Identification: si tratta dell esame attivo delle applicazioni in ascolto sulle porte individuate nel corso della sottofase precedente. A volte ad un servizio può essere associata più di una applicazione; ad esempio, nel caso di un server web, il Perl ed il PHP possono essere considerati componenti dell applicazione che ascolta sulla porta 80/TCP (il server web Apache). I risultati ottenuti al termine di questa analisi consentono all attaccante di individuare i possibili punti deboli dell infrastruttura informatica scelta come bersaglio. System Identification: con questo termine si intende il probing attivo di un sistema, alla ricerca di risposte che permettano di distinguere la tipologia di sistema operativo, la sua versione ed altre ulteriori informazioni specifiche. Una tecnica comunemente utilizzata allo scopo è quella del TCP/IP fingerprinting. 3-SYSTEM PENETRATION (Intrusione) Una volta in possesso delle informazioni necessarie, è il momento per l attacker di sferrare l attacco vero e proprio. A seconda delle tipologie di reti, sistemi e servizi erogati, tale attacco può variare sensibilmente dal punto di vista pratico; possiamo però raggruppare le possibili insicurezze in almeno 4 aree distinte: System security: si tratta di vulnerabilità a livello di sistema operativo e nel software di base. Tipicamente, alcuni servizi e programmi applicativi, datati oppure mal configurati, si prestano ad essere attaccati allo scopo di ottenere un accesso non autorizzato al sistema che ne fa uso (vulnerabilità remote) o di realizzare una scalata di privilegi (vulnerabilità locali). Tipici esempi di attacchi connessi a questa tipologia di insicurezza sono quelli che 28

29 sfruttano l esecuzione di codice arbitrario da remoto (tramite impiego di exploit specifici), la mancata gestione delle eccezioni o, infine, la mancata o scorretta implementazione delle politiche di gestione delle credenziali di accesso (attacchi di tipo password guessing o brute force ). Network security: in questo ambito sono comprese le vulnerabilità che minano il livello di sicurezza globale della rete. Tipicamente, i fattori che concorrono alla determinazione di questo genere di esposizioni sono la tipologia di rete e la conseguente presenza di punti di accesso (potenzialmente sprotetti o non adeguatamente protetti) alla rete privata, la tipologia e la configurazione dei sistemi per il routing ed il firewalling (servizi attivi, ACL, default password e policy del Packet Filler) e la possibilità di effettuare il monitoraggio passivo del traffico alla ricerca di informazioni riservate trasmesse in chiaro (Network Sniffing). Application security: le insicurezze si possono manifestare anche (e soprattutto) nel software applicativo. In particolare, un gran numero di tecnologie e di implementazioni di applicazioni interne risultano vulnerabili ad attacchi mirati a reperire informazioni riservate o ad ottenere un accesso non autorizzato ai sistemi che erogano i servizi pubblici. Alcuni esempi di vulnerabilità a livello applicativo sono l SQL injection, il cross-site scripting, e la possibilità di effettuare session hijacking (per applicazioni web). Procedural security: infine, le stesse procedure volte a migliorare le modalità di gestione della sicurezza possono cadere vittima di falle strutturali all interno del proprio modello di gestione fornendo, ad esempio, a chi attacca, la possibilità di sfruttare l esistenza di relazioni di fiducia tra le singole macchine o in relazione all elemento umano (tramite attacchi basati su social engineering ed human deception). Per ognuna delle quattro macro-categorie di vulnerabilità descritte, l attaccante cerca di individuare i punti deboli e colpisce ove risulta più conveniente per la riuscita dell intrusione informatica, utilizzando i mezzi opportuni. 4-CLEANING (Pulizia) Una volta portata a termine l intrusione, è generalmente necessario per l attacker procedere con la cancellazione delle tracce lasciate nei file di log, su altre regioni del file system e, se possibile, sugli eventuali dispositivi di monitoraggio delle attività di rete per il rilevamento delle intrusioni (Intrusion Detection Systems). 29

30 2.3 Obiettivi degli IDS Lo scopo principale di un IDS è quello di rilevare incidenti prima che essi causino un impatto al sistema stesso. Ad esempio, gli IDS possono rilevare quando un attaccante ha compromesso un sistema dopo averne sfruttato una vulnerabilità. Teoricamente un Intrusion Detection System dovrebbe monitorare ogni sistema e device, essere affidabile al 100% riconoscere un attacco in modo rapido con una diagnosi accurata del problema, semplice, ma allo stesso tempo completo, segnalando o addirittura attivando le procedure per la soluzione e comunque dovrebbe rilevare tutti gli attacchi con un effetto limitato sulle prestazioni. Comunque è necessario combinare gli allarmi generati dall'ids al momento dell'intrusione con l'azione tempestiva del responsabile informativo che provvedere ad attuare le opportune azioni di verifica. Gli IDS possono essere configurati anche per rilevare comportamenti che violano le politiche di sicurezza: in questo senso, gli IDS agiscono in maniera simile ai firewall e riconoscono il traffico che non rispetta certe regole. Inoltre, gli IDS possono essere utilizzati per: duplicare i controlli effettuati dal firewall. Ad esempio, se l IDS nota del traffico sulla rete che il firewall avrebbe dovuto bloccare, ma che è comunque riuscito ad entrare nella rete interna, ad esempio per un errore di configurazione del firewall, l IDS può ripetere gli stessi tipi di controlli; 30

31 fornire funzioni di logging per documentare gli attacchi e i tentativi di intrusioni effettuati sulla rete; notificare gli amministratori della rete, tramite un alert (allarme), ogni volta che si verificano eventi meritevoli di attenzione. Un IDS può utilizzare alcuni o tutti fra i seguenti metodi di progettazione: Occultamento della sua presenza; Utilizzo di un numero minimo di firme con il massimo effetto; Filtro online in tempo reale; Filtro sulle intestazioni dei pacchetti; Filtro sul contenuto dei pacchetti; Manutenzione dello stato della connessione; Utilizzo di una dimensione ottimale della finestra temporale per la corrispondenza delle firme. 2.4 Tipi di IDS In generale un IDS non si sostituisce mai ai vari controlli effettuati dai meccanismi di sicurezza posti a salvaguardia di un sistema, ma piuttosto cerca di scoprire un loro fallimento. In caso di violazione, o di tentativo di violazione di un sistema vengono infatti compiute azioni anomale che nelle normali operazioni non verrebbero mai eseguite; identificando quest ultime diventa possibile scoprire la presenza di un eventuale intruso. Una delle difficoltà maggiori nell uso efficace di un IDS `e proprio quella di identificare tali azioni, e non confonderle con azioni assolutamente legittime, ancorché poco usuali. 31

32 In generale si hanno due metodologie principali per riconoscere le anomalie del sistema. Il primo e più diretto è quello chiamato misuse detection, cioè la rilevazione diretta di un utilizzo non consentito di alcune risorse. In genere questo viene fatto attraverso una qualche forma di rappresentazione (di norma con una serie di regole, più o meno complesse) che permetta di definire e osservare quali sono i comportamenti anomali da controllare. Il limite di questo metodo è che occorre identificare con chiarezza il misuse, e se qualcuno utilizza un attacco che non era stato previsto questo verrà ignorato. A questo problema risponde la seconda metodologia, detta anomaly detection che cerca di classificare (in genere su base statistica, con vari modelli e meccanismi) il comportamento normale, identificando così come sospette tutte le deviazioni significative da esso; il grande vantaggio di questo approccio è la sua generalità, dato che è automaticamente in grado di adattarsi per riconoscere nuovi schemi di attacco. La difficoltà sta nella scelta dei modelli da utilizzare (cosa misurare, come impostare le soglie di allarme, ecc.) che permettano di selezionare in maniera adeguata (vale a dire sostenibile per il controllo da parte dell amministratore) le eventuali situazioni sospette. Una seconda classificazione degli IDS è quella che distingue fra quelli che eseguono le loro operazioni on-line, in tempo reale, rispondendo immediatamente quando riconoscono un tentativo di intrusione, e quelli che operano off-line, che sono in grado di effettuare il riconoscimento solo eseguendo una verifica in un momento successivo sulla base dei dati raccolti. Nel primo caso vengono generati degli opportuni allarmi (i cosiddetti alert) all accadere di certe situazioni. Di norma questo viene fatto esaminando gli eventi correnti all interno di una certa finestra temporale, e al rilevamento di possibili intrusioni vengono attivati gli allarmi, che a loro volta possono innescare azioni successive. In questo caso una delle possibilità è quella di approntare delle contromisure automatiche volte a bloccare le operazioni coinvolte nell azione di intrusione (ad esempio bloccare il traffico di rete verso certe macchine). Una reazione automatica di questo tipo espone però al rischio di poter essere sfruttata da un attaccante che abbia identificato la presenza di tali contromisure per rendere inutilizzabile il servizio con un attacco simulato, con il risultato di far fallire il terzo degli obiettivi fondamentali della sicurezza, la disponibilità. 32

33 Il limite degli IDS che operano in tempo reale è quello delle risorse necessarie per eseguire i controlli, in genere questi possono essere molto pesanti sia dal punto di vista computazionale che dal punto di vista dello stoccaggio dei dati. Negli IDS offline invece l analisi viene svolta successivamente in un secondo tempo, e pertanto si può spendere più tempo non essendo necessaria la risposta immediata. In genere con gli IDS che operano offline si ha la capacità di una analisi molto più completa e dettagliata, e potendo operare senza limiti di tempo, si possono anche trattare moli di dati non analizzabili in tempo reale; il problema è che essi, per definizione, sono utilizzabili solo dopo che è avvenuto un incidente o un attacco. In alcuni casi però l uso di un IDS di questo tipo può essere estremamente utile per rilevare il tipo di intrusione e porvi rimedio senza essere costretti a soluzioni più drastiche come la reinstallazione. In molti casi oggi esistono degli IDS che sono in grado di fornire una combinazione di queste due caratteristiche, gestendo sia la generazione di allarmi on-line che la registrazione degli eventi relativi ad un allarme per consentirne una successiva, e molto più accurata, analisi off-line. L ultima classificazione degli IDS prevede altre due categorie, la prima è quella degli IDS host-based, in cui il controllo viene eseguito su una singola stazione, relativamente alle attività registrate dall IDS sulla stessa, strettamente dipendenti dal sistema operativo, per il tracciamento delle chiamate di sistema, dell utilizzo delle risorse, dei comandi eseguiti e dei passaggi da un livello di privilegi ad un altro. La seconda categoria è quella degli IDS network-based, in cui viene invece controllato il traffico su una rete mediante sniffer di rete alla ricerca di tracce di intrusione fra i pacchetti in transito. In genere si tende a identificare questi ultimi, che più propriamente dovrebbero essere chiamati NIDS (cioè Network Intrusion Detection System), con gli IDS generici. Entrambi questi due ultimi approcci presentano vantaggi e svantaggi. Il principale vantaggio di un IDS network-based è la possibilità di usare un numero di sonde contenuto per controllare reti anche di dimensioni considerevoli. Tuttavia alcuni tipi di intrusione non possono essere rilevati da tale architettura quali attacchi che coinvolgano canali crittografici. Ad esempio un IDS di rete può analizzare e rilevare tentativi di attacco rivolti ad una web application, quale l invio di dati mal formattati ad un campo di una form, a meno che essi 33

34 non vengano mandati attraverso una sessione criptata che renderebbe inutili le firme sulle quali si basa il controllo dell IDS. Fino a una decina di anni fa i sistemi più importanti erano quelli host-based, tuttavia, l avvento dell era di Internet ha reso la rete uno dei vettori d attacco più facili e probabili, dando notevole impulso allo sviluppo di sistemi network-based. Si consideri che questi due tipi di approccio non sono contrapposti, ma altamente complementari. Tutte le suite per IDS più popolari al mondo combinano sonde di tipo host-based e network-based per cercare di coprire quanti più tipi d attacco possibile. Sarà sempre più importante in futuro un approccio misto di questo tipo, che aprirà diverse sfide quali la normalizzazione dei dati derivanti da sensori differenti, la correlazione tra essi, lo sviluppo di sistemi in grado di ragionare su queste viste correlate per fornire analisi di intrusione di più alto livello. 2.5 Come misurare l efficienza di un IDS Sono diverse le caratteristiche necessarie ad un IDS per ricoprire in maniera efficiente il proprio ruolo. Quelle fondamentali sono presentate di seguito: Reattività: fondamentale per un IDS è avere la possibilità di reagire in qualche maniera agli attacchi, ovvero cercare di bloccarli automaticamente. Si parla in 34

35 questo caso di Intrusion Prevention System, approccio che pone significativi problemi in senso architetturale. Non è possibile infatti per un sistema on-line analizzare tutti i dati e individuare un attacco in tempo reale, reagendo e bloccandolo. Se anche il sistema fosse real-time, l unica maniera efficace per consentirgli di operare preventivamente sarebbe quella di porlo in-line, come filtro pregresso a tutto il traffico. Un idea alternativa è un IDS on-line e real-time di tipo tradizionale che possa però interagire con un firewall o con le ACL dei router di frontiera, in modo da interrompere la comunicazione tra l host vittima e l attaccante. Potrebbero però derivarne dei problemi dal momento che traffico legittimo venisse interpretato come malevolo o nel caso in cui un hacker generasse finti attacchi riuscendo a forzare il nostro IDS. Inoltre non è garantita la copertura per la rete locale. Survivability e robustezza: si intende la capacità di garantire il corretto funzionamento del sistema anche in situazioni critiche (deve registrare cosa sta accadendo proprio come una scatola nera). Devono essere implementati opportuni meccanismi di autenticazione, crittografia e verifica di integrità per garantire la sicurezza tra i vari componenti di un IDS e per evitare ogni sorta di attacco di tipo man-in-the-middle. Il sistema deve inoltre essere robusto ovvero non arrestarsi completamente ma esibire una graduale riduzione delle performance man mano che l attacco procede e si aggrava. Flessibilità: deve essere possibile una totale flessibilità e adattabilità del sistema a circostanze specifiche per ogni singola rete. Questo problema non si riscontra negli IDS anomaly based, ma deve essere ampiamente studiato per sistemi basati su firme. Adattabilità a nuovi attacchi: i possibili tipi di attacco contro una rete informatica evolvono in continuazione (microevoluzioni cioè nuovi attacchi all interno di categorie già esistenti o macroevoluzioni che sono metodi di attacco completamente nuovi). Non è semplice progettare un IDS in grado di adattarsi a nuove forme di aggressione informatica soprattutto, per esempio, se questa agisca 35

36 sul livello 2 della pila ISO/OSI, e il sistema sia progettato per il controllo a livello 3. Soluzioni potrebbero essere la revisione totale del motore per forme d attacco completamente nuove, o lo studio di un modello adattabile e aggiornabile per attacchi nuovi ma assimilabili a categorie già note. Scalabilità: un buon sistema di rilevamento delle intrusioni deve essere in grado di scalare seguendo la crescita della rete. Per questo motivo le soluzioni networkbased hanno spesso sofferto rispetto a soluzioni host-based, in quanto analizzare gli eventi in modo distribuito è sicuramente più semplice dell analisi di tutto il traffico della rete. Tipicamente, quando un IDS di rete supera la propria capacità di analizzare i pacchetti inizia a lavorare in una modalità a campione, scartando parte del buffer con una tecnica simile a quella utilizzata dai router. Il problema è che, nel caso dei router, i meccanismi di ritrasmissione del TCP evitano la perdita di pacchetti, mentre nel caso dell'ids, la perdita dei pacchetti è definitiva e potrebbe trattarsi proprio di traffico interessante. Il nostro sistema quindi deve essere in grado di gestire attacchi multipli concorrenti e gestire quindi un grande quantità di traffico che potrebbe essere stato generato per mettere in crisi il sistema. Anche per i sistemi di intrusion detection è importante quindi avere dei parametri valutativi, secondo i quali poter confrontare vari progetti, magari completamente differenti fra loro, ma tutti con lo stesso obiettivo. Si possono elencare così: Accuracy: tale proprietà riguarda il corretto riconoscimento degli attacchi subiti dal sistema monitorato e l assenza di falsi allarmi; Performance: per un IDS la performance è assimilabile alla velocità con la quale riesce a processare le informazioni di audit. Se tale misura non `e soddisfacente, difficilmente sarà possibile fare detection real-time; Completeness: la completezza è la proprietà di un IDS di individuare tutti i tipi di attacco; si parla quindi di incompletezza quando il sistema non riesce a riconoscere un particolare attacco. Non essendo possibile avere una conoscenza globale di tutti i possibili attacchi, questa misurazione è molto più difficile delle altre; 36

37 Fault/Attack tolerance: l IDS stesso deve essere resistente agli attacchi, specialmente a quelli di tipo DOS, e deve essere progettato mettendo questa proprietà ai primi posti nella lista degli obiettivi da raggiungere; il miglior IDS del mondo sarebbe del tutto inutile se esistesse un modo semplice per aggirare i suoi controlli. Timeliness: il tempo di analisi dei dati e notifica dei risultati ottenuti deve essere il più breve possibile, permettendo così all amministratore di intervenire prima che l attaccante possa disattivare il sistema di detection o compiere azioni ancor più dannose. 2.6 Problematiche degli IDS Si possono riassumere le principali problematiche di un Intrusion Detection System in tre categorie: rilevamento di attacchi nuovi o modificati, errori di classificazione (falsi negativi e falsi positivi) e tempistiche d attacco. Sebbene si sia già parlato in precedenza del problema di nuovi tipi di attacchi è importante sottolineare un problema sostanzialmente inaffrontabile per sistemi basati su firme ovvero il polimorfismo degli attacchi. In molti casi è possibile raggiungere un determinato scopo seguendo una pluralità di metodi rendendo enormemente più difficile sviluppare delle firme appropriate facendo esplodere, grazie ad una crescita combinatoria, il numero di queste, indispensabili per intercettare tutte le possibili variazioni di questi attacchi. Il polimorfismo è un avversario strutturale di qualsiasi sistema IDS basato su misuse detection poiché mina alla base l assunto che sia possibile elencare tutte le possibili forme d attacco. Considerevole attenzione va posta sugli errori commessi da un IDS. Vengono tipicamente suddivisi in due categorie, così come gli errori di classificazione in generale. Si denota con falso positivo una situazione in cui l IDS segnala come anomala un azione legittima o innocua. 37

38 Si definisce invece falso negativo quando, viceversa, un IDS non evidenzia un azione sicuramente maliziosa. Sebbene i falsi positivi possano sembrare innocui ciò non è sempre vero: un IDS che segnala in continuazione come anomale azioni perfettamente normali dopo un po risulterà essere un pessimo dispositivo. Eliminare i falsi positivi è quindi uno dei target della ricerca sugli IDS, in particolare per sistemi di anomaly detection, in quanto a meno di errori nelle firme è molto difficile che un sistema di misuse detection fornisca dei falsi positivi. A tal proposito si consideri che spesso quelli che agli utenti finali, in particolare di sistemi di misuse detection, indicano come falsi positivi sono in realtà le indicazioni di attacchi veri e propri contro piattaforme software o hardware che essi non hanno. Ciò che l IDS in questi casi ha rilevato non è un falso positivo bensì un verissimo attacco che qualcuno alla cieca ha rivolto contro le macchine sbagliate. Sta nell interesse dell amministratore in tal caso scegliere se essere avvertito di tali attacchi, che per quanto innocui non sono comunque un buon sintomo, o meno. I falsi negativi sono tuttora un problema aperto: si tratta del mancato riconoscimenti di una forma d attacco. In generale, in un sistema di misuse detection un falso negativo è associato alla mancanza di una firma per l attacco effettuato, ricadendo nel problema esposto poco sopra del riconoscimento di nuovi attacchi. In sistemi basati sull individuazione di anomalie invece è più probabile che si abbia un falso negativo magari anche su un attacco che in precedenza era stato riconosciuto proprio a causa della natura statistica di questo tipo di sistemi. Si menziona infine il problema dell interleaving, un attacco cioè può essere costituito da un insieme di eventi indipendenti non necessariamente correlati nel tempo e che presi singolarmente potrebbero sembrare innocui. Inoltre spesso gli eventi possono essere scambiati tra loro nella sequenza temporale senza per questo far perdere potenza all attacco, rispettando un ordinamento che è solo parziale, o contenere al loro interno elementi variabili che possano assumere un infinità di valori, causando problemi di unificazione. Un ultimo problema legato al fattore tempo è l uncertain reasoning ovvero l incapacità di determinare algebricamente se è possibile fermare l analisi o se è necessario 38

39 rimanere in attesa del completamento di un attacco. Nasce per questo la necessità di un un timeout o qualche altro meccanismo per mezzo del quale si stabilisca se considerare scadute osservazioni molto vecchie per far spazio a quelle nuove o meno. Se così non fosse offriremmo ad un attaccante molto intelligente un metodo per disabilitare l IDS intasando la memoria con sequenze appese. Anche l introduzione di un timeout può offrire un ottima scappatoia all attaccante: l attacco in atto non deve essere concluso prima che sia scattato il timeout in modo da cancellare almeno in parte tracce del suo attacco prima di concluderlo impunemente. Molto facilmente per la scadenza del timeout egli può o aspettare dilazionando l attacco nel tempo o provocare un flush della sequenza d attacco. 39

40 Capitolo 3 Data streams: Algoritmi e applicazioni 3.1 Introduzione ai data streams Sono stati finora discussi i principali aspetti della sicurezza informatica e degli Intrusion Detection System. Si è posta l attenzione soprattutto sugli attacchi alle reti di computer e sui problemi che affligono gli IDS. Difetti e problematiche dovuti principalmente alla difficoltà nell analisi della grande quantità di dati scambiati in rete (traffico internet). Si introdurrà quindi il concetto di data streams e si cercherà di capire come gestire, analizzare e studiare un importante massa di informazioni attraverso l applicazione di algoritmi in grado di sintetizzare e processare tale flusso di dati consentendo un analisi statistica volta all individuazione di anomalie ed errori. Si può definire un flusso di dati (data stream) come una sequenza di segnali digitali codificati utilizzata per rappresentare le informazioni in trasmissione. S. Muthukrishnan in [14] cerca di essere più specifico definendo tale flusso come una serie di dati che provengono ad una frequenza molto elevata. Con tale frequenza si sovraccaricano le comunicazioni e le infrastrutture di calcolo, diventa quindi difficile: Trasmettere (T) l intero input del programma; Calcolare (C) sofisticate funzioni su ampie parti di input a questo rate; Immagazzinare (Store S), catturare temporaneamente o archiviare molti dati a lungo termine. Se quindi i collegamenti sono lenti e sono presenti errori di comunicazione ci potrebbero essere dei ritardi nella ricezione di tali flussi di dati, oppure se la potenza di calcolo è 40

41 limitata e il programma è complesso si impiegherebbe troppo tempo per ricevere una risposta. Esistono due recenti sviluppi che hanno indotto a produrre nuove sfide per le infrastrutture TCS: la capacità di generare automaticamente dati altamente dettagliati comprendente aggiornamenti continui e la necessità di eseguire sofisticate analisi del flusso di dati, in aggiornamento continuo, quasi in tempo reale. Il primo dei due è nato nelle ultime decadi con il crescente utilizzo delle reti informatiche anche in campo bancario. Altri sistemi di reti dedicate forniscono massivi flussi di dati: comunicazioni via satellite, dati meteorologici derivanti dai radar, misurazioni geologiche e astronomiche. Internet è stato lo strumento che sicuramente ha distribuito sia le sorgenti sia i consumatori (milioni di utenti) di questo flusso importante di informazioni. Ha infatti aumentato la frequenza delle transazioni tremendamente generando stream multipli: browser click, queries di utenti, logs di traffico IP, mail, web-server e peer-to-peer downloads. Le reti wireless accresceranno ancora tale fenomeno. Per quanto riguarda l analisi dei dati tradizionalmente si eseguivano off-line attraverso l interrogazione di database (transazioni, analisi di trend, previsioni). Le recenti applicazioni di monitoraggio in campo finanziario, atmosferico, astronomico, internet, hanno avuto la necessità di compiere un analisi, quasi in tempo reale, alla ricerca di eventi estremi, frodi, intrusioni, attività anomale o inusuali. Non era più possibile gestire tutte queste informazioni attraverso semplici database, sebbene di dimensioni notevoli, ma è sorto il bisogno di strutture dati in grado di diminuire le dimensioni dei database e sintetizzare massivi datasets. Si descrivono di seguito alcuni aspetti formali del modello dei data streams ponendo l attenzione sulle emergenti teorie in questo campo, sull applicazione di strutture dati tipo sketch per la sintesi di tali flussi di informazioni arrivando a presentare proprietà e funzionalità dell algoritmo utilizzato per lo svolgimento del lavoro di tesi. 41

42 3.2 Data streaming: modelli Si consideri uno stream in input a,... che arriva sequenzialmente, elemento per 1, a2 elemento, e descrive un sottostante segnale, funzione uni-dimensionale. I modelli differiscono su come descrive. Time series model. Ogni è elemento e appare nell ordine crescente di. Questo è un modello adattabile per dati in serie temporale dove, per esempio, si sta osservando del traffico IP ogni cinque minuti. Cash register model. sono incrementi di. Si consideri, allora dove è lo stato del segnale dopo l i-esimo elemento nello stream. Questo forse è il modello più popolare. È infatti adatto ad applicazioni come il monitoraggio di indirizzi IP che accedono ad un Web server, o che comunque inviino pacchetti verso una certa destinazione, in quanto può accedere ad un Web server molteplici volte o inviare molteplici pacchetti per molto tempo. Tale modello era apparso in letteratura prima, ma fu formalmente battezzato in [] con questo nome. Turnistile model. In questo caso sono aggiornamenti di. Se pensiamo ad, allora dove è lo stato del segnale dopo che l i-esimo elemento si sia presentato nello stream. È il modello più generale ed è appropriato in situazioni in cui sono necessaria tante operazioni di insert quante di delete. Nella progettazione dell algoritmo si sceglierà quel modello che più si adatta alle proprie esigenze. Si dovrà però tener conto di alcuni parametri per la misurazione delle performance: Tempo per processare un elemento nello stream; Spazio usato per immagazzinare le strutture dati al tempo. 42

43 Tempo necessario per calcolare funzioni su. Sarebbe desiderabile avere, ad ogni tempo nello stream di dati, un tempo di processamento, uno spazio e un tempo di calcolo dell ordine, preferibilmente polylogaritmico in. Strutture dati tradizionali come alberi di ricerca processano ogni update in un tempo e supportano query in un tempo dell ordine, ma utilizzano uno spazio lineare per immagazzinare i dati in input. Un algoritmo Data streams può essere pensato come una struttura dati dinamica, ma ristretto all uso di uno spazio sub-lineare e le implicazioni che ciò comporta. Ci si potrebbero a questo punto porre due domande: perché utilizzare uno spazio sublineare e funzioni poli-logaritmiche. Alla prima domanda si può rispondere dicendo che generalmente un flusso dati è così massivo da non permettere di memorizzare tutto ciò che arriva (si pensi infatti al traffico internet); ci si avvale quindi di un sottoinsieme di tutte le osservazioni sullo stream di dati. Per la seconda osservazione si può dire che il logaritmo nella dimensione in input è il più basso limite sul numero di bit necessario ad indicizzare e rappresentare un segnale, poli fornisce un terreno di gioco famigliare. 3.3 Data streaming: uno scenario interessante Si presenta uno scenario popolare per il data streaming. Internet comprende routers connessi fra loro che inviano pacchetti IP. Gestire tali reti necessita l individuazione di falle, attività inusuali in atto, ecc Il traffico dovrebbe essere analizzato in tempo reale. Per un router può essere visto a differenti livelli: 1. A livello più basso, il packet log: ogni pacchetto IP ha un header che contiene indirizzo IP sorgente e destinazione, numero di porte, ecc ; 2. A livello più alto c è il flow log: ogni flusso è una collezione di pacchetti con alcuni valori per certi attributi chiave tali che IP sorgente e destinazione e file di log 43

44 contengono informazioni cumulative sul numero di byte, sui pacchetti inviati, sul tempo d inizio e fine trasmissione, sul tipo di protocollo per ogni flusso; 3. Infine vi è SNMP log che è un aggregato di dati del numero di bytes inviati ogni pochi minuti sulla linea di comunicazione. Molti altri log possono essere creati a partire da traffico TCP/IP, ma questi possono bastare come esempio per formulare alcune query: 1. Quanto traffico HTTP è passato oggi sulla linea di comunicazione da un determinato indirizzo IP sorgente? 2. Quanti indirizzi IP diversi usano una determinata linea per inviare il proprio traffico dall inizio del giorno, o quanti IP stanno correntemente usando la stessa linea? 3. Quali sono i k flussi più importanti nella giornata, o correntemente in progresso? 4. Quanti flussi comprendono solo un tipo di pacchetto? Strettamente collegata a questa domanda sarà: Trovare quei pacchetti TCP/IP SYN senza che in risposta a questi ci siano dei pacchetti SYN/ACK. Tutto ciò è fondamentale nell individuazione di attacchi tipo denial-of-service. 5. Quanto traffico ieri è stato comune o simile in due router? 6. Per ogni indirizzo IP ed ogni cinque minuti di intervallo, contare il numero di bytes e pacchetti relativi a traffico HTTP. Questa è una query interessante: come si può rappresentare l output che è anche uno stream e qual è una approssimazione adatta in tal caso? 44

45 Si può formalizzare uno degli esempi sopra citati in termini di modelli di data stream e funzioni adatte da calcolare. Si consideri il numero due: quanti indirizzi IP diversi usano una determinata linea per inviare il proprio traffico dall inizio del giorno. Si potrebbe monitorare il packet log. Lo stream in input sarà una sequenza di pacchetti IP su un dato link, con il pacchetto avente l indirizzo IP. Si avrà il numero di pacchetti inviati da un IP sorgente, per, tutti inizializzati a zero all inizio del giorno. Ogni pacchetto aggiunge uno a ; da qui il modello risulta essere quello del Cash Register. Il conto del numero di indirizzi IP distinti che usano il medesimo link durante la giornata può essere svolto determinando il numero di, non uguali a zero, ogni volta. Si passa adesso alla seconda parte dell esempio in questione: quanti IP stanno correntemente usando la stessa linea. Più formalmente ad ogni tempo si considerano indirizzi IP, tali che alcuni flussi iniziano un momento prima di e termineranno dopo. Nel file di log dei pacchetti di rete ci sono informazioni per identificare in primo così come l ultimo pacchetto in un flusso. Si indica con il numero di flussi in cui è correntemente coinvolto un indirizzo IP sorgente, per, tutti inizializzati a zero all inizio del giorno. Se un pacchetto è all inizio del flusso, si aggiunge uno a se è la sorgente del pacchetto ; se è alla fine del flusso si sottrae uno da se è la sorgente del pacchetto ; altrimenti non si fa niente. Il modello in tal caso è quello Turnstile. Il conto del numero di indirizzi IP distinti che stanno correntemente usando il medesimo link può essere svolto determinando il numero di, non uguali a zero, ogni volta. 3.4 Principi matematici base Dopo questa breve descrizione sul principio di funzionamento dei due modelli applicabili ai data streams si passa adesso ad una discussione più tecnica sulla matematica e sugli algoritmi applicabili ai modelli di data streams. Si pone l attenzione su due tecniche: il campionamento dei dati (Sampling) e le proiezioni randomiche (Random projection), le quali saranno oggetto di approfondimento in quanto alla base dell algoritmo utilizzato in fase di tesi. 45

46 3.4.1 Sampling Sono stati proposti diversi metodi di campionamento: domain sampling, universe sampling, reservoir sampling, distinct sampling, ecc Algoritmi di campionamento sono conosciuti per: Trovare il numero di elementi distinti nel Cash Register data stream []; Trovare i quantili su di un Cash Register data stream []; Trovare gli elementi più frequenti in un Cash Register data stream []. Ognuno di questi problemi ha diverse applicazioni, per esempio lo sniffing di pacchetti IP su cui si possono effettuare diverse statistiche e rispondere a determinate queries. Ci sono però due difficoltà con il campionamento per i problemi dei data streams. Primo il campionamento non è un potente strumento per alcuni casi. Per eseguire sofisticate analisi sono necessari molti campioni. Secondo, nel modello Turnstile il metodo del campionamento non funziona: nel flusso di dati, se un campione viene cancellato, sarebbe impossibile ricampionare quell elemento nel passato, perdendo quindi un dato che potrebbe essere importante Random projection Questo approccio si basa sulla riduzione della dimensionalità, usando proiezioni su vettori random. Questi ultimi sono generati dall efficiente calcolo dello spazio di variabili random. Tali proiezioni sono chiamate sketches e tipicamente funzionano con il modello Turnstile. Gli sketches con differenti distribuzioni stabili sono utili per la stima di varie norme sui data streams. In particolare strutture tipo sketch che utilizzano variabili random Gaussiane producono una buona stima della norma dei data streams, usando distribuzioni di Cauchy si ottiene una buona stima della norma. Tale metodo si dimostra utile anche per il calcolo di altre funzioni: 46

47 Usando sketch, per, si può stimare il numero di elementi distinti in un modello Turnsile di data stream ; Usando varianti di sketch modello Turnstile; si possono stimare quantili in qualsiasi momento nel Usando varianti di sketch e altre tecniche, si possono dinamicamente tracciare gli elementi più frequenti, wavelets e istogrammi nel modello Turnstile; Usando sketch, si possono stimare query self-join di un database. Questo si rivela utile per la stima di inner product di vettori, che in generale risulta difficile, ma può essere stimato con grande precisione se l inner product è ampio. Ci sono molte variazioni delle proiezioni random come Random subset sums, counting sketches e anche Bloom filters. 47

48 Capitolo 4 Count-Min Sketch Si introduce in questo capitolo la struttura dati a spazio sub-lineare, implementata e testata nel lavoro di tesi, Count-Min Sketch per la sintesi dei data streams. Tale sketch permette queries fondamentali quali point, range e inner product queries con possibilità di risposta molto veloce; è anche possibile applicare tale struttura dati per risolvere importanti problemi come la ricerca di quantili ed elementi frequenti. Il limite di tempo e spazio entro i quali il Count-Min Sketch riesce a risolvere tali problemi è tipicamente compreso tra e. 4.1 Introduzione Si consideri un vettore rappresentato in maniera incrementale. Questo vettore ha dimensione, e il suo stato corrente al tempo è. Inizialmente il vettore è pari a zero, cioè per ogni. Gli updates al vettore sono rappresentati come stream di coppie. Il -esimo update sarà, cioè (modello cash register ), e (modello turnstile ) per ogni. Ad ogni tempo verrà effettuata una query per il calcolo di certe funzioni di interesse su. Tale setup iniziale è lo scenario tipico dei data stream come si è discusso in precedenza. Per soddisfare i requisiti di un modello data stream lo spazio usato dall algoritmo dovrebbe essere piccolo, al massimo polilogaritmico in, esplicitamente lo spazio usato per rappresentare. Dal momento che lo spazio si presenta sub-lineare nei dati e nell input, la struttura dati usata dall algoritmo per rappresentare il flusso dati in input è una sintesi sketch di quest ultimo; a causa di questa compressione non sarà possibile un calcolo esatto delle funzioni su, ma sarà probabilmente necessaria qualche approssimazione. Processare un update dovrebbe essere semplice e veloce, così come rispondere ad una query dovrebbe essere veloce e garantire una certa accuratezza. Tale 48

49 garanzia di accuratezza verrà fatta in termini di determinati parametri specificati dall utente, e, cioè l errore nel rispondere ad una query sarà all interno di un fattore con una probabilità. Lo spazio e il tempo di update dipenderanno conseguentemente da tali parametri. Come già accennato nel capitolo precedente molte strutture dati tipo sketch sono state proposte nel contesto dei data streams. Quantità per cui efficienti sketches sono stati progettati includono le norme e di vettori, il numero di elementi differenti in una sequenza, relazioni join e self-join, ecc Tipicamente gli sketches sono funzioni lineari dei loro input, e possono essere considerati come proiezioni di un sottostante vettore rappresentando i dati come matrici di proiezioni scelte casualmente. Benché tali strutture si siano dimostrate potenti, bisogna sottolinearne alcuni difetti: Sebbene gli sketches usino uno spazio piccolo, quest ultimo avrà un fattore moltiplicativo dell ordine. Questo è scoraggiante perché per o già si dimostra un alto costo in termini di spazio e spesso di tempo per il calcolo di funzioni e il processo di update. Insomma per risultati accurati lo spazio richiesto potrebbe essere intollerabile. Molti sketches richiedono un tempo lineare nelle dimensioni dello sketch per ogni update dei sottostanti dati. Tipicamente gli sketches occupano da pochi kylobytes fino a qualche megabytes in termini di memoria e processare così tanti dati può severamente limitare la velocità di update. Gli sketches sono tipicamente costruiti usando hash functions con grosse garanzie di indipendenza, come l indipendenza p-wise, che può essere difficile da calcolare soprattutto per l implementazione in hardware. Molti sketches descritti in letteratura sono adatti al calcolo di un singolo prespecificato aggregato. Invece nei data streams vengono monitorati molteplici aggregati sullo stesso stream e ciò porterebbe all uso di più sketches costituendo un overhead proibitivo. 49

50 Questi svantaggi limiterebbero l uso di molti algoritmi, conosciuti nell ambito dei data streams, a poche applicazioni. Ciò che viene proposto in [15] è una nuova struttura dati basata su sketches denominata Count-Min Sketch. I vantaggi che se ne traggono sono notevoli: Spazio usato proporzionale a ; Tempo di update significativamente sub-lineare nelle dimensioni dello skech; Sono richieste solo funzioni di hashing pairwise indipendent che sono facili da costruire; Questi sketches possono essere usati per differenti queries e molteplici applicazioni; Tutte le costanti sono esplicite e di piccole dimensioni; Migliorano i limiti di spazio da un fattore, richiesto per altre strutture dello stesso tipo, a un fattore di e quelli di tempo da un fattore ad fattore 1, che è significativo. 4.2 Famiglie di funzioni hash universali Per trattare il concetto di funzioni hash si parte da quello di tabella hash. In informatica una hash table, detta anche hash map, è una struttura dati usata per mettere in corrispondenza una data chiave con un dato valore. Viene usata per l'implementazione di strutture dati astratte associative. Può usare qualsiasi tipo di dato come indice e tutte le operazioni si possono fare in tempo circa costante T(n) = (O(1)). L'hash table è molto utilizzata nei metodi di ricerca nominati Hashing. L'hashing è un'estensione della ricerca indicizzata da chiavi che gestisce problemi di ricerca nei quali le chiavi di ricerca non presentano queste proprietà. Una ricerca basata su hashing è completamente diversa da una 50

51 basata su confronti: invece che spostarci nella struttura data in funzione dell'esito dei confronti tra chiavi, cerchiamo di accedere agli elementi nella tabella in modo diretto tramite operazioni aritmetiche che trasformano le chiavi in indirizzi della tabella. Esistono vari tipi di algoritmi di hashing. L'hashing è un problema classico dell'informatica; molti algoritmi sono stati proposti, studiati a fondo e impiegati in pratica. Il primo passo per realizzare algoritmi di ricerca tramite hashing è quello di determinare la funzione di hash: con il metodo hash infatti un elemento con chiave k viene memorizzato nella tabella in posizione h(k) dove la funzione h() è appunto detta funzione hash. Lo scopo della funzione hash è di definire una corrispondenza tra l universo U delle chiavi e le posizioni di una tabella hash h : U. Necessariamente la funzione hash non può essere iniettiva, ovvero due chiavi distinte possono produrre lo stesso valore hash, quando questo accade si dice che si ha una collisione. E possibile che la scelta di chiavi sia tale da avere un elevato numero di collisioni. Il caso peggiore è che tutte le chiavi collidano in un unico valore hash; in questo caso le prestazioni delle operazioni con tabelle hash, dove la maggior parte delle chiavi hanno un unico valore hash, peggiorano fino a Metodo della Funzione Universale L idea di base è di scegliere per ogni chiave una funzione hash casualmente da una famiglia di funzioni che rispettano specifiche proprietà, in questo modo, per qualsiasi insieme di chiavi, si possono avere molte collisioni solo a causa del generatore pseudo casuale, ma si può rendere piccola la probabilità di questo evento. Sia H un insieme finito di funzioni hash che vanno da U in. H è un insieme universale se per ogni coppia di chiavi distinte x, y U, il numero di funzioni hash h H per cui h(x) = h(y) è esattamente H / m. Ciò equivale a dire che con una h scelta a caso la probabilità che h(x) = h(y) è 1 / m. Infatti si consideri una coppia x, y e la prima h in H, si conti 1 se c e una collisione e 0 se non c e. Si faccia lo stesso con la seconda h e così via. Alla fine il totale cumulato delle collisioni sarà H / m e il numero di funzioni provate H. 51

52 Si ha pertanto una probabilità pari a 1 / m di estrarre una h che generi una collisione Collisioni improbabili Teorema: se si usa un insieme universale di funzioni per determinare i valori hash di n chiavi su una tabella di dimensione m se n m allora il numero medio di collisioni per ogni chiave è < 1 Dimostrazione: per ogni coppia y, z di chiavi sia c y,z una variabile casuale che è 1 in caso di collisione (h(y) = h(z)) e 0 altrimenti per definizione di insieme universale si ha che il valore medio delle collisioni per ogni coppia di chiavi è E[c y,z ] = 1 / m sia C x il numero totale delle collisioni che coinvolgono la chiave x in una tabella hash T di dimensione m contenente n chiavi allora il valore atteso di C x sarà la somma dei valori attesi di collisione fra le coppie di chiavi x e y per ogni chiave y già presente in tabella Come costruire un insieme universale di funzioni hash Si scelga un numero primo p che sia maggiore di ogni possibile chiave k, cioè si assume con. Per ogni coppia di interi (a,b) tali che 1 a < p e 0 b < p si definisca una funzione hash. La famiglia di funzioni: 52

53 è universale. 4.3 Count-Min Sketches Si introduce ora la struttura dati denominata Count-Min Sketch, nome derivante dalle due operazioni basilari usate per rispondere alle point queries, il conto prima e il calcolo del minimo dopo. Struttura dati. Il Count-Min Sketch con i parametri bidimensionale di contatori di larghezza w e profondità d: è rappresentato da un array, con: e. Il vettore degli ingressi è inizializzato con tutti i valori a zero. Addizionalmente d funzioni di hashing sono scelte uniformemente a random da una famiglia pairwise-independent. Così si mantiene un totale di tabelle hash, con un totale di celle hash. Figura Array di celle hash Procedura di update. Quando una coppia arriva in update, significa che l elemento è aggiornato di una quantità, quindi è aggiunto come una unità al conteggio in ogni riga; il contatore è determinato da. Formalmente, 53

54 Cercando di essere più specifici: si applica l hash function di ogni elemento proveniente dallo stream di dati, e si aggiunge il conteggio dell elemento ad ognuna delle corrispondenti posizioni nelle differenti hash tables. A causa delle collisioni i conteggi delle hash tables non corrisponderanno esattamente al conteggio di ogni elemento proveniente dallo stream. Ci sarà una sovrastima per conteggi interi positivi, mentre potrà esserci sia una sovrastima che una sottostima per conteggi positivi e negativi (cancellazioni). Lo spazio usato dal Count_Min Sketch sarà un array di dimensioni, che comprende parole e funzioni di hashing, ognuna delle quali può essere immagazzinata usando due parole (discorso valido per pairwise-independent hash function). La procedura appena descritta è rappresentata in figura Figura Ogni elemento è mappato su di una cella in ogni riga dell array di contatori: quando un update di count dell elemento arriva, è aggiunto ad ognuna di queste celle. 4.4 Procedure di stima Point query La risposta a (point query) è data da. Teorema 1. La stima ha le seguenti garanzie: ; e, con probabilità al minimo,. 54

55 Dimostrazione. Si introducono le variabili indicatori, che valgono 1 se e 0 altrimenti. Dalla indipendenza pairwise delle funzioni di hashing si avrà: Si definisce la variabile (casuale sulle scelte di ) essere Dal momento che tutte le sono positive in questo caso, è una variabile non negativa. Per costruzione. Quindi chiaramente,. Per altre direzioni, si osserva che per l indipendenza pairwise di Dall inegualianza di Markov si ha che:, e la linearità dell expectation. Con ciò si vuole dire che, nel caso di contatori interi positivi, il minimo di ognuna delle possibilità fornisce un limite (della norma più stretto con probabilità al minimo. In questo caso, se le frequenze di elementi differenti sono, la frequenza stimata dell elemento giace tra e. Questo è minore del limite massimo di un fattore. Applicando l inegualianza di Markov, è chiaro che la probabilità di violare il limite per un dato ingresso è. La probabilità che esso sia violato da tutti i ingressi è al massimo. 55

56 Il tempo per produrre la stima è dal momento che trovare il minimo conteggio può essere fatto in tempo lineare; lo stesso limite di tempo è valido anche per la procedura di update. Lo spazio usato sarà pari a. Per completezza si riportano altre procedure di stima proprie del Count-Min Sketch, ma che non sono state implementate in fase di tesi. Procedura di stima. Questa volta la risposta a è data da. Teorema 2. Con probabilità, Dimostrazione. Si osservi che che ogni conteggio sia al di sotto di, e quindi la probabilità è meno di. Applicando i limiti di Chernoff si nota che la mediana di copia di questa procedura sia sbagliata è minore di. Il tempo per produrre la stima è e lo spazio usato è parole Inner Product Query Procedura di stima. Si pone. La stima per vettori non negativi e è. Teorema 3. e con probabilità,. 56

57 Dimostrazione. Chiaramente per vettori non negativi. Per l indipendenza pairwise di, Quindi per l inegualianza di Markov, richiesto. Lo spazio e il tempo per produrre la stima è, come. Gli aggiornamenti sono eseguiti in tempo Range Query Si definisce il vettore di dimensione tale che, e altrimenti. La query può essere semplicemente riformulata come. Questo metodo ha però due svantaggi: primo la garanzia dell errore in termini e pertanto le somme ad ampio range hanno una garanzia d errore che cresce linearmente con l ampiezza dell intervallo; e secondo il costo temporale per calcolare direttamente lo sketch per dipende linearmente dalla larghezza del range,. Infatti è chiaro che calcolare range di somme in questo modo usando tali sketches non è tanto differente dal calcolare point queries per ogni elemento nel nell intervallo, e sommare le stime. Per evitare la complessità di calcolo si potrebbero utilizzare ranges dinamici: un range dinamico è un intervallo nella forma per dati parametri e. Procedura di stima. Si prendono Count-Min Sketches per rispondere a range queries in modo approssimato. Ogni range query può essere ridotta ad un massimo 57

58 di dynamic range queries, le quali a turno possono essere ulteriormente ridotta ad una singola point query. Ogni punto nel range è membro di ranges dinamici, uno per ogni nell intervallo. Uno sketch è preso per ogni insieme di ranges dinamici di lunghezza, e aggiorna ognuno di questi per tutti gli update che arrivano. Quindi data una range query, si calcolano al massimo ranges dinamici che canonicamente ricoprono l intero intervallo e si pone che la stima sia data dalla somma di molte point queries. Si consideri come la risposta alla query e la stima ottenuta usando la procedura descritta sopra. Teorema 4. e con probabilità al minimo Dimostrazione. Applicando l inegualianza del Teorema 1,. Si consideri ogni stimatore utilizzato per formare ; l expectation dell errore additivo per ognuno di questi sarà, per la linearità dell expectation degli errori di ogni stima puntuale. Applicando l inegualianza di Markov, la probabilità che questo errore additivo sia maggiore di per ogni stima è minore di ; da qui per tutte le stime la probabilità sarà al massimo. Il tempo di produrre una stima o per eseguire un update è. Lo spazio usato sarà. 58

59 Capitolo 5 Implementazione e test dell algoritmo Count-Min Sketch 5.1 Implementazione dell algoritmo L algoritmo che implementa il Count-Min Sketch ed il suo funzionamento è stato scritto in linguaggio c. Come già detto nel precedente capitolo il Count-Mn Sketch con i parametri è rappresentato da un array bi-dimensionale di contatori che avrà larghezza w e profondità. Ogni ingresso nell array sarà inizialmente a zero. Inoltre funzioni di hashing saranno scelte casualmente da una famiglia pairwise-independent Inizializzazione I passi per l inizializzazione sono stati i seguenti: Creazione di un array di dimensioni con valori iniziali tutti a zero: è stata necessaria, in tal caso, una allocazione dinamica della memoria in quanto e non sono note senza i parametri (l accuratezza che si vuole ottenere) e (la certezza con cui si raggiunge l accuratezza), immessi dall utente; ; ; Allocazione della memoria per le funzioni di hashing e inizializzazione dei semi con numeri random. 59

60 5.1.2 Update La procedura di aggiornamento consta delle seguenti operazioni: Calcolo delle funzioni di hashing per ogni ingresso: la funzione utilizzata ritorna l hash di un valore attraverso l uso di semi ed una successiva operazione di modulo a 32 bit. È prevista un ulteriore operazione di modulo perché il dominio di tale funzione venga ristretto da (dimensioni dell universo ) a (larghezza dell array); Per inserire un elemento nel Count-Min Sketch hash function prese uniformemente a random sono usate per determinare quale contatore aggiornare. Per ogni riga il contatore è incrementato di uno. La procedura per cancellare un elemento è simile: per ogni riga il contatore è decrementato di uno Query La procedura di query è descritta come: Calcolo del valore di hash dell elemento inserito (il numero della colonna); Calcolo del minimo valore sulle celle nella colonna. 5.2 Verifica di funzionamento Per verificare la correttezza e il funzionamento dell algoritmo è stato necessario generare numeri pseudo-random, caricarli all interno del Count-Min Sketch come stream in input e impostare i parametri di errore e probabilità. Si confronterà quindi la stima sulla molteplicità di un determinato numero restituita dal Count-Min Sketch con la reale occorrenza di quel numero. Perché l algoritmo funzioni in modo corretto sarà opportuno che: 60

61 Dati l occorrenza reale di un numero in posizione, e la stima restituita dal Count-Min Sketch: o o con probabilità al minimo, cioè con. Quindi, come anche dimostrato nel capitolo precedente, nella risposta alla query del Count- Min Sketch sarà presente una sovrastima che supererà l occorrenza reale del numero richiesto di una quantità pari al prodotto dell errore, passato in input, e la cardinalità dell insieme dei numeri in ingresso al Count-Min Sketch con probabilità minore o uguale a. In particolare è stata scelta una distribuzione di numeri uniformemente distribuiti in un intervallo compreso tra e. Si distingue quindi tra dominio (cioè quanti dati diversi riceve il Cout-Min Sketch) e molteplicità dei dati in ingresso (ciò che interessa ai fini della query). Il dominio dovrà essere necessariamente maggiore della profondità del Count-Min Sketch e la molteplicità farà si che ogni dato si presenti una o più volte. Il dominio non è nient altro che l intervallo sopra citato e per quanto riguarda la molteplicità è stato scelto di generare numeri casuali in venticinque passi, cioè la query è stato calcolata per 1000, 2960, 4920, 6880, 8840, 10800, 12760, 14720, 16680, 18640, 20600, 22560, 24520, 26480, 28440, 30400, 32360, 34320, 36280, 38240, 40200, 42160, 44120, e elementi. In figura viene mostrata una distribuzione uniforme di numeri random, per elementi. Si è scelto di riportare una finestra di 100 elementi per questioni di chiarezza. 61

62 Figura Distribuzione uniforme di numeri random in un dominio compreso tra 0 e Si riporta una tabella con i dati utilizzati per le prove. ε δ W d w d Di seguito vengono mostrati alcuni dei più significativi grafici in cui sono messe a confronto la stima effettuata dal Coun-Min Sketch e occorrenza reale del numero stesso. 62

63 Figura Stima del Count-Min Sketch per una distribuzione uniforme di numeri casuali in un intervallo compreso tra 0 e 1000 con e Figura Stima del Count-Min Sketch per una distribuzione uniforme di numeri casuali in un intervallo compreso tra 0 e 1000 con e 63

64 Figura Stima del Count-Min Sketch per una distribuzione uniforme di numeri casuali in un intervallo compreso tra 0 e 1000 con e Figura Stima del Count-Min Sketch per una distribuzione uniforme di numeri casuali in un intervallo compreso tra 0 e 1000 con e 64

65 Figura Stima del Count-Min Sketch per una distribuzione uniforme di numeri casuali in un intervallo compreso tra 0 e 1000 con e Figura Stima del Count-Min Sketch per una distribuzione uniforme di numeri casuali in un intervallo compreso tra 0 e 1000 con e 65

66 Figura Stima del Count-Min Sketch per una distribuzione uniforme di numeri casuali in un intervallo compreso tra 0 e 1000 con e Nei grafici riportati in figura 5.2.2, e per dimensioni del Count-Min Sketch pari a 84, 140 e 196 è presente una sovrastima del valore reale abbastanza importante (circa 25 volte in più). Ciò però non contraddice le previsioni e soprattutto si resta nei limiti imposti dal Teorema 1 dimostrato nel capitolo precedente. Aumentando le dimensioni del Count- Min Sketch (figure 5.2.5, e 5.2.7) si nota un deciso miglioramento della stima (si occupa quasi 1 KB di memoria). Nella figura non vi è sovrastima ma le dimensioni (più di 19 KB) superano quella che è la dimensionalità dei dati in ingresso. Si riporta infine un grafico in cui si mostra l andamento dell errore relativo medio con la dimensionalità dell insieme dei dati in input, al variare delle dimensioni del Count-Min Sketch. 66

67 Figura Errore relativo medio al variare delle dimensioni del Count-Min Sketch 67

68 Capitolo 6 La comunicazione TCP/IP e l attacco Denial Of Service 6.1 Come funziona il TCP/IP L'IP (Internet Protocol) è uno dei principali protocolli del livello internetworking del modello DOD/DARPA (o nel caso del modello OSI nel livello network), serve per la comunicazione su una rete a commutazione di pacchetto. Un indirizzo IP identifica ogni nodo della rete ed è sostanzialmente un identificativo numerico che viene utilizzato in combinazione con l'indirizzo MAC, questo per identificare in modo univoco ogni scheda di rete. Il TCP fornisce al protocollo FTP, che lavora a livello di applicazione, un canale di trasferimento dati che sia affidabile. Il TCP nell'invio dei pacchetti usa il meccanismo della Window. Una serie di pacchetti viene inviata seguendo delle regole ben precise: 1. Ad ogni pacchetto spedito il trasmettitore fa partire un timeout. 2. Il Ricevitore invia per ogni pacchetto ricevuto un ACK indicando la sequenza dell'ultimo pacchetto ricevuto correttamente. 3. Il trasmettitore considera quindi spediti tutti i pacchetti successivi. Questa è una tecnica molto importante perché affidabile e fa un buon uso della banda. Quando ci si collega con il browser a un server web, si stabilisce un collegamento (virtuale) a livello applicazione. Il livello di trasporto si occupa dei dettagli del livello applicazione. Al livello di trasporto il protocollo TCP mette in coda i messaggi delle applicazioni (browser e server) li trasmette sotto forma di pacchetti; il buon fine della spedizione è 68

69 attestato da una ricevuta di ritorno. Anche questo è un collegamento virtuale tra le due applicazioni, i cui dettagli sono demandati al livello di rete. Al livello di rete il protocollo IP decide quale strada seguire per trasmettere effettivamente i messaggi da un computer all altro. Un computer spedisce, l altro riceve, ma è un collegamento virtuale tra i due computer remoti, dei cui dettagli si occupa il livello di collegamento. Al livello di collegamento si decide come fare il trasferimento del messaggio per ogni singolo tratto del percorso: dal computer del browser al primo router, dal primo router al secondo, dal secondo al terzo e dal terzo al computer del server. Questo è un collegamento virtuale tra due computer (o router) adiacenti. I dettagli fisici sono lasciati all ultimo livello. Il livello fisico, che è l'ultimo, trasmette il messaggio sul cavo sotto forma di impulso elettrico. Questo è l unico livello in cui avviene una trasmissione effettiva. Per consentire queste comunicazioni, ad ogni singola macchina sulla rete è assegnato un indirizzo per ogni livello: Un indirizzo MAC per ogni scheda di rete (livello di collegamento), un indirizzo IP (livello di rete), un numero di porta (livello di trasporto)[17]. 6.2 Il protocollo TCP Definizione Transmission Control Protocol (TCP)[16] è un protocollo di livello di trasporto della suite di protocolli Internet. È definito nella RFC 793, e su di esso si appoggiano gran parte delle applicazioni Internet. Il TCP può essere classificato al livello trasporto (OSI level 4) del modello di riferimento OSI, e di solito è usato in combinazione con il protocollo di livello rete (OSI level 3) IP. La corrispondenza con il modello OSI non è perfetta, in quanto il TCP e l'ip nascono prima. La loro combinazione è indicata come TCP/IP e, alle volte, è erroneamente considerata un unico protocollo. Da qui, la difficoltà di una classificazione univoca per un protocollo che comprende, a pieno titolo, due livelli dello stack OSI (o pila ISO/OSI in italiano) 69

70 Il TCP è stato progettato per utilizzare i servizi del protocollo IP, che non offre alcuna garanzia in ordine alla consegna dei pacchetti, al ritardo, alla congestione, e costruire un canale di comunicazione affidabile tra due processi applicativi. Il canale di comunicazione è costituito da un flusso bidirezionale di byte. Inoltre, alcune funzionalità di TCP sono vitali per il buon funzionamento complessivo di una rete IP. Il TCP nacque nel 1970 come frutto del lavoro di un gruppo di ricerca del dipartimento di difesa statunitense. I suoi punti di forza sono l'alta affidabilità e robustezza. La sua popolarità si deve anche grazie ad una sua implementazione diffusa dalla Università di Berkeley, rilasciata in California sotto forma di sorgenti Caratteristiche principali Il servizio offerto da TCP è il trasporto di un flusso di byte bidirezionale tra due applicazioni in esecuzione su host differenti. Il protocollo permette alle due applicazioni di trasmettere contemporaneamente nelle due direzioni, quindi il servizio può essere considerato "Full Duplex" anche se non tutti i protocolli applicativi basati su TCP utilizzano questa possibilità. Il flusso di byte viene frazionato in blocchi per la trasmissione dall'applicazione a TCP (che normalmente è implementato all'interno del sistema operativo), per la trasmissione all'interno di segmenti TCP, per la consegna all'applicazione che lo riceve, ma questa divisione in blocchi non è per forza la stessa nei diversi passaggi. TCP è un protocollo orientato alla connessione, ovvero prima di poter trasmettere dati deve stabilire la comunicazione, negoziando una connessione tra mittente e destinatario, che viene esplicitamente chiusa quando non più necessaria. Esso quindi ha le funzionalità per creare, mantenere e chiudere una connessione. TCP garantisce che i dati trasmessi, se giungono a destinazione, lo facciano in ordine e una volta sola ("at most once"). Più formalmente, il protocollo fornisce ai livelli superiori un servizio equivalente ad una connessione fisica diretta che trasporta un flusso di byte. 70

71 Questo è realizzato attraverso vari meccanismi di acknowledgment e di ritrasmissione su timeout. TCP possiede funzionalità di controllo di flusso e di controllo della congestione sulla connessione, attraverso il meccanismo della finestra scorrevole. Questo permette di ottimizzare l'utilizzo della rete anche in caso di congestione, e di condividere equamente la capacità disponibile tra diverse sessioni TCP attive su un collegamento. TCP fornisce un servizio di multiplazione delle connessioni su un host, attraverso il meccanismo delle porte L header TCP La PDU di TCP è detta segmento. Ciascun segmento viene normalmente imbustato in un pacchetto IP, ed è costituito dall'intestazione (header) TCP e da un carico utile (in inglese payload), ovvero dati di livello applicativo. I dati contenuti nell'intestazione costituiscono un canale di comunicazione tra le due entità TCP, che viene utilizzato per realizzare le funzionalità dello strato di trasporto e non è accessibile agli strati dei livelli superiori. Un segmento TCP è così strutturato: 71

72 Source port [16 bit] - Identifica il numero di porta sull'host mittente associato alla connessione TCP. Destination port [16 bit] - Identifica il numero di porta sull'host destinatario associato alla connessione TCP. Sequence number [32 bit] - Numero di sequenza, indica lo scostamento (espresso in byte) dell'inizio del segmento TCP all'interno del flusso completo, a partire dall' Initial Sequence Number (ISN), negoziato all'apertura della connessione. Acknowledgment number [32 bit] - Numero di riscontro, ha significato solo se il flag ACK è settato a 1, e conferma la ricezione di una parte del flusso di dati nella direzione opposta, indicando il valore del prossimo Sequence number che l'host mittente del segmento TCP si aspetta di ricevere. Header Length [4 bit] - Indica la lunghezza (in word da 32 bit) dell'header del segmento TCP; tale lunghezza può variare da 5 word (20 byte) a 15 word (60 byte) a seconda della presenza e della lunghezza del campo facoltativo Options. Reserved [6 bit] - Bit non utilizzati e predisposti per sviluppi futuri del protocollo. Flags [6 bit] - Bit utilizzati per il controllo del protocollo: o o o o o o URG - se settato a 1 indica che nel flusso sono presenti dati urgenti alla posizione (offset) indicata dal campo Urgent pointer; ACK - se settato a 1 indica che il campo Acknowledgment number è valido; PSH - se settato a 1 indica che i dati in arrivo non devono essere bufferizzati ma passati subito ai livelli superiori dell'applicazione; RST - se settato a 1 indica che la connessione non è valida; viene utilizzato in caso di grave errore; SYN - se settato a 1 indica che l'host mittente del segmento vuole aprire una connessione TCP con l'host destinatario e specifica nel campo Sequence number il valore dell' Initial Sequence Number (ISN); ha lo scopo di sincronizzare i numeri di sequenza dei due host. L'host che ha inviato il SYN deve attendere dall'host remoto un pacchetto SYN/ACK. FIN - se settato a 1 indica che l'host mittente del segmento vuole chiudere la connessione TCP aperta con l'host destinatario. Il mittente attende la conferma dal ricevente (con un FIN-ACK). A questo punto la connessione è ritenuta chiusa per metà: l'host che ha inviato FIN non potrà più inviare dati, 72

73 mentre l'altro host ha il canale di comunicazione ancora disponibile. Quando anche l'altro host invierà il pacchetto con FIN impostato la connessione, dopo il relativo FIN-ACK, sarà considerata completamente chiusa. Advertise Window [16 bit] - Indica la dimensione della finestra di ricezione dell'host mittente, cioè il numero di byte che il mittente è in grado di accettare a partire da quello specificato dall'acknowledgment number. Checksum [16 bit] - Campo di controllo utilizzato per la verifica della validità del segmento. È ottenuto facendo il complemento a 1 della somma complemento a uno a 16 bit dell'intero header TCP (con il campo checksum messo a zero) con l'aggiunta di uno pseudo header composto da: indirizzo IP sorgente(32bit),indirizzo IP destinazione(32bit), un byte di zeri, un byte che indica il protocollo e due byte che indicano la lunghezza del pacchetto TCP (header + dati). Urgent pointer [16 bit] - Puntatore a dato urgente, ha significato solo se il flag URG è settato a 1 ed indica lo scostamento in byte a partire dal Sequence number del byte di dati urgenti all'interno del flusso. Options - Opzioni (facoltative) per usi del protocollo avanzati Apertura di una connessione - Three-way handshake La procedura utilizzata per instaurare in modo affidabile una connessione TCP tra due host è chiamata three-way handshake (stretta di mano a 3 vie), indicando la necessità di scambiare 3 messaggi tra host mittente e host ricevente affinché la connessione sia creata correttamente. Consideriamo ad esempio che l'host A intenda aprire una connessione TCP con l'host B; i passi da seguire quindi sono: 1. A invia un segmento SYN a B - il flag SYN è impostato a 1 e il campo Sequence number contiene il valore x che specifica l' Initial Sequence Number di A; 2. B invia un segmento SYN/ACK ad A - i flag SYN e ACK sono impostati a 1, il campo Sequence number contiene il valore y che specifica l' Initial Sequence 73

74 Number di B e il campo Acknowledgment number contiene il valore x+1 confermando la ricezione del ISN di A; 3. A invia un segmento ACK a B - il campo Acknowledgment number contiene il valore y+1 confermando la ricezione del ISN di B. Figura Three-way handshake Il terzo segmento non sarebbe, idealmente, necessario per l'apertura della connessione in quanto già dopo la ricezione da parte di A del secondo segmento, entrambi gli host hanno espresso la loro disponibilità all'apertura della connessione. Tuttavia esso risulta necessario al fine di permettere anche all'host B una stima del timeout iniziale, come tempo intercorso tra l'invio di un segmento e la ricezione del corrispondente ACK. Il flag SYN risulta utile nell'implementazione pratica del protocollo, e nella sua analisi da parte dei firewall: nel traffico TCP i segmenti SYN stabiliscono nuove connessioni, mentre quelli con il flag non attivo appartengono a connessioni già instaurate. I segmenti utilizzati durante l'handshake sono solitamente 'solo header', ossia hanno il campo Data vuoto essendo questa una fase di sincronizzazione tra i due host e non di scambio di dati. 74

75 6.2.5 Chiusura di una connessione - Chiusura a 4 vie Dopo che è stata stabilita, una connessione TCP non è considerata una singola connessione bidirezionale, ma piuttosto come l'affasciamento di due connessioni monodirezionali. Pertanto, ognuna delle parti deve terminare la sua connessione, e possono esistere anche connessioni aperte a metà, in cui solo uno dei due terminali ha chiuso la connessione e non può più trasmettere, ma può (e deve) ricevere i dati dall'altro terminale. Di conseguenza, la chiusura della connessione si può effettuare in due modi: con un handshake a tre vie, in cui le due parti chiudono contemporaneamente le rispettive connessioni, o con uno a quattro vie, in cui le due connessioni vengono chiuse in tempi diversi. L'handshake a 3 vie è omologo a quello usato per l'apertura della connessione, con la differenza che il flag utilizzato è il FIN invece del SYN. Un terminale invia un pacchetto con la richiesta FIN, l'altro risponde con un FIN + ACK, ed infine il primo manda l'ultimo ACK, e l'intera connessione viene terminata. L'handshake a 4 vie invece viene utilizzato quando la disconnessione non è contemporanea tra i due terminali in comunicazione. In questo caso uno dei due terminali invia la richiesta di FIN, e attende l'ack. L'altro terminale farà poi altrettanto, generando quindi un totale di 4 pacchetti. Figura Chiusura a 4 vie 75

76 6.3 Internet Protocol L'Internet Protocol (IP)[19] è un protocollo di rete a pacchetto, non connesso; secondo la classificazione ISO/OSI è di livello rete. La versione correntemente usata del protocollo IP è detta anche IPv4 per distinguerla dalla più recente IPv6, nata dall'esigenza di gestire meglio il crescente numero di computer connessi ad Internet. IP è un protocollo di interconnessione di reti (Inter-Networking Protocol), nato per interconnettere reti eterogenee per tecnologia, prestazioni, gestione. I protocolli di trasporto utilizzati su IP sono soprattutto TCP e UDP Il pacchetto IPv4 L'header del pacchetto IPv4 consiste in 13 campi di cui 1 opzionale (segnalato nello schema con sfondo rosso) e chiamato con l'ovvio nome di Options. I campi sono inseriti col byte più significativo messo per primo (notazione big-endian) e all'interno dei singoli byte il bit più significativo è il primo (quello di indice 0). Versione [4 bit] - Indica la versione del datagramma IP: per IPv4, ha valore 4 (da qui il nome IPv4). Internet Header Length (IHL) [4 bit] - Indica la lunghezza (in word da 32 bit) dell'header del datagramma IP ovvero l'offset del campo dati; tale lunghezza può variare da 5 word (20 byte) a 15 word (60 byte) a seconda della presenza e della lunghezza del campo facoltativo Options; 76

77 Type of Service (TOS) [8 bit] - Nelle specifiche iniziali del protocollo (RFC 791), questi bit servivano all'host mittente per specificare il modo e in particolare la precedenza con cui l'host ricevente doveva trattare il datagramma: o o o o o bit 0-2 : Precedenza bit 3: Latenza (0 = normale, 1 = bassa) bit 4: Throughput (0 = normale, 1 = alto) bit 5: Affidabilità (0 = normale, 1 = alta) bit 6-7: Riservati per usi futuri ad esempio un host poteva scegliere una bassa latenza, mentre un altro preferire un'alta affidabilità. Nella pratica questo uso del campo TOS non ha preso largamente piede. Dopo molte sperimentazioni e ricerche, recentemente questi 8 bit sono stati ridefiniti ed hanno la funzione di Differentiated services (DiffServ nell'ietf e Explicit Congestion Notification (ECN) codepoints (vedi RFC 3168), necessari per le nuove tecnologie basate sullo streaming dei dati in tempo reale, come per il esempio il Voice over IP (VoIP) usato per lo scambio interattivo dei dati vocali. Total Length [16 bit] - Indica la dimensione (in byte) dell'intero datagramma, comprendendo header e dati; tale lunghezza può variare da un minimo di 20 byte (header minimo e campo dati vuoto) ad un massimo di byte. In ogni momento, ad ogni host è richiesto di essere in grado di gestire datagrammi aventi una dimensione minima di 576 byte mentre sono autorizzati, se necessario, a frammentare datagrammi di dimensione maggiore. Identification [16 bit] - Utilizzato, come da specifiche iniziali, per identificare in modo univoco i vari frammenti in cui può essere stato "spezzato" un datagramma IP. Alcune sperimentazioni successive hanno però suggerito di utilizzare questo campo per altri scopi, come aggiungere la funzionalità di tracciamento dei pacchetti. Flags [3 bit] - Bit utilizzati per il controllo del protocollo e della frammentazione dei datagrammi: o Reserved - sempre settato a 0. Come pesce d'aprile, in RFC 3514 si è proposto di utilizzarlo come "Evil bit". 77

78 o o DF (Don't Fragment) - se settato a 1 indica che il datagramma non deve essere frammentato; se tale datagramma non può essere inoltrato da un host senza essere frammentato, viene semplicemente scartato. Questo può risultare utile per "ispezionare" la capacità di gestione dei vari host del percorso di routing. MF (More Fragments) - se settato a 0 indica che il datagramma è l'ultimo frammento o il solo frammento del datagramma originario, pertanto tutti gli altri suoi frammenti hanno il bit MF settato a 1. Naturalmente, questo bit sarà sempre 0 anche in tutti i datagrammi che non sono stati frammentati. Fragment Offset [13 bit] - Indica l'offset (misurato in blocchi di 8 byte) di un particolare frammento relativamente all'inizio del datagramma IP originale: il primo frammento ha offset 0. L'offset massimo risulta pertanto pari a byte che, includendo l'header, potrebbe eccedere la dimensione massima di byte di un datagramma IP. Time To Live (TTL) [8 bit] - Indica il tempo di vita (time to live) del datagramma, necessario per evitarne la persistenza indefinita sulla rete nel caso in cui non si riesca a recapitarlo al destinatario. Storicamente il TTL misurava i "secondi di vita" del datagramma, mentre ora esso misura il numero di "salti" da nodo a nodo della rete: ogni router che riceve il datagramma prima di inoltrarlo ne decrementa il TTL (modificando di conseguenza anche il campo Header Checksum), quando questo arriva a zero il datagramma non viene più inoltrato ma scartato. Tipicamente, quando un datagramma viene scartato per esaurimento del TTL, viene automaticamente inviato un messaggio ICMP al mittente del datagramma, specificando il codice di Richiesta scaduta; la ricezione di questo messaggio ICMP è alla base del meccanismo di traceroute. Protocol [8 bit] - Indica il codice associato al protocollo utilizzato nel campo dati del datagramma IP: per esempio al protocollo TCP è associato il codice 6, ad UDP il codice 17, mentre ad IPv6 è associato il codice 41. La lista dei codici dei vari protocolli, inizialmente definita in RFC 790, è mantenuta e gestita dalla Internet Assigned Numbers Authority. Header Checksum [16 bit] - È un campo usato per il controllo degli errori dell'header. Ad ogni hop, il checksum viene ricalcolato (secondo la definizione data 78

79 in RFC 791) e confrontato con il valore di questo campo: se non c'è corrispondenza il pacchetto viene scartato. È da notare che non viene effettuato alcun controllo sulla presenza di errori nel campo Data deputandolo ai livelli superiori. Source address [32 bit] - Indica l'indirizzo IP associato all'host del mittente del datagramma. Da notare che questo indirizzo potrebbe non essere quello del "vero" mittente nel caso di traduzioni mediante NAT. Infatti, qualora un host intermedio effettui questa traduzione, sostituisce l'indirizzo del mittente con uno proprio, procurandosi poi di ripristinare l'indirizzo originario su tutti i messaggi di risposta che gli arrivano destinati al mittente originario. Destination address [32 bit] - Indica l'indirizzo IP associato all'host del destinatario del datagramma e segue le medesime regole del campo Source address. Options - Opzioni (facoltative e non molto usate) per usi più specifici del protocollo. Si ricorda che il valore del campo IHL deve essere sufficientemente grande da includere anche tutte le opzioni e, nel caso queste siano più corte di una word, il padding necessario a completare i 32 bit. Inoltre, nel caso in cui la lista di opzioni non coincida con la filne dell'header, occorre aggiungere in coda ad essa un marcatore EOL (End of Options List). C'è da notare infine che, potendo causare problemi di sicurezza, l'uso delle opzioni LSSR e SSRR (Loose e Strict Source and Record Route) è scoraggiato e molti router bloccano i datagrammi che contengono queste opzioni Indirizzamento IPv4 L'indirizzo IPv4 è formato da 32 bit, esso è univoco sulla rete di cui fa parte. Tale indirizzo, inoltre, non va assegnato all'host, ma alle connessioni fisiche alla rete che l'host possiede (nel cast di host multicollegati o di dispositivi di rete). Si è però verificato che i primi paesi in cui si è diffuso Internet e all'interno di essi i primi provider, si sono "accapparrati" un numero di Ip proporzionalmente sbilanciato. Gli ultimi provider hanno pertanto dovuto ricorrere ad un sistema per ovviare alla scarsità degli IP a loro attribuiti. 79

80 Hanno pertanto considerato gli utenti a loro connessi di una intera città come un'unica LAN e pertanto tutti dotati dello stesso IP. Concettualmente l'indirizzo IP si compone di due parti: 1. identificatore di rete e precisamente della sottorete 2. identificatore di host. Per semplificarne la lettura, ogni indirizzo IP viene descritto con 4 numeri in base decimale, in modo che ognuno rappresenti un byte (il valore di un byte varia da 0 a 255 quando lo consideriamo in base dieci), separati dal simbolo "punto"; un esempio di indirizzo IPv4 è [18]. 6.4 Denial of Service Un attacco Denial of Service (DOS)[20] ha essenzialmente lo scopo di mettere fuori uso o completamente negare un servizio agli utenti legittimi. Un servizio può essere inteso come una o più componenti di un sistema informativo quali banda Internet, sistemi hardware e software. In quest'ottica l'accattante potrebbe voler saturare tutta la banda disponibile ad un sito, provocare il crash di un server, creare malfunzionamenti in un software. Gli attacchi DOS sono basati principalmente su exploit relativi a debolezze di progettazione e/o implementazione di un sistema hardware e software. Un esempio può essere il protocollo TCP/IP di cui si è appena discusso che fu progettato per essere usato in una comunità fidata e che adesso, con le sue debolezze, è alla base di molti tipi di attacchi DOS. Per avere un'idea della potenza e dei danni provocati da un attacco DOS possiamo citare alcuni esempi: 1996: Panyx Internet Provider. Si tratta di uno dei primi attacchi DOS. L'attacco mise in crisi il sistema per più di una settimana rendendo impossibile l'uso del servizio a circa 7000 utenti. 1999: Yahoo, Inc. Uno degli ultimi attacchi DOS che ha provocato l'interruzione per quasi 12 ore di un servizio usato da milioni di utenti ogni giorno. Durante 80

81 quest'attacco sono stati saturati tutti i link del sito la cui capacità complessiva ammontava ad alcuni Gigabit (!!). Un ulteriore problema che hanno le vittime di un attacco DOS è che di norma gli attaccanti usano tecniche che consentono di mascherare gli indirizzi sorgente in modo da rendere il risalire alla loro identità il più difficile possibile. L'uso di queste tecniche può rendere virtualmente impossibile l'individuazione degli attaccanti Tipologie di attacchi DOS Vediamo ora di seguito alcune modalità e tecniche usate per un attacco DOS. Bandwidth consumption: Essenzialmente consiste nel generare una quantità di traffico tale da consumare tutta la banda a disposizione di un sito, tagliandolo fuori dalla rete. Esistono due situazioni. Nella prima gli attaccanti hanno a disposizione una banda molto più ampia delle vittima. In questo caso è facile per gli attaccanti saturare tutta la banda a disposizione della vittima inondando quest'ultima di una quantità enorme di traffico privo di senso. Nella seconda avviene in contrario. E' la vittima ad avere più banda degli attaccanti. Questi ultimi però non si danno certo per vinti e, usando delle tecniche di "amplificazione" del traffico, riescono comunque a generarne tanto da saturare la banda della vittima. Resource starvation: Rispetto al tipo di attacco precedente si tende a saturare altre risolse del sistema piuttosto che i link di rete. Tali componenti possono essere tempo di CPU, memoria di sistema, spazio su disco, handles di file, etc. In generale un sistema sotto questo attacco diventa inusabile oppure collassa. Bug software: L'attaccante sollecita il sistema della vittima in modo da attivare situazioni che sono gestite scorrettamente dal software di sistema. Esempi di questo tipo di attacchi sono quelli che si basano sui bug presenti nello stack di rete (WinNuke, IP frag overlap), sul buffer overflow o errori presenti in HW dedicato. 81

82 L'attacco Ip fragmentation overlap si basa su una vulnerabilità presente nelle implementazioni software dello stack IP, per quanto riguarda il riassemblaggio della sequenza dei pacchetti. La tecnica consiste nel generare una sequenza di pacchetti costruita "ad arte" in modo da provocare il crash o il reboot del sistema. Un altro tipo di esempio è un bug presente in una istruzione dei processori Pentium di Intel che era capace di mandare in crash un sistema indipendentemente dal sistema operativo utilizzato Attacchi basati su routing o DNS: L'attaccante manipola le tabelle di routing (o la cache di un server DNS) in modo da deviare tutto o parte del traffico della rete verso una destinazione diversa o verso un "buco nero" Tecniche utilizate Si procede ad illustrare le principali tecniche utilizzate durante un attacco DOS. Denial of Service. Spoofing. L'attaccante manipola il pacchetto che sta trasmettendo in modo da cambiare il valore presente nel campo sorgente del pacchetto. Il destinatario crederà che il mittente di un pacchetto ricevuto sia diverso da quello reale. Figura Spoofing 82

83 Nell'esempio in figura l'utente presente su PC1 vuole spedire un messaggio oltraggioso verso l'utente su PC3. Per non farsi scoprire crea un pacchetto di dati con il campo di origine modificato con l'indirizzo di un terzo utente, PC2, ignaro di tutto. PC3 riceve il messaggio credendo che il mittente sia PC2 e di conseguenza la sua reazione sarà diretta verso PC2 e non verso il verso mittente del messaggio. Smurfing/Ping broadcast. Si tratta di una tecnica di amplificazione del traffico e basa la sua efficacia sulla scorretta o non accurata configurazione del routing in una rete. L'amplificazione si ottiene trasmettendo un pacchetto ICMP (ping) ad un indirizzo di broadcast di una rete, mediante un PING. Il PING e una piccola utility di sistema che trasmette un pacchetto di controllo ICMP ad un destinatario e ne aspetta la risposta. In genere viene usato per controllare la raggiungibilità di una destinazione o per calcolare le prestazioni della rete (Round trip delay). Figura Ping Un indirizzo di broadcast non può essere assegnato ad uno specifico elaboratore e in genere consiste nell'ultimo indirizzo IP di una rete/sottorete. La particolarità di questo indirizzo è che i pacchetti spediti verso tale indirizzo vengono inoltrati a tutti gli indirizzi IP della rete di appartenenza. 83

84 Figura Configurazione di una rete prima dell attacco Un attacco Smurf fa uso di una rete "amplificatrice" che è mal configurata nel senso che risponde ad un ping effettuato su un indirizzo di broadcast. Lo schema è mostrato in figura Figura Attacco Smurf 84

85 L'attaccante camuffa l'indirizzo IP dei pacchetti che trasmette usando lo spoofing e mettendo nel campo sorgente dei pacchetti ICMP l'indirizzo IP della vittima. A questo punto sceglie una rete amplificatrice e comincia a spedire quanti più pacchetti può verso l'indirizzo di broadcast della rete. Il router di questa rete, appena comincia a ricevere i pacchetti sull'indirizzo di broadcast, li inoltra verso tutti gli indirizzi IP della sua sottorete. Ogni computer presente nella sottorete riceve un pacchetto ICMP e risponde con un altro pacchetto ICMP diretto al mittente del pacchetto ricevuto che, come abbiamo visto, l'attaccante ha modificato con quello della vittima. Si noti come tutti i computer della rete amplificatrice siano completamente all'oscuro di quello che sta succedendo. A questo punto la vittima comincia a ricevere un quantità enorme di pacchetti ICMP, specialmente se i PC nella rete amplificatrice sono numerosi. Fraggle attack E' una variante dello smurfing che usa il protocollo UDP al posto di quello ICMP. La tecnica consiste nel trasmettere un pacchetto UDP verso una porta della "ECHO". Se il PC è configurato risponde con un altro pacchetto UDP "echo reply". Nel caso in cui invece non sia configurato per rispondere il PC ritorna un pacchetto ICMP "unreachable". Il vantaggio di questo attacco è che genera comunque traffico e funziona anche sulle reti che non permettono il ping broadcast. SYN flooding: Questo attacco usa una debolezza nella implementazione/configurazione del protocollo di connessione "three way handshake", usato per aprire una sessione. Ha un grande vantaggio nel fatto che necessita di pochissima banda per ottenere l'effetto voluto. Il protocollo di connessione tra due PC normalmente funziona in tre fasi come visto sopra. A vuole comunicare con B e per aprire una sessione gli manda un pacchetto "SYN" e aspetta una risposta da B. Quest'ultimo ricevuta una richiesta di connessione cambia il suo stato da "LISTEN" in "SYN RECEIVED", cioè si rende conto che c'è una richiesta da parte di A e 85

86 mette la sua richiesta di in una coda delle connessioni potenziali, ma non ancora stabilite. Per concludere allora B spedisce ad A un pacchetto con "SYN/ACK" e attende da A la conferma della connessione. Quando A riceve il "SYN/ACK" di B spedisce a sua volta un altro ACK e ritiene la connessione stabilita. B riceve l'altro ACK di A e passa dallo stato "SYN RECEIVED" in "ESTABILISHED" e cancella A dalla coda delle richieste potenziali. Durante un attacco la vittima è B. L'attaccante gli spedisce dei SYN il cui indirizzo sorgente è un "buco nero", cioè una macchina non raggiungibile. in questo modo le risposte della vittima vengono tutte perse. L'attaccante spedisce continuamente richieste di connessione allo scopo di far riempire la coda delle connessioni potenziali fino ad esaurire tutte le risorse allocate allo scopo, che normalmente sono limitate. Infatti sebbene un server possa accettare moltissime richieste di servizio normalmente è configurato per avere una coda delle connessioni "potenziali" molto limitata. Figura SYN-FLOODING 86

87 Capitolo 7 Strumenti utilizzati e risultati ottenuti In questo capitolo si illustreranno i risultati ottenuti utilizzando un insieme di dati di traffico internet raccolti nel dataset Darpa Applicando l algoritmo Count-Min Sketch, con opportune modifiche, si è testata la capacità di quest ultimo di rilevare attacchi del tipo Denial-Of-Service (con particolare attenzione sull attacco denominato Neptune appartenente alla categoria dei SYN-flooding). 7.1 Il dataset Darpa 1998 Il gruppo IST (Information Systems Technology) del MIT Lincoln Laboratory sotto la sponsorizzazione del Defense Advanced Research Projects Agency (DARPA ITO) e Air Force Research Laboratory (AFRL/SNHS) ha raccolto e distribuito il primo standard set di dati per la valutazione degli Intrusion Detection System delle reti di computer. Sono state inoltre coordinate, con la collaborazione del Air Force Research Laboratory, le prime formali, ripetibili e statisticamente significative valutazioni di un IDS. Tali valutazioni sono state effettuate nel 1998 e 1999 e hanno contribuito enormemente alla ricerca nel campo degli Intrusion Detection Systems. Ci sono due parti di valutazione dell intrusione, una off-line e una real-time. Il set di dati di training messi a disposizione e reperibili dal sito sono utilizzati dalla maggior parte dei sistemi a rilevamento di intrusione tuttora in commercio. Questi dati sono stati generati su una rete di simulazione. Sono presenti sessioni di traffico normale e sessioni di attacchi. Le sessioni di attacco contengono diversi tipi di attacchi e vari comportamenti messi in atto durante l uso illegale di computer. In fase di tesi, tra i diversi elementi messi a disposizione, si sono utilizzati i seguenti: 87

88 Tcpdump data per un mese di traffico di rete, raccolti da uno sniffer tcpdump. Questi dati contengono pacchetti di rete trasmessi tra computer all interno o all esterno di una base militare simulata; Listfile per i dati tcpdump, contenenti le seguenti informazioni: o ID di sessione: l identificativo della sessione o Data di inizio: in formato MM / DD / YYYY o Tempo di inizio: in formato HH:MM:SS o Durata della sessione: in formato HH:MM:SS o Identificativo di servizio: una stringa contenente il tipo di servizio tcp, udp icmp, ecc.. o Porta sorgente o Porta destinazione o Indirizzo IP sorgente o Indirizzo IP destinazione o Attack Score: 0 se non c è attacco, 1 se è presente o Nome dell attacco Questo secondo file è stato usato per verificare se l attacco rilevato dal Count-Min Sketch fosse veramente tale o un falso positivo. La rete fisica usata per le simulazioni includeva un componente esterno ed uno interno separati da un router. La parte esterna comprendeva due workstations che simulavano gateways verso una rete internet virtuale. Una stazione di lavoro simulava più workstation che utilizzano un software di modifica del kernel Linux in grado di manipolare e falsificare gli indirizzi IP fornito dal gruppo Air Force ESC. Un gateway conduceva verso 100 workstations ed un altro verso 1000 siti web. La parte interna includeva le macchina vittima di diversi tipi (Linux, Solaris, Sun OS) ed un gateway verso workstations interne. I dati sono stati raccolti dalla vittima con sistema operativo Solaris e da uno sniffer esterno. Questa situazione è riportata in figura

89 Figura Topologia della rete in cui sono stati simulati attacchi e traffico normale, raccolti poi in file tcpdump per circa un mese. 7.2 La libreria WinPcap Per poter esaminare i file tcpdump si è fatto uso della libreria WinPcap reperibile dal sito WinPcap è un tool standard per l accesso di reti di computer a livello di layer in ambienti Windows: essa permette la cattura e l invio di pacchetti bypassando lo stack di protocollo, e possiede elementi molto utili, come il filtraggio di pacchetti a livello di kernel, un motore in grado di generare statistiche di rete e supportare la cattura di pacchetti in remoto. WinPcap consiste di un driver che abilita il sistema operativo ad avere accesso ad una rete a basso livello e di una libreria in grado di analizzare tale rete. Questa libreria contiene inoltre la versione per Windows delle bene note libicap Unix API. Grazie al suo set di componenti, WinPcap è il motore per la cattura e per il filtraggio di pacchetti più utilizzato nei più comuni software commerciali o open-source per l analisi del traffico di reti informatiche (protocol analyzers, network monitors, network intrusion detection systems, sniffers, traffic generators e network testers). Alcuni di questi tools, 89

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software.

Firewall. Generalità. Un firewall può essere sia un apparato hardware sia un programma software. Generalità Definizione Un firewall è un sistema che protegge i computer connessi in rete da attacchi intenzionali mirati a compromettere il funzionamento del sistema, alterare i dati ivi memorizzati, accedere

Dettagli

Payment Card Industry (PCI) Data Security Standard

Payment Card Industry (PCI) Data Security Standard Payment Card Industry (PCI) Data Security Standard Procedure per la scansione di sicurezza Versione 1.1 Release: settembre 2006 Indice generale Finalità... 1 Introduzione... 1 Ambito di applicazione dei

Dettagli

Symbolic. Ambiti Operativi. Presente sul mercato da circa 10 anni Specializzata in Network Security Partner e distributore italiano di F-Secure Corp.

Symbolic. Ambiti Operativi. Presente sul mercato da circa 10 anni Specializzata in Network Security Partner e distributore italiano di F-Secure Corp. Symbolic Presente sul mercato da circa 10 anni Specializzata in Network Security Partner e distributore italiano di F-Secure Corp. La nostra mission è di rendere disponibili soluzioni avanzate per la sicurezza

Dettagli

Come difendersi dai VIRUS

Come difendersi dai VIRUS Come difendersi dai VIRUS DEFINIZIONE Un virus è un programma, cioè una serie di istruzioni, scritte in un linguaggio di programmazione, in passato era di solito di basso livello*, mentre con l'avvento

Dettagli

DIFENDERSI DAI MODERNI ATTACCHI DI PHISHING MIRATI

DIFENDERSI DAI MODERNI ATTACCHI DI PHISHING MIRATI DIFENDERSI DAI MODERNI ATTACCHI DI PHISHING MIRATI DIFENDERSI DAI MODERNI ATTACCHI DI PHISHING MIRATI 2 Introduzione Questa email è una truffa o è legittima? È ciò che si chiedono con sempre maggiore frequenza

Dettagli

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

EUROPEAN COMPUTER DRIVING LICENCE. IT Security. Syllabus

EUROPEAN COMPUTER DRIVING LICENCE. IT Security. Syllabus EUROPEAN COMPUTER DRIVING LICENCE IT Security Syllabus Scopo Questo documento presenta il syllabus di ECDL Standard IT Security. Il syllabus descrive, attraverso i risultati del processo di apprendimento,

Dettagli

Intrusion Detection System

Intrusion Detection System Capitolo 12 Intrusion Detection System I meccanismi per la gestione degli attacchi si dividono fra: meccanismi di prevenzione; meccanismi di rilevazione; meccanismi di tolleranza (recovery). In questo

Dettagli

- Antivirus, Firewall e buone norme di comportamento

- Antivirus, Firewall e buone norme di comportamento Reti Di cosa parleremo? - Definizione di Rete e Concetti di Base - Tipologie di reti - Tecnologie Wireless - Internet e WWW - Connessioni casalinghe a Internet - Posta elettronica, FTP e Internet Browser

Dettagli

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione Utility & Configurazioni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 4 Impostare i dati della propria azienda... 5 Aggiornare il programma... 6 Controllare l integrità

Dettagli

CARATTERISTICHE DELLE CRYPTO BOX

CARATTERISTICHE DELLE CRYPTO BOX Secure Stream PANORAMICA Il sistema Secure Stream è costituito da due appliance (Crypto BOX) in grado di stabilire tra loro un collegamento sicuro. Le Crypto BOX sono dei veri e propri router in grado

Dettagli

UNIVERSITÀ DEGLI STUDI DI GENOVA

UNIVERSITÀ DEGLI STUDI DI GENOVA UNIVERSITÀ DEGLI STUDI DI GENOVA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA ELETTRONICA TESI DI LAUREA Sviluppo di tecniche di clustering e log correlation dedicate al trattamento

Dettagli

Informatica per la comunicazione" - lezione 9 -

Informatica per la comunicazione - lezione 9 - Informatica per la comunicazione" - lezione 9 - Protocolli di livello intermedio:" TCP/IP" IP: Internet Protocol" E il protocollo che viene seguito per trasmettere un pacchetto da un host a un altro, in

Dettagli

Guida alla scansione su FTP

Guida alla scansione su FTP Guida alla scansione su FTP Per ottenere informazioni di base sulla rete e sulle funzionalità di rete avanzate della macchina Brother, consultare la uu Guida dell'utente in rete. Per ottenere informazioni

Dettagli

Allegato 8 MISURE MINIME ED IDONEE

Allegato 8 MISURE MINIME ED IDONEE Allegato 8 MISURE MINIME ED IDONEE SOMMARIO 1 POLITICHE DELLA SICUREZZA INFORMATICA...3 2 ORGANIZZAZIONE PER LA SICUREZZA...3 3 SICUREZZA DEL PERSONALE...3 4 SICUREZZA MATERIALE E AMBIENTALE...4 5 GESTIONE

Dettagli

INFORMATIVA SUI COOKIE

INFORMATIVA SUI COOKIE INFORMATIVA SUI COOKIE I Cookie sono costituiti da porzioni di codice installate all'interno del browser che assistono il Titolare nell erogazione del servizio in base alle finalità descritte. Alcune delle

Dettagli

Modello OSI e architettura TCP/IP

Modello OSI e architettura TCP/IP Modello OSI e architettura TCP/IP Differenza tra modello e architettura - Modello: è puramente teorico, definisce relazioni e caratteristiche dei livelli ma non i protocolli effettivi - Architettura: è

Dettagli

PRIVACY POLICY MARE Premessa Principi base della privacy policy di Mare Informativa ai sensi dell art. 13, d. lgs 196/2003

PRIVACY POLICY MARE Premessa Principi base della privacy policy di Mare Informativa ai sensi dell art. 13, d. lgs 196/2003 PRIVACY POLICY MARE Premessa Mare Srl I.S. (nel seguito, anche: Mare oppure la società ) è particolarmente attenta e sensibile alla tutela della riservatezza e dei diritti fondamentali delle persone e

Dettagli

Software 2. Classificazione del software. Software di sistema

Software 2. Classificazione del software. Software di sistema Software 2 Insieme di istruzioni e programmi che consentono il funzionamento del computer Il software indica all hardware quali sono le operazioni da eseguire per svolgere determinati compiti Valore spesso

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Le Reti di Calcolatori (parte 2) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela

Dettagli

Proteggere le informazioni in tempo di crisi: si può essere sicuri con investimenti contenuti? Lino Fornaro Net1 sas Giovanni Giovannelli - Sophos

Proteggere le informazioni in tempo di crisi: si può essere sicuri con investimenti contenuti? Lino Fornaro Net1 sas Giovanni Giovannelli - Sophos Proteggere le informazioni in tempo di crisi: si può essere sicuri con investimenti contenuti? Lino Fornaro Net1 sas Giovanni Giovannelli - Sophos L Autore Lino Fornaro, Security Consultant Amministratore

Dettagli

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a:

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a: Lab 4.1 Utilizzare FTP (File Tranfer Protocol) LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) In questa lezione imparerete a: Utilizzare altri servizi Internet, Collegarsi al servizio Telnet, Accedere

Dettagli

Guida Dell di base all'acquisto dei server

Guida Dell di base all'acquisto dei server Guida Dell di base all'acquisto dei server Per le piccole aziende che dispongono di più computer è opportuno investire in un server che aiuti a garantire la sicurezza e l'organizzazione dei dati, consentendo

Dettagli

Guida ai Servizi Internet per il Referente Aziendale

Guida ai Servizi Internet per il Referente Aziendale Guida ai Servizi Internet per il Referente Aziendale Indice Indice Introduzione...3 Guida al primo accesso...3 Accessi successivi...5 Amministrazione dei servizi avanzati (VAS)...6 Attivazione dei VAS...7

Dettagli

Accordo d Uso (settembre 2014)

Accordo d Uso (settembre 2014) Accordo d Uso (settembre 2014) Il seguente Accordo d uso, di seguito Accordo, disciplina l utilizzo del Servizio on line 4GUEST, di seguito Servizio, che prevede, la creazione di Viaggi, Itinerari, Percorsi,

Dettagli

Mettere in sicurezza l infrastruttura dei desktop virtuali con Citrix NetScaler

Mettere in sicurezza l infrastruttura dei desktop virtuali con Citrix NetScaler Mettere in sicurezza l infrastruttura dei desktop virtuali con Citrix NetScaler 2 Le aziende attuali stanno adottando rapidamente la virtualizzazione desktop quale mezzo per ridurre i costi operativi,

Dettagli

Standard di Sicurezza sui Dati previsti dai Circuiti Internazionali. Payment Card Industry Data Security Standard

Standard di Sicurezza sui Dati previsti dai Circuiti Internazionali. Payment Card Industry Data Security Standard Standard di Sicurezza sui Dati previsti dai Circuiti Internazionali Payment Card Industry Data Security Standard STANDARD DI SICUREZZA SUI DATI PREVISTI DAI CIRCUITI INTERNAZIONALI (Payment Card Industry

Dettagli

TERMINI E CONDIZIONI DI UTILIZZO

TERMINI E CONDIZIONI DI UTILIZZO Informazioni Societarie Fondazione Prada Largo Isarco 2 20139 Milano, Italia P.IVA e codice fiscale 08963760965 telefono +39.02.56662611 fax +39.02.56662601 email: amministrazione@fondazioneprada.org TERMINI

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello della Web Application 5 3 Struttura della web Application 6 4 Casi di utilizzo della Web

Dettagli

Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP

Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP Protocolli di rete Sommario Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP Configurazione statica e dinamica

Dettagli

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP Università degli Studi di Pisa Facoltà di Scienze Matematiche,Fisiche e Naturali Corso di Laurea in Informatica Michela Chiucini MIB PER IL CONTROLLO DELLO STATO DI UN SERVER

Dettagli

G e s t i o n e U t e n z e C N R

G e s t i o n e U t e n z e C N R u t e n t i. c n r. i t G e s t i o n e U t e n z e C N R G U I D A U T E N T E Versione 1.1 Aurelio D Amico (Marzo 2013) Consiglio Nazionale delle Ricerche - Sistemi informativi - Roma utenti.cnr.it -

Dettagli

La informiamo che Utroneo s.r.l. è il titolare del trattamento dei suoi dati personali.

La informiamo che Utroneo s.r.l. è il titolare del trattamento dei suoi dati personali. Come utilizziamo i suoi dati è un prodotto di ULTRONEO SRL INFORMAZIONI GENERALI Ultroneo S.r.l. rispetta il Suo diritto alla privacy nel mondo di internet quando Lei utilizza i nostri siti web e comunica

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

Inizializzazione degli Host. BOOTP e DHCP

Inizializzazione degli Host. BOOTP e DHCP BOOTP e DHCP a.a. 2002/03 Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/~auletta/ Università degli studi di Salerno Laurea e Diploma in Informatica 1 Inizializzazione degli Host Un

Dettagli

Cos è un protocollo? Ciao. Ciao 2:00. tempo. Un protocollo umano e un protocollo di reti di computer:

Cos è un protocollo? Ciao. Ciao 2:00. <file> tempo. Un protocollo umano e un protocollo di reti di computer: Cos è un protocollo? Un protocollo umano e un protocollo di reti di computer: Ciao Ciao Hai l ora? 2:00 tempo TCP connection request TCP connection reply. Get http://www.di.unito.it/index.htm Domanda:

Dettagli

Marco Giorgi. Palazzo di Giustizia di Torino 30 marzo 2012

Marco Giorgi. Palazzo di Giustizia di Torino 30 marzo 2012 Marco Giorgi Palazzo di Giustizia di Torino 30 marzo 2012 Post mortem (Dopo lo spegnimento del sistema) Si smonta il dispositivo e lo si collega ad un PC dedicato all'acquisizione Live forensics (Direttamente

Dettagli

DNS cache poisoning e Bind

DNS cache poisoning e Bind ICT Security n. 19, Gennaio 2004 p. 1 di 5 DNS cache poisoning e Bind Il Domain Name System è fondamentale per l'accesso a internet in quanto risolve i nomi degli host nei corrispondenti numeri IP. Se

Dettagli

TorrentLocker Enti Italiani sotto riscatto

TorrentLocker Enti Italiani sotto riscatto Digital Forensics Bureau www.difob.it TorrentLocker Enti Italiani sotto riscatto Paolo DAL CHECCO, Giuseppe DEZZANI Studio DIgital Forensics Bureau di Torino 20 ottobre 2014 Da mercoledì 15 ottobre stiamo

Dettagli

Note legali. Termini e condizioni di utilizzo. Modifiche dei Termini e Condizioni di Utilizzo. Accettazione dei Termini e Condizioni

Note legali. Termini e condizioni di utilizzo. Modifiche dei Termini e Condizioni di Utilizzo. Accettazione dei Termini e Condizioni Note legali Termini e condizioni di utilizzo Accettazione dei Termini e Condizioni L'accettazione puntuale dei termini, delle condizioni e delle avvertenze contenute in questo sito Web e negli altri siti

Dettagli

Invio della domanda on line ai sensi dell art. 12 dell avviso pubblico quadro 2013. Regole tecniche e modalità di svolgimento

Invio della domanda on line ai sensi dell art. 12 dell avviso pubblico quadro 2013. Regole tecniche e modalità di svolgimento INCENTIVI ALLE IMPRESE PER LA REALIZZAZIONE DI INTERVENTI IN MATERIA DI SALUTE E SICUREZZA SUL LAVORO art. 11, comma 1 lett. a) e comma 5 del D.Lgs. 81/2008 e s.m.i. Invio della domanda on line ai sensi

Dettagli

ARP (Address Resolution Protocol)

ARP (Address Resolution Protocol) ARP (Address Resolution Protocol) Il routing Indirizzo IP della stazione mittente conosce: - il proprio indirizzo (IP e MAC) - la netmask (cioè la subnet) - l indirizzo IP del default gateway, il router

Dettagli

HORIZON SQL CONFIGURAZIONE DI RETE

HORIZON SQL CONFIGURAZIONE DI RETE 1-1/9 HORIZON SQL CONFIGURAZIONE DI RETE 1 CARATTERISTICHE DI UN DATABASE SQL...1-2 Considerazioni generali... 1-2 Concetto di Server... 1-2 Concetto di Client... 1-2 Concetto di database SQL... 1-2 Vantaggi...

Dettagli

Sempre attenti ad ogni dettaglio Bosch Intelligent Video Analysis

Sempre attenti ad ogni dettaglio Bosch Intelligent Video Analysis Sempre attenti ad ogni dettaglio Bosch Intelligent Video Analysis 2 Intervento immediato con Bosch Intelligent Video Analysis Indipendentemente da quante telecamere il sistema utilizza, la sorveglianza

Dettagli

SISSI IN RETE. Quick Reference guide guida di riferimento rapido

SISSI IN RETE. Quick Reference guide guida di riferimento rapido SISSI IN RETE Quick Reference guide guida di riferimento rapido Indice generale Sissi in rete...3 Introduzione...3 Architettura Software...3 Installazione di SISSI in rete...3 Utilizzo di SISSI in Rete...4

Dettagli

Procedura per il ripristino dei certificati del dispositivo USB

Procedura per il ripristino dei certificati del dispositivo USB Procedura per il ripristino dei certificati del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1 Glossario... 3 2 Presentazione... 4 3 Quando procedere al ripristino

Dettagli

Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi.

Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi. Internet Internet è universalmente nota come la Rete delle reti: un insieme smisurato di computer collegati tra loro per scambiarsi dati e servizi. Internet: la rete delle reti Alberto Ferrari Connessioni

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

Guida del client per Symantec Endpoint Protection e Symantec Network Access Control

Guida del client per Symantec Endpoint Protection e Symantec Network Access Control Guida del client per Symantec Endpoint Protection e Symantec Network Access Control Guida del client per Symantec Endpoint Protection e Symantec Network Access Control Il software descritto nel presente

Dettagli

PANDORA Sistema di Telecontrollo per Ascensori PANDORA is powered by

PANDORA Sistema di Telecontrollo per Ascensori PANDORA is powered by PANDORA Sistema di Telecontrollo per Ascensori l'espressione v a s o d i P a n d o r a viene usata metaforicamente per alludere all'improvvisa scoperta di un problema o una serie di problemi che per molto

Dettagli

GESTIONE DELLA E-MAIL

GESTIONE DELLA E-MAIL GESTIONE DELLA E-MAIL Esistono due metodologie, completamente diverse tra loro, in grado di consentire la gestione di più caselle di Posta Elettronica: 1. tramite un'interfaccia Web Mail; 2. tramite alcuni

Dettagli

GUIDA ALLE BEST PRACTICE PER MOBILE DEVICE MANAGEMENT E MOBILE SECURITY

GUIDA ALLE BEST PRACTICE PER MOBILE DEVICE MANAGEMENT E MOBILE SECURITY GUIDA ALLE BEST PRACTICE PER MOBILE DEVICE MANAGEMENT E MOBILE SECURITY Con Kaspersky, adesso è possibile. www.kaspersky.it/business Be Ready for What's Next SOMMARIO Pagina 1. APERTI 24 ORE SU 24...2

Dettagli

Progetto VirtualCED Clustered

Progetto VirtualCED Clustered Progetto VirtualCED Clustered Un passo indietro Il progetto VirtualCED, descritto in un precedente articolo 1, è ormai stato implementato con successo. Riassumendo brevemente, si tratta di un progetto

Dettagli

Sicurezza delle reti wireless. Alberto Gianoli alberto.gianoli@fe.infn.it

Sicurezza delle reti wireless. Alberto Gianoli alberto.gianoli@fe.infn.it Sicurezza delle reti wireless Alberto Gianoli alberto.gianoli@fe.infn.it Concetti di base IEEE 802.11: famiglia di standard tra cui: 802.11a, b, g: physical e max data rate spec. 802.11e: QoS (traffic

Dettagli

con software libero Modulo 12 IT Security Pag. 1

con software libero Modulo 12 IT Security Pag. 1 con software libero Modulo 12 IT Security Pag. 1 Indice generale IT SECURITY... 3 1 Concetti di sicurezza...3 1.1 MINACCE AI DATI...3 1.2 VALORE DELLE INFORMAZIONI...3 1.3 SICUREZZA PERSONALE...4 1.4 SICUREZZA

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client Versione 25.4.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un

Dettagli

Guida all utilizzo del dispositivo USB

Guida all utilizzo del dispositivo USB Guida all utilizzo del dispositivo USB 30/04/2013 Sommario - Limitazioni di responsabilità e uso del manuale... 3 1. Glossario... 3 2. Guida all utilizzo del dispositivo USB... 4 2.1 Funzionamento del

Dettagli

Mod. 4: L architettura TCP/ IP Classe 5 I ITIS G. Ferraris a.s. 2011 / 2012 Marcianise (CE) Prof. M. Simone

Mod. 4: L architettura TCP/ IP Classe 5 I ITIS G. Ferraris a.s. 2011 / 2012 Marcianise (CE) Prof. M. Simone Paragrafo 1 Prerequisiti Definizione di applicazione server Essa è un servizio che è in esecuzione su un server 1 al fine di essere disponibile per tutti gli host che lo richiedono. Esempi sono: il servizio

Dettagli

Modulo 11. Il livello trasporto ed il protocollo TCP Indice

Modulo 11. Il livello trasporto ed il protocollo TCP Indice Pagina 1 di 14 Il livello trasporto ed il protocollo TCP Indice servizi del livello trasporto multiplexing/demultiplexing trasporto senza connesione: UDP principi del trasferimento dati affidabile trasporto

Dettagli

NetMonitor. Micro guida all uso per la versione 1.2.0 di NetMonitor

NetMonitor. Micro guida all uso per la versione 1.2.0 di NetMonitor NetMonitor Micro guida all uso per la versione 1.2.0 di NetMonitor Cos è NetMonitor? NetMonitor è un piccolo software per il monitoraggio dei dispositivi in rete. Permette di avere una panoramica sui dispositivi

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

Schema Tipologia a Stella

Schema Tipologia a Stella Cos'e' esattamente una rete! Una LAN (Local Area Network) è un insieme di dispositivi informatici collegati fra loro, che utilizzano un linguaggio che consente a ciascuno di essi di scambiare informazioni.

Dettagli

8. L'USO DEL PROGRAMMA DI POSTA ELETTRONICA INSIEME ALLA GESTIONE PROFESSIONALE DI DOCUMENTI IN FORMATO E-MAIL

8. L'USO DEL PROGRAMMA DI POSTA ELETTRONICA INSIEME ALLA GESTIONE PROFESSIONALE DI DOCUMENTI IN FORMATO E-MAIL This project funded by Leonardo da Vinci has been carried out with the support of the European Community. The content of this project does not necessarily reflect the position of the European Community

Dettagli

L evoluzione del software per l azienda moderna. Gestirsi / Capirsi / Migliorarsi

L evoluzione del software per l azienda moderna. Gestirsi / Capirsi / Migliorarsi IL GESTIONALE DEL FUTURO L evoluzione del software per l azienda moderna Gestirsi / Capirsi / Migliorarsi IL MERCATO ITALIANO L Italia è rappresentata da un numero elevato di piccole e medie aziende che

Dettagli

Seagate Access per Personal Cloud Manuale utente

Seagate Access per Personal Cloud Manuale utente Seagate Access per Personal Cloud Manuale utente 2015 Seagate Technology LLC. Tutti i diritti riservati. Seagate, Seagate Technology, il logo Wave e FreeAgent sono marchi depositati o marchi registrati

Dettagli

Sistemi Web-Based - Terminologia. Progetto di Sistemi Web-Based Prof. Luigi Laura, Univ. Tor Vergata, a.a. 2010/2011

Sistemi Web-Based - Terminologia. Progetto di Sistemi Web-Based Prof. Luigi Laura, Univ. Tor Vergata, a.a. 2010/2011 Sistemi Web-Based - Terminologia Progetto di Sistemi Web-Based Prof. Luigi Laura, Univ. Tor Vergata, a.a. 2010/2011 CLIENT: il client è il programma che richiede un servizio a un computer collegato in

Dettagli

Architettura di un sistema informatico 1 CONCETTI GENERALI

Architettura di un sistema informatico 1 CONCETTI GENERALI Architettura di un sistema informatico Realizzata dal Dott. Dino Feragalli 1 CONCETTI GENERALI 1.1 Obiettivi Il seguente progetto vuole descrivere l amministrazione dell ITC (Information Tecnology end

Dettagli

SICUREZZA SENZA COMPROMESSI PER TUTTI GLI AMBIENTI VIRTUALI. Security for Virtual and Cloud Environments

SICUREZZA SENZA COMPROMESSI PER TUTTI GLI AMBIENTI VIRTUALI. Security for Virtual and Cloud Environments SICUREZZA SENZA COMPROMESSI PER TUTTI GLI AMBIENTI VIRTUALI Security for Virtual and Cloud Environments PROTEZIONE O PRESTAZIONI? Già nel 2009, il numero di macchine virtuali aveva superato quello dei

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

Come si sfrutta la debolezza del sistema operativo umano

Come si sfrutta la debolezza del sistema operativo umano Come si sfrutta la debolezza del sistema operativo umano Raj Samani, CTO EMEA Charles McFarland, Senior Research Engineer per MTIS Molti attacchi informatici contengono un elemento di social engineering,

Dettagli

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci Manuale di Remote Desktop Connection Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci 2 Indice 1 Introduzione 5 2 Il protocollo Remote Frame Buffer 6 3 Uso di Remote Desktop

Dettagli

GUIDA ELETTRONICA ALLA VITA DIGITALE. 5 motivi per cui gli stratagemmi del social engineering funzionano

GUIDA ELETTRONICA ALLA VITA DIGITALE. 5 motivi per cui gli stratagemmi del social engineering funzionano GUIDA ELETTRONICA ALLA VITA DIGITALE 5 motivi per cui gli stratagemmi del social engineering funzionano Che cos è il social engineering? Il social engineering è l arte di raggirare le persone. Si tratta

Dettagli

Regolamento per l'accesso alla rete Indice

Regolamento per l'accesso alla rete Indice Regolamento per l'accesso alla rete Indice 1 Accesso...2 2 Applicazione...2 3 Responsabilità...2 4 Dati personali...2 5 Attività commerciali...2 6 Regole di comportamento...3 7 Sicurezza del sistema...3

Dettagli

Il Business Process Management: nuova via verso la competitività aziendale

Il Business Process Management: nuova via verso la competitività aziendale Il Business Process Management: nuova via verso la competitività Renata Bortolin Che cosa significa Business Process Management? In che cosa si distingue dal Business Process Reingeneering? Cosa ha a che

Dettagli

Istituto Comprensivo Statale Villanova d Asti (AT) Scuola dell Infanzia, Primaria, Secondaria di 1

Istituto Comprensivo Statale Villanova d Asti (AT) Scuola dell Infanzia, Primaria, Secondaria di 1 Pagina 1 di 8 REGOLAMENTO SULL USO DI INTERNET E DELLA POSTA ELETTRONICA MESSO A DISPOSIZONE DEI DIPENDENTI PER L ESERCIZIO DELLE FUNZIONI D UFFICIO () Approvato con deliberazione del Consiglio di Istituto

Dettagli

LA SICUREZZA NEI SISTEMI INFORMATIVI. Antonio Leonforte

LA SICUREZZA NEI SISTEMI INFORMATIVI. Antonio Leonforte LA SICUREZZA NEI SISTEMI INFORMATIVI Antonio Leonforte Rendere un sistema informativo sicuro non significa solo attuare un insieme di contromisure specifiche (di carattere tecnologico ed organizzativo)

Dettagli

Utilizzo del server SMTP in modalità sicura

Utilizzo del server SMTP in modalità sicura Utilizzo del server SMTP in modalità sicura In questa guida forniremo alcune indicazioni sull'ottimizzazione del server SMTP di IceWarp e sul suo impiego in modalità sicura, in modo da ridurre al minimo

Dettagli

Introduzione alle applicazioni di rete

Introduzione alle applicazioni di rete Introduzione alle applicazioni di rete Definizioni base Modelli client-server e peer-to-peer Socket API Scelta del tipo di servizio Indirizzamento dei processi Identificazione di un servizio Concorrenza

Dettagli

Ultimo aggiornamento avvenuto il 18 giugno 2014. Sostituisce la versione del 2 maggio 2013 nella sua interezza.

Ultimo aggiornamento avvenuto il 18 giugno 2014. Sostituisce la versione del 2 maggio 2013 nella sua interezza. Condizioni di utilizzo aggiuntive di Acrobat.com Ultimo aggiornamento avvenuto il 18 giugno 2014. Sostituisce la versione del 2 maggio 2013 nella sua interezza. SERVIZI ONLINE ADOBE RESI DISPONIBILI SU

Dettagli

Reti di Telecomunicazione Lezione 7

Reti di Telecomunicazione Lezione 7 Reti di Telecomunicazione Lezione 7 Marco Benini Corso di Laurea in Informatica marco.benini@uninsubria.it Il protocollo Programma della lezione file transfer protocol descrizione architetturale descrizione

Dettagli

ALFABETIZZAZIONE DI BASE Programma del Corso livello base

ALFABETIZZAZIONE DI BASE Programma del Corso livello base Un po di Storia ISP & Web Engineering ALFABETIZZAZIONE DI BASE Programma del Corso livello base Breve cenno sulla storia dell informatica: dagli albori ai giorni nostri; L evoluzione di Windows: dalla

Dettagli

SMARTCARD Studente: Elvis Ciotti Prof: Luciano Margara 1

SMARTCARD Studente: Elvis Ciotti Prof: Luciano Margara 1 SMARTCARD Studente: Elvis Ciotti Prof: Luciano Margara 1 Introduzione SmartCard: Carta intelligente Evoluzione della carta magnetica Simile a piccolo computer : contiene memoria (a contatti elettrici)

Dettagli

FORM Il sistema informativo di gestione della modulistica elettronica.

FORM Il sistema informativo di gestione della modulistica elettronica. Studio FORM FORM Il sistema informativo di gestione della modulistica elettronica. We believe in what we create This is FORM power La soluzione FORM permette di realizzare qualsiasi documento in formato

Dettagli

Energy Data Management System (EDMS): la soluzione software per una gestione efficiente dell energia secondo lo standard ISO 50001

Energy Data Management System (EDMS): la soluzione software per una gestione efficiente dell energia secondo lo standard ISO 50001 Energy Data Management System (EDMS): la soluzione software per una gestione efficiente dell energia secondo lo standard ISO 50001 Oggi più che mai, le aziende italiane sentono la necessità di raccogliere,

Dettagli

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO Francesco Marchione e Dario Richichi Istituto Nazionale di Geofisica e Vulcanologia Sezione di Palermo Indice Introduzione...

Dettagli

> MULTI TASKING > MULTI PROCESS > MULTI CORE

> MULTI TASKING > MULTI PROCESS > MULTI CORE > MULTI TASKING > MULTI PROCESS > MULTI CORE WorkNC V21 multicore 64 bits : Benefici di WorkNC Aumento generale della produttività, grazie alle nuove tecnologie multi-core, 64 bit e Windows 7 Calcolo di

Dettagli

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine 1999 Pier Luca Montessoro (si veda la nota a pagina 2) 1 Nota di Copyright

Dettagli

Guida al nuovo sistema di posta. CloudMail UCSC. (rev.doc. 1.4)

Guida al nuovo sistema di posta. CloudMail UCSC. (rev.doc. 1.4) Guida al nuovo sistema di posta CloudMail UCSC (rev.doc. 1.4) L Università per poter migliorare l utilizzo del sistema di posta adeguandolo agli standard funzionali più diffusi ha previsto la migrazione

Dettagli

Cosa è lo spoofing. Cosa è lo spoofing. Argomenti. Spoofing conosciuti. Introduzione. Corso di Sistemi di Elaborazione: Sicurezza su Reti

Cosa è lo spoofing. Cosa è lo spoofing. Argomenti. Spoofing conosciuti. Introduzione. Corso di Sistemi di Elaborazione: Sicurezza su Reti Introduzione Corso di Sistemi di Elaborazione: Sicurezza su Reti A.A. 2001/2002 Prof. A. De Santis A cura di: Angelo Celentano matr. 53/11544 Raffaele Pisapia matr. 53/10991 Mariangela Verrecchia matr.

Dettagli

Corso di Amministrazione di Sistema Parte I ITIL 3

Corso di Amministrazione di Sistema Parte I ITIL 3 Corso di Amministrazione di Sistema Parte I ITIL 3 Francesco Clabot Responsabile erogazione servizi tecnici 1 francesco.clabot@netcom-srl.it Fondamenti di ITIL per la Gestione dei Servizi Informatici Il

Dettagli

Note e informazioni legali

Note e informazioni legali Note e informazioni legali Proprietà del sito; accettazione delle condizioni d uso I presenti termini e condizioni di utilizzo ( Condizioni d uso ) si applicano al sito web di Italiana Audion pubblicato

Dettagli

Informatica. Scopo della lezione

Informatica. Scopo della lezione 1 Informatica per laurea diarea non informatica LEZIONE 1 - Cos è l informatica 2 Scopo della lezione Introdurre le nozioni base della materia Definire le differenze tra hardware e software Individuare

Dettagli

DISCIPLINARE PER L UTILIZZO DEGLI STRUMENTI E SERVIZI INFORMATICI PER GLI ENTI IN GESTIONE ASSOCIATA DEL NUOVO CIRCONDARIO IMOLESE

DISCIPLINARE PER L UTILIZZO DEGLI STRUMENTI E SERVIZI INFORMATICI PER GLI ENTI IN GESTIONE ASSOCIATA DEL NUOVO CIRCONDARIO IMOLESE SIA Sistemi Informativi Associati DISCIPLINARE PER L UTILIZZO DEGLI STRUMENTI E SERVIZI INFORMATICI PER GLI ENTI IN GESTIONE ASSOCIATA DEL NUOVO CIRCONDARIO IMOLESE (approvato con delibera di Giunta n.

Dettagli

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it il server? virtualizzalo!! Se ti stai domandando: ma cosa stanno dicendo? ancora non sai che la virtualizzazione è una tecnologia software, oggi ormai consolidata, che sta progressivamente modificando

Dettagli

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+... Setup delle ConnessioniTCP Una connessione TCP viene instaurata con le seguenti fasi, che formano il Three-Way Handshake (perchè formato da almeno 3 pacchetti trasmessi): 1) il server si predispone ad

Dettagli

progettiamo e realizziamo architetture informatiche Company Profile

progettiamo e realizziamo architetture informatiche Company Profile Company Profile Chi siamo Kammatech Consulting S.r.l. nasce nel 2000 con l'obiettivo di operare nel settore I.C.T., fornendo servizi di progettazione, realizzazione e manutenzione di reti aziendali. Nel

Dettagli

Polizza CyberEdge - questionario

Polizza CyberEdge - questionario Note per il proponente La compilazione e/o la sottoscrizione del presente questionario non vincola la Proponente, o ogni altro individuo o società che la rappresenti all'acquisto della polizza. Vi preghiamo

Dettagli