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)
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.