Sai bene come funziona il protocollo SNMP?
Se la risposta è sì, allora ti consiglio di non perdere tempo con questa lettura, potresti non trovare materiale interessante per te. Se la risposta è no, o comunque vorresti saperne di più, allora ti consiglio vivamente di leggere quanto segue.
Partiamo da un presupposto: il protocollo SNMP è uno strumento indispensabile nella gestione delle reti.
Il problema è che ha anche delle “controindicazioni” e non gode di una fama straordinaria a causa delle vulnerabilità presenti nella prima versione.
Ma vediamo di cosa si tratta.
Che cos’è l’SNMP?
L’SNMP è un protocollo creato nel 1989 per consentire a diversi dispositivi all’interno di una rete di comunicare informazioni tra loro.
Questo tipo di protocollo funziona anche con dispositivi con hardware e software differenti, per cui può essere davvero utile in un ambiente di rete variegato.
Senza il protocollo SNMP non ci sarebbe alcun modo per identificare i device, monitorare le performance e tenere traccia dei cambiamenti all’interno del network in tempo reale.
SNMP ha una semplice architettura basata sul modello client-server: i server vengono chiamati manager e raccolgono e processano le informazioni sui device presenti nella rete, mentre i client sono chiamati agent e sono tutti i dispositivi o i componenti che possono comunicare con la rete. Questo include PC, switch, telefoni, stampanti, ecc.
Alcuni dispositivi presentano più componenti in grado di connettersi al network. I PC, ad esempio, hanno quasi sempre la possibilità di connettersi sia con un cavo di rete che con il Wi-Fi, all’interno di SNMP queste due modalità di collegamento contano come due elementi separati.
Come hai visto l’architettura del protocollo SNMP è molto semplice, ma la struttura con cui esso organizza i dati non lo è altrettanto.
La struttura di SNMP
Per garantire una certa flessibilità, l’SNMP non richiede ai device di rete di scambiare dati in una forma e un formato fissi. Invece utilizza a un modello “ad albero” all’interno del quale i dati sono sempre disponibili.
Questo modello è costituito da diverse tabelle (o rami, giusto per rimanere in tema) chiamate “Management Information Bases” o MIB. I MIB raggruppano diversi tipi di device o componenti e sono identificati da un numero e una stringa univoci. Numero identificativo e stringa sono intercambiabili e possono essere utilizzati indifferentemente (un po’ come indirizzi IP e hostname).
All’interno di questi MIB si trovano uno o più nodi, che rappresentano i dispositivi o i componenti connessi alla rete.
Per identificare i nodi viene utilizzato un Object Identifier (OID) univoco.
L’OID per un dato nodo è determinato dal numero o dalla stringa che identificano l’MIB di appartenenza combinato con un codice (numerico o stringa) che identifica il tipo di device.
Questo vuol dire che l’OID può essere sia un numero che una stringa.
Ti porto un paio di esempi di OID equivalenti:
- 1.3.6.1.4.868.2.4.1.2.1.1.1.3.3562.3.
- iso.org.dod.internet.private.transition.products.chassis.card.slotCps.
cpsSlotSummary.cpsModuleTable.cpsModuleEntry.cpsModuleModel.3562.3.
Utilizzando l’OID un manager può ricercare un agent e trovare le informazioni su qualsiasi device nella rete.
Ad esempio, per verificare se l’interfaccia di rete di un device è attiva, un manager prima esegue una query sull’interfaccia del MIB (chiamata IF-MIB), poi controlla il valore dell’OID che indica lo status dell’interfaccia.
Per rendere più chiaro il concetto provo a farti un esempio riportando questa struttura ad albero alla vita di tutti i giorni.
I puristi del protocollo potrebbero inorridirsi a leggere le prossime righe, ma la semplificazione che segue è fatta per farmi capire meglio.
Se volessimo rappresentare i dati personali di un individuo, potremmo dire che il suo MIB non è altro che la struttura stessa dei dati, ovvero:
Anagrafica (1)
- Nome (1)
- Cognome (2)
Residenza (2)
- Indirizzo (1)
- Via (2)
- Numero civico (3)
- Città(2)
- Provincia (3)
L’OID, invece, è una sequenza di numeri o una stringa che identifica un dato specifico all’interno di questa struttura.
Quindi per sapere il mio numero civico non devi fare altro che accedere al percorso 2.1.3, seguendo l’alberatura residenza.indirizzo.numero civico.
Perché utilizzare gli OID?
A un primo veloce sguardo la struttura basata su MIB e OID può creare un po’ di confusione. Ci sono però diversi vantaggi da considerare.
Uno di questi è che le informazioni possono essere prese dal manager senza inviare una richiesta specifica all’agent. Questo riduce il sovraccarico e assicura che le informazioni sullo stato della rete siano sempre disponibili e verificabili.
SNMP fornisce anche un modo semplice e flessibile per organizzare molti dispositivi all’interno di un network. Non importa quanto grande o piccola sia la rete o che tipo di dispositivi vi siano al suo interno, con il protocollo SNMP puoi raccogliere anche grandi quantità di informazioni rapidamente e senza intasare la rete con traffico eccessivo.
Inoltre è bene notare che alcuni valori di OID sono vendor-specifici, per cui è facile capire delle informazioni sui device semplicemente basandosi sul loro OID. Ad esempio, se un OID comincia con 1.3.6.1.4.1.9 vuol dire che è un device Cisco.
Versioni del protocollo SNMP
L’ultima importante cosa da sapere sul protocollo SNMP è che ci sono molte differenze tra le varie versioni, soprattutto per quanto riguarda la sicurezza.
La prima versione del protocollo, SNMPv1, presenta delle funzionalità di sicurezza molto deboli.
Utilizzando questa versione i manager possono autenticare gli agent senza alcuna cifratura delle informazioni. Questo vuol dire che chiunque abbia accesso al network potrebbe far partire un software di sniffing per intercettare le informazioni sul network.
In più un device non autorizzato può benissimo “fingere” di essere un manager e controllare le informazioni della rete.
Se ci metti anche che molti utenti di SNMPv1 utilizzano delle credenziali di accesso deboli o usano quelle di default, giungerai alla conclusione che per un malintenzionato fare breccia in questi sistemi è un gioco da ragazzi.
Nonostante SNMPv1 abbia la sua “importante” età viene purtroppo ancora ampiamente utilizzato in alcune realtà.
SNMPv2 è stato lanciato nel 1993 con degli “adeguamenti” dal punto di vista della sicurezza. Nonostante ciò è stato sostituito nel 1998 dalla versione più recente del protocollo, SNMPv3, che rimane la migliore e la più sicura per le aziende.
In SNMPv3 è presente la cifratura dei dati in transito. In più gli amministratori possono specificare diversi requisiti di autenticazione per manager e agent, impedendo così autenticazioni non autorizzate.
Ovviamente ti consiglio di utilizzare quest’ultima versione se hai necessità di controllare delle informazioni sulle reti dei clienti. E non temere: SNMP non è abilitato di default, quindi nessuno dei tuoi clienti sta utilizzando la pericolosa versione 1 del protocollo a meno che qualcuno non l’abbia abilitata di proposito.
Visto che ho portato la discussione un po’ sul tecnico, diciamo anche che SNMP utilizza per il trasporto l’UDP, sulle porte 161 e 162.
Il fatto di utilizzare UDP (invece di TCP) riduce il traffico dovuto al protocollo al minimo indispensabile, il che rende SNMP adatto a monitoraggi in tempo reale.
Gestire le informazioni ricavate dal protocollo SNMP
Utilizzando il protocollo SNMP, quindi, è possibile ottenere delle preziose informazioni sulle reti dei tuoi clienti. Puoi ad esempio sapere:
- stato della batteria residua degli USP;
- livello di inchiostro nelle stampanti;
- velocità e stato delle porte dei router/firewal
- …
Per ottenere tutte queste informazioni, però, è richiesto un minimo di esperienza nel maneggiare SNMP e un bel po’ di tempo.
In più, in questo periodo storico caratterizzato da network costituiti da device di vendor diversi, diventa ancora più difficile avere tutte le conoscenze necessarie per sfruttare appieno il potenziale di SNMP.