Passa al contenuto principale

RFC 1157 - Protocollo Semplice di Gestione di Rete (A Simple Network Management Protocol, SNMP)

Network Working Group
Request for Comments: 1157
Rende obsoleto: RFC 1098

Autori:
J. Case (SNMP Research)
M. Fedor (Performance Systems International)
M. Schoffstall (Performance Systems International)
J. Davin (MIT Laboratory for Computer Science)

Data di pubblicazione: Maggio 1990


Sommario (Abstract)

Questo RFC definisce un protocollo semplice tramite il quale le informazioni di gestione per un elemento di rete possono essere ispezionate o modificate da utenti logicamente remoti. In particolare, insieme ai suoi documenti complementari che descrivono la struttura delle informazioni di gestione e la Management Information Base, questi documenti forniscono un'architettura e un sistema semplici e funzionali per la gestione degli internet basati su TCP/IP e in particolare di Internet.

L'Internet Activities Board (IAB) raccomanda che tutte le implementazioni IP e TCP siano gestibili in rete. Questo implica l'implementazione della MIB Internet (RFC 1156) e di almeno uno dei due protocolli di gestione raccomandati: SNMP (RFC 1157) o CMOT (RFC 1095).


Indice (Table of Contents)


1. Stato di questo Memo

Questo è un protocollo standard Internet. L'IAB raccomanda che tutte le implementazioni IP e TCP siano gestibili in rete, il che implica l'implementazione di SNMP.


2. Introduzione

Obiettivo di SNMP: Fornire un protocollo semplice per gestire i dispositivi di rete in Internet.

Caratteristiche principali:

  • 🔍 Monitoraggio (Monitoring): Interrogare lo stato e le statistiche dei dispositivi
  • ⚙️ Configurazione: Modificare i parametri di configurazione dei dispositivi
  • 🔔 Notifiche: Ricevere avvisi di eccezioni dai dispositivi (Trap)
  • 📊 Semplicità: Facile da implementare e distribuire

Funzionamento di SNMP:

Stazione di gestione (Manager)           Dispositivo gestito (Agent)
| |
|------ GetRequest (query) ----------->|
|<----- GetResponse (risposta) --------|
| |
|------ SetRequest (imposta) --------->|
|<----- GetResponse (conferma) --------|
| |
|<----- Trap (avviso non richiesto) ---|

3. Architettura SNMP

3.1 Obiettivi dell'Architettura

  1. Semplicità: Il protocollo è semplice e facile da implementare
  2. Estensibilità: Supporto per l'aggiunta di nuovi oggetti di gestione
  3. Indipendenza: Indipendente da architetture di rete specifiche
  4. Impatto minimo: Impatto minimo sulle prestazioni dei dispositivi

3.2 Elementi dell'Architettura

3.2.1 Ambito delle Informazioni di Gestione

Le informazioni gestite da SNMP includono:

  • Statistiche delle interfacce (traffico, errori, ecc.)
  • Tabelle di routing
  • Connessioni TCP/UDP
  • Informazioni di sistema

3.2.2 Rappresentazione delle Informazioni di Gestione

Utilizza la rappresentazione della Management Information Base (MIB):

Esempio di oggetto MIB:

Identificatore di oggetto (OID): 1.3.6.1.2.1.1.1.0
Nome: sysDescr (descrizione del sistema)
Sintassi: OCTET STRING
Accesso: read-only
Valore: "Cisco IOS Software, Version 15.2"

3.2.3 Operazioni Supportate

OperazioneDescrizioneDirezione
GetRequestRichiesta di ottenere il valore di un oggettoManager → Agent
GetNextRequestRichiesta di ottenere il valore dell'oggetto successivo (per attraversamento)Manager → Agent
SetRequestRichiesta di impostare il valore di un oggettoManager → Agent
GetResponseRisposta a richiesta Get/SetAgent → Manager
TrapNotifica di evento asincronaAgent → Manager

3.2.4 Forma e Significato degli Scambi di Protocollo

SNMP utilizza il protocollo UDP:

  • Porta della stazione di gestione: 162 (ricezione Trap)
  • Porta dell'agente: 161 (ricezione Get/Set)

3.2.5 Definizione delle Relazioni Amministrative

SNMP utilizza un nome di comunità (Community Name) per l'autenticazione semplice:

Nome di comunità: "public" (di default sola lettura)
Nome di comunità: "private" (di default lettura-scrittura)

3.2.6 Identificazione degli Oggetti Gestiti

Identificazione dell'istanza di oggetto:

Oggetti scalari:

sysDescr.0  (aggiungere .0 per l'istanza)

Oggetti di tabella:

ifDescr.1   (descrizione dell'interfaccia 1)
ifDescr.2 (descrizione dell'interfaccia 2)

4. Specifica del Protocollo

4.1 Elementi di Procedura

Formato del messaggio SNMP

Messaggio SNMP ::= SEQUENCE {
version INTEGER, -- Versione SNMP (0 = SNMPv1)
community OCTET STRING, -- Nome di comunità
data PDUs -- Protocol Data Unit
}

4.1.1 Costrutti Comuni

Campi condivisi da tutti i PDU:

  • request-id: Identificatore di richiesta
  • error-status: Stato di errore
  • error-index: Indice di errore
  • variable-bindings: Lista di associazioni di variabili

4.1.2 GetRequest-PDU

Scopo: Recuperare i valori di uno o più oggetti di gestione.

Esempio:

GetRequest {
request-id: 1234,
error-status: 0,
error-index: 0,
variable-bindings: [
{name: 1.3.6.1.2.1.1.1.0, value: NULL}, -- sysDescr
{name: 1.3.6.1.2.1.1.3.0, value: NULL} -- sysUpTime
]
}

4.1.3 GetNextRequest-PDU

Scopo: Recuperare il successore lessicografico di ciascun nome di variabile nella lista di associazioni di variabili.

Esempio di attraversamento di tabella:

Passo 1: GetNextRequest(ifDescr)
Risposta: ifDescr.1 = "eth0"

Passo 2: GetNextRequest(ifDescr.1)
Risposta: ifDescr.2 = "eth1"

Passo 3: GetNextRequest(ifDescr.2)
Risposta: ifType.1 = 6 (oggetto successivo)

4.1.4 GetResponse-PDU

Scopo: Risposta a GetRequest, GetNextRequest o SetRequest.

Stato di errore:

ValoreNomeDescrizione
0noErrorSuccesso
1tooBigRisposta troppo grande
2noSuchNameL'oggetto non esiste
3badValueValore non valido
4readOnlyL'oggetto è in sola lettura
5genErrErrore generico

4.1.5 SetRequest-PDU

Scopo: Modificare i valori di uno o più oggetti di gestione.

Esempio:

SetRequest {
request-id: 1235,
error-status: 0,
error-index: 0,
variable-bindings: [
{name: 1.3.6.1.2.1.1.6.0, value: "New Location"} -- sysLocation
]
}

4.1.6 Trap-PDU

Scopo: L'agente invia notifiche asincrone al manager.

Tipi di Trap:

TrapDescrizione
coldStartAvvio a freddo del dispositivo
warmStartAvvio a caldo del dispositivo
linkDownCollegamento interrotto
linkUpCollegamento ripristinato
authenticationFailureFallimento dell'autenticazione
egpNeighborLossPerdita di vicino EGP
enterpriseSpecificEvento specifico del fornitore

Formato del messaggio Trap:

Trap-PDU ::= SEQUENCE {
enterprise OBJECT IDENTIFIER, -- OID dell'impresa
agent-addr NetworkAddress, -- Indirizzo dell'agente
generic-trap INTEGER, -- Tipo di trap generico
specific-trap INTEGER, -- Codice di trap specifico
time-stamp TimeTicks, -- Timestamp
variable-bindings VarBindList -- Associazioni di variabili
}

5. Definizioni

Definizioni ASN.1 (versione semplificata):

RFC1157-SNMP DEFINITIONS ::= BEGIN

IMPORTS
ObjectName, ObjectSyntax, NetworkAddress, IpAddress, TimeTicks
FROM RFC1155-SMI;

-- Tipi di PDU
PDUs ::= CHOICE {
get-request GetRequest-PDU,
get-next-request GetNextRequest-PDU,
get-response GetResponse-PDU,
set-request SetRequest-PDU,
trap Trap-PDU
}

-- GetRequest, GetNextRequest, SetRequest condividono questa struttura
GetRequest-PDU ::= [0] IMPLICIT PDU
GetNextRequest-PDU ::= [1] IMPLICIT PDU
SetRequest-PDU ::= [3] IMPLICIT PDU

PDU ::= SEQUENCE {
request-id INTEGER,
error-status INTEGER,
error-index INTEGER,
variable-bindings VarBindList
}

GetResponse-PDU ::= [2] IMPLICIT PDU

Trap-PDU ::= [4] IMPLICIT SEQUENCE {
enterprise OBJECT IDENTIFIER,
agent-addr NetworkAddress,
generic-trap INTEGER,
specific-trap INTEGER,
time-stamp TimeTicks,
variable-bindings VarBindList
}

VarBindList ::= SEQUENCE OF VarBind

VarBind ::= SEQUENCE {
name ObjectName,
value ObjectSyntax
}

END

6. Ringraziamenti

Lo sviluppo di SNMP ha beneficiato dell'ampia partecipazione e dei contributi della comunità Internet.


7. Riferimenti

  • [RFC1155] - Structure and Identification of Management Information for TCP/IP-based Internets
  • [RFC1156] - Management Information Base for Network Management of TCP/IP-based internets
  • [RFC1098] - A Simple Network Management Protocol (reso obsoleto da questo RFC)

8. Considerazioni sulla Sicurezza

Limitazioni di sicurezza di SNMPv1:

⚠️ Autenticazione debole: I nomi di comunità sono trasmessi in chiaro
⚠️ Nessuna crittografia: Tutti i dati sono trasmessi in chiaro
⚠️ Nessuna protezione dell'integrità: I messaggi possono essere manomessi

Misure di mitigazione:

  • Utilizzare nomi di comunità forti
  • Limitare l'accesso SNMP per indirizzo IP
  • Utilizzare nomi di comunità in sola lettura per il monitoraggio
  • Implementare firewall per proteggere le porte SNMP

Miglioramenti nelle versioni successive:

  • SNMPv2c: Operazioni di protocollo migliorate
  • SNMPv3: Aggiunta di autenticazione, crittografia e controllo degli accessi (RFC 3414)

9. Indirizzi degli Autori

(Il documento originale contiene le informazioni di contatto degli autori)


SNMP è il protocollo fondamentale per la gestione di rete. Sebbene SNMPv1 abbia una sicurezza debole, è ancora ampiamente utilizzato grazie alla sua semplicità.

Strumenti SNMP comuni:

# Interrogare la descrizione del sistema
snmpget -v1 -c public 192.168.1.1 sysDescr.0

# Attraversare la tabella delle interfacce
snmpwalk -v1 -c public 192.168.1.1 ifTable

# Impostare la posizione del sistema
snmpset -v1 -c private 192.168.1.1 sysLocation.0 s "Beijing"

OID comuni:

  • 1.3.6.1.2.1.1.1.0 - sysDescr (descrizione del sistema)
  • 1.3.6.1.2.1.1.3.0 - sysUpTime (tempo di attività del sistema)
  • 1.3.6.1.2.1.2.2.1.2 - ifDescr (descrizione dell'interfaccia)
  • 1.3.6.1.2.1.2.2.1.10 - ifInOctets (ottetti in ingresso dell'interfaccia)

RFC correlati:

  • RFC 1155 - SMI (Structure of Management Information)
  • RFC 1156 - MIB-I
  • RFC 1213 - MIB-II
  • RFC 3414 - Sicurezza SNMPv3