Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection
Università degli Studi della Calabria
Dipartimento di Ingegneria Informatica, Modellistica, Elettronica e Sistemistica
Corso di Laurea Triennale in Ingegneria Informatica
Tesi di Laurea
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection
Relatore Candidato
Dr. Riccardo Cantini Granata Franco Mario
Matr. 220038
Anno Accademico 2023-2024
A te, caro lettore, a te che in queste righe hai trovato il tuo sentiero.
Indice
Introduzione 4
1 Il Machine Learning 6
1.1 Cenni storici del machine learning . . . . . . . . . . . . . . . . . . . . . 6
1.2 Tipi di dati del mondo reale . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Scopo del machine learning e confronto con la statistica . . . . . . . . . . 10
1.4 Algoritmi di machine learning . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.1 Supervised Learning . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.2 Unsupervised Learning . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4.3 Semi-supervised Learning . . . . . . . . . . . . . . . . . . . . . . 18
1.4.4 Reinforcement Learning . . . . . . . . . . . . . . . . . . . . . . . 20
1.5 Futuro del machine learning . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2 Sicurezza e NIDS 24
2.1 La vulnerabilità informatica . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.1 La vulnerabilità dell’hardware . . . . . . . . . . . . . . . . . . . . 25
2.1.2 La vulnerabilità del software . . . . . . . . . . . . . . . . . . . . . 25
2.2 Importanza dei Sistemi di Rilevamento delle Intrusioni di Rete (NIDS) . . 26
2.2.1 Architettura e funzionamento NIDS . . . . . . . . . . . . . . . . 26
2.3 Tipologie di NIDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.1 NIDS basati su firme . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.2 NIDS basati su anomalie . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3.3 NIDS ibridi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.3.4 NIDS basati su comportamento . . . . . . . . . . . . . . . . . . . 32
2.3.5 NIDS host-based (HIDS) . . . . . . . . . . . . . . . . . . . . . . 33
2.3.6 NIDS distribuiti . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4 Tecniche basate su Machine Learning . . . . . . . . . . . . . . . . . . . . . 35
2.4.1 NIDS con approccio di machine learning supervisionato . . . . . . 36
2.4.2 NIDS con approccio di machine learning non supervisionato . . . . 37
2.4.3 NIDS con approccio di machine learning semi-supervisionato . . . 38
2 INDICE
2.4.4 NIDS con approccio di machine learning per rinforzo . . . . . . . . 39
2.5 Il futuro dei NIDS con machine learning . . . . . . . . . . . . . . . . . . . 40
3 Realizzazione di un sistema real-time di network intrusion detection con Apache Storm 42
3.1 Apache Storm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.1 Paradigma di programmazione di Apache Storm . . . . . . . . . . 44
3.1.2 Dettagli implementativi Spout . . . . . . . . . . . . . . . . . . . 47
3.1.3 Dettagli implementativi Bolt . . . . . . . . . . . . . . . . . . . . 47
3.2 Sistema di real-time intrusion detection . . . . . . . . . . . . . . . . . . 48
3.2.1 Implementazione Python . . . . . . . . . . . . . . . . . . . . . . 49
3.2.2 Implementazione Java . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2.3 Risultati e considerazioni finali . . . . . . . . . . . . . . . . . . . 58
Conclusioni 60
3
Introduzione
Oggigiorno il mondo informatico ha raggiunto un grado di sviluppo estremamente importante, tant’è che si parla sempre più di un argomento in particolare: l’intelligenza artificiale. L’intelligenza artificiale non è altro che il processo attraverso cui le macchine e i sistemi informatici simulano i processi di intelligenza umana.
Una disciplina dell’intelligenza artificiale che ha rivoluzionato il modo in cui i computer comprendono ed elaborano i dati prende il nome di machine learning. Si tratta di un campo che si concentra sulla progettazione e sullo sviluppo di algoritmi e modelli che consentono alle macchine di apprendere dai dati e migliorare le loro prestazioni nel tempo senza essere esplicitamente programmati per ogni singolo compito.
Con l’aumento della digitalizzazione e della connettività, la sicurezza informatica è diventata una preoccupazione centrale. Le minacce informatiche sono sempre più sofisticate e diffuse, mettendo a rischio dati sensibili e sistemi critici. In questo contesto, i Sistemi di Rilevamento delle Intrusioni di Rete (NIDS) giocano un ruolo fondamentale. I NIDS monitorano il traffico di rete per identificare attività sospette e potenziali intrusioni, contribuendo a prevenire attacchi e a garantire la sicurezza dei sistemi informatici.
L’analisi in tempo reale dei dati è cruciale per rilevare rapidamente le minacce e rispondere in modo efficace. Viene dunque in aiuto Apache Storm che è un framework open-source progettato per l’elaborazione distribuita e in tempo reale dei flussi di dati. Questo è particolarmente utile per applicazioni che richiedono analisi continue e veloci, come il rilevamento delle intrusioni di rete. Apache Storm permette di gestire e processare grandi volumi di dati in movimento, facilitando l’implementazione di sistemi di rilevamento delle intrusioni che possono analizzare il traffico di rete e rilevare anomalie in tempo reale.
Questa tesi esplora l’integrazione del machine learning nei sistemi di rilevamento delle intrusioni di rete utilizzando Apache Storm. L’obiettivo è sviluppare un sistema robusto, efficiente e scalabile che possa analizzare il traffico di rete in tempo reale identificando quelli che possono essere attacchi informatici di vario tipo.
La tesi è strutturata in tre capitoli principali, il primo tratta del machine learning e dei vari algoritmi sviluppati nel corso degli anni, il secondo parla dei NIDS e delle varie tipologie, mentre il terzo introduce il framework Apache Storm e descrive l’applicazione sviluppata. Dunque:
- Il primo capitolo introduce i concetti fondamentali del machine learning, trattando anche l’approccio ed i vari utilizzi che esso ha, pone l’attenzione su quelli che sono i vari algoritmi di learning. Quattro sono gli algoritmi presi in considerazione: Supervised learning, Unsupervised learning, Semi-supervised learning e Reinforcement learning.
- Il capitolo seguente esamina la vulnerabilità informatica e si sofferma sui sistemi di rilevamento delle intrusioni di rete (NIDS) trattandone l’architettura e le varie tipologie, in particolar modo dopo aver descritto le tipologie di base tratta anche delle tipologie più avanzate, ovvero quelle che si basano sul machine learning.
- L’ultimo capitolo invece descrive Apache Storm dettagliando le implementazioni tecniche e presenta un caso di studio di un sistema di NIDS real-time basato su questo framework e machine learning.
Nel prosieguo di questo elaborato verranno riportate queste e altre nozioni che mirano ad offrire un contributo significativo alla costruzione di soluzioni di rilevamento delle intrusioni più efficaci e adattabili alle esigenze del moderno panorama della sicurezza.
5
1
Capitolo: il Machine Learning
Il Machine Learning [1] è un campo dell’intelligenza artificiale che si occupa dello sviluppo di algoritmi e modelli che consentono ai computer di apprendere da dati senza essere esplicitamente programmati. In altre parole, anziché seguire istruzioni specifiche per eseguire una determinata attività, i computer possono apprendere dai dati forniti e migliorare le loro prestazioni nel tempo.
Al giorno d’oggi il mondo digitale è pieno zeppo di dati di ogni tipo: dati sulla sicurezza, dati mobili, dati aziendali, dati dei social media, dati sanitari ecc. La chiave per poter analizzare in modo intelligente questi dati è il Machine Learning, la conoscenza dell’intelligenza artificiale.
1.1 Cenni storici del machine learning
Il machine learning [2] pone le sue radici all’interno dell’ampio ramo dell’informatica noto come Intelligenza Artificiale (IA). Quest’ultima consente la programmazione e la progettazione di sistemi hardware e software che fanno proprie alcune caratteristiche tipicamente attribuite agli esseri umani, quali le percezioni visive, auditive e decisionali. I sistemi creati sotto questi criteri prendono il nome di sistemi intelligenti in quanto la loro realizzazione non ha solo lo scopo di ottenere una determinata capacità di calcolo o di conoscenza di dati astratti ma anche di ricreare forme di intelligenza umana che, tramite alcuni particolari comportamenti, è possibile riprodurre sulle macchine.
Il termine, nonché il concetto, di intelligenza artificiale è nato grazie ad Alan Turing che, nel 1950, pubblicando l’articolo “Computing Machinery and Intelligence”, ha definito il famoso Test di Turing. Questo test stabiliva se una macchina potesse definirsi “intelligente” e se potesse dunque esistere una certa forma di “intelligenza artificiale”.
L’obiettivo di questo test era quello di simulare le capacità di dialogo di un essere umano e di convincere un reale interlocutore di trovarsi di fronte ad un soggetto altrettanto reale (non ad una macchina). Il test di Turing viene suddiviso in due fasi:
Nella prima partecipano tre soggetti: un uomo, una donna e un intervistatore. Queste persone non possono vedersi, sono posizionate in tre stanze differenti, ma possono comunicare tra di loro tramite una telescrivente. L’intervistatore formula delle domande per iscritto in modo tale che possa capire e determinare il sesso dei partecipanti che, però, hanno atteggiamenti differenti. Un partecipante è sincero nelle sue risposte, l’altro invece ha il solo scopo di far sbagliare l’intervistatore dunque fornisce delle risposte non veritiere. La prima fase viene ripetuta un numero di volte indefinito, ipotizziamo N, l’intervistatore sbaglierà sicuramente ad indicare i sessi un certo numero di volte, X, dunque il tasso di errore sarà pari a X/N.
Nella seconda fase uno dei due partecipanti viene sostituito da un computer. Adesso l’obiettivo dell’intervistatore è quello di identificare il computer attraverso la formulazione di domande, come nella fase precedente. Anche questa fase viene iterata N volte e l’errore da parte dell’intervistatore sarà Z, il tasso d’errore dunque sarà Z/N.
La terza fase, nonché la conclusiva, non è altro che un confronto dei due tassi d’errore pervenuti nelle fasi precedenti: se i valori delle due percentuali di errore sono simili allora il Test di Turing è superato e la macchina può considerarsi intelligente.
Qualche anno dopo la pubblicazione di Turing vennero presentati i primi modelli che sfruttavano il concetto di intelligenza artificiale. Uno di questi è quello di Arthur Samuel che, nel 1952, sviluppò il primo algoritmo per il gioco della dama e, nel 1955, introdusse una prima versione in grado di apprendere. L’algoritmo è capace di valutare sia tutte le possibili mosse a sua disposizione sia le contromosse dell’avversario. Riuscendo a predire la contromossa avversaria nel turno successivo e non solo, infatti essendo capace anche di predire più mosse nei successivi turni l’algoritmo è sempre in grado di effettuare la miglior mossa possibile e, qualora non dovesse verificarsi una mossa predetta è capace di adattarsi dinamicamente.
Il vero grande progresso nell’IA viene fatto a partire dagli anni ’90 attraverso l’utilizzo di un algoritmo che permetteva l’apprendimento per reti neurali. In particolare, nel 1997, il calcolatore Deep Blue creato da IBM è riuscito a sconfiggere il campione del mondo Garry Kasparov in uno scontro di scacchi: questa macchina era in grado di calcolare lo score di milioni di disposizioni sulla scacchiera al secondo, prevedere le mosse successive con una media da 6 a 8 turni e utilizzare un’enorme lista, fornita da campioni di scacchi dell’epoca, delle aperture, in modo tale da poter cambiare strategia partita dopo partita.
Questo fu il primo grande successo dell’intelligenza artificiale, si era dunque raggiunto un livello di intelligenza tale da poter comprendere le conoscenze del miglior giocatore del mondo in circolazione, la macchina è riuscita a battere il miglior essere umano sul campo.
Un ulteriore snodo nella storia dell’Intelligenza Artificiale è stato segnato dalla creazione di algoritmi che consentivano alle macchine di agire e prendere decisioni autonome: questi algoritmi imparavano attraverso l’esperienza e i propri errori, proprio come gli esseri umani. Inoltre, erano capaci di imparare a svolgere una determinata azione anche se questa non era mai stata programmata tra le azioni possibili.
La definizione più accreditata dalla comunità scientifica è quella fornita nel 1997 da Tom Mitchell, direttore del dipartimento Machine Learning della Carnegie Mellon University: “Un algoritmo apprende dall’esperienza E riguardanti una classe di problemi T con una misura pari a P, se la sua performance sui problemi T, misurata tramite P, aumenta con l’esperienza E”.
Questa definizione ha permesso di dire che il Machine Learning e, in particolare, gli algoritmi che lo compongono fanno sì che le macchine possano “apprendere” in maniera autonoma dai dati fornitigli attraverso le “esperienze”: queste ultime consistono in uno svolgimento di azioni, corrette o errate e la macchina, quindi, sarà in grado di imparare a svolgere determinati compiti migliorando, tramite l’esperienza, le proprie capacità, le proprie funzioni e le sue risposte.
Recentemente i progressi raggiunti dall’intelligenza artificiale prevedono l’utilizzo del Deep Learning per l’apprendimento automatico attraverso l’utilizzo delle Reti Neurali. Le reti neurali sono una tipologia specifica di Machine learning che permette l’apprendimento automatico attraverso un metodo ispirato alle reti neurali umane. Nel cervello umano, a differenza delle reti neurali, che hanno un numero finito di stati e interconnessioni con una direzione prestabilita dalla propagazione dell’informazione, qualsiasi neurone può connettersi a tutti gli altri neuroni senza alcuna complicazione, dunque possiamo semplificare il tutto dicendo che i neuroni sono liberi di comunicare fra di loro mentre le reti neurali sono vincolate a seguire delle specifiche.
Le reti neurali hanno la caratteristica di essere suddivise in strati, ognuno dei quali ha un compito ben preciso e modella i dati in entrata in maniera sempre più completa. Il primo strato è denominato Input, ha il compito di ricevere ed elaborare i dati in ingresso; il secondo è lo stato Hidden, che può essere compreso da uno o più strati dello stesso tipo e in cui avviene l’elaborazione effettiva dei dati; infine, nel terzo stato, detto Output, vengono raccolti i risultati ottenuti dallo stato precedente.
Un importante utilizzo delle reti neurali è stato adottato da IBM attraverso la creazione di Watson: questo sistema di intelligenza artificiale, nel 2011, è riuscito a vincere al quiz televisivo Jeopardy. Il quiz proponeva una modalità di gioco “al contrario” tale per cui veniva chiesto ai concorrenti di formulare delle domande in relazione alle risposte proposte. Particolare era il fatto che il calcolatore non fosse connesso ad internet, dunque non poteva fare ricerche sul web, ma nonostante questo disponeva di 200 milioni di pagine di contenuti presi da varie enciclopedie, dizionari, tassonomie, thesauri e articoli di giornale tutti caricati nella sua RAM per una dimensione totale di circa 4 terabytes. Due anni dopo, nel 2013, come anche annunciato da IBM, Watson verrà impiegato in ambito sanitario: esso, in particolare, avrà un ruolo centrale nella riduzione del tempo necessario ai medici per abbinare i pazienti affetti da carcinoma polmonare ai relativi studi clinici presso il Memorial Sloan-Kettering Cancer Center.
1.2 Tipi di dati del mondo reale
L’attuale mondo elettronico è ricco di vari tipi di dati, come dati dell’Internet delle cose (IoT)[3], ovvero dell’Internet del futuro che comprenderà miliardi di “cose” comunicanti intelligenti, ma anche di altri tipi di dati, quali possono essere strutturati, semi-strutturati o non strutturati. Inoltre, i “metadati” sono un altro tipo che in genere rappresenta dati sui dati. La disponibilità di essi è considerata la chiave per costruire un modello di machine learning o un data-driven real-world systems. L’estrazione di approfondimenti da questi dati può essere utilizzata per creare varie applicazioni intelligenti nei domini pertinenti. Ad esempio, per costruire un sistema di cyber security automatizzato basato sui dati, è possibile utilizzare i dati pertinenti sulla cybersicurezza, quali log di accesso, di sistema, di firewall e altri; per creare applicazioni mobili intelligenti personalizzate e sensibili al contesto, è possibile utilizzare i dati mobili pertinenti e così via. Pertanto, sono necessari strumenti e tecniche di gestione dei dati che abbiano la capacità di estrarre approfondimenti o conoscenze utili dai dati in modo tempestivo e intelligente, su cui si basano le applicazioni nel mondo reale.
I dati strutturati [4] si riferiscono a informazioni relativamente ben organizzate che possono essere tranquillamente inserite nei tradizionali RDBMS (sistemi di gestione dei database relazionali). Questi dati sono generati da sensori, dispositivi e altri oggetti connessi alla rete, e possono essere trasferiti ed elaborati in modo efficiente grazie alla loro struttura ben definita. Per esempio, se si considera un sensore di temperatura collegato a un sistema IoT, i dati che generano potrebbero essere strutturati in un formato specifico come un valore numerico rappresentante la temperatura, accompagnato da informazioni aggiuntive come l’id
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Misure meccaniche e termiche - Utilizzo del calibro ventesimale
-
Google Adwords, Istruzioni per un utilizzo efficace di uno strumento indispensabile
-
Utilizzo dei simboli di culto. I video musicali, Etica
-
Tesi, Il factoring ed il suo utilizzo bancario