SNMP è un protocollo utilizzato per la gestione dell'infrastruttura di rete.
Simple Network Managment Protocol (SNMP), permette il monitoraggio (statistiche sullo stato dei sistemi) ed il controllo (modifica delle impostazioni) di dispositivi di rete quali Server, Router, Switch, Hub ecc. Grazie ad SNMP è possibile sapere throughput, il carico, dati sulle interfacce di rete, e prestazioni di un sistema. E' generalmente utilizzato su reti TCP/IP ma può essere implementato anche su reti IPX o AppleTalk.
SNMP è passato attraverso alcune revisioni fino all'attuale versione 3:
- SNMPv1: descritto nelle RFC 1155-1157 rappresenta la prima versione, utilizza l'invio dei nomi di community (utilizzati come password) in chiaro;
- SNMPv2: descritto nelle RFC 1441-1452 in cui sono state aggiiunte nuove funzionalità tra cui la crittografia tramite MD5;
- SNMPv3: descritto nelle RFC 2571-2575 è lo standard finale, ma al momento raramente utilizzato;
SNMP FRAMEWORK
Sostanzialmente un framework SNMP è composto da una o più Stazioni di Gestione (Management Station) e dagli agenti SNMP (SNMP Agent) in funzione sui device di rete. Le Management Station interrogano gli agent i quali inviano le informazioni richieste sul device. Solitamente gli agent SNMP di un apparato di rete sono implementati nel firmware dello stesso, mentre per quanto riguarda i server, si tratta di servizi software. Gli oggetti gestiti dagli agent, sono raccolti, in ogni device, in un database chiamato MIB (Management Information Base) secondo la struttura definita nella SMI (Structure Management Information).
Esiste un caso particolare dove l'apparato di rete non viene interrogato, ma è esso stesso a generare il messaggio ed inviarlo alle Management Station. E' infatti possibile configurare gli agent in modo da inviare un particolare messaggio al verificarsi di determinati eventi ovvero impostare le cosidette trap. Grazie all'impostazione delle trap è possibile ad esempio sapere quando un'interfaccia di rete smette di funzionare, in quanto al verificarsi del guasto, l'agent SNMP che esegue il monitoraggio dell'apparato invia alla Management Station un messaggio che identifica il problema.
SNMP utilizza come protocollo di trasmissione UDP in modo da ottenere migliori performance e minore overhead della rete. In particolare viene utilizzata la porta UDP 161 per le interrogazioni e le risposte, e la porta UDP 162 come destinazione dei messaggi trap SNMP generate dagli agent SNMP.
SNMP COMMUNITY
L'insieme degli apparati di rete gestiti da SNMP appartengono ad una comunità (community). La comunità rappresenta un identificativo che permette di garantire la sicurezza delle interrogazioni SNMP. Un agent SNMP risponde solo alla richieste di informazioni effettuate da una Management Station appartenente alla stessa comunità.
I nomi di comunità sono formati da 32 caratteri e sono di tipo case sensitive.
Esistono tre tipi di comunità:
- monitor: permette di lavorare in sola lettura, quindi di effettuare solamente interrogazioni agli agent (il cui nome di comunità deve corrisponde a quello della management station che ne ha fatto la richiesta) ;
- control: permette tramite gli agent SNMP di effettuare delle operazioni in lettura/scrittura sul dispositivo, quindi di variarne delle impostazioni sempre previo controllo di sicurezza;
- trap: permette ad un agent di inviare un messaggio trap SNMP alla management station secondo la propria configurazione.
Spesso i nomi di community di default predefiniti sono public per le comunità di sola lettura e write o private per quelle in lettura/scrittura. Ovviamente è bene modifcare queste impostazioni di default per motivi di sicurezza.
MESSAGGI SNMP
SNMP utilizza sei tipi di messaggi di base per svolgere il proprio lavoro. Ogni messaggio è definito in PDU (Protocol Data Unit) separate, e precisamente:
- GetRequest: è utilizzata per interrogare un MIB su un agent SNMP;
- GetNextRequest: è utilizzata per leggere in modo sequenziale un MIB;
- GetBulk: permette di leggere un MIB con un unica richiesta anzichè utilizzare più messaggi GetNextRequest;
- SetRequest: modifica il valore all'interno di un MIB acceddibile in lettura/scrittura;
- GetResponse: identifica la risposta da parte di un agent SNMP ad un'interrogazione di una management station;
- Trap: permette all'agent di inviare un messaggio al verificarsi di un determinato evento;
Alcune trap sono predefinite:
- coldStart: generata quando l'agente SNMP si reinizializza e la configurazione è stata cambiata (Es. reboot del sistema);
- warmStart: generata quando l'agente SNMP si reinizializza ma senza cambiamenti nella configurazione;
- linkDown: generata quando il collegamento con l'agent non funziona correttamente;
- linkUp: generata quando il collegamento con l'agent viene ripristinato;
- authenticationFailure: generata da un'autenticazione con l'agent non andata a buon fine (Es. nome di comunità errato);
- egpNeighborLoss: generata da problemi di EGP (Exterior Gateway Protocol - utilizzato dai router);
- enterpriseSpecific: evento definito dal produttore del device;
STRUCTURE MANAGEMENT INFORMATION (SMI)
Structure Mangement Information definisce in modo standard come devono essere strutturate le informazioni e la loro gerarchia per essere inserite nel database MIB e quindi gestite da una manager SNMP.
La gerarchia degli oggetti, è ad albero:
[root]
[ccit(0)][iso(1)][joint-iso-ccitt(2)]
[org(3)]
[dod(6)]
[internet(1)]
[directory(1)][management(2)][experimental(3)][private(4)]
[mib(II)] [enterprise(1)]
[System(1)][Interfaces(2)][Address Translation(3)][Ip(4)][Icmp(5)][Tcp(6)][Udp(7)][Egp(8)][Snmp(9)]
Ogni oggetto della gerarchia viene identificato in modo univoco, attraverso il suo percorso nell'albero, la variable Hostname per esempio è identificata da iso.org.dod.internet.management.mib.system.sysdescr oppure 1.3.6.1.2.1.1.1.
Gli oggetti sono definiti tramite la sinstassi ASN.1 (Abstract Syntax Notation One), la quale permette di non avere ambiguità tra funzioni e proprietà dell'oggetto definito.
MANAGEMENT INFORMATION BASE (MIB)
La management Information Base, è una base di dati contenente tutte le informazioni gestite dall'agent SNMP che è in funzione sulla device monitorata. Gli oggetti all'interno di una MIB vengono definiti in base alle strutture SMI. Attualmente lo standard utilizzato è la MIB-II.
All'interno di ogni MIB gli oggetti sono suddivisi in categorie, in particolare:
- System: contiene informazioni di carattere generale sul device di rete;
- Interfaces: contiene le informazioni relative alle interfacce di rete;
- Address Translation: contiene informazioni relative alla conversioni degli indirizzi (Es. da logico a fisico), esiste per compatibilà con MIB-I;
- Ip: contiene informazioni relative al protocollo IP;
- Icmp: contiene informazioni relative al protocollo ICMP;
- Tcp: contiene informazioni relative al protocollo TCP. Gli oggetti di questo gruppo esistono solo per la durate della sessione TCP;
- Udp: contiene informazioni relative al protocollo UDP;
- Egp: contiene informazioni relative al protocollo EGP (protocollo utilizzato da un router per scambiare informazioni tra Autonomous System);
- Transmission: sperimentale, contiene informazione sui mezzi trasmissione utilizzato da ogni interfaccia di rete ;
- Snmp: contiene informazioni relative al protocollo SNMP.