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