SNMP (Simple Network Management Protocol): il protocollo per la gestione della rete
Ad una singola rete vengono collegati dispositivi di diverso tipo, come computer, server, switch o router, stampanti e simili. Quanto più alto è il numero dei dispositivi collegati tanto più complicata sarà la gestione da parte dell’amministratore. L’utilizzo di tool di gestione diventa quindi d’obbligo se si vuole garantire la funzionalità e la sicurezza a lungo termine dell’intero sistema. Un protocollo che sfrutta queste soluzioni software è il Simple Network Management Protocol (SNMP), uno dei protocolli standard più importanti, supportato oggigiorno da tutti i dispositivi.
Che cos’è l’SNMP?
Dopo circa due anni di sviluppo, nel maggio del 1990 è uscita la prima versione ufficiale del Simple Network Management Protocol, abbreviato SNMP, nel RFC 1157. Il protocollo di rete, parte della famiglia dei protocolli Internet e disponibile anche nelle versioni SNMPv2 e SNMPv3, è frutto del lavoro del gruppo IETF (Internet Engineering Task Force). La funzione principale del protocollo SNMP è quella di rendere possibile una supervisione e una gestione centralizzata di tutti i componenti di una rete. A tal fine esso descrive l’architettura dei pacchetti di comunicazione necessari, come anche il processo di comunicazione tra la stazione centrale e i singoli dispositivi.
Spieghiamo l’SNMP: come funziona il Simple Network Management Protocol
La gestione della rete tramite SNMP si basa su un modello manager-agent. Dalla management station centrale l’amministratore osserva e coordina i diversi utenti di rete. A tal fine viene installato un management software che rende possibile la richiesta di dati da parte dell’SNMP e l’avvio di determinate azioni. Gli agent sono le applicazioni corrispondenti che rappresentano la controparte dei singoli componenti di rete: raccolgono i dati rilevanti su un host di destinazione e li inviano alla management station, ma possono anche effettuare delle impostazioni e avviare determinate azioni. Simili applicazioni agent sono già implementate nella maggior parte dei comuni sistemi Windows e Linux, ad esempio in forma di snmpd Daemon (solo Linux).
Per la comunicazione tra manager e agent il protocollo SNMP prevede sette possibili tipologie di messaggio:
- GET-request: le GET-request sono messaggi standard utilizzati per richiamare una determinata serie di dati sul dispositivo di rete desiderato.
- GETNEXT-request: questo formato di messaggio è necessario quando sono richieste serie di dati susseguenti, ad esempio tabelle.
- GETBULK-request: l’applicazione manager può inviare una GETBULK-request (da SNMPv2) per richiedere un numero definito di serie di dati con un’unica request. Tale richiesta è paragonabile a diverse GETNEXT-request successive.
- SET-request: le SET-request permettono al manager di modificare una o diverse serie di dati del dispositivo di rete desiderato o di avviare determinate azioni. Uno tipo di scenario in cui sono necessari degli adattamenti è la configurazione di un indirizzo IP, che richiede anche l’indicazione di una maschera di rete.
- GET-response: se il manager richiede una o diverse serie di dati o avvia modifiche o azioni, l’agent risponde con una GET-response. Questi pacchetti di risposta contengono i dati richiesti, ovvero la conferma degli adattamenti o un messaggio di errore nel caso in cui non sia possibile rispondere in modo corretto.
- Trap SNMP: il trap SNMP è un messaggio dell’agent che viene inviato alla manager station senza richiesta. Tale invio avviene di solito perché si è verificato un evento imprevisto. I trap possono comunicare la natura dell’evento in due modi: la prima possibilità per risparmiare risorse è aggiungere un numero identificativo unico; il manager potrà risalire al suo significato consultando la banca dati di informazioni (MIB) sopra menzionata. La seconda possibilità consiste in trap SNMP che non informano solo sull’evento, ma contengono anche i dati relativi senza indicare uno specifico numero di identificazione.
- INFORM-request: le INFORM-request hanno di base la stessa funzione dei trap SNMP. I pacchetti INFORM si distinguono dai trap per la conferma di ricezione da parte del manager. Di conseguenza se l’agent non è riuscito a contattare il manager al primo tentativo, può provare a rinviare il messaggio.
Come detto in precedenza, il Simple Network Management Protocol richiede l’utilizzo del protocollo di trasporto UDP senza connessione per la consegna dei pacchetti di messaggi. In questo modo è garantito un monitoraggio della rete particolarmente vantaggioso per le risorse. Per le diverse GET-request agli agent (e per le relative risposte) l’SNMP utilizza la porta UDP 161, mentre i trap SNMP automatici vengono inviati tramite la porta UDP 162.
Le diverse versioni del protocollo SNMP a confronto
Inizialmente l’SNMP non consentiva ai manager di comunicare tra loro, né agli agenti di inviare messaggi con conferma di ricezione. Anche il supporto di molte applicazioni inizialmente funzionava solo in parte, nonostante il principio di standard aperto. Per questo motivo i lavori di revisione del protocollo negli anni seguenti ebbero lo scopo di integrare i nuovi meccanismi nel Simple Network Management Protocol. Un altro importante obiettivo del gruppo di lavoro IETF, raggiunto soprattutto nella terza versione del protocollo, è stato sin dall’inizio quello di rendere più sicuro il processo di amministrazione. Questo passo e quelli successivi, volti ad ottimizzare il protocollo SNPM, sono affrontati nel dettaglio nelle seguenti descrizioni delle singole versioni SNMPv1, SNMPv2 e SNMPv3.
SNMPv1
L’SNMPv1, la prima versione del protocollo di gestione di rete, si basa sul modello manager-agent e rappresenta la base per la comunicazione tra la manager station e i singoli agent. Il Simple Network Management Protocol è un protocollo semplice che agisce sul livello di applicazione e su UDP (User Datagram Protocol) e Internet Protocol (IP), ma può poggiarsi anche su protocolli di rete simili come AppleTalks DDP (Datagram Delivery Protocol) o Internet Packet Exchange (IPX). L’unico meccanismo di sicurezza integrato è lo scambio di una cosiddetta “stringa di comunità” che viene inviata tramite la relativa request.
SNMPv2
Un grosso limite della prima versione del protocollo SNMP è che la stringa di comunità veniva trasmessa solo in testo semplice. Ciò non era abbastanza in termini di sicurezza, così gli sviluppatori si misero al lavoro per ottenere una nuova variante dal nome Secure SNMP, in cui le stringhe venivano trasmesse in forma cifrata. Tale versione, tuttavia, non è mai stata pubblicata in quanto venne rimpiazzata direttamente dall’SNMPv2. Vennero effettuati ulteriori miglioramenti alla versione originale del protocollo, tra cui un’ottimizzazione della gestione degli errori, la possibilità di una comunicazione manager-manager e comandi SET più funzionali. Tuttavia il grosso vantaggio in confronto all’SNMPv1 è rappresentato dall’implementazione di nuove tipologie di messaggi GETBULK (per la richiesta di più dati in un’unica request) e INFORM (per le conferme di ricezione alle risposte degli agent).
SNMPv3
Dopo i primi piccoli miglioramenti della seconda versione del protocollo, lo IETF si è focalizzato sull’aspetto della sicurezza e ha sostituito le stringhe di comunità con username e password. La terza versione del protocollo, a differenza delle precedenti, contiene delle funzioni che permettono di crittografare la trasmissione di pacchetti SNMP. SNMPv3 offre tre diverse modalità di autenticazione e cifratura:
Autenticazione | Cifratura | Username | Password | |
noAuthNoPriv | No | No | Sì | No |
authNoPriv | Sì | No | Sì | Sì |
authPriv | Sì | Sì | Sì | Sì |
Se la manager station supporta la terza versione del protocollo SNMP, bisognerebbe preferire sempre questa alle versioni precedenti. Inoltre, conviene usare il livello di sicurezza più alto in SNMPv3 (authPriv), se il dispositivo lo permette.