Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Network Monitoring
Utilizzare Cacti ed SNMP per il monitoraggio della rete
Gianluca Renzi
IT Integration and Security
www.systemeng.it
Linux Day
Università di Cassino - 27 Ottobre 2012
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Sommario
SNMP
Descrizione
Architettura
MIB
Versioni
NET-SNMP
RRDtool
Esempi
Cacti
Descrizione
Installazione
Poller
Funzioni rilevanti
Template
Plugin
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Architettura
MIB
Versioni
NET-SNMP
Il protocollo SNMP
SNMP è un protocollo applicativo (livello 7 ISO-OSI) utilizzato per
gestire e monitorare sistemi [remoti] connessi alla rete. SNMP utilizza il
protocollo di trasporto UDP e la porta 161. L’architettura è quella
client-server dove il ruolo di server è ricoperto dagli agent in esecuzione
sui dispositivi monitorati. Un agent SNMP è tipicamente un processo che
agisce da tramite tra la management station e i sub-agent responsabili
dei diversi sottosistemi.
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Figure: Architettura SNMP
Gianluca Renzi
Descrizione
Architettura
MIB
Versioni
NET-SNMP
La management
station agisce da client
snmp e come tale effettua delle
richieste ai dispositivi monitorati,
sui quali è in esecuzione
un (master) agent snmp
in ascolto sulla porta 161 UDP.
Gli agent rispondono alle richieste
della management station,
eventualmente interrogando
dei sub-agent. SNMP astrae
dalla natura e dalle particolarità
del sistema gestito, lasciando agli
agent la logica implementativa.
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Architettura
MIB
Versioni
NET-SNMP
MIB e OID
MIB sta per Management Information Base; si tratta di una sorta di
database gerarchico i cui elementi vengono acceduti mediante Object
Identifier (OID). SNMP memorizza i suoi dati nelle MIB, che
rappresentano lo stato del sistema o una sua porzione. Ad esempio c’è un
oggetto che contiene la descrizione del sistema, uno che contiene il
numero di byte che sono transitati su una data interfaccia di rete, uno
che indica quanti utenti solo attualmente loggati, uno che indica l’uptime
del sistema, e cosı̀ via.
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Architettura
MIB
Versioni
NET-SNMP
Esempio
OID 1.3.6.1.2.1.1.1.0
(iso.org.dod.internet.mgmt.mib-2.system.sysDescr.0) - contiene la
descrizione del sistema gestito.
Figure: System Description OID
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Architettura
MIB
Versioni
NET-SNMP
Versioni e differenze
La prima versione di SNMP (v1) viene definita alla fine degli anni ’80. Lo
scopo è di mantenere un’architettura semplice da gestire e implementare.
Molti dispositivi supportano questa prima versione del protocollo.
Version 1 PDUs
I
GetRequest
I
GetNextRequest
I
GetResponse
I
SetRequest
I
Trap
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Architettura
MIB
Versioni
NET-SNMP
Versione 1
La versione 1 del protocollo non supporta la cifratura dei dati;
l’autenticazione è debole e basata unicamente su una community string
(default public) che transita in chiaro sulla rete. Un parziale rimedio a
questa debolezza è dato dall’uso di access list.
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Architettura
MIB
Versioni
NET-SNMP
Versione 2(c)
La seconda versione (v2c - 1993 circa) aggiunge due PDU a quelle
previste dalla prima versione, ovvero:
I
GetBulkRequest
I
InformRequest
Questa versione non introduce miglioramenti dal lato della sicurezza.
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Architettura
MIB
Versioni
NET-SNMP
Versione 3
La terza versione del protocollo (v3 - 2002 circa) introduce finalmente
cifratura e autenticazione robuste, aumentando la sicurezza del
protocollo.
I
USM: User-based Security Model
I
VACM: View-based Access Control Model
Con le view è possibile definire dei sottoinsiemi di MIB cui diversi
utenti/gruppi hanno accesso in maniera differente (read-write o
read-only).
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Architettura
MIB
Versioni
NET-SNMP
NET-SNMP
NET-SNMP è un’implementazione open-source di SNMP che gira sulla
maggior parte dei sistemi Unix; è rilasciata con una licenza BSD-like,
quindi è possibile utilizzarla liberamente anche in prodotti commerciali
senza alcun vincolo. NET-SNMP implementa tutte e tre le versioni del
protocollo. Oltre al daemon snmpd, il pacchetto net-snmp fornisce anche
gli strumenti da riga di comando per interrogare i dispositivi. Tra queste
utilità ci sono, ad esempio:
I
snmpget
I
snmpset
I
snmpwalk
NET-SNMP: www.net-snmp.org
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Esempi
Round Robin Database tool
RRD: Round Robin Database – aka ”database circolari”.
Un database circolare è una struttura dati a dimensione prefissata in
cui i dati vengono archiviati in modalità FIFO.
RRDTool è un software per gestire e graficare dati immagazzinati nei
RRD.
Tipicamente un RRD è un file contenente uno o più Round Robin
Archive. Tali archivi contengono i dati relativi a determinati intervalli di
tempo.
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Esempi
Esempio: creare un database con quattro archivi
rrdtool create esempio.rrd --step 300 \
DS:packets:GAUGE:600:U:U \
RRA:AVERAGE:0.5:1:288 \
RRA:AVERAGE:0.5:6:336 \
RRA:AVERAGE:0.5:12:744 \
RRA:AVERAGE:0.5:288:365
Questo comando crea un RRD per collezionare dati di tipo GAUGE che si
presume vengano aggiornati ogni 5 minuti (step 300 secondi); per questi
dati si creano quattro archivi: giornaliero con 288 valori
(288*5min=24h), settimanale con 336 valori rappresentanti la media di
mezzora, mensile (31 giorni) con 774 valori che rappresentano la media
oraria, annuale con 365 valori che rappresentano la media giornaliera.
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Esempi
Esempio: update e graph
Sono altre funzioni di RRDtool:
I
update: aggiorna il database con un nuovo valore per il dato
monitorato
I
graph: crea un grafico utilizzando i dati memorizzati negli archivi
RRA
rrdtool update esempio.rrd time:value
rrdtool graph immagine.png --start time-start --end time-end \
DEF:inpackets=esempio.rrd:packets:AVERAGE \
LINE2:my packets
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Esempi
MRTG
Utilizzando NET-SNMP e RRDtool è possibile realizzare degli script
(bash, python, perl, php, ecc.) per costruire un rudimentale sistema di
monitoraggio dei dispositivi di rete.
Un sistema del genere esiste già: MRTG (http://oss.oetiker.ch/mrtg/).
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Installazione
Poller
Funzioni rilevanti
Template
Plugin
Cacti - introduzione
Cacti è un’applicazione web scritta in PHP con la quale è possibile
monitorare lo stato della rete, ovvero dei dispositivi connessi ad essa. Il
monitoraggio non si limita soltanto alla LAN. Cacti utilizza SNMP per
recuperare informazioni dai dispositivi monitorati e RRDtool per
generare i grafici relativi alle grandezze monitorate.
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Installazione
Poller
Funzioni rilevanti
Template
Plugin
Cacti - installazione
Cacti si installa in ambiente AMP (Apache, MySQL, PHP) e necessita di
alcuni pacchetti supplementari:
I
net-snmp
I
rrdtool
I
php-gd
L’installazione è analoga a qualsiasi altra applicazione web; bisogna
creare un DB ed importare lo schema usando lo script SQL fornito col
pacchetto, quindi si devono configurare le credenziali di accesso al
database, l’URL in cui è stato installato Cacti e il nome del cookie.
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Installazione
Poller
Funzioni rilevanti
Template
Plugin
Configurazione: include/config.php
$database type = ”mysql”;
$database default = ”cacti”;
$database hostname = ”localhost”;
$database username = ”cactiuser”;
$database password = ”cactiuser”;
$database port = ”3306”;
$database ssl = false;
$url path = ”/cacti/”;
$cacti session name = ”Cacti”;
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Installazione
Poller
Funzioni rilevanti
Template
Plugin
Configurare il poller: PHP Vs. Spine
Affinché Cacti possa ottenere i dati da monitorare, ha bisogno di un
”poller”, ovvero di un processo che periodicamente esegua le
interrogazioni SNMP (snmpget [...]) ai dispositivi monitorati. Ci sono
due alternative: il poller PHP e Spine, un poller scritto in linguaggio C.
I
cmd.php: qualche decina di dispositivi
I
Spine: migliaia di dispositivi
SYSTEM STATS: Time:4.6262
Hosts:7 HostsPerProcess:7
SYSTEM STATS: Time:0.5251
Hosts:7 HostsPerProcess:7
Method:cmd.php Processes:1 Threads:N/A
DataSources:41 RRDsProcessed:30
Method:spine Processes:1 Threads:1
DataSources:41 RRDsProcessed:30
Spine è circa 10 volte più veloce di cmd.php.
Spine segue lo stesso version number di Cacti: Cacti 0.8.8a – Spine 0.8.8a
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Installazione
Poller
Funzioni rilevanti
Template
Plugin
Poller: cronjob
Creare un cronjob per eseguire il poller ogni 5 minuti (300 secondi).
*/5 * * * * cactiuser php
/home/user/public html/cacti/poller.php > /dev/null 2>&1
cactiuser deve essere un utente del sistema con il permesso di
lettura/scrittura nelle directory rra e log dell’installazione di Cacti.
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Installazione
Poller
Funzioni rilevanti
Template
Plugin
Funzioni principali di Cacti
Le funzioni più interessanti di Cacti, che lo distinguono da tool più
spartani come MRTG, sono:
I
Gestione utenti e permessi: Cacti è un’applicazione multi utente.
I
Suddivisione dei grafici in alberi e sotto-alberi
I
View: utenti diversi hanno accesso a grafici/alberi particolari
I
Script: oltre al protocollo SNMP, Cacti può recuperare informazioni
da un dispositivo anche mediante l’esecuzione di script (tipicamente
Perl).
I
Template: grafici, sorgenti di dati, host.
I
Plugin: Cacti è estendibile mediante plugin.
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Installazione
Poller
Funzioni rilevanti
Template
Plugin
Cacti ha un sistema di template che permette di definire dei prototipi
per:
I
sorgenti di dati
I
grafici
host
I
Quando si associa un nuovo dispositivo ad un host template, il
dispositivo eredita automaticamente i template di grafici e sorgenti di
dati associati al tipo di host, velocizzando il setup del nuovo dispositivo
ed uniformando la gestione di host dello stesso tipo.
Limite: se si modifica un host template, gli host preesistenti non
ereditano le modifiche e vanno quindi modificati a mano, uno ad uno.
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Descrizione
Installazione
Poller
Funzioni rilevanti
Template
Plugin
Estendere Cacti con i plugin
Dalla versione corrente (0.8.8a), Cacti include la plugin architecture
direttamente nel core; in precedenza era necessario aggiungere
manualmente un estensione che permettesse l’installazione dei plugin.
Plugin interessanti:
I
settings: http://docs.cacti.net/plugin:settings – Mail + DNS lookup
I
thold (dipende da settings): http://docs.cacti.net/plugin:thold –
avvisi e notifiche su host down o superamento di soglie
autom8: http://docs.cacti.net/plugin:autom8 – automazione di
alcuni processi amministrativi
I
Installazione: si decomprime l’archivio contenente il plugin nella directory
plugins/ e poi si installa e attiva dall’interfaccia di Cacti: Configuration
--> Plugin Management
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Chi usa Cacti?
Cacti è un’applicazione open source (GPLv2) sviluppata da poche
persone e con contributi, in termini economici e di codice, da parte di
utenti comuni e aziende. Ciò nonostante, è usato anche per il
monitoraggio di reti di grandi dimensioni (ad esempio da ISP) per via
della sua notevole adattabilità.
Essendo un’applicazione web, se installata su un server pubblico, è
soggetta a tutte le minacce presenti in rete; pertanto l’installazione tipica
avviene su management station all’interno di LAN private. Non solo:
poiché ancora molta parte dei dispositivi di rete in uso (anche in
ambiente enterprise) supporta solo le versioni 1 e 2 del protocollo SNMP,
tipicamente tutto il traffico di monitoraggio passa attraverso una VPN
che collega tali dispositivi (quando questi non appartengono alla rete
locale).
Gianluca Renzi
Network Monitoring
Sommario
SNMP
RRDtool
Cacti
Ambienti di utilizzo e considerazioni sulla sicurezza
Riferimenti
Riferimenti
I
www.cacti.net
– software, documentazione, forum, template
I
http://docs.cacti.net/plugins – plugin
I
http://docs.cacti.net/scripts – scripts
I
www.net-snmp.org – software e tutorial su SNMP
I
RRDtool: oss.oetiker.ch/rrdtool/ – software e tutorial
I
Best Cacti Templates for Application – template Cacti per applicazioni
(Apache, MySQL, Bind, FreeRADIUS, ecc.)
Gianluca Renzi
Network Monitoring