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 comporatmento . . . . . . . . . . . . . . . . . . . . 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 im-
portante, 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 tem-
po senza essere esplicitamente programmati per ogni singolo compito.
Con l’aumento della digitalizzazione e della connettività, la sicurezza informatica è diven-
tata 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 ri-
spondere 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 pro-
cessare 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
4 INDICE
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 Reinforce-
ment learning.
Il capitolo seguente esamina la vulnerabilità informatica e si sofferma sui siste-
• mi 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 proseguio 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 [1] è un campo dell’intelligenza artificiale che si occupa dello svi-
Machine Learning
luppo 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’in-
telligenza 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 ha de-
Machinery and Intelligence”,
finito 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
6
CAPITOLO 1. IL MACHINE LEARNING
persone non possono vedersi, sono posizionate in tre stanze differenti, ma possono co-
municare 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 particpanti viene sostituito da un computer. Adesso
l’obiettivo dell’intervistatore è quello di identificare il computer attraverso la formula-
zione 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 Arhur 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 creazio-
ne 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
7
CAPITOLO 1. IL MACHINE LEARNING
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’appren-
dimento 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 intercon-
nessioni 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, ognugno 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 for-
mulare 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 enciclo-
pedie, 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 an-
nunciato 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-Kettint
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” co-
municanti 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
8
CAPITOLO 1. IL MACHINE LEARNING
modello di machine learning o un data-driven real-world systems. L’estrazione di appro-
fondimenti da questi dati può essere utilizzata per creare varie applicazioni intelligenti
nei domini pertinenti. Ad esempio, per costruire un sistema di cyber security automa-
tizzato 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 pos-
sono 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 col-
legato a un sistema IoT, i dati che generano potrebbero essere strutturati in un formato
specifico come un valore numerico rappresentante la temperatura, accompagnato da in-
formazioni 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
-
Risposte corrette utilizzo del tablet nella didattica
-
Google Adwords, Istruzioni per un utilizzo efficace di uno strumento indispensabile
-
Tesi, Il factoring ed il suo utilizzo bancario