Università degli Studi Mediterranea di Reggio Calabria
Dipartimento di Ingegneria dell’Informazione, delle Infrastrutture e
dell’Energia Sostenibile
Corso di Laurea Magistrale in Ingegneria Informatica e dei Sistemi per le
Telecomunicazioni
Tesi di Laurea
Utilizzo di Splunk per l’estrazione di conoscenza descrittiva e
diagnostica e per la ricerca di anomalie sugli accessi relativi
al firewall e sugli accessi e gli errori relativi al Web Server di
Ateneo
Relatori
Candidata
Prof. Domenico Ursino
Rossella Oliva
Dott. Melchiorre Monaca
Anno Accademico 2015-2016
Alla mia famiglia.
Indice
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
Lo scenario di riferimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1 Cosa sono i log nel contesto della sicurezza informatica . . . . . . . . . . . . 7
1.2 I log di accesso al web server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 I log di errore sul web server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4 I log di accesso al firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Strumenti software utilizzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1 I software di Security Information and Event Management . . . . . . . . .
2.2 Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Utilizzo di Splunk per l’analisi dei log . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 App di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
19
21
29
33
36
Installazione di Splunk e caricamento dei dati da analizzare . . . . . . . .
3.1 Installazione di Docker e di Spunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Caricamento dei dati in Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Indicizzatore di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
39
41
45
Progettazione e realizzazione dell’analisi descrittiva . . . . . . . . . . . . . . . . .
4.1 Analisi descrittiva dei log di accesso . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Analisi descrittiva dei log di errore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Analisi descrittiva dei log del firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
49
61
62
Anomaly Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1 Introduzione all’analisi degli outlier e Data Mining a supporto della
cybersecurity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Machine Learning Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Outlier Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.1 Analisi degli outlier relativi agli accessi al firewall . . . . . . . . . .
5.3.2 Analisi degli outlier relativi agli accessi al server web . . . . . . . .
71
71
72
74
75
84
VI
Indice
Discussione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1 SWOT Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 SWOT Analysis dell’analisi dei log tramite Splunk . . . . . . . . . . . . . . . .
6.2.1 Punti di Forza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.2 Punti di Debolezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.3 Opportunità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.4 Minacce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Best Practice e Lessons Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4 Generalizzabilità dell’approccio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
89
90
91
91
93
93
94
96
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Riferimenti bibliografici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Ringraziamenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Elenco delle figure
1.1
1.2
1.3
1.4
1.5
Architettura della rete di Ateneo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Logo di Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schema di rete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Logo Cisco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Esempio di schema di rete con firewall Cisco ASA . . . . . . . . . . . . . . . . .
10
10
14
16
16
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
2.12
2.13
2.14
2.15
2.16
2.17
2.18
2.19
2.20
2.21
2.22
2.23
2.24
2.25
2.26
2.27
Logo di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Architettura di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installazione di Splunk sui principali sistemi operativi . . . . . . . . . . . . . .
Pagina del login di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pagina iniziale dell’nterfaccia web di Splunk . . . . . . . . . . . . . . . . . . . . . .
Aggiunta dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Input di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aggiunta dei dati da diverse source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Impostazioni di input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anteprima dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
File caricato correttamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Campi estratti automaticamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Inclusione di una parte di log nella ricerca . . . . . . . . . . . . . . . . . . . . . . . .
Documentazione fornita da Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Assistente di ricerca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dati indicizzati da Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Interfaccia per la ricerca in Splunk Enterprice . . . . . . . . . . . . . . . . . . . . .
Modalità di salvataggio delle ricerche . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Condivisione dei risultati della ricerca . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Esempio di grafico in Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Esportazione di dashboard in formato PDF . . . . . . . . . . . . . . . . . . . . . . .
Personalizzazione delle visualizzazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Interfaccia dell’analisi Drilldown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Intervallo temporale di analisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ricerca app in splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
App Machine Learning Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Risultato della ricerca lanciata in Google Maps for Splunk . . . . . . . . .
21
22
24
24
25
25
26
26
27
27
27
28
28
28
29
30
30
31
31
32
32
32
33
34
35
35
36
VIII
Elenco delle figure
3.1
3.2
3.3
3.4
3.5
3.6
3.7
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
4.13
4.14
4.15
4.16
4.17
4.18
4.19
4.20
4.21
4.22
4.23
4.24
4.25
4.26
4.27
4.28
4.29
4.30
Opzioni per immettere i dati in Splunk Web . . . . . . . . . . . . . . . . . . . . . .
Elenco delle opzioni selezionate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Avviso di Spunk relativo allo spazio di archiviazione disponibile
sull’hard disk inferiore a 5GB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Impostazione del minimo spazio libero sul disco in Splunk Web . . . . . .
Fasi di parsing e indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ciclo di vita dei buckets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Posizione dei bucket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Andamento e frequenza degli eventi per il mese di Ottobre 2016 . . . . .
Pagine web maggiormente consultate . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Home page del sito web dell’Università “Mediterranea”di Reggio
Calabria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Useragent che maggiormente accedono al sito web dell’Ateneo . . . . . . .
Pagina web dei docenti dei diversi dipartimenti d’Ateneo . . . . . . . . . . .
Numero di indirizzi IP che accedono per ogni giorno di Ottobre al
server web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mappa degli indirizzi IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Le dieci risorse maggiormente richieste . . . . . . . . . . . . . . . . . . . . . . . . . . .
I sistemi operativi maggiormente usati per accedere al server . . . . . . . .
Modelli dei dispositivi usati per accedere al server web . . . . . . . . . . . . .
Web crawler che hanno effettuato il maggior numero di accessi . . . . . .
Mappa dei Web crawler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Web crawler che hanno effettuato il maggior numero di accessi . . . . . .
Indirizzi IP che hanno effettuato il maggior numero di accessi . . . . . . .
Andamento degli eventi dell’indirizzo IP che ha effettuato il maggior
numero di accessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pagine web richieste dall’indirizzo IP 78.47.225.238 . . . . . . . . . . . . . . . .
Le prime dieci pagine web richieste dall’indirizzo IP 78.47.225.238 . . .
Il sistema operativo più utilizzato dall’indirizzo IP che ha effettuato
più accessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dispositivo più utilizzato dall’indirizzo IP che ha effettuato più accessi
Risorse maggiormente richieste dall’indirizzo IP che ha effettuato
più accessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Codici di stato HTTP inviati all’indirizzo IP che ha effettuato più
accessi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tabella di contingnza con le pagine web richieste e i relativi codici
di Stato HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mappa geografica in cui sono localizzati gli errori . . . . . . . . . . . . . . . . . .
Fascia oraria in cui è stato riscontrato l’errore PHP Fatal Error . . . . .
Primi dieci errori maggiormente riscontrati . . . . . . . . . . . . . . . . . . . . . . .
I dieci messaggi d’errore che sono apparsi maggiormente . . . . . . . . . . . .
Paesi che hanno effettuato più connessioni su porte diverse . . . . . . . . .
Indirizzi IP che accedono maggiormente dalla Cina . . . . . . . . . . . . . . . .
Indirizzi IP che accedono maggiormente dagli Stati Uniti . . . . . . . . . . .
Paesi che hanno effettuato complessivamente più connessioni . . . . . . . .
42
42
43
44
46
47
48
49
50
50
51
51
52
52
53
53
54
55
55
56
56
57
57
58
58
59
59
60
60
61
62
63
63
64
65
65
65
Elenco delle figure
4.31 Andamento temporale delle connessioni relative all’indirizzo IP
205.185.208.98 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.32 Connessioni negate dell’IP 205.185.208.98 durante il 16 Ottobre . . . . .
4.33 Connessioni negate all’IP 205.185.208.98 durante il 17 Ottobre . . . . . .
4.34 Connessioni permesse all’IP 205.185.208.98 durante il 17 Ottobre . . . .
4.35 Connessioni SSH negate all’IP 205.185.208.98 il 16 Ottobre . . . . . . . . .
4.36 Connessioni SSH negate all’IP 205.185.208.98 il 17 Ottobre . . . . . . . . .
4.37 Connessioni permesse alla porta SSH per l’IP 205.185.208.98 il 17
Ottobre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.38 Connessioni Telnet negate all’IP 205.185.208.98 il 17 Ottobre . . . . . . .
4.39 Connessioni permesse alla porta Telnet per l’IP 205.185.208.98 il 17
Ottobre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
5.13
5.14
5.15
5.16
5.17
5.18
5.19
5.20
5.21
5.22
5.23
5.24
5.25
5.26
5.27
5.28
Interfaccia grafica dell’app Machine Learning Toolkit . . . . . . . . . . . . . .
Esempio di visualizzazione nel caso di rilevazione di outlier numerici .
Andamento temporale degli accessi al firewall . . . . . . . . . . . . . . . . . . . . .
Numero di outlier relativi a tutti gli indirizzi IP sorgente e numero
totale di eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grafico degli outlier relativi a tutti gli indirizzi IP sorgente . . . . . . . . .
Indirizzi IP outlier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tabella riassuntiva relativa a tutti gli indirizzi IP più anomali . . . . . . .
Stato della connessione relativa all’indirizzo IP del Regno Unito . . . . .
Protocollo usato dall’IP del Regno Unito . . . . . . . . . . . . . . . . . . . . . . . . .
Le prime 20 porte a cui si è connesso l’IP del Regno Unito . . . . . . . . . .
Le prime 20 porte a cui si è connesso l’IP della Cina . . . . . . . . . . . . . . .
Numero degli outlier relativi agli IP italiani e numero totale di eventi
Grafico degli outlier relativi agli indirizzi IP italiani . . . . . . . . . . . . . . . .
Tabella riassuntiva con gli indirizzi IP italiani più anomali . . . . . . . . . .
Numero degli outlier relativi ad IP non italiani e numero totale di
eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tabella riassuntiva con gli indirizzi IP più anomali non italiani . . . . . .
Grafico degli outlier relativi agli indirizzi IP anomali non italiani . . . .
Indirizzi IP non italiani più anomali . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Numero di porte di destinazione outlier e numero totale di eventi . . . .
Grafico degli outlier relativi alle porte di destinazione . . . . . . . . . . . . . .
Indirizzi IP che effettuano più connessioni alla porta 23 . . . . . . . . . . . .
Numero degli outlier relativi agli indirizzi IP che si collegano alla
porta 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grafico degli outlier relativi agli indirizzi IP che si collegano alla
porta 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Stato delle connessioni effettuate dalla Repubblica Coreana sulla
porta 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Stato delle connessioni effettuate dall’Ucraina sulla porta 23 . . . . . . . .
Andamento degli accessi al server web d’Ateneo . . . . . . . . . . . . . . . . . . .
Numero di IP outlier e numero totale di eventi . . . . . . . . . . . . . . . . . . . .
Grafico degli outlier relativi agli indirizzi IP che accedono al web
server Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IX
66
67
67
67
68
68
68
69
69
73
75
75
76
76
77
77
77
78
78
78
79
79
80
80
80
81
81
81
81
82
82
82
83
83
84
84
85
X
Elenco delle figure
5.29
5.30
5.31
5.32
5.33
5.34
5.35
5.36
Tabella riassuntiva con gli indirizzi IP più anomali . . . . . . . . . . . . . . . . .
Numero di IP outlier non italiani e numero totale di eventi . . . . . . . . .
Grafico degli outlier relativi agli IP non italiani . . . . . . . . . . . . . . . . . . .
Tabella riassuntiva con gli indirizzi IP non italiani più anomali . . . . . .
Grafico con gli indirizzi IP degli outlier non italiani . . . . . . . . . . . . . . . .
Numero di bot outlier e numero totale di eventi . . . . . . . . . . . . . . . . . . .
Grafico degli outlier relativi ai bot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grafico con i bot outlier che accedono al server web d’Ateneo . . . . . . .
85
85
85
86
86
87
87
87
6.1
6.2
6.3
6.4
6.5
6.6
6.7
Diagramma illustrativo di una matrice SWOT . . . . . . . . . . . . . . . . . . . .
Interfaccia per la ricerca delle app di Splunk . . . . . . . . . . . . . . . . . . . . . .
App “Splunk Enterprise Security” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Costi di Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Errore riscontrato durante il caricamento dei log in Splunk web . . . . .
Logo Cisco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Logo di Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
92
92
93
95
96
97
Elenco dei listati
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
Formato dei log di accesso ad un web server Apache . . . . . . . . . . . . . . .
Formato Error Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tipico formato di un log di firewall per l’evento con codice 106100 . . .
Informazioni contenute nel log per l’evento con codice 106100 . . . . . . .
Tipico formato di un log per l’evento con codice 302013 . . . . . . . . . . . .
Informazioni contenute nel log per l’evento con codice 302013 . . . . . . .
Tipico formato di un log di firewall per l’evento con codice 302014 . . .
Informazioni contenute nel log per l’evento con codice 302014 . . . . . . .
Comandi usati per l’installazione di Docker . . . . . . . . . . . . . . . . . . . . . . .
Comando per la verifica della corretta installazione di Docker . . . . . . .
Output che dimostra che l’installazione è avvenuta correttamente . . . .
Estrazione dal repository di un’immagine che utilizza l’ultima
versione di Splunk Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Creazione di un volume virtuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Esecuzione di docker Splunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Impostazione del minimo spazio libero sul disco con CLI . . . . . . . . . . .
Impostazione del minimo spazio libero sul disco nel file di
configurazione server.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Parser in Python per la divisione dei file di log . . . . . . . . . . . . . . . . . . . .
12
14
16
17
17
18
18
18
39
40
40
40
40
41
43
43
44
Introduzione
La rapida evoluzione delle tecnologie ha avuto un profondo impatto sulla nostra
società e sulle nostre vite. La presenza di reti wireless, a cui si può accedere praticamente dovunque, ha incoraggiato la diffusione capillare di dispositivi in grado di
connettersi alla rete; si va dai tablet ai cellulari fino ai più recenti wearable device,
oggetti tradizionali, come l’orologio o gli occhiali, che possono connettersi al web.
Ma collegarsi alla rete, oltre a permettere l’accesso a una mole enorme di informazioni, rende, anche, potenzialmente vulnerabili i nostri dispositivi con tutto
quello che contengono, dai dati personali, ai profili sui social network, fino agli
accessi ai servizi di online banking.
Questo accade sia per i singoli che per le grandi realtà aziendali, come le banche,
le società energetiche o gli ospedali, che usano la rete per scambiare informazioni,
per organizzare la fornitura dei servizi e per coordinare le attività. In altre parole
l’accesso a Internet ci apre al mondo, ma rende le persone, le aziende e le istituzioni potenzialmente esposte a rischi di truffa, furto di informazioni o sabotaggio. Il
pericolo non va sottovalutato.
Quando colleghiamo un computer ad una rete sorgono molte problematiche legate alla sicurezza. Piccole, medie e grandi aziende, come pure singoli utenti, richedono
che i propri dati mantengano una certa riservatezza e siano inaccessibili da persone
non autorizzate. Tale riservatezza, viene, spesso messa in discussione da hacker, che
possono prendere di mira server web, imbrattare siti web oppure ottenere accessi
fraudolenti.
Le vulnerabilità dei sistemi informatici consentono di accedere in pochi secondi
a segreti industriali, brevetti e innovazioni che hanno richiesto anni di ricerca. Il
crimine informatico può decretare il fallimento di aziende, e quindi danni economici enormi. Per le nostre imprese, che puntano sull’innovazione come elemento di
sviluppo, il danno potenziale può essere enorme.
La correlazione tra prosperità economica del Paese e qualità delle sue infrastrutture cyber sarà sempre più stretta, e l’Italia dovrà puntare sempre più su alti
standard di cybersecurity nella società, nel sistema industriale e nella Pubblica
Amministrazione.
Infatti, non sono a rischio solo le persone e le aziende, anche la sicurezza nazionale può potenzialmente essere messa in pericolo. Si pensi alle conseguenze che
potrebbero derivare dall’alterazione dei sistemi che regolano il trasporto, le reti
4
Introduzione
energetiche o i sistemi di comando e controllo militari. Non si tratta di un futuro
remoto o di uno scenario da saga fantascientifica. Il cyber crimine è già, oggi, una
realtà, e cresce nel mondo a ritmo sostenuto.
In sintesi, tutti noi siamo esposti al rischio di intrusioni, che possono avere
effetti devastanti sulla vita personale e sulla vita economica dell’intero paese. Si
tratta, quindi, di pericoli reali che non possono più essere sottovalutati. Sviluppare
nuove capacità e nuovi strumenti per migliorare la cybersecurity del sistema Paese
rappresenta, quindi, una sfida di grande importanza per la crescita, il benessere e
la sicurezza dei cittadini.
Nel caso di tentato accesso fraudolento, le aziende devono poter bloccare il traffico non autorizzato. La maggior parte delle aziende utilizzano i firewall che, se propriamente aggiornati e manutenuti, servono a bloccare il traffico illecito e a creare
log dettagliati per tutto il traffico in entrata ed in uscita. Se analizzati correttamente, i log dei firewall possono evidenziare attacchi di Denial of Service (DoS), o altre
attività sospette. Tuttavia, poche aziende analizzano questi log, e anche quelle che
lo fanno, lo fanno poco frequentemente.
Quindi, molti tentativi di attacco passano inosservati, dando agli hacker un’elevata probabilità di superare la barriera rappresentata dai firewall. La firewall log
analysis è un’operazione complessa che richiede il controllo simultaneo di migliaia di
eventi. I processi automatizzati di oggi possono filtrare la stragrande maggioranza
degli eventi, identificando soltanto quelli che sono abbastanza sospetti da richiedere
un’ulteriore analisi da parte di un esperto. L’analista distingue un attacco dal normale traffico e, nel caso di un attacco certo, può cambiare proattivamente la firewall
policy aggiornando tutti i sistemi di network intrusion detection.
Nella cybersecurity, la raccolta e la memorizzazione di log è ormai riconosciuta
come una pratica virtuosa per l’analisi dei rischi e per il rafforzamento delle politiche
di sicurezza.
Uno dei meccanismi per l’individuazione delle attività sospette è la verifica dei
log di sistema, che consente di individuare attività anomale e di monitorare i pacchetti destinati al firewall o al server. I file di log di un web server o di un firewall
registrano informazioni di eventi scaturiti durante l’esecuzione di un processo ed,
attraverso la loro analisi, è possibile individuare attacchi ai sistemi, in quanto questi
ultimi potrebbero lasciare segni negli eventi contenuti nei log.
I file di log di un server web registrano gli eventi generati dal sistema di autenticazione nel momento in cui l’utente effettua l’accesso, o tenta di effettuare l’accesso al
server. Gli error log vengono usati principalmente per individuare attività sospette.
Un sistema SIEM (Security Information and Event Management) è uno degli
strumenti fondamentali per un approccio alla difesa in profondità, a beneficio della sicurezza delle aziende. I software SIEM definiscono un prodotto, costituito da
software e servizi, che unisce capacità di “Security Information Management”(SIM)
con capacità di “Security Event Management”(SEM). Più specificatamente:
•
•
un SIM si occupa della parte di “Log management”, di attività di analisi e della
produzione di report;
un SEM si occupa del monitoraggio in real-time degli eventi, dell’incident management (in ambito security) per quanto riguarda eventi che accadono sulla rete,
sui dispositivi di sicurezza, sui sistemi o nelle applicazioni.
Introduzione
5
In sostanza, un SIEM mira a risolvere esigenze in ambito di gestione delle minacce informatiche. Una soluzione SIEM a elevate prestazioni associa eventi, minacce
e dati di rischio per fornire intelligence per la sicurezza, risposte rapide in caso di
necessità, una ininterrotta gestione dei log e un’estensibile reportistica di conformità. Tutto ciò forma il contesto necessario per una gestione adattiva dei rischi alla
sicurezza.
Per tenere testa agli attacchi esterni, alle minacce interne e alle frodi costose
è necessario un monitoraggio continuo della sicurezza e un’aderenza alle policy di
compliance aziendale, una risposta rapida agli incidenti e la capacità di individuare
e rispondere a minacce note, non note e avanzate.
Le soluzioni per la sicurezza di Splunk consentono alle organizzazioni di individuare, prevenire e rispondere a tali minacce, mettendo a disposizione preziose
informazioni contestuali e visive che aiutano a prendere decisioni di sicurezza più
rapide e più intelligenti. Splunk consente un approccio alla sicurezza basato sull’analisi. Splunk Enterprise viene, infatti, utilizzato da organizzazioni di tutto il mondo.
È stato nominato leader nel Magic Quadrant di Gartner per SIEM per quattro anni
consecutivi, compreso il 2016. Il Magic Quadrant di Gartner è la rappresentazione
grafica di un settore di mercato in cui i vendor vengono posizionati in una della
quattro categorie previste: Leader, Visionary, Niche Player e Challenger.
Questa posizione di Splunk nella categoria leader è una testimonianza della
forza della piattaforma nel settore della sicurezza. Splunk, nella categoria Leader
del Magic Quadrant del 2016, si trova al secondo posto, dopo solo IBM che, invece,
si trova al primo.
Splunk è un software che indicizza dati IT da qualsiasi applicazione, server o
dispositivo di rete che costituisce l’infrastruttura IT. È un potente e versatile motore
di ricerca e di analisi che consente di esaminare e risolvere i problemi, monitorare,
avvisare e creare report su tutto ciò che sta accadendo nell’intera infrastruttura IT
in tempo reale. Splunk, in sostanza, raccoglie e indicizza log e dati macchina da
qualsiasi fonte; le sue potenti capacità di ricerca, analisi e visualizzazione sono a
disposizione di qualunque tipo di utilizzatore; in più, le app offrono soluzioni per la
sicurezza, l’operatività IT, la business analysis, e altro ancora.
L’obiettivo della presente tesi è quello di analizzare i log di accesso e di errore
al server web e i log di accesso al firewall dell’Università “Mediterranea”di Reggio
Calabria al fine di individuare eventuali attacchi informatici.
In una prima fase sarà condotta un’analisi descrittiva dei log, per l’estrazione di
conoscenza e il supporto alla diagnosi. Successivamente verrà effettuata l’anomaly
detection al fine di rilevare le intrusioni, in quanto infrangere la sicurezza di un
sistema comporta, spesso, un uso anomalo del sistema stesso e, quindi, eventuali
attacchi informatici possono essere rilevati cercando le attività che si differenziano
dal normale comportamento. La presente tesi consiste di sette capitoli strutturati
come di seguito specificato:
•
•
Nel primo capitolo verrà spiegato cosa sono i file di log e come possono essere
utilizzati nell’ambito della sicurezza informatica. Successivamente, si focalizzerà
l’attenzione sui log di accesso e sui log di errore del web server Apache e sui log
di accesso al firewall Cisco della rete di Ateneo.
Nel secondo capitolo verrà presentato il software utilizzato per l’analisi dei file
di log, ovvero Splunk. Prima di ciò, però, si parlerà dei software di “Security
6
•
•
•
•
•
Introduzione
Information and Event Management”e si discuterà sull’importanza della gestione
dei file di log e sui vantaggi che scaturiscono da quest’ultima. Successivamente,
verrà effettuata una breve panoramica sulle app e sugli add-on di Splunk. Infine,
verrà presentata la tecnologia Docker, illustrando i vantaggi di utilizzo rispetto
alle macchine virtuali.
Nel terzo capitolo, inizialmente, si spiegherà come sono stati installati Docker e
Splunk. Successivamente, ci si soffermerà sulle modalità di caricamento dei dati
in Splunk; infine, si spiegherà come e dove Splunk memorizza i dati.
Nel quarto capitolo ci si soffermerà sulla descrizione dei risultati ottenuti dalle
analisi descrittive relative ai log di accesso e di errore al server web di Ateneo e
ai log di accesso al firewall.
Nel quinto capitolo, inizialmente, verrà spiegato perchè è importante effettuare
attività di “anomaly detection”. Successivamente, si descriverà l’app di Splunk
utilizzata per effettuare “outlier detection”. Infine, verrano illustrate le anomalie
emerse dall’analisi degli outlier.
Nel sesto capitolo, inizialmente, saranno valutati i punti di forza, di debolezza,
le opportunità e le minacce relative all’analisi dei log effettuata tramite Splunk.
Successivamente verranno descritte le Best Practice e le Lessons Learned. Infine,
verrà spiegato come può essere generalizzato il nostro approccio ad altri casi
analoghi.
Infine, nel settimo capitolo, verranno tratte le conclusioni in merito al lavoro
realizzato e verranno esaminati alcuni possibili sviluppi futuri.
1
Lo scenario di riferimento
Questo capitolo spiegherà cosa sono i file di log e come possono essere utilizzati
nell’ambito della sicurezza informatica. Successivamente si focalizzerà l’attenzione
sui log di accesso e sui log di errore del web server Apache della rete di Ateneo e
sui log di accesso al firewall Cisco della rete di Ateneo.
1.1 Cosa sono i log nel contesto della sicurezza
informatica
In ambito informatico, i log sono dei file di testo nei quali vengono registrate le
attività di un sistema operativo, di un’applicazione o degli host che li generano. Essi
memorizzano informazioni testuali riguardo eventi regolari o anomali, catturati da
un sistema durante l’esecuzione.
Quando un computer viene collegato alla rete sorgono diverse problematiche legate alla sicurezza. Le infrastrutture IT producono quotidianamente enormi quantità di log che contengono informazioni di importanza cruciale in termini di sicurezza
della rete. Le aziende, cosı̀ come i singoli utenti, richiedono che i propri dati siano inaccessibili da persone non autorizzate e mantengano una certa riservatezza,
che viene frequentemente messa in discussione dagli hacker, i quali possono inviare
virus, ottenere accessi fraudolenti e prendere di mira server web.
Per ovviare a queste problematiche, è utile una corretta gestione dei log, che
diventano uno strumento efficace per rilevare le intrusioni e gli accessi irregolari al
nostro sistema.
Tramite l’analisi dei log è possibile incrementare la sicurezza nei sistemi informatici, in quanto essa permette di individuare rapidamente, e in molti casi anche di
prevenire, problemi e anomalie della rete, dei sistemi software, dei dispositivi elettronici che generano tali log, oltre che i tentativi di attacco, i comportamenti anomali
degli utenti, le azioni intraprese dagli intrusi, le minacce, i tempi di inattività dei
sistemi, e tanto altro ancora.
I file di log, che possono essere di vario tipo, sono il mezzo attraverso il quale la
nostra applicazione ci parla. In base al loro contenuto permettono di identificare chi
fa cosa e quando, di capire quanti e quali sono i tentativi di connessione ricevuti da
8
1 Lo scenario di riferimento
parte di un certo host in un certo intervallo temporale, da dove ha avuto origine una
particolare connessione, quali sono le azioni che un particolare utente ha intrapreso,
quali sono le azioni più frequenti e in quali momenti.
Negli ultimi anni i file di log hanno assunto un’importanza crescente nell’ambito
della sicurezza dei sistemi informatici poiché consentono di mettere in atto procedure
di monitoraggio, controllo e prevenzione di violazione dei sistemi nonché, in caso di
necessità, di documentare a posteriori gli eventi accaduti e di ricostruire situazioni
che si sono verificate, ad esempio, in seguito ad una perdita di dati. In caso di
compromissione di un servizio, i log ci consentono di risalire alle operazioni effettuate
prima che si verificasse l’errore e ci aiutano ad individuare la fonte delle anomalie.
Quando si verifica un problema al proprio server o siamo stati vittima di qualche
attacco, la soluzione migliore per risalire alla fonte è quella di analizzare i log di
sistema, sempre che non siano stati modificati in caso di attacco.
La possibilità di elaborare report periodici e statistiche, tramite l’analisi dei
log, consente di effettuare attività di monitoraggio e di tenere sotto controllo le
prestazioni di un sistema. Le informazioni ricavate sono lo strumento più adatto
per la risoluzione dei problemi operazionali e per la ricerca delle soluzioni.
Per le aziende, continuamente esposte all’evoluzione dei metodi di attacco, i
rischi sono molto alti. Per tale motivo, in caso di incidenti, bisogna avere un piano
di risposta in tempo reale, una capacità di elaborazione rapida, al fine di individuare
gli eventi più significativi attraverso analisi avanzate e predittive, poiché capire cosa
sta per succedere può essere la migliore difesa.
Con l’incremento dei flussi informativi, è necessario tenere sotto controllo volumi
di dati molto alti; pertanto, aumenta la necessità di sicurezza del dato. Sono, dunque,
necessarie attività continue e rapide di monitoraggio, in modo da poter individuare
nel più breve tempo possibile i rischi per la sicurezza dei dati. Tali attività si basano
sul rilevamento, nell’ individuazione e nell’analisi di minacce, nell’indagine degli
incidenti, nella generazione di report attraverso un sistema di analisi per consentirne
uno studio immediato. Quando la prevenzione non è sufficiente, l’individuazione e
il ripristino rapido sono l’unica risorsa disponibile.
Nonostante la sua palese importanza, la gestione dei log viene affrontata dalla
maggior parte delle aziende in modo approssimativo e poco organizzato.
Inoltre, molto spesso, i file di log vengono presi in considerazione solo dopo che
si è verificato un problema o un attacco.
Tuttavia essi non devono interessare solo i casi negativi degli avvenimenti, ma
devono registrare sia quando l’azione va a buon fine sia quando fallisce. In quest’ultimo caso è bene avere quante più informazioni possibili sia sull’errore sia sul
contesto che lo ha generato, per poter effettuare un’analisi su quanto è accaduto e
prendere le dovute precauzioni affinché ciò non si verifichi più.
Per poter identificare correttamente una compromissione dello stato di security
è necessario disporre di un singolo sistema di raccolta e archiviazione di log, centralizzato ed integrato, e non di più sistemi separati. I log dovrebbero essere archiviati
con tracce temporali, eliminando la possibilità che i dati, una volta scritti, possano essere modificati. Inoltre, per non perdere d’occhio tutto quello che accade sul
nostro sistema, anche dopo un eventuale attacco informatico, è necessario salvare i
log su un dispositivo fisico esterno alla memoria del computer, poiché quest’ultima
potrebbe essere manomessa, oppure posizionare i log su un host separato, dedicato
1.2 I log di accesso al web server
9
esclusivamente a questa finalità, e posto all’interno di una sottorete protetta da firewall. Pertanto, è conveniente predisporre opportune regole per l’archiviazione dei
log e la loro dislocazione in luoghi e su supporti fisicamente sicuri. Per non rischiare
di vanificare inutilmente i meccanismi di logging è conveniente, inoltre:
•
•
•
•
proteggere i log in modo tale da consentire l’accesso ad essi ed agli strumenti
utilizzati per la loro configurazione soltanto agli utenti debitamente autorizzati;
criptare i log contenenti informazioni sensibili nel momento stesso della loro
registrazione;
configurare attentamente questo host in modo da scongiurare o limitare fortemente gli effetti di un possibile attacco di tipo DOS (Denial of Service), che può
verificarsi se l’aggressore cerca di saturare le risorse impiegate per il salvataggio
dei dati in modo da far cessare il logging;
analizzare i log con cadenza periodica avvalendosi degli strumenti esistenti per
questo scopo.
I file di log, dunque, permettono di memorizzare tutte le informazioni riguardanti
lo stato di salute del sistema e delle applicazioni.
1.2 I log di accesso al web server
Al fine di gestire efficientemente un server web, è necessario ottenere un feedback
sulle sue attività e sulle sue prestazioni. Oggigiorno, tutti i programmi software, le
applicazioni più recenti e i nuovi dispositivi sono in grado di generare log.
I log di controllo degli accessi permettono di tenere traccia degli accessi al dominio, sia che avvengano dal Web sia che avvengano da applicazioni non Web, e
consentono di verificare gli accessi riusciti, non riusciti o sospetti. Essi rappresentano un prezioso punto di partenza per indagare un problema riferito da un utente,
poiché il log di una richiesta non riuscita può stabilire il momento esatto in cui si è
verificato un errore.
I file di log di un server web registrano gli eventi generati dal sistema di autenticazione nel momento in cui l’utente effettua l’accesso o tenta di accedere al server.
In sostanza, sono dei file testuali che contengono la lista di tutti gli accessi effettuati
su un sito web.
La raccolta dei dati relativi alle attività degli utenti ed al server web è essenziale poiché, collezionando ed analizzando tali informazioni, diventa possibile non
soltanto scoprire i segni di eventuali intrusioni e determinare la portata delle azioni
compiute dall’aggressore, ma, anche, individuare tutte quelle operazioni che, pur
non rappresentando dei veri e propri attacchi, sono sintomi di un sicuro interesse di
qualcuno verso il sistema ed in particolare verso le sue vulnerabilità.
Una parte dei file di log che sono stati analizzati in questo lavoro di tesi sono i
log di accesso e i log di errore del server Apache della rete d’Ateneo dell’Università
“Mediterranea”di Reggio Calabria, la cui architettura è mostrata in Figura 1.1.
Il server web Apache, il cui logo è mostrato in Figura 1.2, fornisce una varietà
di meccanismi di registrazione per la memorizzazione di tutto quello che accade su
un server, compresi gli accessi ad esso e gli errori che si sono verificati durante tale
attività.
10
1 Lo scenario di riferimento
Figura 1.1. Architettura della rete di Ateneo
Figura 1.2. Logo di Apache
1.2 I log di accesso al web server
11
Apache HTTP Server, sviluppato dalla Apache Software Foundation, è il web
server più diffuso in Internet. È un software che ha il vantaggio di offrire funzioni di
controllo per la sicurezza, come quelle effettuate da un proxy. È affidabile, compatto,
funzionale, freeware e progettato per essere eseguito come processo standalone. È
la piattaforma server Web modulare più diffusa, cioè fornisce un insieme di moduli
per la gestione delle operazioni. Ogni modulo è un’unità indipendente che si occupa
di una funzionalità. Ad ogni richiesta del client vengono svolte funzioni specifiche
da ogni modulo di cui è composto.
Apache utilizza variabili d’ambiente per gestire operazioni come il log o il controllo degli accessi e per comunicare con programmi esterni. Le variabili possono
essere utilizzate all’interno delle direttive per regolare operazioni del server. Apache
HTTP Server è open-source e mette a disposizione sistemi di controllo d’accesso a
più livelli.
Esso è in grado di operare su una grande varietà di sistemi operativi. Viene
sviluppato e aggiornato per sistemi operativi come UNIX e Windows. È stato progettato per essere flessibile su ogni tipo di piattaforma e con ogni configurazione
d’ambiente. È molto popolare tra le aziende commerciali. Sfortunatamente, ciò lo
rende un obiettivo altrettanto popolare tra gli hacker. Di conseguenza, periodicamente, emergono nuovi exploit che mettono in pericolo l’integrità e la stabilità del
proprio server web Apache. Per molti amministratori diventa difficile mantenersi al
passo con le varie patch di sicurezza rilasciate per Apache a fronte di ogni nuovo
exploit; in questo modo, però, essi facilitano le possibilità, per utenti pericolosi, di
trovare su Internet un server web vulnerabile. Questi consentono anche ad un hacker
non particolarmente esperto di attaccare facilmente e, persino controllare, il server
web, con la possibilità di penetrare nella rete interna.
In altri termini, non è molto difficile per soggetti esterni accedere ad informazioni
aziendali riservate. Peggio, non necessariamente gli hacker sono sprovveduti, come
si pensa comunemente: per esempio, dipendenti scontenti o concorrenti dell’azienda
possono avere le loro buone ragioni per penetrare in zone confidenziali della rete.
Pochi attacchi di hacker sono immediatamente e davvero riconoscibili come tali. La
maggior parte degli attacchi non è facile da scoprire, poiché molti intrusi preferiscono
rimanere nascosti in modo da poter utilizzare il server web manipolato come base di
lancio di attacchi nei confronti di server web molto più importanti o popolari. Oltre
a danneggiare l’integrità del proprio sito web, un tale utilizzo del server può rendere
responsabile l’azienda in caso di attacchi nei confronti di altre aziende. L’attività
di logging pertanto è fondamentale per ogni servizio. Il Web Server Apache, oltre a
fornire informazioni su eventi che riguardano il funzionamento del servizio, nei log
tiene traccia di tutte le richieste HTTP eseguite. Chiunque pubblica su Internet un
proprio sito web, è interessato a sapere quanti lo visitano, cosa guardano, da dove
vengono e, magari, perchè lo fanno. Ogni server web registra e tiene traccia di ogni
file fornito ai browser dei propri client. Apache permette di scrivere nei propri log
di accesso una serie di informazioni relative ad ogni richiesta effettuata via HTTP.
I log degli accessi al web registrano informazioni relative agli accessi ai file presenti su un server. In genere, essi memorizzano: l’indirizzo IP del richiedente, l’orario
e la data in cui è avvenuta la richiesta, il metodo di recupero (solitamente GET o
POST), il file richiesto, il codice HTTP della risposta e la dimensione del file trasferito. Nei log di accesso vengono memorizzate tutte le richieste HTTP eseguite dai
12
1 Lo scenario di riferimento
client e che giungono al server, pertanto ci permettono di esaminare il traffico su
un sito web. Gli accessi sono relativi a tutti i tipi di file richiesti dai client: pagine
HTML, immagini, file sonori, e qualsiasi altro tipo di file che è necessario scaricare
dal browser per assicurare il giusto funzionamento e la corretta visualizzazione del
sito web.
Nella maggior parte dei casi, i log vengono elaborati per produrre report di
Web Analytics con finalità di marketing, ad esempio per conoscere il numero di
visitatori giornalieri, le pagine più richieste, e informazioni simili. Analizzando i
dati dei log presenti nei server web è possibile trovare informazioni rilevanti per la
sicurezza. Infatti, un’attenta indagine dei file di testo riguardanti gli accessi permette
di individuare attacchi in atto o pronti ad essere sferrati. Attraverso gli access
log è possibile, per esempio, controllare gli accessi effettuati al server web in un
determinato intervallo temporale, conoscere il numero di visitatori ad una pagina
web, anche in base a paesi e città, sapere quali sono le pagine più consultate dagli
utenti o dai web crawler, i file richiesti da un sito web, il tipo di browser utilizzato
e il dominio dei client. Potremmo, quindi, individuare le richieste che mostrano
attività sospette.
L’approccio ideale per riconoscere, in qualsiasi momento, i segni di probabili
intrusioni o di altre attività anomale consiste nel paragonare le informazioni relative
al funzionamento del sistema in quel dato momento con le analoghe informazioni
catturate in un momento anteriore (generalmente in fase di prima installazione od
operatività) che, in quanto tali, costituiscono un’ impronta affidabile e caratteristica
del funzionamento del sistema stesso. Di regola questo genere di indicazioni viene
fornito dal sistema operativo, dal software che gestisce il server web e da altri
meccanismi di terze parti.
L’utente può personalizzare il formato dei log di accesso, includendo i dati per lui
maggiormente interessanti. I log possono essere, anche, personalizzati per includere
informazioni preziose, come l’ID di sessione o intestazioni HTTP personalizzate.
Il formato di tali log è altamente configurabile: la posizione, il contenuto e il formato degli access log sono impostati dalla direttiva CustomLog. Apache memorizza
gli access log nel formato mostrato nel Listato 1.1:
207.46.13.130 - - [23/Oct/2016:07:36:34 +0200] "GET /giurisprudenza/?id=10043 HTTP/1.1" 301 577 "-"
"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
Listato 1.1. Formato dei log di accesso ad un web server Apache
I diversi campi che costituiscono il log sono i seguenti:
•
•
207.46.13.130 : indirizzo IP del client che ha generato la richiesta al server;
i due trattini sostituiscono delle informazioni non disponibili, quali:
1. “identd, che indica l’identità del client. Apache fornisce questa informazione
solo se il campo IdentityCheck è impostato ad On.
2. “userid, ovvero l’id della persona che ha richiesto la pagina. Lo userid
è presente solo se la pagina è protetta da password, quindi se è attiva
l’autenticazione HTTP, altrimenti ci sarà “-”.
1.3 I log di errore sul web server
•
•
•
•
•
13
[23/Oct/2016:07:36:34 +0200] : data e ora in cui si è verificato l’evento. Sono necessarie per effettuare le correlazioni. In particolare abbiamo: [day/month/year:hour:minute:second zone].
“GET /giurisprudenza/?id=10043 HTTP/1.1”: richiesta effettuata dal client e
composta da:
1. GET, che rappresenta il metodo utilizzato;
2. /giurisprudenza/?id=10043, che denota la risorsa richiesta;
3. HTTP/1.1, che indica il protocollo utilizzato.
Codice di stato HTTP che il server invia al client. Per esempio, nel caso specifico,
301 indica che questa e tutte le richieste successive andranno dirette ad un altro
URI, che viene indicato nell’header;
il peso in byte.
L’ultima parte della riga contiene informazioni sullo User Agent, in particolare sul browser utilizzato dal client per il collegamento web, sul sistema operativo e sul modello del dispositivo utilizzato. Per esempio, in questo caso ci dice che la richiesta è stata effettuata da bingbot (bingbot/2.0;
+http://www.bing.com/bingbot.htm).
1.3 I log di errore sul web server
I log di errore sono i file di log più importanti di Apache. Essi registrano tutti gli
errori che un server web riscontra nel processare una richiesta e che si verificano ad
esempio quando manca un file, cioè quando gli utenti accedono ad un sito web e
non trovano i file richiesti.
Sono estremamente utili quando si verificano anomalie di funzionamento o di
avvio del server web. In tal caso, infatti, per prima cosa conviene controllare i log
di errore in quanto:
•
•
•
permettono di tenere traccia di tutto ciò che accade nel sistema in esame;
forniscono informazioni dettagliate sui problemi riscontrati dagli utenti e quindi
consentono di capire esattamente ciò che è accaduto;
permettono di determinare quali sono le cause di questi errori e, quindi, sono
utili per capire come rimediare.
Gli error log vengono usati principalmente per individuare attività sospette. Essi
possono fornire informazioni sui tentativi di hacking, in quanto gli hacker mentre
tentano di compromettere il sistema, possono causare errori sul server.
I file di log possono essere configurati in modo da memorizzare ciascun errore
che si verifica sul sistema oppure in modo da salvare soltanto gli errori specificati
dall’utente. E, cosı̀ come i log, anche un sistema può essere configurato in modo da
poter consultare tutti i log in qualsiasi momento, oppure in modo da memorizzare
solo un numero limitato di log.
Mentre gli access log possono essere personalizzati, per gli error log si può
solo definire il “livello”ovvero l’importanza che essi debbono assumere per essere
registrati.
Il nome e la posizione degli error log sono impostate con la direttiva Error Log.
Il formato di default di un error log è quello mostrato nel Listato 1.2, ma può essere
personalizzato con la direttiva ErrorLogFormat:
14
1 Lo scenario di riferimento
[Sun Oct 23 07:45:38 2016] [error] [client 157.55.39.101] File does not exist:
/media/web/unirc/dipartimenti/robots.txt
Listato 1.2. Formato Error Log
I diversi campi che costituiscono il log sono:
•
•
•
•
•
[Sun Oct 23 07:45:38 2016] : data e ora in cui si è verificato l’evento;
[error] : campo contenente il livello di gravità del messaggio (error in questo
caso);
[client 157.55.39.101] : l’indirizzo IP del client che ha generato la richiesta;
File does not exist: errore riscontrato;
/media/web/unirc/dipartimenti/robots.txt: messaggio d’errore dettagliato. In
questo caso, indica la mancanza del file richiesto dal client.
1.4 I log di accesso al firewall
Il firewall è lo strumento centrale dell’architettura e della sicurezza in una rete, della
quale è mostrato uno schema in Figura 1.3. La sua funzione è quella di separare
la rete privata da quella pubblica; tuttavia, esso ha anche la funzione di collegare
due o più tronconi di rete. Un firewall è un dispositivo per la sicurezza della rete
che permette di monitorare il traffico in entrata e in uscita utilizzando una serie
predefinita di regole di sicurezza per consentire o bloccare gli eventi. I firewall rappresentano la prima linea di difesa per la sicurezza della rete. Essi costituiscono una
barriera tra le reti interne, sicure e controllate, e quelle esterne, come Internet, che
possono essere o meno affidabili.
Figura 1.3. Schema di rete
Grazie alla sua collocazione strategica, un firewall è il “cancello”al quale vengono
autenticati ed autorizzati coloro che usufruiscono dei servizi offerti dalla rete interna
ed è il mezzo attraverso il quale la rete privata viene difesa dalle minacce, in continua
evoluzione, che provengono dall’esterno.
Esso, dunque, rappresenta una garanzia di protezione in termini di sicurezza
informatica, in quanto impedisce agli hacker di accedere a ciò che c’è dentro, in
modo che non possano infiltrarsi e installare software dannosi. Un firewall filtra
1.4 I log di accesso al firewall
15
le informazioni utili e rileva i comportamenti anomali e gli attacchi informatici.
Nel caso di trasmissione di malicious code o virus, o nel caso di tentato accesso
fraudolento, le aziende devono poter bloccare il traffico non autorizzato. La maggior
parte delle aziende utilizzano i firewall che, se propriamente aggiornati e manutenuti,
servono a bloccare il traffico illecito e a creare log dettagliati per tutto il traffico
in entrata ed in uscita. Se analizzati correttamente, i log dei firewall rivelano molte
informazioni sui tentativi di minacce alla sicurezza della rete e sulla natura del
traffico in entrata e in uscita dal firewall e, inoltre, possono evidenziare attacchi di
Denial of Service (DoS) o altre attività sospette.
Tuttavia, poche aziende analizzano questi log e anche quelle che lo fanno, effettuano le loro analisi poco frequentemente. Quindi, molti tentativi di attacco passano
inosservati, dando agli hacker un’elevata probabilità di superare la barriera rappresentata dai firewall. La firewall log analysis è un’operazione complessa che richiede
il controllo simultaneo di migliaia di eventi. I processi automatizzati di oggi possono
filtrare la stragrande maggioranza degli eventi, identificando soltanto quelli che sono
abbastanza sospetti da richiedere un’ulteriore analisi da parte di un esperto. L’analista distingue un attacco dal normale traffico e, nel caso di un attacco certo, può
cambiare proattivamente la firewall policy aggiornando tutti i sistemi di network
intrusion detection.
L’analisi dei file di log è importantissima per la sicurezza della rete in quanto
fornisce informazioni in tempo reale agli amministratori, che determinano il traffico ammissibile e non, riguardo i tentativi di minacce alla sicurezza, cosı̀ che loro
possano rapidamente avviare un’azione correttiva.
Le informazioni generate dai firewall devono essere raccolte, analizzate ed archiviate; il risultato prodotto da queste attività fornisce una risposta adeguata alle
minacce che vengono indirizzate verso la rete privata.
Dall’analisi dei file di log generati dal firewall possono essere costruiti report
contenenti, ad esempio, gli accessi bloccati dalle policy di sicurezza, la quantità di
traffico per protocollo, i siti più visitati, la distribuzione del traffico durante la giornata, l’analisi del traffico di specifici indirizzi IP, gli indirizzi IP che vengono rifiutati
e quelli che vengono rilasciati e il luogo di provenienza, i ripetuti tentativi falliti di
accedere al firewall provenienti da uno o da un gruppo di indirizzi IP. Se si notano
tanti login falliti provenienti dallo stesso indirizzo IP è possibile bloccare tutte le
connessioni provenienti da tale indirizzo, o intraprendere qualche altra azione.
L’analisi dei file di log è utile per capire l’utilizzo della rete, per la valutazione
del rischio d’impresa e per identificare qualsiasi attività dannosa all’interno della
rete.
È conveniente monitorare spesso i log dei firewall per capire quali sono le connessioni normali e quali sono quelle anomale. Per esempio, se ci sono pacchetti
provenienti dall’esterno che hanno un indirizzo IP interno alla rete, questo potrebbe indicare che qualcuno sta cercando di falsificare un indirizzo interno, al fine di
ottenere l’accesso alla rete privata.
Un’altra parte dei file di log analizzati in questo lavoro di tesi sono i log di
accesso al firewall Cisco dell’Università “Mediterranea”di Reggio Calabria.
Cisco, il cui logo è mostrato in Figura 1.4, è una azienda multinazionale specializzata nella fornitura di apparati di networking. Produce apparati per il funzionamento delle reti LAN, MAN, WAN e VLAN e il sistema operativo IOS che le
16
1 Lo scenario di riferimento
Figura 1.4. Logo Cisco
pilota. Nell’ottica della fornitura di soluzioni complete, Cisco è entrata anche nel
mercato della sicurezza, con Firewall e VPN, in quello della telefonia, con telefoni
IP, in quello dell’archiviazione, con Storage Area Network (SAN), e in quello del
computing su piattaforma x86. Il firewall Cisco fornisce una protezione ottimale
dai tentativi di intrusione, grazie alle sue numerose funzionalità, tra cui il controllo
delle applicazioni, il supporto di protocolli audio-video, la prevenzione degli accessi
tramite la protezione in tempo reale contro gli attacchi di applicazioni DOS, l’identificazione e il filtraggio dell’attività in rete di worm e di virus, l’ individuazione di
spyware, adware e malware. Il firewall Cisco ASA, mostrato in un esempio di schema di rete nella Figura 1.5, è dedicato alla protezione del nostro server; esso blocca
gli attacchi prima che si diffondano attraverso la rete e protegge le reti aziendali di
ogni dimensione; esso, infatti, può essere utilizzato come soluzione di sicurezza per
le reti di piccole e grandi dimensioni. Tale firewall fornisce agli utenti un accesso
altamente sicuro alle risorse di rete con qualunque dispositivo.
Figura 1.5. Esempio di schema di rete con firewall Cisco ASA
Un log di un firewall ha il formato mostrato nel Listato 1.3:
Oct 25 00:05:50 192.168.33.3 Oct 25 2016 00:00:24: %ASA-6-106100: access-list outside_access_in permitted udp
outside/86.101.202.111(53096) -> inside/193.204.247.180(17490) hit-cnt 1 first hit
Listato 1.3. Tipico formato di un log di firewall per l’evento con codice 106100
In tutti i log analizzati i primi tre campi rappresenteranno sempre:
1.4 I log di accesso al firewall
•
•
•
17
Oct 25 00:05:50 : data ed ora del momento in cui il server dei log registra un
evento del firewall;
192.168.33.3 : l’indirizzo IP del firewall;
Oct 25 2016 00:00:24 : data ed ora di un evento generato dal firewall.
Ogni evento ha un determinato codice identificativo. In questo caso il codice
identificativo è 106100, ma nei log analizzati sono presenti anche eventi con i codici
302013 e 302014.
L’evento con codice 106100 contiene le informazioni mostrate nel Listato 1.4:
Error Message %PIX|ASA-6-106100: access-list acl_ID {permitted | denied | est-allowed} protocol
interface_name/source_address(source_port) -> interface_name/dest_address(dest_port)
hit-cnt number ({first hit | number-second interval})
Listato 1.4. Informazioni contenute nel log per l’evento con codice 106100
Questo messaggio è generato ogni volta che un pacchetto non corrisponde ad
una connessione esistente. Di seguito sono elencati i valori dei diversi campi:
•
•
•
•
•
•
•
•
•
•
i valori “permitted|denied|est-allowed”specificano se l’accesso al pacchetto è stato consentito o negato dall’ Access Control List (ACL); quest’ultimo è un meccanismo usato, appunto, per consentire o negare l’accesso alle risorse di un sistema
informatico da parte dei suoi utenti:
1. se il valore è “permitted”, viene consentito l’accesso al pacchetto che proviene
dall’esterno;
2. se il valore è “denied”, viene negato l’accesso al pacchetto che proviene
dall’esterno;
3. se il valore è “est-allowed”, l’accesso al pacchetto viene negato dall’ACL ma
è consentito per una sessione già stabilita. Vengono, praticamente, accettati
i pacchetti che normalmente l’ACL avrebbe negato.
protocollo: TCP, UDP, ICMP o un numero di protocollo IP.
interface name: il nome dell’interfaccia per la sorgente o la destinazione del
flusso. Le interfacce VLAN sono supportate.
source address: indirizzo IP della sorgente del flusso a cui il log si riferisce.
dest address: indirizzo IP di destinazione del flusso a cui il log si riferisce.
source port: la porta sorgente del flusso a cui il log si riferisce (TCP o UDP).
Questo campo è 0 per ICMP.
dest port: la porta di destinazione del flusso a cui il log si riferisce (TCP o UDP).
Per ICMP, questo campo è src addr.
hit–cnt number : numero delle volte che questo flusso è stato permesso o negato dall’ACL nell’intervallo di tempo configurato. Questo valore è 1 quando
l’applicazione genera il primo messaggio di log per questo flusso.
first hit: primo messaggio generato per questo flusso.
number-second interval : intervallo in cui è accumulato l’hit count.
Consideriamo, ora, l’evento con codice 302013, mostrato nel listato 1.5:
Oct 25 00:05:59 192.168.33.3 Oct 25 2016 00:00:25: %ASA-6-302013: Built inbound TCP connection 543841630
for outside:79.185.235.72/20525 (79.185.235.72/20525) to inside:193.204.246.184/2323 (193.204.246.184/2323)
18
1 Lo scenario di riferimento
Listato 1.5. Tipico formato di un log per l’evento con codice 302013
Questo evento contiene le informazioni mostrate nel Listato 1.6:
Error Message %PIX|ASA-6-302013: Built {inbound|outbound} TCP connection_id for
interface:real-address/real-port (mapped-address/mapped-port)
to interface:real-address/real-port (mapped-address/mapped-port) [(user)]
Listato 1.6. Informazioni contenute nel log per l’evento con codice 302013
Questo messaggio indica che è stata creata una connessione TCP tra due host.
Di seguito c’è una lista che descrive i campi del log:
•
•
•
•
connection id: identificatore univoco;
interface, real–address, real–port: identificano un socket reale;
mapped–address, mapped–port: identificano un socket “mappato”;
user: nome dell’utente.
Se viene specificato inbound, la connessione di controllo originale è avviata dall’esterno. Se viene specificato outbound, la connessione di controllo originale è stata
avviata dall’interno.
Infine, l’ultimo evento che consideriamo è quello che ha codice 302014, mostrato
nel Listato 1.7:
Oct 25 00:05:59 192.168.33.3 Oct 25 2016 00:00:24: %ASA-6-302014: Teardown TCP
connection 543838080 for outside:94.249.127.41/29596
to inside:193.204.243.247/2323 duration 0:00:30 bytes 0 SYN Timeout
Listato 1.7. Tipico formato di un log di firewall per l’evento con codice 302014
Tale evento contiene le informazioni, mostrate nel Listato 1.8:
Error Message %PIX|ASA-6-302014: Teardown TCP connection id for
interface:real-address/real-port to interface:real-address/real-port duration hh:mm:ss bytes bytes [reason] [(user)]
Listato 1.8. Informazioni contenute nel log per l’evento con codice 302014
Questo messaggio indica che è stata interrotta una connessione TCP tra due
host. Di seguito sono elencati i valori del messaggio:
•
•
•
•
•
•
connection id : identificatore univoco;
interface, real–address, real–port: identificano le porte reali;
duration: durata della connessione;
bytes: trasferimento dati della connessione;
reason: rappresenta l’azione che causa l’abbattimento della connessione;
user : nome dell’utente.
2
Strumenti software utilizzati
In questo capitolo verrà presentato il software utilizzato, nel lavoro di tesi, per l’analisi dei file di log, ovvero Splunk. Prima di ciò, però, si parlerà dei software di
“Security Information and Event Management”e si discuterà sull’importanza della
gestione dei file di log e sui vantaggi che scaturiscono da quest’ultima. Successivamente verrà fatta una breve panoramica sulle app e sugli add-on di Splunk. Ed
infine verrà spiegata la tecnologia Docker, illustrando i vantaggi di utilizzo rispetto
alle macchine virtuali.
2.1 I software di Security Information and Event
Management
I software di Security Information and Event Management (SIEM) definiscono un
prodotto, costituito da software e servizi, che unisce capacità di “Security Information Management”(SIM) con quelle di “Security Event Management”(SEM):
•
•
un SIM si occupa della parte di “Log management”, di attività di analisi e della
produzione di report;
un SEM si occupa del monitoraggio in real-time degli eventi, dell’incident management (in ambito security) per quanto riguarda eventi che accadono sulla rete,
sui dispositivi di sicurezza, sui sistemi o nelle applicazioni.
In sostanza, un SIEM mira a risolvere esigenze in ambito di gestione delle minacce informatiche ed in ambito regolatorio o di compliance. La spinta a rispondere ad
esigenze regolatorie ha agevolato l’introduzione dei SIEM nelle aziende, che li hanno,
cosı̀, potuti sfruttare anche per gli scopi di security e rilevazione delle violazioni.
Un SIEM è uno degli strumenti fondamentali per un approccio alla difesa in
profondità, a beneficio della sicurezza delle aziende.
Numerose aziende e agenzie governative hanno subı̀to attacchi informatici, progettati in modo da sfrutare le vulnerabilità e sottrarre importanti informazioni. È
fondamentale arrestare o rilevare un attacco in corso, nelle reti delle vittime, prima
che il danno venga arrecato.
I team della sicurezza si sono resi conto che sono necessarie nuove procedure,
basate sul monitoraggio continuo delle minacce e sul rilevamento e la risoluzione
20
2 Strumenti software utilizzati
rapidi degli attacchi. Per poter conoscere tutto quello che avviene negli ambienti IT,
è necessario fondere più sorgenti di dati, tra cui i pacchetti di rete e la ricostruzione
completa delle sessioni, i file di log provenienti dalla rete e dai dispositivi host e
informazioni esterne.
I sistemi SIEM sono stati progettati per offrire una posizione centrale in cui
raccogliere e memorizzare i dati relativi alla sicurezza (in gran parte informazioni
dei registri e degli eventi), in modo da semplificare l’Incident Management per la
sicurezza e la generazione di report sulla conformità. Tali sistemi raccolgono i log
e gli alert sulla sicurezza, generati da applicazioni e sistemi in rete, ad esempio
firewall e dispositivi di rete. Le tecnologie SIEM aggregano, dunque, i dati corrispondenti agli eventi prodotti da dispositivi di sicurezza, ad esempio del firewall,
dalle infrastrutture di rete, da sistemi ed applicazioni.
I SIEM devono rispondere all’esigenza, che è sorta nel corso degli anni, di applicare in maniera sistematica un’analisi computazionale di dati o statistiche inerenti
alla sicurezza informatica. Quest’analisi deve avvenire in tempo reale, in modo da
rilevare in maniera tempestiva attacchi mirati e violazioni dei dati.
Un’altra necessità che i SIEM devono soddisfare è quella di raccogliere, memorizzare, analizzare e rendere disponibile in forma di report i dati provenienti dai log,
per esigenze di incident response, di compliance in ambito regolatorio o per attività
di analisi forense. La fonte principale dei dati che vengono analizzati da un SIEM
sono i log. Tuttavia, un SIEM non si limita a questo, in quanto potrebbe essere in
grado di elaborare dati sotto altre forme, quali flussi Netflow o, addirittura, il vero
e proprio traffico di rete. I dati “grezzi”devono, poi, essere contestualizzati, ed in
questo senso il SIEM deve essere in grado, dopo una fase di normalizzazione dei dati
stessi, di correlare gli eventi provenienti dalle fonti più disparate. La correlazione è
l’arma fondamentale per chi si trova a gestire migliaia di eventi ed incidenti di sicurezza. Correlazione degli eventi significa trovare relazioni tra eventi apparentemente
non correlati in dati provenienti da più fonti. La possibilità di effettuare query, di
monitorare l’attività degli utenti e delle applicazioni, di effettuare report a scopo di
audit o di compliance rappresenta, poi, un ulteriore insieme di tasselli fondamentali
che compongono un’efficace soluzione SIEM.
Le regole di correlazione possono servire ad individuare possibili attacchi di tipo
brute force, minacce dovute ad attacchi provenienti dall’interno (malicious insider,
ovvero utenti interni all’organizzazione con intenti malevoli), oppure a tracciare
sistemi infetti o compromessi da malware, tramite l’analisi e l’incrocio dei dati
provenienti dai log del traffico in uscita dal firewall, dai log del Web Proxy e dai
flussi di rete interni.
L’elaborazione di eventi complessi e i log del sistema di gestione dei processi aziendali sono veri patrimoni aziendali; infatti, possono essere utilizzati per
implementare il monitoraggio completo delle attività delle aziende.
Sistemi operativi, database, web server e alcuni tipi di programmi applicativi
producono, durante il loro funzionamento, file di log nei quali tengono traccia di
attività quotidiane. La gestione dei log è lo strumento tipico per monitorare il
comportamento dei sistemi. L’elaborazione ed analisi dei file di log permette di
produrre tracciati di dati utilizzabili da altre componenti applicative. Analizzando
un file di log si possono diagnosticare problemi, determinare schemi di utilizzo e
ottimizzare i sistemi per ottenere prestazioni ottimali. Questi file sono cruciali per
2.2 Splunk
21
il debug quotidiano delle applicazioni da parte degli sviluppatori e per l’assistenza
delle applicazioni e dei sistemi informatici. Inoltre, spesso, rappresentano il modo
migliore per creare report su attività delle aziende e degli utenti e per rilevare frodi,
visto che contengono tutti i dettagli delle transazioni.
I file di log sono dei semplici file di testo strutturati e, se da una parte è vero che la quantità e la qualità delle informazioni che essi racchiudono è notevole,
dall’altra è anche vero che tali informazioni non sono sempre di facile lettura o reperibilità. Questo è ciò che riguarda la singola macchina; proviamo, ora, a pensare cosa
vorrebbe dire consultare manualmente i log su una decina di macchine differenti.
Un’operazione di certo non agevole.
Gli analizzatori dei file di log sono programmi o software che distillano informazioni utili a partire dal contenuto del file. Esistono in circolazione una moltitudine di
log analyzer, ovvero programmi, gratuiti o a pagamento, che permettono di raccogliere, processare e analizzare i log, riassumendo, attraverso tabelle, schemi, grafici
e statistiche, i corrispettivi dati. Attualmente, uno dei modi migliori per consultare
ed aggregare grandi volumi di log è affidarsi a Splunk.
2.2 Splunk
Il software che è stato utilizzato in questo lavoro di tesi per analizzare i file di log è
Splunk. Splunk, il cui logo è mostrato in Figura 2.1, fornisce la piattaforma leader
per l’Operational Intelligence, in quanto trasforma i dati macchina in informazioni
significative.
Figura 2.1. Logo di Splunk
Questo software ha rivoluzionato l’approccio delle aziende alla gestione dei dati
macchina. È uno strumento aziendale utilizzato da molte multinazionali.
Vi è una crescita enorme della quantità di dati, generati nel mondo: la maggior
parte dei sistemi moderni generano moltissimi dati di log e anche molto diversi
tra loro. Le infrastrutture IT, i siti Web e le reti di comunicazione generano flussi
imponenti di dati macchina ogni secondo di ogni giorno, in una serie di formati
imprevedibili, che sono difficili da elaborare e da analizzare con i metodi tradizionali
e in tempo reale. L’analisi dei dati, la gestione e i metodi di monitoraggio tradizionali
non sono progettati per grandi volumi di dati, estremamente diversi tra loro.
La potenza di Splunk sta nel fatto che esso fornisce una visibilità unica in tutta l’infrastruttura IT e garantisce scalabilità e sicurezza. La missione di Splunk è
rendere accessibili i dati macchina in un’organizzazione, fornendo la diagnosi dei
22
2 Strumenti software utilizzati
problemi. Splunk è una tecnologia orizzontale, utilizzata per la gestione delle applicazioni, per la sicurezza e per la compliance, nonchè per business e web analytics. È
un software per la ricerca, il monitoraggio e l’analisi di grandi quantità di dati, generati dalle macchine, tramite un’interfaccia web. I server Splunk possono comunicare
tra loro tramite Splunk-2-Splunk, un protocollo basato su TCP per inoltrare i dati
da un server ad un altro e per distribuire le ricerche su più server. L’architettura di
Splunk, mostrata in Figura 2.2, basata su MapReduce, è scalabile e comprende dei
componenti che sono responsabili dell’aggiunta, dell’indicizzazione e dell’analisi dei
dati.
Figura 2.2. Architettura di Splunk
Imprese, fornitori di servizi ed enti pubblici utilizzano Splunk per migliorare i
livelli di servizio, ridurre i costi di esercizio dell’IT, mitigare i rischi per la sicurezza,
creare nuovi prodotti e servizi.
Splunk consente di vedere da vicino i dati macchina, spesso ignorati, e di trovare
informazioni che possono rendere l’azienda più produttiva, redditizia, competitiva
e sicura. I dati generati dalle macchine contengono informazioni molto importanti
sul comportamento delle macchine, su tutte le transazioni degli utenti, sui rischi e
sulle minacce per la sicurezza, sul consumo della capacità, sui livelli di servizio, sulle
attività fraudolente, sull’esperienza dei clienti, e altro ancora. Ora, grazie a Splunk,
i dati raccolti possono diventare un vero valore per l’azienda.
Splunk è un software che dà la possibilità di collezionare, indicizzare e controllare
i dati IT generati dinamicamente da tutte le applicazioni, i dispositivi e i server,
siano essi fisici, virtuali o nel cloud.
L’applicazione è sviluppata in C/C++ and Python ed è basata su un motore
di ricerca che permette di selezionare, aggregare e visualizzare, in tempo reale, i
dati con report altamente personalizzabili. Il risultato concreto è un incremento
nell’efficacia di gestione della rete grazie alla possibilità di identificare rapidamente
le modalità di risoluzione dei problemi.
2.2 Splunk
23
Splunk è un motore di ricerca e di analisi potente e versatile che permette di
indagare, risolvere i problemi e monitorare tutto ciò che accade nella rete in tempo
reale. Fare troubleshooting, gestire la sicurezza, analizzare il comportamento degli
utenti, delle applicazioni o dei sistemi, cercare e analizzare tutti i dati storici, in
tempo reale e con un unico strumento è ora un’attività facile e immediata.
Questo software permette di capire in tempo reale cosa sta succedendo nei sistemi
IT, in modo tale da prendere le giuste decisioni. I file di log, una volta acquisiti,
vengono indicizzati, trasferiti su un repository e certificati, aggiungendo al file il
riferimento temporale, qualora non fosse presente, cosı̀ da renderli inalterabili.
Splunk permette di:
•
•
•
Raccogliere i dati macchina in tempo reale da applicazioni, server web, database,
reti, macchine virtuali, dispositivi mobili, sensori IoT, mainframe, e molto altro
ancora.
Archiviare, indicizzare, ricercare, correlare, visualizzare, analizzare e creare report su qualunque dato generato da macchine, al fine di individuare e risolvere
problemi operativi e di sicurezza in modo veloce e ripetibile. Splunk supporta
l’individuazione di eventi utilizzando tempo e ubicazione geografica, transazioni,
sottoricerche, ricerche con campi e join.
Combinare e arricchire i dati macchina con dati basati su Hadoop, nonchè con
dati tradizionali provenienti da database relazionali e data warehouse.
Splunk mette a disposizione diverse funzionalità e, pertanto, viene usato da divesi utenti: gli amministratori di sistema lo usano per ottenere rapidamente risultati
migliori, gli analisti di sicurezza lo utilizzano per indagare sull’attività degli utenti
e sugli accessi a dati sensibili, per monitorare gli eventi anomali e per trovare, tramite correlazioni, pattern di rischio, come attacchi di forza bruta e perdita di dati,
mentre i manager lo usano per creare report e dashboard, al fine di monitorare le
performance e l’attività delle infrastrutture IT.
Splunk indicizza in tempo reale dati IT di qualsiasi tipo da qualsiasi origine,
senza la necessità di scrivere parser. Sia i dati non elaborati che quelli elaborati
vengono archiviati in un datastore compresso ad alta efficienza basato su un file
system, con la possibilità di firmare ed eseguire l’audit dei dati, per assicurarne
l’integrità. Il cuore di Splunk è un modello di sicurezza estremamente robusto ed
efficace. I dati macchina devono essere sempre al sicuro, perchè rappresentano una
risorsa preziosa. Pertanto Splunk offre una gestione protetta dei dati, controlli dell’accesso, verificabilità, garanzia dell’integrità dei dati e integrazione con le soluzioni
di single sign-on aziendali. La cifratura con hashing garantisce l’integrità dei dati
indicizzati nel tempo. Splunk, quindi, dà la certezza che i dati non verranno manomessi. Ogni transazione di Splunk viene autenticata, incluse le attività di sistema,
le attività utente attraverso il web e da linea di comando.
Installarlo è molto semplice: soltanto dopo essersi registrati sul sito di Splunk,
sarà possibile scaricare la versione corretta per il proprio sistema operativo, come
viene mostrato nella Figura 2.3.
Splunk è un pacchetto software autonomo eseguibile su tutti i principali sistemi
operativi. Basta scegliere la piattaforma adeguata, e, successivamente, scaricarlo e
installarlo. Al termine dell’installazione bisognerà effettuare il login, come mostrato
24
2 Strumenti software utilizzati
Figura 2.3. Installazione di Splunk sui principali sistemi operativi
in Figura 2.4; successivamente, si otterrà un’interfaccia web per gli utenti, come si
vede nella Figura 2.5.
Figura 2.4. Pagina del login di Splunk
È, poi, necessario selezionare il file che si vuole caricare in Splunk, come ci mostra
la Figura 2.6, considerando che la dimesnione di caricamento massima per i file è
di 500 MB.
Grazie ad un’ampia gamma di metodi di input standard e personalizzati, Splunk
è in grado di recepire tutti i tipi di dati e di fonti. I dati basati su file possono essere
inviati tramite forwarder che risiedono direttamente nelle fonti di dati, mentre i
2.2 Splunk
25
Figura 2.5. Pagina iniziale dell’nterfaccia web di Splunk
Figura 2.6. Aggiunta dei dati
dati DevOps, IoT e di altri tipi possono essere acquisiti utilizzando l’API Event
Collector o una porta TCP/UDP.
Come mostrato nella Figura 2.7, i dati inseribili all’interno di questo software
possono essere file CSV, file singoli, cartelle singole; in alternativa, i dati possono
essere passati tramite una porta TCP o UDP. L’opzione “Script”dà la possibilità
di inserire dei codici che generano o raccolgono dei dati, che poi vengono passati a
splunk per essere elaborati. Splunk, permette, anche di distinguere tra file locali e
file inoltrati.
Come mostra la Figura 2.8, i dati possono essere aggiunti da diverse source,
inclusi stream di rete, log di eventi e script.
Se i dati hanno un formato log personalizzato, è possibile creare un nuovo source type e configurare manualmente le suddivisioni in eventi e il riconoscimento del
timestamp. I dati vengono acquisiti in tempo reale; quindi, l’estrazione e la normalizzazione dei timestamp sono obbligatorie per individuare e risolvere eventuali
problemi (che cosa non ha funzionato e quando), per le indagini e per comprendere
il flusso end-to-end delle transazioni.
Splunk determina automaticamente l’ora di ogni evento, persino in presenza dei
formati più atipici o non tradizionali. I dati che non hanno un timestamp vengono
26
2 Strumenti software utilizzati
Figura 2.7. Input di Splunk
Figura 2.8. Aggiunta dei dati da diverse source
gestiti deducendo quest’ultimo sulla base del contesto. I source type controllano le
modalità con cui il software formatta i dati in eventi, prima di iniziare la ricerca, è
consigliabile scegliere il source type e anche l’indice nel quale archiviare i dati, come
ci mostra la Figura 2.9.
Splunk consente, inoltre, di eseguire l’anteprima dei dati, come si può vedere in
Figura 2.10, per verificare che gli eventi siano stati formattati correttamente.
Una volta che i file sono stati correttamente caricati in Splunk, è possibile, come
mostrato in Figura 2.11, avviare la ricerca, estrarre i campi, aggiungere altri dati,
scaricare un’app, oppure creare una dashboard.
La barra laterale dell’interfccia di Splunk mostra i campi che la ricerca ha estratto automaticamente dagli eventi, come mostrato in Figura 2.12; Splunk, comunque,
dà la possibilità di estrarre ulteriori campi, usando la funzione “Estrattore di campi”, per individuare qualunque valore in un’ingente quantità di dati, trovando “l’ago
nel pagliaio”rapidamente, anzichè in ore o giorni.
La ricerca può contenere parole, coppie campo=valore, caratteri jolly (*) e operatori booleani quali AND, OR e NOT. È, inoltre, possibile evidenziare una parte
di un log e cliccare per incluerlo o escluderlo dalla ricerca, come mostrato in Figura
2.13.
Splunk è flessibile, ricco di funzionalità e ben documentato. Una documenta-
2.2 Splunk
Figura 2.9. Impostazioni di input
Figura 2.10. Anteprima dei dati
Figura 2.11. File caricato correttamente
27
28
2 Strumenti software utilizzati
Figura 2.12. Campi estratti automaticamente
Figura 2.13. Inclusione di una parte di log nella ricerca
zione molto buona può essere trovata sul sito di Splunk, come mostrato in Figura
2.14; Splunk possiede, inoltre, una comunità di utenti ben disposta a fornire supporto. L’assistenza di Splunk è strutturata, vicina agli utenti, efficiente, competente,
affidabie e rapida.
Figura 2.14. Documentazione fornita da Splunk
2.3 Utilizzo di Splunk per l’analisi dei log
29
L’assistente di ricerca offre suggerimenti con completamenti automatici e una
guida, come si può vedere in Figura 2.15, in modo da poter utilizzare tutta l’efficacia
del linguaggio Search Processing Language (SPL).
Figura 2.15. Assistente di ricerca
SPL è un potente linguaggio di query che consente di gestire i dati macchina.
Con il supporto per cinque diversi tipi di correlazione (tempo, transazioni, sottoricerche, ricerche, join) e oltre 140 comandi analitici, dà la possibilità di eseguire
analisi approfondite, utilizzare la rilevazione dei pattern degli eventi e altri metodi di
machine learning per prevedere i risultati e, addirittura, scoprire nuove opportunità
nei dati.
Poichè i dati vengono sempre conservati in formato grezzo, non sono necessari
costosi processi di ETL o di normalizzazione dei dati e non è necessario ricreare uno
schema quando si aggiungono nuovi dati o si eseguono nuove ricerche.
2.3 Utilizzo di Splunk per l’analisi dei log
Splunk Enterprise è uno dei migliori strumenti software per la gestione dei log,
tramite un’interfaccia semplice e intuitiva da utilizzare. È una soluzione totalmente
integrata e orientata alle imprese per la raccolta, l’archiviazione e la visualizzazione
di log.
Splunk Enterprise si basa su un’architettura distribuita che scala orizzontalmente sui server ordinari per supportare un numero elevato di utenti e quantità enormi
di dati e, verticalmente, per incrementare la velocità di ricerca e indicizzazione e la
capacità di usufruire della potenza della CPU disponibile.
Il software permette una gestione dei log per una corretta storicizzazione e visualizzazione degli stessi e consente un reperimento veloce delle informazioni, grazie
ad una grafica user-friendly. Esso permette di:
30
•
2 Strumenti software utilizzati
Collezionare, ricercare, indicizzare, archiviare e filtrare centralmente qualunque
tipo e numero di log e dati macchina, come si vede in Figura 2.16, a prescindere
dal formato o dalla posizione: log di sicurezza delle reti e degli endpoint, informazioni sull’analisi dei malware, dati trasmessi dalle reti. I log possono essere
indicizzati da qualsiasi sorgente, formato o posizione.
Figura 2.16. Dati indicizzati da Splunk
•
Eseguire ricerche, indagini, incroci su più fonti di dati, correlazioni di eventi,
tramite più sorgenti di dati, al fine di ottenere informazioni dettagliate e correlazioni dei dati sulla base della data, dell’orario e della posizione. I risultati della
ricerca possono essere visualizzati in una timeline, come si vede in Figura 2.17;
successivamente la ricerca può essere salavata come report, allarme o pannello
dashboard, come mostrato in Figura 2.18.
Figura 2.17. Interfaccia per la ricerca in Splunk Enterprice
La Figura 2.19 mostra che è possibile condividere con altri i risultati della ricerca,
mediante i pannelli dashboard.
2.3 Utilizzo di Splunk per l’analisi dei log
31
Figura 2.18. Modalità di salvataggio delle ricerche
Figura 2.19. Condivisione dei risultati della ricerca
•
•
Creare report, dashboard, grafici e diagrammi, per comprendere tendenze e visualizzare l’andamento dei dati in tempo reale. Splunk mette a disposizione
un’ampia gamma di grafici e visualizzazioni per rendere i risultati più comprensibili e facili da usare. I grafici intuitivi e le visualizzazioni interattive, di
cui vediamo un esempio in Figura 2.20, semplificano la comprensione dei dati
complessi e consentono di identificare i potenziali problemi. È possibile eseguire
query e creare report ad hoc sui dati storici, senza necessità di software di terzi
per la creazione dei report.
Le Figure 2.21 e 2.22 mostrano, rispettivamente, che una dashboard può essere esportata in formato PDF e può, anche, essere inviata via email; inoltre, è
possibile selezionare diverse visualizzazioni dei dati, ad esempio come grafico a
torta o a barre, ed è possibile personalizzare l’aspetto della visualizzazione.
Analizzare velocemente tutti i dati tramite il drilldown, come si può vedere in
Figura 2.23, per indivifuare tendenze, picchi e anomalie. Ciò permette di andare
oltre le semplici ricerche booleane, di utilizzare ricerche con campi, ricerche statistiche, sottoricerche, di correlare gli elementi e di visualizzare immediatamente
32
2 Strumenti software utilizzati
Figura 2.20. Esempio di grafico in Splunk
Figura 2.21. Esportazione di dashboard in formato PDF
Figura 2.22. Personalizzazione delle visualizzazioni
2.4 App di Splunk
33
i risultati e i pattern.
Figura 2.23. Interfaccia dell’analisi Drilldown
•
Monitorare e trasformare le ricerche in allarmi in tempo reale e inviare le notifiche tramite email. Gli allarmi possono essere impostati su un livello qualsiasi di
granularità e possono essere basati su svariate soglie. Al momento dell’allarme
si analizza il problema al fine di eseguire azioni di contenimento e ripristino e
per trovare una soluzione in tempi brevi. Gli allarmi possono segnalare gli eventi
critici in tempo reale ed evitare determinate condizioni prima che si verifichino.
Splunk permette di scegliere se elaborare i log:
•
•
in tempo reale e in modo continuo; nel caso di un sito attivo che produce traffico,
è conveniente che Splunk vada a prendere i dati di continuo;
una sola volta, perchè i dati non cambiano mai nel corso del tempo.
Un’altra importantissima funzionalità di Splunk, mostrata in Figura 2.24, è la
possibilità di scegliere l’intervallo temporale in cui effettuare le analisi; alcune possibilità sono: intervallo di date, intervallo di date e ore, settimana, mese o anno
precedente, da inizio anno o mese fino ad oggi, ultimi 30 giorni. Impostare un intervallo temporale minore è utile, per esempio, per accelerare la ricerca e limitare
il numero di risultati.
Splunk supporta l’arricchimento dei dati di log grazie all’accesso flessibile a
database relazionali. Consente di estrarre i dati dalle fonti basate su API utilizzando
input modulari e altri metodi, nonchè di eseguire l’onboarding e l’analisi delle fonti
di dati più diffuse per IT, sicurezza e applicazioni, direttamente con centinaia di
app e componenti aggiuntivi (add-on) gratuiti.
2.4 App di Splunk
Splunk offre centinaia di app e componenti aggiuntivi (add-on) che migliorano ed
estendono le funzionalità della piattaforma, grazie a funzioni pronte all’uso, quali
34
2 Strumenti software utilizzati
Figura 2.24. Intervallo temporale di analisi
la raccolta di dati ottimizzata o il monitoraggio della sicurezza, la gestione IT, e
molto altro ancora.
Le app rappresentano il fondamento del valore di Splunk; esse offrono un’esperienza utente progettata per rendere Splunk immediatamente utile e pertinente per
le attività più comuni, come il monitoraggio e la generazione di report per esigenze
specifiche di IT e sicurezza, semplificando il processo di aggiunta e visualizzazione
dei dati.
Le app semplificano e ottimizzano le attività degli utenti ma, allo stesso tempo,
consentono l’accesso ai dati e alle funzioni della piattaforma completa. Solitamente
i componenti aggiuntivi (add-on) importano e integrano i dati da qualsiasi fonte,
creando un insieme di dati ricco, pronto per l’analisi diretta o per l’uso in un’app.
Esse possono, anche, essere usate per estendere la piattaforma Splunk in modo che
soddisfi esigenze specifiche.
Splunk, in collaborazione con i partner e la community, non solo mette a disposizione centinaia di app gratuite, che possono essere installate con un semplice click
direttamente dall’interfaccia web, come si può notare nella Figura 2.25, ma anche
una piattaforma con cui è possibile crearle facilmente.
Un’app molto interessante di Splunk, usata anche in questo lavoro di tesi, è Machine Learning Toolkit, la cui interfaccia è mostrata in Figura 2.26. Essa consente
di applicare una varietà di tecniche e metodi di machine learning, come la classificazione, la regressione, la rivelazione di anomalie e rilevamento di outlier. Essa dà
la possibilità di prevedere il valore di un campo numerico, al fine di individuare le
anomalie; le previsioni che si discostano notevolmente dal valore effettivo possono
essere considerate anomale. L’app consente di trovare i valori che differiscono in
modo significativo da quelli precedenti e gli eventi che contengono combinazioni
insolite di valori. In tal modo, un analista di sicurezza, analizzado il traffico di un
firewall, potrebbe, per esempio, prevedere la presenza di un malware.
2.4 App di Splunk
35
Figura 2.25. Ricerca app in splunk
Figura 2.26. App Machine Learning Toolkit
Invece, un add-on di Splunk è, per esempio, Google Maps for Splunk Enterprise.
Esso aggiunge un modulo di geo-visualizzazione basato sulle API di Google Maps,
e permette di tracciare rapidamente informazioni geografiche su una mappa, come
mostrato nella Figura 2.27. Le informazioni sulla posizione devono essere inserite
in un campo nominato “ geo ”. Nella maggior parte dei casi non si deve costruire
il campo “ geo”da soli, perchè i metodi di geolocalizzazione forniscono questo campo per impostazione predefinita. I valori degli indirizzi IP esterni possono essere
facilmente tradotti in luoghi utilizzando il comando geoip incorporato.
36
2 Strumenti software utilizzati
Figura 2.27. Risultato della ricerca lanciata in Google Maps for Splunk
2.5 Docker
Splunk è stato installato utilizzando Docker, che è una tecnologia open source
che permette di creare, eseguire, testare e distribuire le applicazioni in contenitori
software, in modo rapido, affidabile e coerente, indipendentemente dall’ambiente.
Consente di creare pacchetti software in un’unità standard per lo sviluppo, contenenti tutto il necessario per l’esecuzione: codice, runtime, strumenti di sistema,
librerie di sistema, e cosı̀ via.
Lo scopo di Docker è quello di rendere più facile la creazione, il deploy e l’esecuzione di applicazioni utilizzando i container. Questi ultimi consentono allo sviluppatore di “pacchettizzare”un’applicazione con tutte le parti necessarie (le librerie e
altre risorse correlate) e di consegnarla come un unico pacchetto.
Il team di Docker ha sviluppato un formato di “contenierizzazione”interoperabile,
capace di “pacchettizzare”le applicazioni ed effettuarne il deploy in qualsiasi ambiente di esecuzione, senza doversi preoccupare delle condizioni di eseguibilità.
In questo modo, grazie al container, lo sviluppatore è certo del fatto che l’applicazione stessa girerà su qualsiasi macchina Linux indipendentemente da qualsiasi
customizzazione dei setting di quella stessa macchina, setting per i quali quella macchina potrebbe differire da quella che è stata usata per scrivere l’applicazione o per
testarne il codice.
Da un certo punto di vista, quindi, non siamo lontani da una virtual machine.
Ma, al contrario di quest’ultima, invece di creare un intero sistema operativo virtuale, Docker consente alle applicazioni di usare lo stesso kernel Linux del sistema su
cui stanno girando e richiede soltanto che le applicazioni vengano consegnate senza
elementi che risiedano già sulla macchina che le ospita. Questo comporta un deciso
aumento di prestazioni e riduce l’ingombro dell’applicazione.
Docker conferisce un maggior tasso di sicurezza alle applicazioni che girano in un
ambiente condiviso, però, i container non sono di per se un’alternativa alle misure
appropriate di sicurezza.
Inoltre, essendo open source, chiunque può contribuire a Docker ed estenderlo
per coprire esigenze e bisogni aggiuntivi non ancora implementati.
Docker è un tool progettato per fornire vantaggi sia agli sviluppatori sia agli
amministratori di sistema; in particolare:
2.5 Docker
•
•
37
permette agli sviluppatori di scrivere il codice senza doversi preoccupare del
sistema su cui andrà a girare.
il campo Operations ottiene da Docker maggiore flessibilità.
Parlando di Docker e, più in generale, di “contenierizzazione”, le curiosità a
cui si deve fare fronte sono molte: perchè virtualizzare un’intera macchina, quando
sarebbe possibile virtualizzare soltanto una piccola parte di essa?
Questa idea ha condotto gli sviluppatori a trovare delle strade alternative alla
virtualizzazione completa. La “contenierizzazione”può essere considerata figlia della
virtualizzazione, da cui si evolve in una nuova generazione che introduce delle migliorie di non poco conto. Rispetto a un’intera macchina virtualizzata, un container
è capace di offrire:
•
•
•
Un deployment semplificato: impacchettando un’applicazione in un singolo componente distribuibile e configurabile con una sola linea di comando, la tecnologia a container permette di semplificare il deployment di qualsiasi applicazione,
senza doversi preoccupare della configurazione dell’ambiente di runtime.
Una disponibilità rapida: virtualizzando solo il sistema operativo e le componenti
necessarie all’esecuzione dell’applicazione, invece che l’intera macchina, l’intero
package si avvia in un ventesimo di secondo, rispetto ai tempi di avvio di una
macchina virtuale.
Un controllo più granulare: i container consentono agli operatori e agli sviluppatori di suddividere ulteriormente le risorse computazionali in microservizi,
garantendo, cosı̀, un controllo superiore sull’eseguibilità delle applicazioni e un
miglioramento delle prestazioni dell’intero sistema.
La tecnologia dei container ha i seguenti vantaggi indiscutibili:
•
•
•
•
•
L’opportunità, per gli sviluppatori, di possedere una miriade di container anche
sul proprio PC o laptop, per avere sempre a portata di mano un ambiente di
deploy o test adatto a ciascuna applicazione in sviluppo. Per quanto sia possibile
eseguire anche su un laptop diverse virtual machine, questa operazione non è
mai veloce e semplice e impatta non poco sulle prestazioni esecutive.
Distribuzione più rapida di software: gli utenti di Docker, in media, distribuiscono software con una frequenza sette volte maggiore rispetto a chi non utilizza
Docker. La distribuzione delle applicazioni è accelerata grazie alla creazione di
ambienti standard e all’eliminazione dei conflitti tra versioni e stack di linguaggi.
Docker consente agli sviluppatori di distribuire servizi isolati ogni volta che è
necessario, senza preoccuparsi delle complesse dipendenze software. L’amministrazione dei cicli di rilascio delle applicazioni è semplificata, in quanto distribuire una nuova versione di un container richiede il tempo speso per digitare in
console una singola linea di comando.
Facilità di spostamento delle applicazioni.
Maggiore produttività per gli sviluppatori : Docker riduce il tempo necessario per
configurare nuovi ambienti o risolvere i problemi legati alle differenze tra essi.
Le attività di testing traggono un beneficio economico da un ambiente “contenierizzato”. Se si effettua il test di un’app direttamente su un cloud server in un
ambiente di cloud computing pubblico, sarà necessario sostenere i costi relativi
alla frazione di ora o all’ora intera di occupazione delle risorse computazionali.
38
•
•
2 Strumenti software utilizzati
Questo costo aumenta all’aumentare del numero di test che devono essere eseguiti. Con un container è possibile effettuare una serie di semplici test giornalieri
programmati, mantenendo costante il costo, in quanto si userebbero sempre le
stesse risorse di calcolo.
Standardizzazione delle operazioni delle applicazioni : l’uso di contenitori per le
piccole applicazioni semplifica la distribuzione, l’identificazione dei problemi e il
rollback quando necessario.
Componibilità dei sistemi applicativi : invece di obbligare gli sviluppatori a installare e configurare i servizi MySQL, memcached, MongoDB, nginx, node.js e
via discorrendo, per avere la giusta piattaforma esecutiva per le proprie applicazioni, sarebbe meno rischioso e più veloce avviare ed eseguire con piccoli script
quei pochi container che ospitano queste stesse applicazioni.
I container sembrano garantire miglioramenti dello sviluppo delle applicazioni.
Il vantaggio più apprezzato è che, con la distribuzione delle applicazioni più veloce,
si riduce lo sforzo di distribuzione. Sul lungo periodo, il più importante vantaggio
che questa tecnologia promette è la portabilità e la consistenza di un formato che
consente l’esecuzione applicativa su diversi host. Infatti, con la standardizzazione dei
container, i workload possono essere facilmente spostati lı̀ dove vengono eseguiti in
modo più economico e veloce, evitando anche i lock-in dovuti alle peculiarità delle
piattaforme dei singoli provider. Sempre più imprese si affidano alle applicazioni
container-based, ma le sfide sono ancora tante e riguardano temi quali la sicurezza
e le competenze. Nonostante i piani di adozione dei container da parte delle aziende,
si evidenziano una serie di sfide ancora ardue:
•
•
•
•
la sicurezza e la mancanza di certificazione;
l’integrazione con strumenti e processi di sviluppo esistenti;
la gestione;
le conoscenze esistenti e le competenze.
I container rappresentano, dunque, un cambiamento significativo nello sviluppo
di applicazioni enterprise.
3
Installazione di Splunk e caricamento dei
dati da analizzare
In questo capitolo inizialmente si spiegherà come sono stati installati Docker e
Splunk. Successivamente ci si soffermerà sulle modalità di caricamento dei dati
in Splunk ed infine si spiegherà come e dove Splunk memorizza i dati.
3.1 Installazione di Docker e di Spunk
Come anticipato nel capitolo precedente, Splunk è stato installato utilizzando Docker. Per installare Docker, è necessaria una delle seguenti versioni, a 64-bit, di
Ubuntu:
•
•
•
Yakkety 16.10;
Xenial 16.04 (LTS);
Trusty 14.04 (LTS).
È possibile installare Docker in diversi modi, a seconda di quello di cui si ha
bisogno. Più specificatamente:
•
•
•
La maggior parte degli utenti utilizzano i repository di Docker, per la facilità di
installazione e di aggiornamento delle funzioni. Questo è l’approccio consigliato.
Alcuni utenti scaricano il pacchetto DEB, lo installano e gestiscono gli aggiornamenti manualmente.
Altri utenti non possono utilizzare i repository Docker ufficiali e devono fare
affidamento sulla versione di Docker che viene fornita dal loro sistema operativo;
essi, quindi, devono consultare la documentazione relativa al proprio sistema.
Questa versione di Docker, però, potrebbe non essere aggiornata.
In questo lavoro di tesi sono stati usati i repository di Docker. I comandi utilizzati
per l’installazione sono elencati nel Listato 3.1.
$ sudo apt-get install apt-transport-https \
ca-certificates
$ curl -fsSL https://yum.dockerproject.org/gpg | sudo apt-key add $ apt-key fingerprint 58118E89F3A912897C070ADBF76221572C52609D
pub
4096R/2C52609D 2015-07-14
40
3 Installazione di Splunk e caricamento dei dati da analizzare
uid
Key fingerprint = 5811 8E89 F3A9 1289 7C07 0ADB F762 2157 2C52 609D
Docker Release Tool (releasedocker) <[email protected]>
$ sudo add-apt-repository \
"deb https://apt.dockerproject.org/repo/ \
ubuntu-$(lsb_release -cs) \
main"
$ sudo apt-get update
$ sudo apt-get -y install docker-engine
Listato 3.1. Comandi usati per l’installazione di Docker
Una volta eseguiti tutti i precedenti comandi, per verificare che l’installazione
sia andata a buon fine, è necessario lanciare un ulteriore comando, mostrato nel
Listato 3.2.
$ sudo docker run hello-world
Listato 3.2. Comando per la verifica della corretta installazione di Docker
Se l’output restituito è quello mostrato nel Listato 3.3, allora l’installazione è
andata a buon fine.
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
Listato 3.3. Output che dimostra che l’installazione è avvenuta correttamente
A questo punto, dopo aver scaricato e installato Docker sul proprio sistema, per
installare Splunk, si deve aprire una shell e digitare il comando mostrato nel Listato
3.4, per estrarre dal repository un’immagine che utilizza l’ultima versione di Splunk
Enterprise.
docker pull splunk/splunk:latest
Listato 3.4. Estrazione dal repository di un’immagine che utilizza l’ultima versione di
Splunk Enterprise
Successivamente, è necessario creare un volume virtuale, tramite il comando mostrato nel Listato 3.5. Tale volume verrà, poi, utilizzato da Splunk per la
memorizzazione dei dati.
docker run --name vsplunk -v /opt/splunk/etc -v /opt/splunk/var busybox
Listato 3.5. Creazione di un volume virtuale
3.2 Caricamento dei dati in Splunk
41
Il comando mostrato nel Listato 3.6 esegue docker Splunk, indica al docker quale
volume virtuale deve essere utilizzato e quale mapping è necessario effettuare tra
porta interna al docker e porta esterna del sistema.
docker run --hostname splunk --name splunk --volumes-from=vsplunk -p 8000:8000 -d -e
"SPLUNK_START_ARGS=--accept-license" splunk/splunk:6.5.0
Listato 3.6. Esecuzione di docker Splunk
3.2 Caricamento dei dati in Splunk
Per caricare i dati in Splunk si possono usare i seguenti metodi:
•
•
•
Splunk Web;
Command Line Interface (CLI);
inputs.conf.
Per indicizzare una volta un file statico conviene usare Splunk Enterprise Web
oppure Splunk Enterprise CLI con i comandi add oneshot o spool. Per poter
utilizzare Splunk Enterprise CLI si deve accedere alla directory $SPLUNK HOME/bin/
da una shell.
L’ultima modalità per caricare in maniera automatica i file in Splunk è mettere
questi ultimi nella directory batch in input.conf. La cartella batch viene creata
durante l’installazione di Splunk e si trova in $SPLUNK HOME/var/spool/splunk. I
dati spostati in questa cartella vengono automaticamente caricati in Splunk, indicizzati ed eliminati dalla posizione in cui si trovavano, al fine di liberare spazio di
archiviazione. In tal caso, la scelta del source type e dell’indice viene effettuata in
maniera automatica da Splunk.
Il modo più semplice per aggiungere dati alla distribuzione Splunk Enterprise è
quello di utilizzare Splunk Web. Ci sono tre opzioni per immettere i dati in Splunk
Web, come mostrato nella Figura 3.1:
•
•
•
Upload : consente di caricare un file o un archivio di file per l’indicizzazione.
Quando si clicca su “Upload”, Splunk Web avvia il processo di caricamento.
Monitor : permette di monitorare uno o più file, directory, flussi di rete, script,
event log, parametri di rendimento, o qualsiasi altro tipo di dato macchina, a
cui Splunk Enterprise ha accesso. Quando si “clicca”su “Monitor”, Splunk Web
avvia il processo di monitoraggio.
Forward : consente di ricevere i dati dai Forwarder in Splunk. Quando si
“clicca”su “Forward”, Splunk Web inizia il processo di raccolta dei dati dai
forwarder.
Splunk Web elenca le scelte selezionate, la source, ossia il nome del file inserito,
il sourcetype, l’host e l’indice, come mostrato in Figura 3.2.
Nel caricamento dei file in Splunk, una difficoltà, riscontrata inizialmente, è
stata quella di non riuscire a caricare tutti i dati in Splunk, in quanto lo spazio di
archiviazione disponibile, dopo l’upload di una parte dei dati sul software, risultava
42
3 Installazione di Splunk e caricamento dei dati da analizzare
Figura 3.1. Opzioni per immettere i dati in Splunk Web
Figura 3.2. Elenco delle opzioni selezionate
inferiore a 5GB. Splunk, in questo caso, blocca l’indicizzazione e avvisa l’utente con
un messaggio, come mostrato in Figura 3.3.
Per qualunque distribuzione Splunk, è necessario disporre di uno spazio libero
di archiviazione minimo di 5 GB, oltre allo spazio richiesto per tutti gli indici, che
consumano la maggior parte dello spazio su disco. Se si esaurisce tale spazio, l’indicizzatore ferma l’indicizzazione. È possibile impostare un limite di spazio libero per
capire che, quando lo spazio scende al di sotto di tale limite, l’indicizzazione sta per
fermarsi. L’indicizzatore va in pausa fino a quando non sarà disponibile più spazio.
Tuttavia, i dati che vengono caricati durante la sospensione dell’indicizzazione possono essere persi. L’indicizzazione riprenderà una volta che si libererà lo spazio che,
quindi, diventerà superiore al minimo.
Sul disco è, anche, possibile impostare una quantità minima di spazio libero in
cui verranno memorizzati i dati indicizzati. Se viene raggiunto tale limite, l’indicizzatore smette di funzionare. Splunk Enterprise utilizza diversi metodi per controllare lo spazio sull’hard disk. Lo spazio libero minimo su disco può essere impostato
attraverso:
3.2 Caricamento dei dati in Splunk
43
Figura 3.3. Avviso di Spunk relativo allo spazio di archiviazione disponibile sull’hard
disk inferiore a 5GB
•
•
Splunk Web, come mostrato nella Figura 3.4.
La CLI, come mostra il Listato 3.7. In questo esempio si imposta il minimo
spazio libero a 20GB.
splunk set minfreemb 20000
splunk restart
Listato 3.7. Impostazione del minimo spazio libero sul disco con CLI
•
Il file di configurazione server.conf, mostrato nel Listato 3.8, dove <num>
rappresenta la dimensione in MB. È possibile monitorare lo spazio su disco, specificando la dimensione massima degli indici oppure impostando l’età massima
dei dati. Quando viene raggiunto uno di questi limiti, i dati indicizzati più vecchi
verranno eliminati (impostazione predefinita) o archiviati.
[diskUsage]
minFreeSpace = <num>
Listato 3.8. Impostazione del minimo spazio libero sul disco nel file di configurazione
server.conf
Indipendentemente dal tipo di licenza, la dimensione di caricamento massima
per i file, da Splunk Web, è di 500 MB. Per tale motivo, i file di log analizzati in
questo lavoro di tesi, avendo una dimensione molto maggiore di 500 MB, sono stati
44
3 Installazione di Splunk e caricamento dei dati da analizzare
Figura 3.4. Impostazione del minimo spazio libero sul disco in Splunk Web
divisi in file di dimensione adeguata, per il caricamento in Splunk Enterprise Web,
con un parser scritto in Python, mostrato nel Listato 3.9.
import os
import sys
suffixes = [’B’, ’KB’, ’MB’, ’GB’, ’TB’, ’PB’]
def humansize(nbytes):
if nbytes == 0: return ’0 B’
i = 0
while nbytes >= 1024 and i < len(suffixes)-1:
nbytes /= 1024.
i += 1
f = (’%.2f’ % nbytes).rstrip(’0’).rstrip(’.’)
return {"dimensione":f,"formato":suffixes[i]}
if __name__ == ’__main__’:
file=sys.argv[1]
print file
try:
with open(file) as fp:
i=1
for line in fp:
f1=open(file+"_asa_log_part"+str(i),"a+")
f1.write(str(line))
#f1.write("\n")
f1.close()
dimensione = humansize(os.path.getsize(file+"_asa_log_part"+str(i)))
if dimensione[’formato’] == ’MB’:
if float(dimensione[’dimensione’]) >=450 :
i+=1
except Exception as e:
print e
pass
Listato 3.9. Parser in Python per la divisione dei file di log
3.3 Indicizzatore di Splunk
45
3.3 Indicizzatore di Splunk
Splunk Enterprise monitora e indicizza i file nel momento in cui appaiono nuovi
dati. Questi vengono portati in Splunk dai forwarder, cioè agenti Splunk, installati
su un computer remoto, per la raccolta dei log.
Un forwarder riceve i dati da una source, ad esempio un server web, e li invia ad
un’istanza di Splunk. L’indicizzatore raccoglie i log inviati dai forwarder e li elabora,
per creare gli index file e i raw data. Prima che i dati raggiungano gli indicizzatori di
Splunk, possono essere analizzati e, se viene richiesta, può anche essere effettuata la
pulizia degli stessi. La comunicazione tra i forwarder e l’indicizzatore viene effettuata
utilizzando un protocollo proprietario che può essere criptato.
Il software Splunk non è ostacolato da un database SQL; piuttosto, utilizza un
archivio di dati flat, per permettere di indicizzare rapidamente tutti i dati grezzi.
Splunk Enterprise si basa su un’architettura distribuita che scala orizzontalmente
sui server ordinari (commodity server) per supportare quantità illimitate di utenti
e di dati. Il software scala anche verticalmente, incrementando la velocità di ricerca
e di indicizzazione, nonchè la capacità di usufruire di tutta la potenza della CPU
disponibile.
Uno dei componenti più importanti dell’architettura di Splunk è il data store, che si occupa di comprimere e immagazzinare i dati grezzi. L’archivio dati è
basato su una politica di conservazione configurabile; la corretta configurazione
dell’indicizzatore di Splunk è la chiave per il successo del software.
I dati in Splunk sono memorizzati in un database specifico di Splunk, noto
come index; questo consiste in una o più directory in cui Splunk memorizza i dati
elaborati.
L’indicizzatore è il più importante componente di Splunk, in quanto memorizza
in modo intelligente tutti i log raccolti. Analogamente ad un qualsiasi indice di un
libro, l’indicizzatore di Splunk crea un indice per tutti i log collezionati dal proprio
ambiente e memorizza tutti i dati in un indexer, ossia in una directory.
L’indicizzatore di Splunk, per creare un indice, richiede due fasi, come mostrato
nella Figura 3.5. Tali fasi sono:
1. Fase di parsing, che comprende l’aggiunta di metadati, che includono source,
sourceyype e host. In questa fase Splunk può essere impostato per nascondere
dati sensibili, come i numeri delle carte di credito.
2. Fase di indicizzazione, che riceve gli eventi, li divide in segmenti ricercabili e,
infine, crea l’index file e i raw data.
Nella fase di parsing, Splunk esegue le seguenti operazioni sui log:
•
•
•
per ogni evento estrae host, source e sourcetype:
– host: è il nome dell’host, l’indirizzo IP o il nome del dominio completo
dell’host di rete da cui l’evento ha avuto origine;
– source: è il nome del file, dello stream o di altro input da cui ha origine
l’evento;
– sourcetype: è il formato dei dati di input da cui proviene l’evento.
configurazione dei caratteri di codifica;
identificazione del timestamp, o creazione dello stesso, se non esiste: ciò consente
l’ordinamento dei log in base al tempo o in base a come si sono verificati.
46
3 Installazione di Splunk e caricamento dei dati da analizzare
Figura 3.5. Fasi di parsing e indexing
Nella fase di indicizzazione, Splunk esegue le seguenti operazioni:
•
•
•
Divisione di tutti gli eventi in segmenti, chiamati bucket. È possibile determinare
il livello di segmentazione, che ha effetti sull’indicizzazione, sulla velocità, sulla
capacità di ricerca e sull’efficienza della compressione del disco.
Costruzione della struttura dell’indice.
Scrittura su disco dei raw data e degli index file. È, in questa fase, che avviene
la compressione post-indicizzazione.
A questo punto, i dati possono essere facilmente cercati su Splunk.
Quando quest’ultimo indicizza i dati, vengono creati:
1. raw data, in forma compressa, che rappresentano il file di log completo;
2. index file, che “puntano”ai raw data.
Insieme, questi file costituiscono l’indice di Splunk. Splunk Enterprise fornisce una
serie di indici preconfigurati, tra cui internal, audit e main, che è l’indice di default
3.3 Indicizzatore di Splunk
47
di Splunk Enterprise. Se non viene specificato diversamente, tutti i dati elaborati
vengono memorizzati nell’indice main.
I file risiedono in una serie di directory, organizzate per periodo di tempo. Alcune di queste contengono i dati indicizzati recentemente, altre contengono dati
indicizzati precedentemente. Il numero di tali directory cresce in base alla quantità
di dati che si stanno indicizzando.
Splunk immagazzina tutti i suoi dati in cartelle sul server chiamate bucket. Con
il passare del tempo, i bucket “rotolano”da uno stadio a quello successivo, ossia si
muovono attraverso diverse fasi. Il ciclo di vita dei bucket, mostrato in Figura 3.6,
prevede le seguenti fasi:
Figura 3.6. Ciclo di vita dei buckets
•
•
•
Hot bucket: questa è la directory in cui sono conservati i dati indicizzati più
recentemente. Ogni hot bucket occupa la sua subdirectory e per tale motivo ci
possono essere più hot subdirectory. Dopo che l’hot bucket raggiunge una certa
dimensione, esso diventa un warm bucket (si dice che esso “rolls to warm”); a
questo punto viene creato un nuovo hot bucket. Gli hot bucket rotolano sempre
allo stadio successivo quando Splunk viene riavviato.
Warm bucket: è il livello successivo ed è di sola lettura. Ci sono molti warm
bucket. Una volta che Splunk ha creato un numero massimo di warm bucket,
sulla base dell’“età”dei bucket, si passa ai cold bucket. Il primo warm bucket
che rotola ad un cold bucket è quello più vecchio; man mano che tutti gli altri
invecchiano, rotolano anch’essi nei cold bucket. Per ciascun warm bucket ci sono
sottodirectory separate.
Cold bucket: in essi ci sono i dati richiesti raramente, in quanto sono invecchiati
o sono stati archiviati in questo bucket. Ci sono più cold subdirectory. Quando i
warm bucket “rotolano”nei cold bucket non vengono rinominati. Dopo un determinato periodo di tempo, i cold bucket rotolano nei frozen bucket. Se un indice è
più grande della dimensione massima specificata, i dati più vecchi rotolano nello
stato frozen.
48
•
3 Installazione di Splunk e caricamento dei dati da analizzare
Frozen bucket: la cancellazione è l’impostazione predefinita. Di default Splunk
elimina i dati congelati, ma è possibile anche archiviarli. I dati archiviati possono
poi essere scongelati. “Thawed” è la posizione dei dati che sono stati archiviati
e che dopo saranno scongelati. I dati sono eliminati o archiviati sulla base del
periodo di conservazione o della dimensione massima dell’archivio dati. È possibile utilizzare la dimensione di un indice per determinare quando i dati devono
essere congelati e rimossi dall’indice. La dimensione massima predefinita per un
indice è 500 MB. Per modificare tale dimensione, bisogna modificare l’attributo
themaxTotalDataSizeMB in indexes.conf. Ad esempio, per specificare la dimensione massima come 500 MB, basta porre maxTotalDataSizeMB = 500. È
importante ricordarsi che la dimensione deve essere specificata in MB.
Modificando gli attributi in indexes.conf è possibile specificare il criterio che
determina quando un bucket deve passare da uno stadio a quello successivo. Splunk
organizza le directory per distinguere tra hot, warm e cold bucket. Ciascun bucket occupa una propria sottodirectory all’interno di una directory più grande nel
database. Il path che indica la posizione di ogni bucket è mostrato nella Figura 3.7.
Figura 3.7. Posizione dei bucket
A seconda della quantità di dati che si deve elaborare, l’indicizzatore può richiedere più o meno tempo per indicizzare tutti i file e, per questo, potrebbe richiedere
un elevato utilizzo della CPU. Dopo un lungo periodo di tempo, tipicamente parecchi
anni, Splunk rimuove i vecchi dati dal sistema.
4
Progettazione e realizzazione dell’analisi
descrittiva
In questo capitolo ci si è soffermati sulla descrizione dei risultati ottenuti dalle
analisi descrittive relative ai log di accesso e di errore al server web di Ateneo e ai
log di accesso al firewall.
4.1 Analisi descrittiva dei log di accesso
L’obiettivo dell’analisi dei file di log è ricavare informazioni utili, quindi, estrarre
conoscenza da una grande quantità di dati. I log analizzati sono relativi al mese
di Ottobre 2016. In Figura 4.1 è possibile visualizzare l’andamento degli accessi al
web server della rete d’Ateneo dell’Università “Mediterranea”di Reggio Calabria,
nel mese di Ottobre 2016.
Figura 4.1. Andamento e frequenza degli eventi per il mese di Ottobre 2016
Ogni log di accesso è costituito da determinati campi che ci permettono di
ricavare l’indirizzo IP del client che ha effettuato l’accesso al server web, le pagine
web a cui i client vogliono accedere, la risorsa richiesta e il metodo utilizzato per
effettuare la richiesta, il codice di stato HTTP, che indica l’esito della richiesta, il
peso in byte e lo useragent del client; da quest’ultimo possiamo ricavare informazioni
sul sistema operativo e sul modello del dispositivo utilizzato.
La prima cosa su cui si è posta l’attenzione sono le pagine web che hanno
riscontrato più accessi, mostrate in Figura 4.2.
50
4 Progettazione e realizzazione dell’analisi descrittiva
Figura 4.2. Pagine web maggiormente consultate
Come ci si aspetta, la pagina web più consultata è la home page del sito web di
Ateneo, mostrata in Figura 4.3.
Figura 4.3. Home page del sito web dell’Università “Mediterranea”di Reggio Calabria
A seguire, troviamo un “-”. Per capire da quali useragent sia partita tale richiesta, è stata effettuata una ricerca, i cui risultati, mostrati in Figura 4.4, evidenziano
che la maggior parte degli accessi sono stati effettuati da web crawler; tra questi
ultimi troviamo bingbot, Yahoo! Slurp (che è un crawler sviluppato da Yahoo! ed
utilizzato dal motore di ricerca Yahoo! Search), MegaIndex, GoogleBot.
I bot (abbreviazione di robot) sono software che navigano in automatico attraverso Internet per rilevare e prelevare contenuti trovati in rete. Sono utilizzati
4.1 Analisi descrittiva dei log di accesso
51
Figura 4.4. Useragent che maggiormente accedono al sito web dell’Ateneo
per lo più dai motori di ricerca nel processo di identificazione ed indicizzazione dei
contenuti delle pagine web.
Il problema è che i bot, a seconda di come vengono utilizzati, possono essere bot
“buoni”e bot “cattivi”. Un esempio di bot “buono”è Googlebot, che viene usato
da Google per eseguire la scansione e per indicizzare le pagine web su Internet.
I “bot cattivi”, invece, vengono utilizzati per scopi malevoli, come, ad esempio:
inviare messaggi di spam, diffondere malware, gonfiare artificialmente il traffico dei
siti web, copiare contenuti dei siti e raccogliere e rubare indirizzi e-mail presenti nei
siti web.
Le altre pagine web più visitate sono, rispettivamente, la home page del Dipartimento di Giurisprudenza ed Economia (DIGIEC), la pagina web dei Docenti dei
diversi dipartimenti d’Ateneo, mostrata in Figura 4.5, la home page del dipartimento di Agraria, quella del Dipartimento di Architettura e Territorio (DARTE)
e quella del Dipartimento di Ingegneria Civile, Energia, Ambiente e Materiali (DICEAM). Le pagine web più visitate potrebbero essere quelle dei dipartimenti che
contano il maggior numero di iscritti.
Figura 4.5. Pagina web dei docenti dei diversi dipartimenti d’Ateneo
52
4 Progettazione e realizzazione dell’analisi descrittiva
La Figura 4.6 permette di capire quanti indirizzi IP ogni giorno si sono connessi
al sito www.unirc.it, senza, però, tenere in considerazione quante volte è acceduto
in un giorno ciascuno di questi indirizzi. Il giorno in cui sono stati registrati più
accessi è Martedı̀ 4 ottobre, allorquando ci sono stati 3.836 accessi.
Figura 4.6. Numero di indirizzi IP che accedono per ogni giorno di Ottobre al server web
Splunk, inoltre, permette di visualizzare la provenienza di ogni indirizzo IP che
accede al server web su una mappa geografica. La Figura 4.7 mostra da dove provengono gli indirizzi IP che hanno effettuato l’accesso al server web durante il mese
di Ottobre. Come ci si aspetta, la maggior parte degli IP vengono localizzati in
Italia.
Figura 4.7. Mappa degli indirizzi IP
Per quanto riguarda, invece, le risorse richieste, le dieci risorse maggiormente
richieste vengono visualizzate nella Figura 4.8.
Successivamente, tramite lo useragent, abbiamo potuto effettuare un’analisi sui
sistemi operativi utilizzati dagli utenti che accedono al web server. La Figura 4.9
4.1 Analisi descrittiva dei log di accesso
53
Figura 4.8. Le dieci risorse maggiormente richieste
ci permette di capire quali sono quelli più usati: al primo posto c’è Windows, poi
Android, iOS, Mac OS e Linux. In “OTHER”sono raccolti i sistemi operativi che
sono stati utilizzati di meno e tutti i web crawler.
Figura 4.9. I sistemi operativi maggiormente usati per accedere al server
Sempre dagli useragent abbiamo ricavato i dispositivi dai quali è stato effettuato
l’accesso. Essi vengono mostrati in Figura 4.10 e, in ordine di utilizzo decrescente,
sono: Personal Computer, Samsung, iPhone, Huawei e LG. Quelli non elencati sono
inglobati in “OTHER”.
Successivamente, è stata posta l’attenzione sui web crawler. Un crawler è un
software che analizza i contenuti di una rete o di un database in un modo metodico e
automatizzato, per conto di un motore di ricerca, il quale fornisce al crawler una lista
di URL da visitare. Esso è un tipo di bot che acquisisce una copia testuale di tutti
i documenti visitati; tali copie vengono, poi, inserite in un indice. Nel nostro caso, i
crawler che hanno effettuato più accessi nel corso di Ottobre 2016 sono mostrati in
Figura 4.11. I primi due sono, rispettivamente, “Bingbot” e “Googlebot”. Bingbot è
lo spider del motore di ricerca Bing, mentre Googlebot è lo spider di Google. I bot
54
4 Progettazione e realizzazione dell’analisi descrittiva
Figura 4.10. Modelli dei dispositivi usati per accedere al server web
sono stati localizzati in 25 paesi, visualizzabili sulla mappa geografica mostrata in
Figura 4.12. L’87,153% di essi si trovano negli USA, ma una bassa percentuale è
presente anche in Italia (3,59%), Germania (2,40%), Francia (2,37%), Regno Unito
(2,30%) e Russia (1.39%), come mostra la Figura 4.13
Gli indirizzi IP che accedono maggiormente al server sono: 78.47.225.238 e
193.204.242.10, come mostrato nella Figura 4.14. Ci si è soffermati su questi ultimi
per capire cosa hanno richiesto e da dove provengono.
Per quanto riguarda il primo indirizzo IP (78.47.225.238) è emerso che si tratta
di un IP proveniente dalla Germania e che ha effettuato gli accessi al web server
solo nei giorni 8/10/2016 e 9/10/2016, come mostrato in Figura 4.15. Il giorno
8/10/2016 conta 28.034 eventi, mentre il giorno 9/10/2016 ne conta 806.232.
La pagina web più richiesta da tale indirizzo è la home page della “Mediterranea”, ossia l’indirizzo www.unirc.it, come si può vedere nella Figura 4.16. Le altre
nove pagine web più richieste sono mostrate in Figura 4.17.
Queste ultime inducono a pensare che si potrebbe trattare di un tentativo di SQL
Injection e, quindi, tutte le richieste effettuate alla home page potrebbero essere
delle prove effettuate per testare la vulnerabilità del sito web. La SQL injection è
una tecnica di hacking che mira ad iniettare del codice sfruttando le vulnerabilità
di una web application che fa uso di DBMS relazionali. La vulnerabilità è dovuta
alla mancanza di controlli sui dati ricevuti in input. I comandi SQL sono, quindi,
iniettati tramite query nel database di un’applicazione web al fine di autenticarsi
con i massimi privilegi, in aree protette del sito, anche senza essere in possesso delle
credenziali d’accesso, e di visualizzare e alterare dati sensibili. Le stringhe di codice
SQL malevole vengono, quindi, eseguite, per esempio, per fare inviare il contenuto
4.1 Analisi descrittiva dei log di accesso
55
Figura 4.11. Web crawler che hanno effettuato il maggior numero di accessi
Figura 4.12. Mappa dei Web crawler
del database all’attaccante.
Lo useragent da cui sono partite più richieste (748.153) è: “Mozilla/5.0
(Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome
/41.0.2228.0 Safari/537.21”, mentre il sistema operativo maggiormente usato
da quell’indirizzo IP è Windows, come si vede nella Figura 4.18. Questo è confermato
dal fatto che il dispositivo più utilizzato è il Personal Computer, come si può vedere
nella Figura 4.19. Invece, le risorse maggiormente richieste sono mostrate nella Figura 4.20; la gran parte di esse sono richieste al sito www.unirc.it. Ai primi tre posti
troviamo, rispettivamente: “/studenti/registrazione aziende tirocini.php?
task=reg”, “/area riservata.php ”e “/ateneo/iscrizione corsi lingua.php”.
56
4 Progettazione e realizzazione dell’analisi descrittiva
Figura 4.13. Web crawler che hanno effettuato il maggior numero di accessi
Figura 4.14. Indirizzi IP che hanno effettuato il maggior numero di accessi
4.1 Analisi descrittiva dei log di accesso
57
Figura 4.15. Andamento degli eventi dell’indirizzo IP che ha effettuato il maggior numero
di accessi
Figura 4.16. Pagine web richieste dall’indirizzo IP 78.47.225.238
A seguire è stata posta l’attenzione sui codici di stato HTTP inviati a questo
indirizzo IP. I codici di stato HTTP sono dei messaggi che i web server inviano al
client in risposta ad una richiesta. Sono codici numerici a tre cifre, in cui la prima
cifra definisce la categoria di appartenenza. Esistono cinque categorie di codici di
stato HTTP:
•
•
•
1xx : messaggio informativo. Questi codici di stato sono indicativi di una risposta
temporanea. Prima di una normale risposta, al client potrebbero essre inviate
una o più risposte 1xx.
2xx : esito positivo. Questa classe di codici indica che la richiesta del client è
stata accettata dal server.
3xx : reindirizzamento. Per completare la richiesta dovrà essere intrapresa un’ul-
58
4 Progettazione e realizzazione dell’analisi descrittiva
Figura 4.17. Le prime dieci pagine web richieste dall’indirizzo IP 78.47.225.238
Figura 4.18. Il sistema operativo più utilizzato dall’indirizzo IP che ha effettuato più
accessi
•
•
teriore azione da parte del browser client. Ad esempio, è possibile che il browser
debba richiedere una pagina diversa sul server o ripetere la richiesta usando un
server proxy.
4xx : errore del client. Si verifica un errore causato apparentemente dal client.
Ad esempio,è possibile che il client abbia inviato una richiesta per una pagina
inesistente oppure che non vengano fornite informazioni di autenticazione valide.
5xx : errore del server. Il server non è in grado di completare la richiesta a causa
di un errore.
4.1 Analisi descrittiva dei log di accesso
59
Figura 4.19. Dispositivo più utilizzato dall’indirizzo IP che ha effettuato più accessi
Figura 4.20. Risorse maggiormente richieste dall’indirizzo IP che ha effettuato più accessi
I codici relativi all’indirizzo IP 78.47.225.238 vengono mostrati in Figura 4.21.
Si può notare che il codice che è apparso maggiormente è il 200, il quale indica che
le richieste hanno avuto esito positivo, cioè sono andate a buon fine e l’operazione
è riuscita. A seguire, troviamo i seguenti codici, elencati in ordine decrescente:
•
•
•
403 : indica che la richiesta è legittima ma il server si rifiuta di soddisfarla. È
possibile che si riceva questo codice di stato se il sito web non dispone di un
insieme di documenti predefinito e non è impostato per consentire l’esplorazione
delle directory.
404 : indica che l’oggetto non è stato trovato. Questo errore si può verificare se
il file a cui si sta tentando di accedere è stato spostato o eliminato.
301 : indica che l’oggetto richiesto è stato spostato permanentemente, e quindi questa richiesta e tutte le richieste future devono essere indirizzate all’URI
specificato.
60
•
•
4 Progettazione e realizzazione dell’analisi descrittiva
302 : la risorsa richiesta è stata trovata ma risiede temporaneamente in un URI
diverso.
500 : errore interno del server. Questo messaggio viene visualizzato per molti
errori lato server.
Figura 4.21. Codici di stato HTTP inviati all’indirizzo IP che ha effettuato più accessi
La Figura 4.22 è la prima parte della tabella di contingenza che mette in relazione
le pagine web richieste dall’indirizzo IP 78.47.225.238 e i relativi codici di stato
HTTP e riporta le frequenze congiunte dei due campi considerati. Questa tabella,
quindi, ci permette di capire immediatamente l’esito delle richieste delle diverse
pagine web.
Figura 4.22. Tabella di contingnza con le pagine web richieste e i relativi codici di Stato
HTTP
Il secondo indirizzo IP che effettua più accessi proviene dalla Provincia di Reggio
Calabria. Anche per questo indirizzo, e per tutti gli altri, è possibile cercare le pagine
web e le risorse più richieste, i sistemi operativi più utilizzati, i dispositivi utilizzati,
i codici di stato HTTP e gli useragent.
4.2 Analisi descrittiva dei log di errore
61
4.2 Analisi descrittiva dei log di errore
I log di errore registrano tutti gli errori che un server web riscontra nell’elaborare
una richiesta. Tali log ci danno informazioni sulla data e sull’ora in cui si è verificato
l’evento, sull’errore riscontrato, sul livello di gravità di quest’ultimo, sul messaggio
d’errore dettagliato e sull’indirizzo IP del client la cui richiesta ha generato un
errore.
Gli indirizzi IP che hanno riscontrato un errore sono stati localizzati; nella mappa
geografica in Figura 4.23 è possibile visualizzare il loro paese diprovenienza. L’Italia
è il paese che ha contato un maggior numero di errori. Ricollegandoci all’indirizzo
IP che ha effettuato il maggior numero di accessi, ossia 78.47.225.238, possiamo
vedere se ha generato errori durante le sue richieste. Quello che emerge è che è stato
riscontrato solo l’errore “PHP Fatal Error” alla pagina web www.unirc.it, il giorno
9/10/2016 dalle ore 01:33 alle ore 01:42, come mostrato in Figura 4.24.
Figura 4.23. Mappa geografica in cui sono localizzati gli errori
Quando si devono eseguire troppe funzioni ed elaborare troppi dati, può capitare che appaia il seguente errore: “PHP Fatal error: Allowed memory size of
134217728 bytes exhausted (tried to allocate 523800 bytes) in /media/
web/unirc/include/functions.inc.php on line 276”. Questo vuol dire che si
sta cercando di caricare in mermoria una quantità di dati, espressa in MB, superiore
a quella consentita nel file php.ini strutturato nel server di residenza del dominio.
Se sono state eseguite delle modifiche, al fine di risolvere tale problematica, è necessario ripristinare la situazione precedente all’errore, altrimenti si deve agire sulle
impostazioni del file php.ini relative alla configurazione del server. Il file php.ini
62
4 Progettazione e realizzazione dell’analisi descrittiva
Figura 4.24. Fascia oraria in cui è stato riscontrato l’errore PHP Fatal Error
non sempre è modificabile; talvolta va chiesto al provider del fornitore se è possibile
aumentare il “limite di memoria”in tale file.
Successivamemte, è stata posta l’attenzione sui bot, per capire se Bingbot
e Googlebot, che sono gli useargent che hanno effettuato un maggior numero di accessi, hanno generato errori nell’effettuare una richiesta. Quindi sono
stati individuati gli indirizzi IP corrispondenti agli useragent Bingbot e Googlebot. L’IP relativo allo useragent “Mozilla/5.0 (compatible; bingbot/2.0;
+http://www.bing.com/bingbot.htm)”è 157.55.39.159. L’IP relativo allo useragent “Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/b
ot.html)ӏ 66.249.76.74. Entrambi gli indirizzi hanno generato il seguente errore
“not found or unable to stat”, e il messaggio d’errore dettagliato è “media/web
/unirc/dipartimenti/error apache.php”.
Questo rispecchia l’andamento generale, in quanto “not found or unable to stat”è
l’errore che appare più spesso, con una percentuale del 51.1 %, come si può vedere
in Figura 4.25. Il messaggio d’errore dettagliato che appare più frequentemente,
con una percentuale del 95,567 %, è “media/web/unirc/dipartimenti/error apac
he.php”, come mostra la Figura 4.26. In entrambe le figure è, anche, possibile
visualizzare gli errori che appaiono più raramente.
4.3 Analisi descrittiva dei log del firewall
In generale, lo scopo di un firewall è quello di proteggere la rete interna, privata (in
questo caso la rete universitaria), dal traffico potenzialmente ostile. In informatica
il Port Scanning è una tecnica progettata per sondare un server stabilendo quali
porte siano in ascolto sulla macchina. Qualsiasi attaccante, prima di sferrare un
attacco, deve effettuare la scansione di tutte le porte. Le tecniche di port scanning
permettono di individuare quali servizi espone un sistema remoto. Un port scan è
un processo che invia le richieste dei client a un intervallo di indirizzi di porte su un
server, con l’obiettivo di trovare una porta aperta. Elaborando le risposte è possibile
stabilire quali servizi di rete siano attivi e disponibili su un server.
4.3 Analisi descrittiva dei log del firewall
63
Figura 4.25. Primi dieci errori maggiormente riscontrati
Figura 4.26. I dieci messaggi d’errore che sono apparsi maggiormente
Ogni porta è identificata da un numero, da 0 a 65535. Per convenzione alcuni servizi sono solitamente in esecuzione su determinate porte: un server web (protocollo
HTTP) utilizza di norma la porta 80, mentre un servizio FTP la 21.
La scansione delle porte è facilmente rilevabile, in quanto molte applicazioni
mantengono un log delle connessioni ricevute e tale scansione, probabilmente, verrà
registrata come una connessione non andata a buon fine, dal punto di vista del
server, poichè è stata abbattuta senza inviare alcun dato.
È importante tenere presente che nessuna difesa può essere considerata “definitiva”: ogni giorno vengono scoperte nuove tecniche di attacco ai sistemi; ciò impone
ai sistemisti un aggiornamento costante. Nessuna difesa, per quanto sofisticata, è
impenetrabile. In generale, un attaccante particolarmente motivato e con molto
tempo a disposizione riuscirà sempre a violare in qualche modo il proprio bersaglio.
Quindi, è importante rilevare gli attacchi quando vengono eseguiti e mitigarne i
danni in caso di successo.
L’analisi dei file di log del firewall è utile per identificare qualsiasi attività dannosa all’interno della rete. Ogni evento ha un determinato codice identificativo.
Consideriamo il codice identificativo 106100, che ci permette di conoscere IP sorgente e porta sorgente, IP di destinazione e porta di destinazione. Inoltre, i file di
64
4 Progettazione e realizzazione dell’analisi descrittiva
log ci permettono di capire se l’accesso al pacchetto è stato consentito o negato
dall’Access Control List.
Per prima cosa, vediamo quali sono i dieci paesi che hanno effettuato il maggior
numero di connessioni negate su porte differenti. In questo modo possiamo capire
su quante porte diverse essi si sono connessi. Quindi, se un paese si collega su un
numero elevato di porte, è probabile che stia facendo la scansione di tutte le porte
per sapere dove sferrare l’attacco. La Figura 4.27 mostra che la Cina è il paese che
si collega su un numero elevato di porte, in particolare 61.046, seguita dagli Stati
Uniti (che si collega su 53.615 porte), Francia, Italia, Germania, Olanda, Irlanda,
Regno Unito, Repubblica Coreana ed Ecuador.
Figura 4.27. Paesi che hanno effettuato più connessioni su porte diverse
Per esempio, possiamo analizzare gli indirizzi IP di ogni paese e scoprire quali
sono quelli che appaiono più volte nei log analizzati. In Cina l’IP che appare più
frequentemente è il 59.56.77.6, come si può vedere nella Figura 4.28.
Mentre gli IP che appaiono più di frequente negli Stati Uniti sono: 207.191.195.138,
31.13.77.6 e 172.217.17.147, come si può vedere in Figura 4.29.
Successivamente, al fine di individuare i Paesi che hanno effettuato attacchi al
server, è stata effettuata una ricerca che conta quante volte ogni paese si è collegato
complessivamente su tutte le porte ed ha avuto accesso negato. Anche in questo caso
ci fermiamo ai primi dieci paesi che hanno effettuato più collegamenti. La Figura
4.30 mostra che la Cina ha effettuato complessivamente 9.892.415 collegamenti.
A seguire troviamo il Vietnam, il Brasile, gli Stati Uniti, Taiwan, la Repubblica
Coreana, l’Ucraina, la Turchia, la Russia e l’India.
I paesi in comune ai due grafici, ossia Cina, Stati Uniti e Repubblica Coreana
sono quelli che si sono collegati su un numero elevato di porte per più volte ed hanno
avuto accesso negato. Quindi, questi potrebbero essere i paesi che sferrano attacchi
al server web d’Ateneo. A questo punto, per capire quali sono gli IP da cui, probabilmente, sono partiti attacchi, ci siamo soffermati su questi tre paesi e per ognuno
di essi, abbiamo prima analizzato gli indirizzi IP sorgente che effettuano connessioni
4.3 Analisi descrittiva dei log del firewall
Figura 4.28. Indirizzi IP che accedono maggiormente dalla Cina
Figura 4.29. Indirizzi IP che accedono maggiormente dagli Stati Uniti
Figura 4.30. Paesi che hanno effettuato complessivamente più connessioni
65
66
4 Progettazione e realizzazione dell’analisi descrittiva
su più porte di destinazione distinte e poi gli IP che effettuano complessivamente il
più alto numero di connessioni. Dopo di ciò, abbiamo selezionato gli IP che appaiono in entrambe le analisi. Quelli in comune per gli Sati Uniti sono 172.217.14.147,
205.185.208.98, 65.55.2.82, 131.253.40.10 e 8.8.8.8. Quelli in comune per la Cina sono 114.114.114.114 e 202.118.1.81. Mentre, per la Repubblica Coreana, non ci sono
indirizzi in comune.
Per brevità di trattazione, verrà analizzato, qui di seguito, solo un indirizzo
tra quelli sopra elencati. L’indirizzo su cui ci si è soffermati è il 205.185.208.98, in
quanto è quello che presenta più sovrapposizioni, a livello temporale, tra connessioni
permesse e connessioni negate, come si può vedere in Figura 4.31, nella cui parte
superiore possiamo vedere l’andamento temporale delle connessioni permesse e nella
parte inferiore l’andamento temporale di quelle negate. Questo indica che è più
probabile che in tali giorni questo indirizzo IP abbia potuto effettuare attacchi e
riuscire in tale intento.
Figura 4.31.
205.185.208.98
Andamento temporale delle connessioni relative all’indirizzo IP
L’attaccante giorno 16 Ottobre ha eseguito diverse connessioni, le quali hanno
4.3 Analisi descrittiva dei log del firewall
67
avuto tutte un esito negativo, come si può vedere in Figura 4.32; tale figura riporta le richieste negate. Tale giorno non ci sono state connessioni accettate. Questo
potrebbe voler dire che il client con l’indirizzo IP 205.185.208.98 ha provato ad eseguire la scansione delle porte per capire quale fosse la porta su cui poter sferrare
l’attacco.
Figura 4.32. Connessioni negate dell’IP 205.185.208.98 durante il 16 Ottobre
Il giorno successivo, 17 Ottobre 2016, tale IP ha continuato ad effettuare altre
richieste, ottenendo meno connessioni negate, come si vede in Figura 4.33. Dopo
diversi tentativi, dalle ore 13:27 alle 13:37 riesce ad avere 351 connessioni permesse
mentre altre 66 riesce ad averle dalle 17:00 alle 18:00, come mostra la Figura 4.34;
quindi, riesce ad ottenere l’accesso al server.
Figura 4.33. Connessioni negate all’IP 205.185.208.98 durante il 17 Ottobre
Figura 4.34. Connessioni permesse all’IP 205.185.208.98 durante il 17 Ottobre
68
4 Progettazione e realizzazione dell’analisi descrittiva
A questo punto, il client è riuscito ad individuare le porte a disposizione e capisce
dove può effettuare l’attacco.
Tale indirizzo, inoltre, rispetto agli altri IP, è quello che conta il maggior numero
di connessioni sulle porte Telnet ed SSH, che sono quelle su cui è possibile effettuare
degli attacchi per prendere il controllo del server. Per tale motivo ci siamo soffermati
solo sulle porte 22 (SSH) e 23 (Telnet).
Se analizziamo il caso SSH, è possibile vedere che sia giorno 16 che giorno 17
molte connessioni ad SSH sono state negate, come si vede nelle Figure 4.35 e 4.36.
Però giorno 17 abbiamo anche 14 connessioni permesse dalle ore 13.00 alle ore 14:00,
come mostra la Figura 4.37. Questo vuol dire che l’attaccante ha provato a fare degli
attacchi ed è riuscito a prendere il controllo in questa fascia oraria.
Figura 4.35. Connessioni SSH negate all’IP 205.185.208.98 il 16 Ottobre
Figura 4.36. Connessioni SSH negate all’IP 205.185.208.98 il 17 Ottobre
Figura 4.37. Connessioni permesse alla porta SSH per l’IP 205.185.208.98 il 17 Ottobre
Invece, per quanto riguarda la porta Telnet, giorno 17 Ottobre ci sono state
molte richieste negate, come si vede in Figura 4.38, mentre, nella fascia oraria che
4.3 Analisi descrittiva dei log del firewall
69
va dalle ore 13:00 alle ore 14:00, si riscontrano 24 connessioni permesse, mentre altre
due permesse si hanno dalle ore 17:00 alle ore 18:00.
Figura 4.38. Connessioni Telnet negate all’IP 205.185.208.98 il 17 Ottobre
Figura 4.39. Connessioni permesse alla porta Telnet per l’IP 205.185.208.98 il 17 Ottobre
Tali analisi possono essere effettuate allo stesso modo per qualsiasi altro indirizzo
IP.
5
Anomaly Detection
In questo capitolo, inizialmente, verrà spiegato perchè è importante effettuare attività di “anomaly detection”. Successivamente, si descriverà l’app di Splunk utilizzata per effettuare “outlier detection”. Infine, verrano illustrate le anomalie emerse
dall’analisi degli outlier.
5.1 Introduzione all’analisi degli outlier e Data Mining a supporto della cybersecurity
Nei sistemi operativi, nelle applicazioni e nei database è possibile individuare delle
vulnerabilità. Una vulnerabilità è un punto debole che potrebbe consentire ad un
aggressore di compromettere la sicurezza dell’intero sistema. Quindi, è di fondamentale importanza attuare misure di controllo e prevenzione (come, ad esempio,
dotarsi di dispositivi di protezione firewall o di controllo degli accessi, attraverso procedure di autenticazione) sulle potenziali vulnerabilità, per bloccare minacce e per
permettere alle organizzazioni di proteggere le informazioni considerate riservate,
garantendo confidenzialità e integrità dei dati.
Uno dei meccanismi per l’individuazione delle attività sospette è la verifica dei
log di sistema che consente di individuare attività anomale e di monitorare i pacchetti destinati al firewall o al server, sia per reagire a pattern di attacco noti sia
per accorgersi di un Port Scanning da remoto, generalmente prologo di un tentativo
di intrusione.
È stato già spiegato precedentemente che i file di log di un web server o di
un firewall registrano informazioni di eventi scaturiti durante l’esecuzione di un
processo; attraverso la loro analisi, è possibile individuare attacchi ai sistemi, in
quanto essi potrebbero lasciare segni negli eventi contenuti nei log.
Infrangere la sicurezza di un sistema comporta, spesso, un uso anormale dello
stesso; quindi, le intrusioni sono rilevate cercando le attività che si differenziano dal
normale comportamento.
Nel Data Mining il rilevamento delle anomalie (anomaly detection) consiste nell’identificazione di eventi che non sono conformi ad un modello previsto in un insieme di dati. Attraverso il Data Mining è possibile scoprire relazioni ed informazioni
precedentemente sconosciute e potenzialmente utili.
72
5 Anomaly Detection
Una branca del Data Mining che si occupa in maniera specifica dei file di log è il
Process Mining. La presenza di meccanismi di tracciatura e di logging in un sempre
crescente numero di piattaforme IT ha già consentito di applicare il Process Mining
a svariati contesti applicativi. Tuttavia, l’applicabilità e la rilevanza di tali tecniche
di analisi assumono un carattere ancora più accentuato in contesti organizzativi
sensibili alle problematiche della cybersecurity, dove la raccolta e memorizzazione
di log è ormai riconosciuta come una pratica virtuosa per l’analisi dei rischi e per il
rafforzamento delle politiche di sicurezza.
È importante che le aziende e gli enti governativi predispongano meccanismi
di “security enforcement and security check”al livello dei loro processi organizzativi. Tale orientamento è destinato a produrre una sempre maggiore diffusione di
infrastrutture per il tracciamento dei processi, indispensabili per riscontrare comportamenti fraudolenti o colposi, e una domanda crescente di strumenti innovativi
di analisi che consentano di estrarre conoscenza utile, ai fini della sicurezza, da log
di grandi dimensioni. In tale prospettiva, le tecniche di Process Mining possono rivelarsi un potente strumento di analisi che si presta in modo naturale a varie tipologie
di applicazioni in uno scenario di cybersecurity, tra cui la scoperta e la predizione
dei casi di violazione della sicurezza.
L’idea di base consiste nello stimare come potenziali minacce le istanze di esecuzione che divergono dai pattern di esecuzione tipici del processo facendo leva sull’assunzione, comune a molte applicazioni di security management, che i comportamenti
anomali abbiano un’elevata probabilità di essere pericolosi.
Le strategie di rilevazione delle anomalie perseguono l’obiettivo di identificare un
comportamento non appropriato, non appena esso si è verificato. Spesso, l’obiettivo
finale che si vuole raggiungere è quello di individuare dei tipi di condotta “normali”,
in contrasto ai quali comportamenti dissimili possano risultare “anormali”, e quindi
motivo di allarme e di potenziale intervento.
In altri termini, dall’analisi dei dati comportamentali, ovvero dei valori assunti
dalle feature che caratterizzano le sequenze di azioni compiute da un utente su
una risorsa, è possibile rilevare anomalie comportamentali che evidenziano un uso
inatteso di tale risorsa, e prendere eventuali contromisure.
Dal parsing dei file di log è possibile ricavare gli episodi che avvengono frequentemente (si assume che essi rappresentano il profilo normale del sistema) e gli
episodi che si verificano meno frequentemente (i quali vengono, quindi, considerati
“anomali”). Il numero delle osservazioni “normali”è largamente superiore a quello
delle osservazioni “anormali”. Gli outlier vengono analizzati perchè ci permettono
di individuare anomalie nei dati.
5.2 Machine Learning Toolkit
Per fare “anomaly detection”è stata utilizzata l’app di Splunk “Machine Learning
Toolkit”, la quale, tra le diverse funzioni che offre, permette anche di rilevare gli
outlier. In Figura 5.1 è possibile vedere l’nterfaccia grafica di questa app.
Essa consente di applicare una varietà di tecniche e metodi di machine learning,
come, ad esempio, la classificazione, la regressione, la rilevazione di anomalie e di
outlier. I diversi showcase illustrano come applicare questi metodi su un campione
5.2 Machine Learning Toolkit
73
Figura 5.1. Interfaccia grafica dell’app Machine Learning Toolkit
di dati inclusi nell’applicazione, i quali possono essere utilizzati per esercitarsi e
capire come funziona l’app. Inoltre, l’app stessa offre nuovi comandi SPL ed altre
visualizzazioni.
È possibile installare l’app sia in Splunk Enterprise che in Splunk Cloud. Nel
nostro caso è stata installata in Splunk Enterprise Web; a tal fine è stato sufficiente scaricare il file di installazione e, successivamente, installare l’app dal file,
importandolo in Splunk Web. Dopodichè, per poter utilizzare tutte le funzionalità che questa app ci offre, è stato scaricato l’add-on “The Python for Scientific
Computing”relativo al sistema operativo sul quale è stato installato Splunk.
A questo punto è possibile lanciare la query e, una volta terminata l’esecuzione,
bisogna procedere con il setting dei parametri.
Una delle prime cose che è necessario specificare riguarda quale “threshold
method”utilizzare. Abbiamo tre alternative:
•
•
•
Deviazione standard : si usa se i dati seguono una distribuzione normale e se non
importa che gli outlier abbiano un grande impatto sulla soglia di classificazione.
La deviazione standard è un indice di dispersione statistico, ossia è uno dei modi
per esprimere la dispersione dei dati intorno ad un indice di posizione, quale può
essere, ad esempio, la media aritmetica o una sua stima. La deviazione standard
(o scarto quadratico medio) è la radice quadrata della varianza.
Median absolute deviation (MAD): è una misura di dispersione. Essa viene utilizzata quando è necessario che il valore della deviazione sia meno influenzato
dai valori estremi. Ciò è dovuto al fatto che la mediana è meno influenzata dai
valori estremi rispetto alla media. La MAD è uno stimatore più robusto della
semplice varianza o deviazione standard e presenta una minore sensibilità agli
outlier rispetto alla deviazione standard.
Scarto interquartile: essendo in grado di escludere la maggior parte degli elementi anomali, esso viene utilizzato spesso in relazione ad un campione di dati
per misurarne l’indice di dispersione. Esso è una misura di quanto i valori si
allontanino da un valore centrale.
74
5 Anomaly Detection
Gli ultimi due metodi si usano se si vuole più robustezza rispetto ai valori anomali.
La MAD è più robusta agli outlier riseptto alla deviazione standard.
Dopodichè, un altro paramentro che bisogna specificare è il valore del “moltiplicatore di soglia (threshold multiplier)”. Maggiore è tale numero e maggiore sarà
l’intervallo all’interno del quale i valori vengono considerati “normali”; minore sarà,
quindi, il numero di outlier.
I valori del lower bound e dell’upper bound di tale intervallo vengono determinati automaticamente dall’app in base al valore che viene scelto per il threshold
multiplier.
Nelle nostre analisi, di volta in volta, sono state considerate variabili diverse;
pertanto, il valore del moltiplicatore di soglia e, di conseguenza, i valori dell’upper
bound e del lower bound, sono stati scelti in maniera euristica e considerando, anche,
che il valore di outlier restituito debba contenere al massimo un valore anomalo ogni
1000; tale scelta è motivata dal fatto che un outlier, per definizione, è un valore che
deve essere molto diverso dagli altri e, quindi, si verifica raramente.
Come si è ben capito, questo metodo è flessibile; pertanto, la soglia può essere
cambiata facilmente in qualunque istante.
Ad esempio, se la maggior parte delle porte di destinazione riceve migliaia di
connessioni, non è possibile avere un upper bound pari a 1000, perchè, altrimenti,
rischieremmo di avere un numero spropositatodi potenziali outlier che, alla prova
dei fatti, si rivelerebbero falsi positivi.
È, inoltre, possibile specificare una “sliding window”. Se non si specifica, l’intervallo all’interno del quale i valori non sono considerati outlier è calcolato utilizzando
l’intero set di dati e, quindi, esso avrà una dimensione uniforme.
A questo punto, il rilevatore di outlier numerici determinerà i valori che sembrano
essere molto più alti o più bassi rispetto al resto dei dati; successivamente, sarà
possibile visualizzare i grafici e vedere quanti sono gli outlier identificati.
I valori che cadono al di fuori dell’intervallo blu sono indicati da un punto giallo
e rappresentano gli outlier. Se si passa il mouse sopra il punto giallo è possibile
visualizzare sia il valore che la quantità di tale outlier; se si “clicca”su di esso è
possibile effettuare drill-down, ossia viene lanciata una query che mostra in dettaglio le informazioni su quel valore anomalo. In Figura 5.2 vediamo un esempio di
visualizzazione di outlier numerici.
L’Anomaly Detection ha il vantaggio che permette di rilevare i “sintomi”di un attacco, senza conoscerne esattamente i dettagli. Però ha lo svantaggio che si potrebbe
avere un alto numero di falsi positivi.
5.3 Outlier Detection
Gli outlier rappresentano dati che sono considerevolmente differenti rispetto agli
altri. Sapere come trattare i valori anomali è importante per assicurare una comprensione adeguata dei dati e per consentire, in ultima analisi, di raggiungere conclusioni più accurate dallo studio. Infatti, i valori anomali individuati potrebbero
essere indicativi di eventi interessanti, insoliti e potenzialmente pericolosi.
La presenza di un outlier può essere determinata, per esempio, da una distribuzione della variabile, rispetto alla quale abbiamo trovato l’outlier, con valori estre-
5.3 Outlier Detection
75
Figura 5.2. Esempio di visualizzazione nel caso di rilevazione di outlier numerici
mi rispetto ad una distribuzione normale. Un outlier, infatti, è un’osservazione con
valori molto diversi da quelli degli altri dati.
Nel nostro caso, per esempio, se decidiamo di analizzare quali sono i client che
si sono collegati maggiormente al firewall d’Ateneo e vediamo che la maggior parte
degli indirizzi IP hanno un numero di connessioni compreso in un certo intervallo,
mentre un altro indirizzo IP effettua un numero di connessioni estremamente più
alto, si può concludere che quello è un outlier.
5.3.1
Analisi degli outlier relativi agli accessi al firewall
Il metodo per la scelta della soglia deve essere selezionato anche in base alla distribuzione dei dati. Quindi, considerando che i log relativi agli accessi al firewall non
seguono un andamento normale, come si può vedere in Figura 6.2, e visto che la
mole di dati analizzata è pari 55 GB, abbiamo bisogno di un metodo più robusto
agli outlier. Per tali ragioni, è stato utilizzato la Median Absolute Deviation.
Figura 5.3. Andamento temporale degli accessi al firewall
Inoltre, considerando che in Splunk le visualizzazioni sono state configurate per
visualizzare un numero massimo di risultati e considerando anche che, nel nostro
caso, il numero totale di eventi è sempre elevato, i grafici degli outlier non permettono di visualizzare tutti i valori anomali. Allora, per ovviare a questa problematica
76
5 Anomaly Detection
grafica, di volta in volta è stata lanciata una query che permettesse di visualizzare
solo i valori esterni al lower bound e all’upper bound e, quindi, desse come risultato
grafico solo gli outlier, rappresentati con un pallino giallo. Quindi ciò che escludiamo
dalle visualizzazioni sono i valori considerati “normali”.
Iniziamo analizzando tutti gli indirizzi IP sorgente, considerando tutti i paesi
coinvolti. La Figura 6.6 mostra che ci sono 165 indirizzi IP che possono essere considerati outlier su 7.224.630 eventi in totale. In Figura 5.5 possiamo visualizzare
l’andamento di questi 165 valori anomali. Gli IP che hanno effettuato più accessi tra questi 165 sono mostrati in Figura 5.6. Il picco in Figura 5.5 corrisponde
all’indirizzo IP 10.117.2.6, che effettua 2.224.214 connessioni. Nella Figura 6.7, in
corrispondenza di ogni indirizzo IP, c’è il paese nel quale esso è stato localizzato.
Però in corrispondenza dell’IP 10.117.2.6 la casella “Country”è vuota e questo vuol
dire che tale IP fa parte della rete interna all’università.
Il secondo picco in Figura 5.5 corrisponde all’IP 37.220.14.234, localizzato nel
Regno Unito. Esso ha effettuato 1.699.804 accessi al firewall.
In Figura 5.8 possiamo vedere che soltanto 460.049 connessioni sono state rifiutate mentre 1.239.755 connessioni sono state accettate. Tutti i collegamenti sono
stati realizzati tramite il protocollo TCP, come mostra la Figura 5.9. Le prime 20
porte a cui si è collegato tale indirizzo sono mostrate in Figura 5.10: ai primi posti
troviamo la 83 e la 443. Questo potrebbe essere benissimo un Port Scanning.
Allo stesso modo possiamo analizzare l’IP 59.56.77.6 proveniente dalla Cina,
che effettua 632.724 connessioni su diverse porte, le prime 20 sono mostrate in
Figura 5.11 e anche in questo caso sembra essere un Port Scanning. La stessa cosa
potremmo fare per l’IP olandese 93.174.93.136, che effettua 567.657 connessioni, e
per tutti gli altri.
Figura 5.4. Numero di outlier relativi a tutti gli indirizzi IP sorgente e numero totale di
eventi
Figura 5.5. Grafico degli outlier relativi a tutti gli indirizzi IP sorgente
5.3 Outlier Detection
Figura 5.6. Indirizzi IP outlier
Figura 5.7. Tabella riassuntiva relativa a tutti gli indirizzi IP più anomali
Figura 5.8. Stato della connessione relativa all’indirizzo IP del Regno Unito
77
78
5 Anomaly Detection
Figura 5.9. Protocollo usato dall’IP del Regno Unito
Figura 5.10. Le prime 20 porte a cui si è connesso l’IP del Regno Unito
Figura 5.11. Le prime 20 porte a cui si è connesso l’IP della Cina
5.3 Outlier Detection
79
Consideriamo, adesso soltanto l’Italia e analizziamo gli indirizzi IP per scoprire
quali potrebbero essere quelli anomali. Come si può vedere nella Figura 6.3, in Italia
ci sono 167 indirizzi IP su 206.560 che possono essere considerati “anomali”.
L’indirizzo IP più anomalo, in quanto è quello che ha effettuato un maggior
numero di connessioni (316.679) al firewall, è 192.167.48.85, che è localizzato a
Reggio Calabria e si collega principalmente sulle porte 443 e 80.
Figura 5.12. Numero degli outlier relativi agli IP italiani e numero totale di eventi
Figura 5.13. Grafico degli outlier relativi agli indirizzi IP italiani
Nella Figura 5.14 viene mostrata una tabella riassuntiva con gli indirizzi IP più
anomali, ordinati in numero decrescente di connessioni.
A questo punto, escludiamo l’Italia per vedere come varia l’andamento degli
outlier se consideriamo solo paesi internazionali. Troviamo 412 outlier su 6.994.645
eventi in totale, come mostra la Figura 5.15. Nella Figura 5.16 vediamo che l’IP dal
quale sono state ricevute più connessioni (si parla di ben 1.699.804 collegamenti) è
37.220.14.234, ossia quello proveniente dal Regno Unito, analizzato precedentemente. Il picco che si vede in Figura 5.17 è relativo a tale IP. Gli altri tre valori anomali,
che in Figura 5.17 spiccano sugli altri, sono relativi ad un IP cinese (59.56.77.6) e a
due IP (93.174.93.136 e 80.82.65.120) olandesi. In Figura 5.18 possiamo visualizzare
gli IP considerati più anomali.
Soffermiamoci, ora, sulle porte di destinazione, per capire quali possono essere
considerate outlier. La Figura 5.19 mostra che ci sono 43 porte che hanno subito
un maggior numero di connessioni rispetto alle altre (65.533). In Figura 5.20 c’è un
outlier che spicca sugli altri. Tale outlier corrisponde alla porta 23. Gli indirizzi
IP che effettuano più connessioni alla porta 23 sono mostrati in Figura 5.21; anche
tra questi ci siamo calcolati i possibili outlier, per capire quali sono gli indirizzi
IP che effettuano un numero di connessioni eccessivo sulla porta 23. La Figura
5.22 mostra che su 2.285.521 indirizzi IP sorgente che si collegano alla porta 23, ci
sono 114 IP che possono essere considerati anomali. In Figura 5.23 possiamo vedere
80
5 Anomaly Detection
Figura 5.14. Tabella riassuntiva con gli indirizzi IP italiani più anomali
Figura 5.15. Numero degli outlier relativi ad IP non italiani e numero totale di eventi
Figura 5.16. Tabella riassuntiva con gli indirizzi IP più anomali non italiani
5.3 Outlier Detection
Figura 5.17. Grafico degli outlier relativi agli indirizzi IP anomali non italiani
Figura 5.18. Indirizzi IP non italiani più anomali
Figura 5.19. Numero di porte di destinazione outlier e numero totale di eventi
Figura 5.20. Grafico degli outlier relativi alle porte di destinazione
81
82
5 Anomaly Detection
immediatamente i valori anomali che spiccano sugli altri outlier. Il picco in figura
corrisponde all’IP 211.201.69.50, localizzato nella Repubblica Coreana; il secondo
picco corrisponde all’IP 46.172.91.20, localizzato in Ucraina. La maggior parte delle
connessioni sulla porta 23 effettuate da questi due IP sono state negate, come si può
vedere nelle Figure 5.24 e 5.25; entrambi gli IP hanno utilizzato, per la connessione,
soltanto il protocollo TCP.
Figura 5.21. Indirizzi IP che effettuano più connessioni alla porta 23
Figura 5.22. Numero degli outlier relativi agli indirizzi IP che si collegano alla porta 23
Figura 5.23. Grafico degli outlier relativi agli indirizzi IP che si collegano alla porta 23
5.3 Outlier Detection
83
Figura 5.24. Stato delle connessioni effettuate dalla Repubblica Coreana sulla porta 23
Figura 5.25. Stato delle connessioni effettuate dall’Ucraina sulla porta 23
84
5.3.2
5 Anomaly Detection
Analisi degli outlier relativi agli accessi al server web
Anche in questo caso, per la scelta della soglia è stato utilizzato il metodo MAD,
visto che i log di Ottobre non sono distributi secondo un andamento normale, come
si può ben vedere in Figura 5.26.
Anche per quanto riguarda gli access log, per prima cosa abbiamo analizzato i
valori anomali degli indirizzi IP che accedono al web server Apache.
Come mostra la Figura 5.27 ci sono 103 valori anomali su 127.437 in totale.
Nella Figura 5.28 sono mostrati tutti gli outlier; dalla figura si può notare che c’è
un outlier che spicca sugli altri. A questo punto, spinti dalla curiosità, siamo andati
a vedere di quale indirizzo IP si tratta e, soprattutto, la provenienza di tale indirizzo.
La Figura 5.29 mostra che si tratta dell’IP 78.47.225.238 che ha fatto 834.266
connessioni e proviene dalla Germania; esso corrisponde all’IP che, nel Capitolo 4,
avevamo supposto che facesse SQL Injection.
Il secondo valore anomalo, che effettua 129.649 connessioni, è un indirizzo IP
che proviene dall’Italia, in particolare dalla Provincia di Reggio Calabria, quindi si
può ben capire che, in questo caso, non si tratta di un possibile attacco al server
web. Suona molto strano il fatto che dalla Provinicia di Reggio Calabria siano state
effettuate 129.649 connessioni e dalla Germania, invece, arrivi un numero di connessioni pari a sette volte tanto. Ciò rafforza la nostra idea che l’IP 78.47.225.238 è
potenzialmente pericoloso. Analogamente a quanto effettuato in precedenza, escludiamo l’Italia e vediamo quali sono gli IP internazionali potenzialmente pericolosi.
L’outlier degli outlier è l’IP 78.47.225.238 proveniente dalla Germania, come si può
vedere in Figura 5.32. Il picco in Figura 5.31 è relativo a tale indirizzo. Gli altri
nove indirizzi IP anomali sono tutti statunitensi. Ovviamente l’IP della Germania
effettua molti più accessi rispetto a quelli statunitensi e ciò si può vedere anche
nella Figura 5.33, in cui metà del grafico a torta è occupato da quell’IP.
Figura 5.26. Andamento degli accessi al server web d’Ateneo
Figura 5.27. Numero di IP outlier e numero totale di eventi
5.3 Outlier Detection
85
Figura 5.28. Grafico degli outlier relativi agli indirizzi IP che accedono al web server
Apache
Figura 5.29. Tabella riassuntiva con gli indirizzi IP più anomali
Figura 5.30. Numero di IP outlier non italiani e numero totale di eventi
Figura 5.31. Grafico degli outlier relativi agli IP non italiani
86
5 Anomaly Detection
Figura 5.32. Tabella riassuntiva con gli indirizzi IP non italiani più anomali
Figura 5.33. Grafico con gli indirizzi IP degli outlier non italiani
5.3 Outlier Detection
87
Infine, sono stati analizzati i bot, perchè alcuni di essi potrebbero essere “bot
cattivi”. In Figura 5.34 vediamo che c’è un outlier su 137 e in Figura 5.35 vediamo,
appunto, un picco, che corrisponde a Bingbot, che è il bot che effettua più accessi,
come si può vedere nella fetta verde del grafico a torta in Figura 5.36.
Figura 5.34. Numero di bot outlier e numero totale di eventi
Figura 5.35. Grafico degli outlier relativi ai bot
Figura 5.36. Grafico con i bot outlier che accedono al server web d’Ateneo
6
Discussione
In questo capitolo, inizialmente, abbiamo valutato i punti di forza, di debolezza,
le opportunità e le minacce relative all’analisi dei log effettuata tramite Splunk.
Successivamente sono state descritte le Best Practice e le lessons learned. Infine, è
stato spiegato come può essere generalizzato tale approccio.
6.1 SWOT Analysis
La SWOT analysis è uno strumento operativo di pianificazione strategica delle attività, usato, spesso, per la valutazione di un sistema. Essa è un’analisi di supporto
alle scelte che risponde ad un’esigenza di razionalizzazione dei processi decisionali.
L’acronimo SWOT sta per Strenghts, Weaknesses, Opportunities e Threats che
significano, rispettivamente: punti di forza, punti di debolezza, opportunità e minacce. In particolare, questo strumento analizzerà in dettaglio tutti i punti di forza
(Strenghts), quelli di debolezza (Weaknesses), le opportunità (Opportunities) e le
minacce (Threats) di un dato progetto o di una particolare situazione.
In pratica, l’analisi SWOT è una matrice che serve per valutare cosa accade nel
contesto in cui si opera e serve per valutare quali possono essere i punti di forza e
di debolezza propri del contesto di analisi, al fine di far emergere e valutare quali
sono le opportunità offerte e le minacce che derivano dal contesto esterno cui sono
esposte le specifiche realtà.
La validità dell’analisi SWOT è legata in maniera diretta alla completezza delle
analisi “preliminari”. Il fenomeno oggetto della valutazione deve essere approfonditamente studiato per poter mettere in luce tutte le caratteristiche e le relazioni.
Per tale ragione non è necessario conoscere solo il tema specifico ma c’è bisogno di
avere quanto più possibile il quadro riguardante l’intero contesto completo.
L’analisi SWOT consente inoltre di distinguere tra fattori esogeni e fattori
endogeni:
•
•
i fattori endogeni sono tutte quelle variabili che fanno parte integrante del
sistema, sulle quali è possibile intervenire;
i fattori esogeni, invece, sono quelle variabili esterne al sistema che possono, però,
condizionarlo; su di esse non è possibile intervenire direttamente ma è necessario
90
6 Discussione
tenerle sotto controllo in modo da sfruttare gli eventi positivi e prevenire quelli
negativi.
I punti di forza e di debolezza sono da considerarsi fattori endogeni, sono propri
del contesto di analisi e sono modificabili. Le minacce e le opportunità, al contrario,
sono fattori esogeni e non sono modificabili, perchè derivano dal contesto esterno.
I vantaggi dell’analisi SWOT sono molteplici; ad esempio, l’analisi in profondità
del contesto orienta nella definizione delle strategie e consente di migliorare l’efficacia delle analisi. Ma altrettanti sono gli svantaggi, come, ad esempio, il rischio di
procedure soggettive nella selezione delle azioni.
Figura 6.1. Diagramma illustrativo di una matrice SWOT
Quindi, i vari punti per costruire la matrice SWOT sono i seguenti:
•
•
•
•
Punti di forza: i vantaggi della propria analisi. Bisogna tenere presente che, per
una buona analisi, si deve essere quanto più oggettivi possibile.
Punti di debolezza: migliorie che sarebbe possibile apportare al proprio contesto
di analisi e cose che dovrebbero essere evitate.
Opportunità: possono provenire dall’analisi di scenari alternativi di sviluppo.
Minacce: derivano dal contesto esterno cui sono esposte le specifiche realtà
analizzate.
6.2 SWOT Analysis dell’analisi dei log tramite Splunk
La SWOT analysis evidenzia i principali fattori, interni ed esterni al contesto di
analisi, in grado di influenzare il successo di uno studio effettuato. È estremamente
utile per la comprensione e il processo decisionale per tutti i tipi di situazioni nel
mondo degli affari e delle organizzazioni. Essa è perfetta per business planning e
strategic planning, per valutare la concorrenza, per il marketing e per realizzare
report di ricerca. L’analisi SWOT permette alle aziende di identificare i fattori
positivi e negativi che influenzano l’interno e l’esterno di un’organizzazione.
6.2 SWOT Analysis dell’analisi dei log tramite Splunk
6.2.1
91
Punti di Forza
Splunk è uno dei migliori strumenti per la gestione dei log. È un applicativo che
nasce per l’analisi di grandi quantità di dati. Permette di risolvere problemi di
sicurezza in modo veloce e ripetibile. Infatti, ci ha permesso di eseguire le indagini
sulle violazioni della sicurezza in pochi minuti, anzichè in ore o giorni.
Un punto di forza delle nostre analisi è stata, indubbiamente, la velocità di
esecuzione di Splunk, che ci ha consentito di indicizzare e analizzare grandi quantità
di log velocemente, di eseguire ricerche, correlazioni, indagini e analisi drill-down
evitando interruzioni dell’attività o compromissione dei servizi.
I log degli accessi al firewall analizzati avevano una dimensione pari a 55 GB e,
per effettuare una specifica analisi, bastava lanciare una query che durava poco meno
di un’ora. Ovviamente, sono state effettuate diverse analisi; quindi, per poter ottimizzare i tempi, è stato necessario effettuare più analisi in parallelo. L’app “Search
& Reporting”consente di eseguire una query e di lanciare il processo in background.
Questo ci ha consentito di affrontare diverse analisi contemporaneamente.
Nonostante sia stata usata la versione free di Splunk, siamo riusciti ad ottenere
dei risultati concreti, che mettono la pulce nell’orecchio e danno indicazioni a chi
di competenza. L’obiettivo di questo lavoro di tesi era quello di riuscire ad individuare eventuali attacchi informatici al server e al firewall d’Ateneo. Tramite questo
software siamo riusciti a:
•
•
•
•
•
•
•
trovare quali sono gli indirizzi IP che nel mese di ottobre hanno effettuato più
collegamenti al firewall e al server e conoscere la loro provenienza;
capire quale protocollo di connessione è stato utilizzato dagli indirizzi IP;
capire se tali connessioni sono state accettate o negate dal firewall;
conoscere quali sono state le risorse più richieste al server web, nonchè i sistemi
operativi e i dispositivi più utilizzati per accedere al server;
conoscere quali sono i relativi codici di stato di una richiesta al web server;
trovare gli errori scaturiti da una determinata richiesta al web server;
rilevare, tramite l’app “Machine Learning Toolkit”, le anomalie, ossia le attività
che si differenziano dal normale comportamento e capire quali possono essere
stati gli indirizzi IP che hanno effettuato tentativi di port scanning e, quindi, di
intrusione.
6.2.2
Punti di Debolezza
Per poter effettuare le nostre analisi, abbiamo scaricato gratuitamente Splunk Enterprise ottendendo una licenza Splunk Enterprise Free per 60 giorni, che permette
di indicizzare fino a 500 MB di dati al giorno. Questa, però, ha avuto delle limitazioni
sia funzionali sia in termini di supporto.
Invece, le licenze Splunk Enterprise e Splunk Cloud offrono funzionalità aggiuntive per supportare installazioni distribuite multiutente e includono la creazione di
allarmi, la sicurezza basata su ruoli, il single sign-on, la generazione di PDF pianificata, il clustering, le app Splunk Premium e il supporto di volumi di dati più
elevati.
92
6 Discussione
Quindi, sostanzialmente, il fatto di aver usato solo componenti gratuiti non ci
ha permesso di utilizzare tutte le funzionalità che Splunk mette a disposizione,
precludendo, dunque, la possibilità di effettuare analisi ancora più approfondite.
Per esempio, Splunk mette a disposizione l’app “Splunk Enterprise Security”che
è il centro nevralgico dell’ecosistema di sicurezza e che permette di rilevare rapidamente e rispondere agli attacchi, sia interni che esterni, semplificando la gestione delle minacce e minimizzando il rischio. Però, come si può vedere nella Figura
6.2, non è stato possibile installarla gratuitamente. Avremmo dovuto contattare un
esperto per metterci d’accordo sul costo, come mostra la Figura 6.3.
Figura 6.2. Interfaccia per la ricerca delle app di Splunk
Figura 6.3. App “Splunk Enterprise Security”
Uno dei punti di debolezza per le nostre analisi è, sicuramente stato il costo di
6.2 SWOT Analysis dell’analisi dei log tramite Splunk
93
alcune app e il fatto di aver usato la versione gratuita di Splunk.
Il prezzo del software Splunk Enterprise si basa sulla quantità di dati che vengono
inviati ogni giorno a Splunk. La Figura 6.4 mostra che il prezzo varia in base ai
dati che devono essere indicizzati quotidianamente. L’interesse del mercato verso
Figura 6.4. Costi di Splunk
Splunk è in costante, rapida, crescita anche in Italia; le caratteristiche di flessibilità
e scalabilità della soluzione rendono Splunk interessante tanto per le grandi aziende,
che hanno bisogno di indicizzare centinaia o migliaia di GB di dati macchina al
giorno, quanto per le piccole e medie aziende, che generano poche decine di MB.
Tuttavia, soprattutto per queste ultime, le ristrettezze di budget dovute alla
perdurante crisi economica del paese spesso precludono l’investimento richiesto per
la licenza base di Splunk, orientandole, quindi, verso l’utilizzo della versione “free”,
con le conseguenti limitazioni sia funzionali sia in termini di supporto.
6.2.3
Opportunità
Le opportunità potrebbero riguardare l’individuazione di attacchi informatici, che
sprecano tante risorse inutilmente. Se il server deve rispondere a delle richieste,
ovviamente, consumerà delle risorse, ad esempio, CPU, banda e RAM.
L’individuazione di tali attacchi e la loro eliminazione potrebbe liberare risorse
preziose che, poi, potrebbero essere usate per soddisfare altre richieste.
6.2.4
Minacce
Analizzare le minacce, che potrebbero contrapporsi a tale approccio di analisi, è
tutt’altro che banale.
Sicuramente, le minacce a questo tipo di metodo utilizzato potrebbero essere
rappresentate da tipologie di attacchi per le quali Splunk non è stato pensato e che,
quindi, non riesce ad individuare.
Ad esempio, l’attaccante potrebbe “proxarsi”su più paesi. Il termine “proxarsi”deriva da “proxy”, ovvero un programma che si frappone tra una comunicazione
94
6 Discussione
client/server; praticamente il client si connette al proxy che, a sua volta, si connette
al server; ovviamente il server conoscerà sempre e soltanto l’IP del proxy. Il proxy
offre la possibilità di rimanere anonimi durante la navigazione sul web. Navigare su
internet in modo anonimo significa nascondere il proprio indirizzo IP per non farsi
localizzare e non far sapere da dove ci si collega.
Un proxy può essere usato per diverse ragioni, quella più comune è, appunto,
l’anonimato. Navigare restando anonimi significa che l’IP di un attaccante è diverso
da quello vero durante ogni connessione,. Infatti, si potrebbe facilmente risalire
alla posizione dell’attaccante, e, dunque, ad altre informazioni su di lui, mediante
l’indirizzo IP, che identifica il suo dispositivo all’interno di una rete.
Il proxy serve, proprio, per evitare che ciò avvenga. Per capire al meglio il funzionamento di un proxy, dobbiamo immaginare una pallina che rimbalza all’infinito da
una parte all’altra; ovviamente, nel contesto informatico, ciò che rimbalza è l’indirizzo IP, che si muove da una parte all’altra del mondo e, per questo, risulta difficile
da rintracciare.
In rete troviamo tantissimi programmi che ci vengono indicati come ottimi proxy,
i quali trasformano magicamente gli indirizzi IP reali in falsi IP americani, cinesi o
francesi.
Tramite Splunk, non è possibile risolvere un problema di questo tipo.
6.3 Best Practice e Lessons Learned
L’obiettivo di questo lavoro di tesi è stato quello di riuscire ad analizzare decine di
GB di log in formato grezzo ed ottenere informazioni utili ai fini della sicurezza.
Le procedure o le azioni più significative, che hanno permesso di raggiungere tali
obiettivi, sono riassunte qui di seguito.
Innanzitutto, quando ci si trova davanti a dei log da analizzare, la prima cosa
da fare è, indubbiamente, studiare il loro formato e la loro struttura, in quanto
ciascuno dei campi di cui è composto il log, fornisce informazioni differenti.
Ogni log generato dal firewall Cisco ha un determinato codice identificativo. Il
suo formato e le informazioni contenute nei diversi log dipendono da tale codice. In
sostanza, per ogni codice, avremo un log che contiene diverse informazioni e, quindi,
un log con una diversa struttura.
Per tale motivo, è necessario subito capire quanti e quali codici identificativi
contengono i file da analizzare, studiarsi cosa indica ogni codice e decidere quali
eventi, relativi ad un determinato codice, analizzare.
Nel nostro caso, i log contenevano i codici 106100, 302103 e 302014. Quindi,
abbiamo eseguito tre diverse query, ciascuna delle quali cercava gli eventi relativi
solo ad uno di questi codici; alla fine, sono stati estratti tre file CSV, ciascuno
relativo ad un codice. A questo punto, abbiamo importato nuovamente in Splunk il
file CSV relativo al codice di nostro interesse.
Le analisi sono state effettuate sugli eventi relativi al codice 106100 (la struttura
del log relativa a tale codice è stata spiegata in dettaglio nel Capitolo 1).
Conoscere i campi di cui è composto il log è necessario per capire quali informazioni si possono estrarre e, quindi, per poter indirizzare le analisi su un aspetto
piuttosto che su un altro.
6.3 Best Practice e Lessons Learned
95
Infatti, in base alle analisi da compiere e ai risultati che si vogliono raggiungere,
si può utilizzare solo un sottoinsieme dei campi.
I log scritti dai vari sistemi contengono, usualmente, una grande mole di informazioni. Nel nostro caso, non c’è stata una richiesta specifica da parte di un
committente, come, ad esempio, soffermarsi, solo sulle connessioni provenienti da
un paese, e, quindi, le analisi sono state effettuate esaminando e correlando tra di
loro tutti i campi in linea generale.
Lo step immediatamente successivo all’interpretazione dei log, è stato il caricamento dei dati in Splunk. Durante questa fase sono stati riscontrati alcuni problemi,
perchè, inizialmente, i dati erano stati caricati da interfaccia web e, considerata la
loro dimensione, Splunk ci segnalava il seguente errore: “The minimum free disk space (5000 MB) reached for /opt/splunk/var/run/splunk/dispatch.”, come mostra la
Figura 6.5.
Figura 6.5. Errore riscontrato durante il caricamento dei log in Splunk web
Dopo aver consultato la documentazione di Splunk, siamo riusciti ad aggirare il
problema, caricando i dati, da terminale Linux, nella cartella batch.
Questo, però, non ci ha permesso di selezionare il sourcetype dei file caricati;
a causa di ciò Splunk, automaticamente, ha assegnato un sourcetype di default; in
particolare, agli error log ha associato il sourcetype “access combined”, tipico dei
log di accesso. Il sourcetype determina il modo con cui Splunk Enterprise formatta
i dati durante il processo di indicizzazione. In sostanza, esso determina la struttura
dei dati di un evento.
96
6 Discussione
Il fatto che Splunk abbia assegnato automaticamente il sourcetype ai file ha
avuto implicazioni negative sull’estrazione dei campi, in quanto i log, essendo stati
formattati con una struttura diversa, nel momento in cui si andava a selezionare un
campione per effettuare l’estrazione dei campi, quest’ultima coinvolgeva solo i log
che avevano lo stesso sourcetype del campione selezionato e, dunque, la rimanente
parte di log non veniva coinvolta.
Inoltre, a volte, Splunk non riusciva ad effettuare l’estrazione dei campi di tutti
i log caricati nel software e, dunque, se la query veniva effettuata su determinati
campi e questi erano stati estratti solo per una parte dei file, mentre l’altra parte
dei log non era stata coinvolta nell’estrazione, le analisi risultavano falsate. Per
rimediare a tale incoveniente, una volta che ci si è resi conto che c’era qualcosa
che non quadrava rispetto ad altre analisi, è stato necessario effettuare un’ulteriore
estrazione dei campi per i file esclusi dalla precedente estrazione. Ovviamente i
nuovi campi estratti sono stati chiamati con lo stesso nome dei campi estratti in
precedenza.
In ogni ricerca abbiamo utilizzato comandi diversi del linguaggio SPL, in base
a quello che si voleva ottenere. Quindi, è necessario dapprima studiare in linea
generale tutti i comandi che il linguaggio SPL mette a disposizione e, poi, si devono
scegliere quelli che permettono di ottenere gli obiettivi prefissati.
6.4 Generalizzabilità dell’approccio
In questo lavoro di tesi sono state effettuate le analisi dei log di accesso al firewall
Cisco (il cui logo è mostrato in Figura 6.6) dell’Università “Mediterranea”di Reggio
Calabria e dei log di accesso e di errore al server web Apache (il cui logo è mostrato
in Figura 6.7).
Figura 6.6. Logo Cisco
Ogni log generato dal firewall Cisco ha un determinato codice identificativo e
il formato e le informazioni contenute nei diversi log dipendono da tale codice. In
sostanza, per ogni diverso codice identificativo, avremo un log che contiene diverse
informazioni e, quindi, log con una diversa struttura.
In questa tesi ci siamo soffermati sull’analisi dei log del firewall che hanno il
codice identificativo 106100. I log con tale codice vengono generati ogni volta che
un pacchetto non corrisponde ad una connessione esistente e contiene determinate
informazioni.
6.4 Generalizzabilità dell’approccio
97
Figura 6.7. Logo di Apache
Però, i log generati dal firewall Cisco possono, anche, contenere eventi con altri codici identificativi. Ad esempio, nei nostri log c’erano anche i codici 302013 e
302014, che indicano, rispettivamente, che è stata creata e interrotta una connessione TCP tra due host.
Le analisi svolte in questo lavoro di tesi possono essere esattamente riprodotte
per i log generati da un firewall Cisco di un altro ente o di un’altra organizzazione
che hanno lo stesso codice identificativo (106100). Invece, se il codice identificativo
è diverso da 106100, il formato dei log cambia, quindi cambiano le informazioni
contenute in esso e la sua struttura, la quale dovrà essere studiata al fine di capire
quali campi estrarre per compiere determinate analisi; una volta effettuato atle
studio, tutto può essere eseguito utilizzando la stessa procedura.
La questione è diversa se, invece, il firewall di un altro ente o organizzazione non
è della Cisco. In tal caso, è necessario studiarsi il formato dei log generati da quel
determinato firewall e rifare lo studio di fattibilità.
Per quanto riguarda i log di errore e di accesso al server web vale la stessa
cosa, ossia se l’ente o l’organizzazione utilizza un web server Apache, allora si può
utilizzare l’approccio usato in questo lavoro di tesi. Altrimenti si deve rifare, anche in
questo caso, lo studio di fattibilità, in quanto il formato dei log, generati da un altro
server, potrebbe essere più o meno dettagliato rispetto al formato dei log generati
dal server Apache e, quindi, potrebbe contenere, ad esempio, campi aggiuntivi che
permetterebbero di trovare altre informazioni.
Ovviamente, se i log sono diversi rispetto a quelli analizzati da noi, è possibile
trovare app o add-on specifici per condurre le analisi su quella determinata tipologia
di log, oppure utilizzare comandi SPL diversi e visualizzazioni ad hoc per quei dati.
7
Conclusioni
In questo lavoro di tesi sono stati analizzati i log di accesso e di errore al server
web e i log di accesso al firewall dell’Università “Mediterranea”di Reggio Calabria
al fine di individuare eventuali attacchi informatici.
In una prima fase è stat condotta un’analisi descrittiva dei log, per l’estrazione
di conoscenza diagnostica; successivamente, è stata effettuata l’anomaly detection al
fine di rilevare le intrusioni, in quanto infrangere la sicurezza di un sistema comporta,
spesso, un uso anormale dello stesso e, quindi, eventuali attacchi informatici possono
essre rilevati cercando le attività che si differenzino dal normale comportamento.
Grazie alle attività condotte con la presente tesi siamo riusciti a:
•
•
•
•
•
•
•
trovare quali sono gli indirizzi IP che, nel mese di Ottobre 2016 hanno effettuato
più collegamenti al firewall e al server ed a consocere la loro provenienza;
capire quale protocollo è stato utilizzato dagli indirizzi IP per la connessione;
capire se queste connessioni sono state accettate o negate dal firewall;
conoscere quali sono state le risorse più richieste al server web nonchè i sistemi
operativi e i dispositivi più utilizzati per accedere ad esso;
conoscere quali sono i relativi codici di stato di una richiesta al web server;
trovare gli errori scaturiti da una determiata richiesta al web server;
rilevare, tramite l’app “Machine Learning Toolkit”, le anomalie, ossia le attività
che si differenziano dal normale comportamento e in modo tale da comprendere
quali possono essere stati gli indirizzi IP che hanno effettuato tentativi di port
scanning e, quindi, di intrusione.
Dalle analisi svolte è stata rilevata l’efficacia di Splunk nell’individuare possibili
minacce. In futuro, potrebbe essere effettuata l’analisi predittiva al fine di prevenire
e rispondere alle intrusioni e di identificare potenziali rischi. L’analisi predittiva,
poi, costituisce il punto di partenza per quella prescrittiva, che definisce indicazioni
concrete sulle azioni da intraprendere.
Riferimenti bibliografici
1. Intrusion detection e analisi dei log. http://openskill.info/topic.php?ID=160,
2003.
2. ABC della sicurezza: SIEM (Security Information and Event Management).
https://www.luigicristiani.it/abc-della-sicurezza-siem-securityinformation-and-event-management.html, 2017.
3. Apache. https://httpd.apache.org/, 2017.
4. Cisco. http://www.cisco.com/c/it_it/index.html, 2017.
5. Detect Numeric Outliers. http://docs.splunk.com/Documentation/MLApp/2.0.1/
User/DetectNumericOutliers, 2017.
6. Docker-Splunk.
https://github.com/splunk/docker-splunk/blob/master/
enterprise/README.md, 2017.
7. Get Docker for Ubuntu. https://docs.docker.com/engine/installation/linux/
ubuntu/, 2017.
8. Log Files. https://httpd.apache.org/docs/2.4/logs.html, 2017.
9. Scarica Splunk Enterprise.
https://www.splunk.com/it_it/download/splunkenterprise.html, 2017.
10. Splunk Architecture. http://www.splunk.com/view/SP-CAAABF9, 2017.
11. System Log Messages. http://www.cisco.com/en/US/docs/security/asa/asa80/
system/message/logmsgs.html#wp4769049, 2017.
12. Using the Machine Learning Toolkit. http://docs.splunk.com/Documentation/
MLApp/2.0.1/User/Usetheapp, 2017.
13. What is Docker? https://www.docker.com/what-docker, 2017.
14. What is Splunk? https://www.splunk.com/, 2017.
15. C.C. Aggarwal. Outlier Analysis. Hardcover, 2016.
16. A. Bahga and V. Madisetti. Big Data, Data Science Analytics: An Hands-On
Approach. 2015.
17. D.K. Bhattacharyya and J.K. Kalita. Network Anomaly Detection: A Machine
Learning Perspective. Hardcover, 2013.
18. J. Dean. Big Data, Data Mining, and Machine Learning. Garzanti, 2014.
19. J. Diakun, P.R Johnson, and D. Mock. Splunk Operational Intelligence Cookbook.
Packt Publishing, 2014.
20. T. Dunning and E. Friedman. Practical Machine Learning: A New Look at Anomaly
Detection. Paperback, 2014.
21. G. Giuseppini. Microsoft Log Parser Toolkit: A Complete Toolkit for Microsoft’s
Undocumented Log Analysis Tool. Paperback, 2005.
22. Icon Group International. The 2018-2023 World Outlook for Security Information and
Event Management (SIEM). Paperback, 2012.
102
Riferimenti bibliografici
23. D. Krygowski and G.B. Asquith. Basic Well Log Analysis. Paperback, 2004.
24. D.R. Miller, S. Harris, A. Harper, S. Vandyke, and C. Blask. Security Information
and Event Management (SIEM) Implementation (Network Pro Library). Paperback,
2010.
25. J. Nickoloff. Docker in Action. Paperback, 2016.
26. A. Peicevic and M. Maslac. Splunk introduction. Paperback, 2016.
27. A.E. Thomas. Security Operations Center - Analyst Guide: SIEM Technology, Use
Cases and Practices. Paperback, 2016.
28. J. Turnbull. The Docker Book: Containerization is the new virtualization. Kindle
Edition, 2014.
29. A.K.T. Yadav. Advanced Splunk. 2016.
Ringraziamenti
Ringrazio, di cuore, il Professor Domenico Ursino, mio relatore, per la disponibilità
mostrata durante la preparazione di questo lavoro, sempre presente a dirimere i miei
dubbi in qualsiasi momento.
Ringrazio i miei genitori, da sempre mio grande punto di riferimento, per avermi motivata a studiare sin da bambina, per il sostegno morale ed economico, per
non avermi mai fatto mancare nulla per raggiungere questo straordinario traguardo
e per l’appoggio che mi avete dato durante tutto il mio percorso di studi. Grazie per
avermi incoraggiata nei momenti di sconforto e per avermi dato la forza di superare
gli ostacoli e le difficoltà che si sono presentate durante questo cammino.
Grazie a te papà, perchè mi hai fatto capire quali sono le cose importanti della
vita, perchè mi hai insegnato a non perdere mai di vista l’obiettivo. Grazie perchè
mi hai insegnato ad essere forte, grazie per avermi insegnato a non arrendermi mai
difronte alle difficoltà che la vita ci pone e per avermi insegnato che esiste una soluzione per ogni problema.
Grazie a te mamma, perchè mi hai sempre capita in ogni circostanza, hai compreso i miei stati d’animo e mi hai trasmesso la tranquillità di cui avevo bisogno.
Grazie perchè mi sei stata vicina in ogni momento.
Ringrazio mia sorella Dalila, per essermi stata sempre accanto e aver vissuto con me
tutti i momenti della mia vita. Grazie perchè mi hai sempre ascoltata, hai saputo
darmi i giusti consigli e, soprattutto, perchè mi hai sopportata.
Ringrazio, immensamente, il mio ragazzo Paolo che, più di chiunque altro, mi è
stato vicino, concretamente, durante tutto il percorso universitario. Grazie perchè
sei stato il mio punto di riferimento in ogni momento, grazie perchè ho sempre potuto contare su di te, grazie perchè ci sei sempre stato in tutti i momenti, belli e
brutti. Grazie perchè hai sempre creduto in me e perchè mi hai sempre dato forza,
facendomi capire che tutto sarebbe andato a finire per il meglio. Grazie per avermi
ascoltato, per avermi supportato e sopportata, con molta pazienza, durante tutti i
periodi “no”di questo cammino. Grazie per essere stato sempre comprensivo, nono-
104
Ringraziamenti
stante tutto.
Ringrazio i miei nonni. Un grazie particolare va a mia nonna Cetta, nonna speciale, presente in tutti i momenti importanti della mia vita. Grazie per avermi fatto
sentire sempre la tua vicinanza, perchè non è mai mancata una telefonata dopo ogni
esame e perchè mi hai sempre dimostrato, come nessuno mai, di essere orgogliosa
di me.
Rigrazio tutti i colleghi che mi hanno accompagnato in questi ultimi due anni;
grazie per aver condiviso insieme preoccupazioni, difficoltà e, soprattutto, risate. In
particolare, ringrazio la mia collega e amica Cecilia, per avermi sempre compresa
e per essermi stata vicina nei momenti di difficoltà, dandomi forza con le parole
giuste. Grazie, soprattutto, perchè mi hai fatto capire cosa voglia dire la parola
“amicizia”. Ringrazio Caterina, con la quale abbiamo condiviso solo l’ultimo periodo della vita universitaria, ma, anche in poco tempo, ha dimostrato di essere una
splendida persona, gentile, disponibile, premurosa e pronta a tendere la mano in
qualunque momento.
Ringrazio, infine, tutti coloro che hanno sempre creduto in me; quelli che ci sono
sempre stati e che mi hanno resa una persona migliore.