Estratto del documento

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

Anteprima
Vedrai una selezione di 14 pagine su 65
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 1 Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 2
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 6
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 11
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 16
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 21
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 26
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 31
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 36
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 41
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 46
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 51
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 56
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Utilizzo del framework Storm per la realizzazione di un sistema real-time di network intrusion detection Pag. 61
1 su 65
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Mario_Granata di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università della Calabria o del prof Talia Domenico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community