Upload
dangnhi
View
215
Download
0
Embed Size (px)
Citation preview
Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in Programmazione II
Studio e Sperimentazione del sistema di monitoraggio NAGIOS Anno Accademico 2015/2016 Candidato: Salvatore Sbirziola matr. N46001296
1
1. Monitoraggio di sistemi software con NAGIOS .................................. 2
1.1Cos’èilmonitoraggio..................................................................................................21.2Perchéèutilemonitorareunsistemasoftware................................................31.3Cos’èNagios...................................................................................................................41.4ArchitetturadiNAGIOS..............................................................................................6
2. Installazione e configurazione di Nagios ............................................... 7
2.1Introduzione..................................................................................................................72.2PackagesRichiesti.......................................................................................................82.2.1Creazionedell’Account......................................................................................................92.2.2DownloadNagios&Plugins.............................................................................................92.2.3CompileandInstallNagiosCore.................................................................................102.2.4ConfigurazionePersonalizzata....................................................................................112.2.5Configurazioneinterfacciaweb...................................................................................122.2.6Compile&InstallNagiosPlugins................................................................................132.2.7StartNagiosCore...............................................................................................................14
3. Caso di studio ........................................................................................ 15
3.1Introduzione................................................................................................................153.2StrutturaTestbed......................................................................................................163.3Prerequisiti..................................................................................................................173.4Installazionedell’agentesuWindows................................................................183.5ConfigurazioneLatoNagios....................................................................................193.5.1Definizionedell’host.........................................................................................................19
3.6Definizionedeiservizidamonitorare................................................................203.6.1ServizioCLIENTVERSION..............................................................................................203.6.2ServizioUPTIME................................................................................................................203.6.3ServizioCPULOAD.............................................................................................................213.6.4ServizioMEMUSE..............................................................................................................213.6.5ServizioUSEDDISKSPACE..............................................................................................223.6.6ServizioSERVICESTATE.................................................................................................22
3.7 Conclusioni .......................................................................................... 23
Bibliografia ................................................................................................ 25
2
1. Monitoraggio di sistemi software con NAGIOS
1.1 Cos’è il monitoraggio
Il processo di monitoraggio di un sistema software consiste nel controllare
tramite uno specifico applicativo adatto allo scopo, il corretto
funzionamento del sistema monitorato. Per corretto funzionamento
s’intende, il monitorare i vari aspetti rilevanti del sistema software in
questione e controllare che i risultati ottenuti dall’attività di monitoraggio,
combacino con i risultati sperati, relativamente al singolo servizio
monitorato. In caso affermativo, l’applicativo di monitoraggio, darà una
risposta positiva, viceversa l’applicativo indicherà il problema rilevato,
talvolta anche notificando l’amministratore del sistema con una notifica
mail. E’ concepibile accostare il problema del monitoraggio, a risorse di
natura diversa. In ambito informatico, nasce l’esigenza da parte delle
aziende che forniscono servizi ai clienti, di voler monitorare lo stato dei
servizi stessi, per questo motivo nasce l’esigenza di voler comporre un
sistema di monitoraggio, che si occupi di monitorare i servizi di rete come
SMTP, POP3, HTTP, NNTP, PING; così come le risorse di un host (carico
del processore, utilizzo del disco, utilizzo della memoria).
Diversi sono i software in commercio che ci permettono di compiere
quest’attività, spesso fornendo anche una semplice e intuitiva interfaccia
grafica.
3
1.2 Perché è utile monitorare un sistema software.
Guardando alla problematica del monitoraggio, da un punto di vista
aziendale, sono molteplici i vantaggi che un sistema di monitoraggio
fornisce ai fornitori di servizi in larga scala. Si pensi ad esempio al cyber-
attacco che ha messo fuori uso per diverse ore colossi come: Twitter,
Financial Times, Spotify, Reddit, Ebay e New York Times. I danni sia
economici sia d’immagine sarebbero cresciuti in maniera esponenziale, se
non si fosse provveduto in maniera imminente al ripristino del servizio.
Guardando invece la problematica, dal punto di vista della protezione
d’informazioni riservate, sono altresì molteplici i vantaggi che un sistema di
monitoraggio offre in questo senso. Si pensi al cyber-attacco condotto ai
danni del Dipartimento di Stato USA, che ha permesso al pirata informatico
di entrare nel sistema di posta elettronica del Dipartimento di Stato e di
mantenervi l’accesso per diversi mesi, portando così alla fuga di notizie
sensibili e riservate. I software per il monitoraggio ci vengono incontro per
preventivare questi spiacevoli inconvenienti, e porsi sulla difensiva per
contrastarli nel minor tempo possibile.
4
1.3 Cos’è Nagios
Nagios è un’applicazione open source per il monitoraggio di computer e
risorse di rete. La sua funzione base è quella di controllare nodi, reti e
servizi specificati, avvertendo quando questi non garantiscono il loro
servizio, o quando ritornano attivi. Nagios, inizialmente noto con il nome di
NetSaint, è stato scritto ed è attualmente mantenuto da Ethan Galstad.
In origine Nagios è stato sviluppato per Linux ma può funzionare
correttamente anche su altre varianti di Unix. E’ distribuito sotto la versione
2 della GNU General Public License.
N.A.G.I.O.S è un acronimo ricorsivo di “ Nagios Ain't Gonna Insist On
Sainthood ” È un riferimento al nome originale del software, NetSaint, che
fu cambiato per via di problemi di marchi.
Alcune delle funzionalità di Nagios sono:
• Monitoraggio di servizi di rete (SMPT, POP3, HTTP, NNTP, ICMP,
SNMP, FTP, SSH)
• Monitoraggio delle risorse di sistema (carico del processore, uso
dell’hard disk, log di sistema sulla maggior parte dei sistemi
operativi, anche per Microsoft Windows)
• Monitoraggio remoto supportato attraverso tunnel SSH o SSL
• Semplici plug-in che permettono agli utenti di sviluppare facilmente
nuovi controlli per i servizi in base alle proprie esigenze, usando:
bash, C++, Perl, Ruby, Python, PHP, C#, etc
• Controlli paralleli sui servizi
• Capacità di definire gerarchie di nodi di rete usando nodi “parent”,
permettendo la distinzione tra nodi che sono down e nodi non
raggiungibili
5
• Capacità di definire “event handler”, in altre parole azioni
automatiche che vengono attivate all’apparire o alla risoluzione di un
problema
• Rotazione automatica dei file di log
• Supporto per l’implementazione di monitoraggio ridondante
• Interfaccia web opzionale per la visualizzazione dell’attuale stato,
notifiche, storico dei problemi, file di log, etc.
6
1.4 Architettura di NAGIOS
Nagios ha un’architettura modulare basata sui plugin. Ogni plugin può
essere installato separatamente rispetto al core del programma, e consente
di monitorare determinate risorse. Al momento dell’installazione, verranno
installati dei plugin di base che consentono di monitorare i servizi
essenziali.
Figura1-ArchitetturaNAGIOS
7
2. Installazione e configurazione di Nagios
2.1 Introduzione
La versione di Nagios in esame è la Core 4.2.4 ed è possibile installarla in
diverse distribuzioni linux (Fedora, Ubuntu, openSUSE).
Nel nostro caso è stata scelta una distribuzione Ubuntu 16.10 a supporto.
A installazione ultimata, Nagios sarà in grado di monitorare l’host locale su
cui risiede, in particolare andremo a monitorare alcuni parametri principali
quali: il numero di utenti loggati, l’utilizzo dell’area di swap del sistema, il
numero di processi totali, ecc.
Dall’interfaccia web, è possibile accedere agli host monitorati e in
particolare controllare i servizi dell’host che ci interessa. Nel caso del
localhost avremo una situazione tipo quella mostrata nei Figura 2.
Figura 2 - stato servizi localhost
8
2.2 Packages Richiesti
Prima di procedere con l’installazione di Nagios sulla macchina ubuntu,
ci siamo assicurati della presenza dei seguenti packages sulla stessa
• Autoconf
• Apache 2
• PHP
• GCC compiler and development libraries
• GD development libraries
• Unzip
Per poterli installare, è bastato dare i seguenti comandi da terminale
sudo apt-get install autoconf gcc libc6 build-essential bc gawk dc gettext \ libmcrypt-dev libssl-dev make unzip apache2 apache2-utils php7.0 libgd2-xpm-dev
9
2.2.1 Creazione dell’ Account
Richiediamo il controllo al terminale come root user e creiamo un nuovo
account “nagios” al quale assegniamo una password. Infine creiamo un
nuovo gruppo “nagcmd” per consentire la comunicazione con l’interfaccia
web. Al gruppo sarà aggiunto sia l’utente nagios, che l’utente apache che
ospita l’interfaccia web
2.2.2 Download Nagios & Plugins
Creiamo una cartella, dove salveremo i packages da installare, e
scarichiamo Nagios Core versione 4.2.4 e i Plugins a esso associati Nagios
Plugins 2.1.4.
Operiamo da terminale, inserendo le seguenti stringhe:
sudo –s /usr/sbin/useradd –m –s /bin/bash nagios passwd nagios /usr/sbin/groupadd nagcmd /usr/sbin/usrmod –a –G nagcmd nagios /usr/sbin/usrmod –a –G nagcmd www-data
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.2.4.tar.gz wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-2.1.4.tar.gz
10
2.2.3 Compile and Install Nagios Core
Estraiamo il contenuto del file zip nagios-4.2.4.tar.gz e ci spostiamo nella
cartella estratta.
Eseguiamo lo script di configurazione di Nagios, passando il nome del
gruppo creato in precedenza, che punta alla directory di configurazione di
Apache.
Ora passiamo alla compilazione del sorgente di Nagios :
cd ~/downloads tar xzf nagios-4.2.4.tar.gz cd nagios-4.2.4
./configure –with-command-group=nagcmd –with-httpd-conf=/etc/apache2/sites-enabled
make all
11
Infine installiamo i file binari, gli script init, i file di configurazione di
esempio e impostiamo le autorizzazioni sulla directory comando esterno
A questo punto il sistema di monitoraggio è installato sulla macchina, ma
non è ancora pronto per l’uso, quindi non possiamo ancora avviarlo.
2.2.4 Configurazione Personalizzata
I file di configurazione di esempio sono stati installati nella directory
/usr/local/nagios/etc.
Il primo file che andiamo a modificare si trova nella directory
/usr/local/nagios/etc/objects ed è il file “contacts.cfg”.
Di questo file ci interessa modificare l’indirizzo email associato al
nagiosadmin, che andrà sostituito con l’indirizzo email al quale vogliamo
ricevere gli avvisi (alerts).
Poiché, come detto in precedenza, una delle funzionalità di Nagios è quella
di notificare gli eventi tramite email all’amministratore del sistema.
make install make install-init make install-config make install-commandmode update-rc.d nagios defaults
12
La seguente stringa ci permette di accedere e modificare il file, laddove ci
interessa, attraverso l’utilizzo del tool nano, fornito dalla nostra versione di
ubuntu.
Figura3-contacts.cfgmodificato
2.2.5 Configurazione interfaccia web
Passiamo ora alla configurazione dell’interfaccia web in apache, per un
utilizzo più intuitivo del sistema di monitoraggio.
Dopo aver configurato l’interfaccia web, aggiungiamo un account per
accedereallastessa.
sudo nano /usr/local/nagios/etc/objects/contacts.cfg
make install-weconf a2enmod rewrite a2enmod cgi
htpasswd –c /usr/local/nagios/etc//htpasswd.users nagiosadmin
13
A questo punto possiamo riavviare Apache, per rendere effettivi i
cambiamenti.
In Figura 4, è mostrata l’interfaccia web appena configurata, con la quale
avremmo a che fare. Accessibile dal browser all’indirizzo:
http://localhost/nagios/
Figura4-webinterface
2.2.6 Compile & Install Nagios Plugins
L’ultimo passo, prima di poter eseguire Nagios, è l’installazione dei
plugins, che ci serviranno per l’attività di monitoraggio. In particolare,
nell’attività di monitoraggio in esame ( monitoraggio di un sistema
windows ) utilizzeremo il plugin NSClient++ . In seguito vedremo a cosa ci
servirà e come lo andremo a configurare.
Estraiamo i plugins, in precedenza scaricati:
ufw allow Apache ufw reload
cd ~/dwnloads tar xzf nagios-plugins-2.1.4.tar.gz cd nagios-plugins-2.1.4
14
Licompiliamoeliinstalliamocomedescrittodiseguito.
2.2.7 Start Nagios Core
Ora siamo pronti per eseguire Nagios Core.
Eseguiamo un’altra verifica sulla configurazione e poi eseguiamo il
servizio.
Possiamo controllare lo stato del servizio Nagios sulla macchina, dando al
terminale il seguente comando:
./tools/setup
./configure make make install
/usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/nagios.cfg systemctl start nagios.service
systemctl status nagios.service
15
3. Caso di studio
3.1 Introduzione
Per attuare il monitoraggio di una macchina windows tramite Nagios,
abbiamo bisogno di un agente installato sulla macchina da monitorare che
funge da proxy tra il plugin Nagios, che effettua il monitoraggio, ed il
servizio effettivamente monitorato della macchina windows.
Senza l’installazione dell’agente sulla macchina windows, Nagios non
sarebbe in grado di monitorare la macchina.
Nel seguente esperimento, abbiamo utilizzato l’agente NSClient++ sulla
macchina windows, e il plugin check_nt già presente nell’installazione
dell’insieme di plugins in Nagios, per comunicare con l’agente NSClient++.
La comunicazione tra il server di monitoraggio e la macchina monitorata è
ben schematizzata nella Figura 5.
Figura5-schemasistemadimonitoraggio
16
3.2 Struttura Testbed
L’host windows da monitorare (la macchina fisica) , ospiterà una macchina
virtuale creata tramite l’utilizzo del tool VirtualBox, che ospiterà il sistema
di monitoraggio.
HostWindows
VirtualBox
LinuxVM
Nagios
17
3.3 Prerequisiti
La prima volta che si configura Nagios per monitorare una macchina
windows, bisogna modificare il file di configurazione di Nagios
“nagios.cfg”, rimuovendo il pound (#) dalla linea
“#cfg_file=/usr/local/nagios/etc/ objects/windows.cfg”.
In questo modo Nagios, può utilizzare il file “windows.cfg” per trovare
informazioni relative alla macchina windows da monitorare, quali
l’indirizzo IP dell’host da monitorare e i vari servizi definiti, che si
vogliono monitorare.
Figura6-filediconfigurazionemodificato
sudo nano /usr/local/nagios/etc/nagios.cfg
18
3.4 Installazione dell’agente su Windows
L’agente NSClient++ ci consente di monitorare la macchina windows ,
interponendosi tra il server Nagios , il plugin check_nt con il quale
comunica e la macchina windows. L’agente dovrà essere sempre attivo in
background sulla macchina da monitorare per poter garantire il corretto
monitoraggio da parte di Nagios.
Al momento dell’installazione di NSClient++, si presenterà una schermata
come quella in Figura 7, grazie alla quale, possiamo scegliere quale server
Nagios può comunicare con esso, o in alternativa lasciare la riga “Allowed
hosts” bianca, per permettere a tutti di comunicare con esso ; e inoltre
possiamo abilitare i moduli che ci occorrono affinchè la comunicazione
funzioni correttamente.
Figura7-NSClient++installazione
19
3.5 Configurazione Lato Nagios
3.5.1 Definizione dell’host
Ora possiamo configurare il file “windows.cfg” presente sul server Nagios,
in modo tale da poter monitorare la macchina windows che ci interessa.
Per prima cosa aggiungiamo un nuovo host, al quale assegniamo l’indirizzo
IP della nostra macchina windows (nel nostro caso 192.168.1.107), come
mostrato in Figura 8.
Figura 8 - definizione dell'host
Poi passiamo alla definizione dei servizi che intendiamo monitorare,
definendoli sempre nel file “windows.cfg”, come mostrato di seguito.
20
3.6 Definizione dei servizi da monitorare
3.6.1 Servizio CLIENTVERSION
Il servizio CLIENTVERSION ci informa sulla versione dell’agente
NSClient++ Installato sulla macchina windows. Viene definito come
mostrato in Figura 9.
Figura9-CLIENTVERSION
3.6.2 Servizio UPTIME
Il servizio UPTIME ci informa sul tempo in cui la macchina windows viene
monitorata in modo corretto. Viene definito come mostrato in Figura 10.
Figura10-UPTIME
21
3.6.3 Servizio CPULOAD
Il servizio CPULOAD ci informa sull’utilizzo della CPU sulla macchina
windows e genera un avviso critico (CRITICAL) se il carico della CPU
negli ultimi 5 minuti è più del 90 % oppure genera un allarme di
avvertimento (WARNING) se il carico della CPU negli ultimi 5 minuti è
dell’80% o superiore. Viene definito come mostrato in Figura 11. Con il
flag –l definiamo i seguenti parametri <minutes range> , <warning
threshold> , <critical threshold>.
Figura11-CPULOAD
3.6.4 Servizio MEMUSE
Il servizio MEMUSE ci informa sull’utilizzo della memoria sulla macchina
windows e genera un avviso critico (CRITICAL) se l’uso della memoria è
del 90% o superiore oppure genera un allarme di avvertimento
(WARNING) se l’uso della memoria è del 80 % o superiore. Viene definito
come mostrato in Figura 12. Con il falg –w definiamo i seguenti parametri
<warning threshold>, mentre con il flag –c definiamo i seguenti parametri
<critical threshold>.
Figura12-MEMUSE
22
3.6.5 Servizio USEDDISKSPACE
Il servizio USEDDISKSPACE ci informa sull’utilizzo dello spazio sul
disco della macchina windows e genera un avviso critico (CRITICAL) se
l’uso è del 90% o superiore oppure genera un allarme di avvertimento
(WARNING) se l’uso è del 80 % o superiore. Viene definito come mostrato
in Figura 13. Con il flag –w definiamo i seguenti parametri <warning
threshold> , mentre con il flag –c definiamo i seguenti parametri <critical
threshold>.
Figura13-USEDDISKSPACE
3.6.6 Servizio SERVICESTATE
Il servizio SERVICESTATE ci informa sullo stato di un servizio che gira
sulla macchina windows. Viene definito come mostrato in Figura 14. Con il
flag –d
SHOWALL visualizziamo il servizio specificato di seguito e il suo stato
attuale sulla macchina.
Figura14-SERVICESTATE
23
3.7 Conclusioni
Dopo aver configurato l’host e i servizi che desideriamo monitorare,
possiamo accedere alla web-interface per controllare l’attività di
monitoraggio avviata per controllare lo stato dell’host e le informazioni a
esso relative o per controllare lo stato dei servizi monitorati e le
informazioni a essi relative.
Nelle figure (15 -16) possiamo vedere la mappa degli host monitorati da
Nagios e lo stato della macchina windows.
Figura15-mappahost
Figura16-statowinserver
24
Nella Figura 17, possiamo notare lo stato dei servizi monitorati sulla
macchina windows, in un momento in cui ogni servizio o risorsa non
presenta criticità.
Figura17-statoservizimonitorati
Nella Figura 18, possiamo notare che lo stato della CPU, è passato da OK a
CRITICAL, in seguito all’esecuzione di un’applicazione CPU intensive,
sulla macchina host. Nello specifico abbiamo messo sotto stress la
macchina host, avviando un’applicazione che genera dei threads selfish, in
altre parole dei threads che monopolizzano l’uso della CPU, facendo salire
la percentuale di utilizzo della stessa oltre la soglia ritenuta nella norma e
portando così la risorsa monitorata in uno stato critico.
Figura18-statodeiservizimonitorati
25
Bibliografia Ubuntu Quickstart. (s.d.). Tratto da https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/quickstart-ubuntu.html Architettura di NAGIOS. (s.d.). Tratto da http://www.hostingtalk.it/nagios-per-il-monitoring-del-server_-c000000Bk/ Cyber, ecco i dieci attacchi più invasivi nel 2015. Rapporto Clusit. (2016, Marzo 20). Tratto da http://formiche.net/2016/03/20/rapporto-clusit-cyber-10-attacchi-2015/ Cyber-Attacco all'America: quegli hacker senza volto che hanno messo fuori uso i principali siti - See more at: http://www.rainews.it/dl/rainews/articoli/Cyber-attacco-all-america-hacker-mettono-fuori-uso-siti-internet-Usa-ansia-elezioni-usa-2016-f4c8014a-435a-4700-ad87-b1e73abd8c23.html. (2016, Ottobre 22). Tratto da http://www.rainews.it/dl/rainews/articoli/Cyber-attacco-all-america-hacker-mettono-fuori-uso-siti-internet-Usa-ansia-elezioni-usa-2016-f4c8014a-435a-4700-ad87-b1e73abd8c23.html Cos'è Nagios. (2016, Dicembre 22). Tratto da https://it.wikipedia.org/wiki/Nagios Nagios XI – Installing The Windows Agent: NSClient++. (s.d.). Tratto da https://assets.nagios.com/downloads/nagiosxi/docs/Installing-The-Windows-Agent-NSClient++-for-Nagios-XI.pdf Monitoring Windows Machines. (s.d.). Tratto da https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/monitoring-windows.html The check_nt Plugin. (s.d.). Tratto da https://www.monitoring-plugins.org/doc/man/check_nt.html