• Non ci sono risultati.

Capitolo 2 Il protocollo SNMP

N/A
N/A
Protected

Academic year: 2021

Condividi "Capitolo 2 Il protocollo SNMP"

Copied!
19
0
0

Testo completo

(1)

Capitolo 2

Il protocollo SNMP

2.1 Introduzione al protocollo SNMP

SNMP (Simple Network Management Protocol) è un protocollo a livello di applicazione definito per introdurre una semplice architettura per la gestione di reti basate sulla suite di protocolli UDP/IP [9], come si può osservare in figura 2.1. Tale protocollo definisce le modalità di scambio di informazioni tra apparecchiature di rete, consentendo agli amministratori di tenere sotto controllo le performances della rete e di accorgersi in tempo reale del manifestarsi di malfunzionamenti. Attualmente il protocollo presenta tre definizioni successive: SNMPv1, SNMPv2, SNMPv3.

La versione più recente introduce nel protocollo alcune nuove funzionalità e correzioni, soprattutto nel campo della sicurezza.

Il protocollo SNMP è attualmente quello più diffuso per la gestione delle reti di calcolatori ed è supportato praticamente da tutti i produttori di hardware ed apparecchiature di rete.

L'architettura di cui il protocollo SNMP fa parte, è detta Internet Network

(2)

Fig. 2.1: SNMP nella pila ISO-OSI

Tale architettura consente di gestire degli elementi di rete (che sono apparecchiature come router, switch, hub, pc, etc.) usando degli agents, cioè moduli software che risiedono sulle apparecchiature da gestire, come riportato in figura 2.2.

Tali agents comunicano con una stazione di gestione centralizzata (Network

Management Station) che, interagendo con i primi, può leggere o scrivere

informazioni e raccogliere eventuali segnalazioni di errore.

Le informazioni o caratteristiche che è possibile gestire per una particolare apparecchiatura, mediante il protocollo SNMP, verranno indicati come oggetti gestiti. L'insieme di questi oggetti costituisce un'astrazione di database detta

(3)

Fig. 2.2: Schema logico di un sistema di Network Management

2.2 La struttura delle informazioni di gestione

La “Structure of Management Information” (SMI) ha il compito di definire, in modo standard, come devono essere strutturati gli oggetti gestiti e la loro gerarchia per essere inseriti nel database MIB e quindi gestiti da una entità SNMP. La definizione degli oggetti gestiti può essere vista secondo tre aspetti fondamentali:

NOME

Il nome, o object identifier (OID), definisce unicamente un oggetto gestito. I nomi vengono visualizzati comunemente in due forme: numerica e letterale.

(4)

TIPO E SINTASSI

Il tipo di dato associato ad un oggetto gestito viene definito usando il Abstract Syntax Notation One (ASN.1). Tale sintassi risulta indipendente dal tipo di macchina utilizzata e ciò rende tale notazione molto conveniente e altamente portabile.

ENCODING

Il meccanismo di codifica e decodifica del codice usato segue le regole del Basic Encoding Rules (BER).

Un agent possiede una lista contenente tutti gli oggetti che dovrà gestire e che potranno via via essere chiesti dalla stazione di gestione. Ad esempio un oggetto può rappresentare lo stato di funzionamento di una interfaccia (up, down o testing). La “Management Information Base” (MIB) può essere pensata come un database di oggetti gestiti.

Ogni tipo di informazione alla quale può accedere un sistema di gestione è definita in una MIB. In pratica come un dizionario raccoglie in sè tutte le parole con i relativi significati, così una MIB definisce un nome per un oggetto e spiega il suo significato usando la sintassi SMI. Un esempio di oggetto gestito è il seguente, tratto da RFC 1213: sysUpTime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION

"The time (in hundredths of a second) since the network management portion of the system was last re-initialized."

(5)

::= { system 3 }

L'esempio riportato riguarda l'oggetto sysUpTime, ovvero il tempo trascorso da quando il sistema che lo gestisce è stato riavviato.

Gli oggetti gestiti sono organizzati secondo una gerarchia ad albero, come si può vedere in figura 2.3.

Fig. 2.3: Struttura ad albero delle MIBs

(6)

mentre qualsiasi altro nodo all'interno dell'albero che non ha altri nodi sotto di sé viene detto “nodo foglia” o leaf node.

Un OID è costituito da una serie di numeri interi identificanti i nodi dell'albero, separati da punti.

Nella forma letterale di un OID al posto dei numeri interi troviamo delle parole, per cui la leggibilità può risultare migliore. Si possono usare, indifferentemente, sequenze di numeri o di parole.

Come si vede in figura 2.3 ogni nodo ha un riferimento sia numerico che letterale, per cui, volendo fare un esempio, l'OID iso.org.dod.internet.mgmt è equivalente a 1.3.6.1.2.

Partendo dalla radice, possiamo individuare tre nodi :

– L’International Organization for Standardization (ISO), a cui è

associato il numero(1).

– Il Telecommunication Standardization Sector of the International

Telecommunication Union (ITU-T), numero (0).

– Il Joint ISO / ITU- T (2), che mette a comune i due organismi

citati.

Sotto uno dei rami dell‘ISO, in particolare quello relativo all’ISO identified organization(3), si possono trovare le entries per gli standards pubblicati dalle organizzazioni dei vari paesi membri dell’ISO.

Uno di questi è rappresentato dal dod (6) (US DEPARTEMENT OF DEFENSE), dal quale deriva il nodo internet (object identifier = 1.3.6.1).

Al di sotto del nodo internet troviamo sette nodi tra cui i più importanti per l’analisi di rete sono:

(7)

approvate dall’ IAB (Internal Activities Board). Osserviamo che attualmente esistono due versioni: la MIB-I definita nella RFC 1156; e la MIB-II definita nella RFC 1213. Entrambe sono identificate dallo stesso object identifier = 1.3.6.1.2.1.

- experimental: utilizzato per identificare oggetti che non sono ancora standard.

- private: utilizzato per identificare gli oggetti creati dai vendors (quali Juniper, Cisco, IBM etc..) per gestire specifiche variabili presenti in un loro prodotto.

Esiste una organizzazione, la Internet Assigned Numbers Authority (IANA), che gestisce e regolamenta le concessioni di spazi all'interno dell'albero, sotto il nodo private, per privati, istituzioni, organizzazioni e compagnie.

Ad esempio Cisco ha uno spazio privato dove poter sperimentare e sviluppare le proprie soluzioni per la gestione SNMP sotto il ramo iso.org.dod. internet.private.enterprises.cisco o 1.3.6.1.4.1.9. Maggiori informazioni possono trovarsi su [7].

2.3 Uno sguardo alla MIB-II

MIB-II è un gruppo molto importante all'interno dell'albero, in quanto ogni workstation che supporta SNMP deve anche supportare MIB-II. Essa rappresenta, la seconda versione della base di informazioni di gestione e il suo sottoramo è suddiviso in più gruppi, ognuno dei quali presenta diverse informazioni per la gestione e l’analisi della rete.

(8)

La sua definizione può essere consultata all'interno della RFC 1213. La struttura ad albero contenente la MIB-II è riportata in figura 2.4, mentre la tabella 2.1 descrive cosa rappresentano i nodi che la compongono.

(9)

Nomi dei MIB-II

Groups

OID

Descrizione

system

1.3.6.1.2.1.1

Definisce una lista di oggetti

riguardanti il sistema operativo.

interfaces

1.3.6.1.2.1.2

Riporta lo stato di ogni interfaccia

di una periferica gestita,

raccogliendo informazioni sul

traffico inviato e ricevuto, sugli

eventuali errori verificatisi, etc.

at

1.3.6.1.2.1.3

Rappresenta un gruppo non più

utilizzato.

ip

1.3.6.1.2.1.4

Riguarda tutti gli aspetti relativi ad

IP, incluso il routing.

icmp

1.3.6.1.2.1.5

Raccoglie statistiche relative a

ICMP.

tcp

1.3.6.1.2.1.6

E' relativo al protocollo TCP, e tra

le altre cose fornisce lo stato della

connessione TCP ( closed, listen,

etc.)

udp

1.3.6.1.2.1.7

Raccoglie statistiche relative al

protocollo UDP.

egp

1.3.6.1.2.1.8

Riguarda il protocollo EGP

.

transmission

1.3.6.1.2.1.10

Non ci sono oggetti gestiti in questo

gruppo.

snmp

1.3.6.1.2.1.11

Misura le performances e le

statistiche riguardanti l'utilizzo delle

risorse di rete necessarie al

funzionamento del protocollo

SNMP sulla periferica gestita.

(10)

2.4 Funzionamento del protocollo SNMP

Per poter “sfogliare” la MIB e i relativi oggetti gestiti, disponibili su un determinato nodo della rete, e quindi far comunicare tra loro manager e agent, è necessario, come detto utilizzare il protocollo SNMP. Con l'aumentare della complessità della rete, il numero di managers e agents può crescere sensibilmente e con esso anche la complessità delle relazioni tra le varie entità. Per tale motivo ogni agent deve proteggere e regolare l'accesso alle proprie MIBs.

Vi sono, quindi, due aspetti che caratterizzano questo tipo di controllo:

• L'authentication service: ogni stazione da gestire limita l'accesso alle

proprie MIBs solo ad alcuni managers autorizzati.

• L'access policy: ogni agent fornisce ai vari managers differenti privilegi di

accesso alle informazioni di gestione.

La prima versione di SNMP [RFC 1157] introduce una prima protezione nella comunicazione, introducendo il concetto di community. Una SNMP community definisce sia il metodo di autenticazione sia la politica di controllo degli accessi. Ad ogni community viene assegnato un nominativo unico (community name) che sarà noto a tutte le stazioni (manager e agent) coinvolte in quella particolare relazione. Per cui il community name svolge il ruolo di parola chiave nella comunicazione tra le varie workstations, garantendo una limitata autenticazione nella richiesta di informazioni.

Il community name è presente in ogni messaggio SNMP inviato e viene considerato valido nel momento in cui siano compatibili il nominativo di comunità della stazione trasmittente ed il nominativo di comunità della stazione ricevente. Ogni agent può, inoltre, definire più comunità associate ad un particolare sottoinsieme di MIBs (SNMP MIB view) caratterizzate da una particolare modalità di accesso: o di sola lettura, o di lettura e scrittura.

(11)

2.5 Formato di un messaggio SNMP

Il Protocol Data Unit (PDU) rappresenta il messaggio che manager e agent utilizzano per scambiarsi informazioni. Esiste un formato PDU standard per ognuna delle seguenti operazioni SNMP:

• GetRequest • GetNextRequest • SetRequest • GetResponse • Trap

In particolare il messaggio SNMP, come si vede in figura 2.5, è costituito dai seguenti campi:

 Version: specifica la versione del formato SNMP.

 Community Name: contiene il nominativo della comunità.

 Request Id: fornisce ad ogni particolare richiesta un unico identificativo.  Error Status: è utilizzato per indicare che si è verificato un errore mentre

veniva inviata o ricevuta una richiesta SNMP. I valori assumibili sono cinque: noError(0), tooBig(1), noSuchName(2), badValue(3), readOnly (4), genErr(5).

 Error Index: identifica quale variabile nel campo Variable Bindings è

errata quando il valore ricevuto nell'error status è diverso da zero.

 Variable Bindings: è una lista di vari nomi di oggetti con i rispettivi

valori.

 Enterprise: identifica il sottosistema che ha generato un messaggio di tipo

(12)

 Agent Addr: contiene l'indirizzo IP dell'agent che ha mandato un

messaggio di tipo trap.

 Generic Trap: specifica il tipo di messaggio trap generato.

 Specific Trap: racchiude informazioni più specifiche sulla natura del

messaggio di trap.

 Time-Stamp: è il tempo trascorso tra l'ultima reinizializzazione dell'entità

che ha generato il messaggio di trap ed il messaggio stesso.

Figura 2.5: Struttura del pacchetto SNMP

Un' entità SNMP per poter trasmettere uno dei cinque possibili tipi di PDU deve compiere delle operazioni secondo una determinata cronologia. In primo luogo è importante definire la notazione con cui la PDU viene costruita, e questa è definita da ASN.1 e può essere osservata nella RFC 1157. Tramite questa notazione è

(13)

possibile, dunque, descrivere e visualizzare vari tipologie di informazioni che un manager può richiedere.

Dopo aver costruito la PDU, essa è passata, insieme agli indirizzi di sorgente, di destinazione ed un community name, ad un servizio di autenticazione. Quest'ultimo compie determinate operazioni (ad esempio l'inserimento di un codice di autenticazione) e fornisce il risultato ottenuto, che verrà inserito nel messaggio SNMP che conterrà inoltre sia la versione che il nominativo della comunità.

Infine il messaggio verrà codificato usando le regole base di cifratura e passato ad un servizio di trasporto, come illustrato in figura 2.6.

Fig. 2.6: Funzionamento del protocollo SNMP

Per quanto riguarda la ricezione di un messaggio SNMP, verrà inizialmente effettuato un controllo della sintassi e della versione del messaggio ricevuto, che

(14)

servizio di autenticazione sia la porzione relativa al PDU che quella relativa agli indirizzi di sorgente e di destinazione.

2.5.1 GetRequestPDU

Tale tipo di PDU viene inoltrato da una stazione di controllo ad un agent per ottenere il valore di una o più variabili. I nomi delle variabili richieste sono contenute nel campo variablebindings.

La stazione ricevente risponde inviando un messaggio di risposta chiamato GetResponsePDU, contenente sia lo stesso campo request-id presente nella GetRequestPDU inoltrata che il campo variablebindings, all'interno del quale sono inseriti i valori delle variabili richieste, come illustrato in figura 2.7.

Fig. 2.7: Messaggio GetRequestPDU

Quando una di queste variabili non può essere fornita al manager, nessun valore delle variabili richieste viene restituito; per questo motivo l'operazione GetRequestPDU viene detta atomica.

(15)

I possibili errori che possono verificarsi sono i seguenti:

Il nome di un oggetto incluso nel campo variablebindings non

corrisponde ad alcun object identifier all'interno delle MIB gestite dall'agent. In questo caso, la PDU di risposta ha un error-status contenente il valore noSuchName, ed un valore all'interno del campo error-index indicherà quale variabile ha generato tale situazione di errore.

• La dimensione della PDU di risposta risulta essere maggiore di una

limitazione locale, in tal caso il campo error-status è impostato al valore toobig.

• La stazione ricevente non è capace di soddisfare tutte le richieste

del manager per un motivo ignoto, in questo caso l'error-status contiene il valore genErr.

2.5.2 GetNextRequestPDU

Questo tipo di PDU ha lo stesso formato della GetRequestPDU e si differenzia da quest'ultima solo per il fatto che, per ogni variabile presente nella “lista” presente nel campo variablebindings viene restituito il valore dell'elemento successivo nella MIB considerata.

Attraverso l'utilizzo di questa PDU, il manager può scoprire qual'è la struttura di una MIB senza doverla conoscere a priori, ed inoltre può ottenere tutti i valori all'interno di una tabella, nonostante non conosca nulla a riguardo di essa, incluso il numero di righe e di colonne che la compongono.

Il manager, infatti, si accorge della fine di una tabella nel momento in cui i nomi degli oggetti inclusi nella lista della PDU di risposta risultano essere differenti da quelli richiesti.

(16)

Anche l'operazione di GetNextRequest, così come quella di GetRequest, viene detta atomica, ovvero vengono restituiti tutti i valori contenuti nel campo variablebindings, oppure, qualora si sia verificata una condizione di errore, nessuno di essi.

2.5.3 SetRequestPDU

Questa PDU, viene utilizzata dalla stazione di controllo, per assegnare un valore ad un elemento della MIB di un agent. Per svolgere questa operazione, il campo variablebindings contiene i nomi ed i relativi valori delle variabili che il manager vuole impostare. In figura 2.8 è riportata la struttura del messaggio SetRequestPDU. La stazione ricevente risponde con una GetResponsePDU contenente anche in questo caso, lo stesso request-id della PDU di richiesta. Nel caso in cui tutte le variabili vengano impostate correttamente ai valori voluti dal manager, il campo variablebindings conterrà i nomi delle variabili ed il rispettivo valore modificato, altrimenti, se uno dei valori non può essere variato, allora nessuno di essi può essere aggiornato, ed il campo variablebindings non conterrà alcun valore.

(17)

Le possibili condizioni di errore sono le stesse delle altre PDU già descritte, con l'aggiunta del valore badvalue, a cui viene impostato il campo error-status della PDU di risposta nel caso in cui venga riscontrata un'incosistenza tra il nome della variabile ed il relativo valore.

2.5.4 TrapPDU

Un messaggio di tipo Trap, rappresentato graficamente in figura 2.9, viene inviato dall'agent per avvisare il manager del verificarsi di una condizione anomala. Questo tipo di notifica è definita asincrona proprio per sottolineare la non periodicità di tali messaggi.

Figura 2.9: Messaggio TrapPDU

Come già accennato, il servizio di trasporto dei messaggi SNMP è basato su un protocollo non orientato alla connessione (UDP), è quindi possibile che un messaggio venga perso; ciò risulta disastroso per la notifica di errori o guasti. Per questo motivo ad una tecnica di tipo event reporting (come è appunto l'invio di messaggi Trap), viene affiancata una procedura periodica di polling, che risulta

(18)

Il campo generic-trap può assumere uno dei seguenti valori:

coldstart(0) : l'agent si sta inizializzando; • warmstart(1) : l'agent si sta reinizializzando;

linkDown(2) : un'interfaccia, di cui segue l'identificativo, è stata

disattivata;

linkUp(3) : un'interfaccia è stata attivata;

authenticationFailure(4) : il messaggio ricevuto è stato inviato da un

manager con il campo community non valido;

egpNeighborLoss(5) : un host EGP, di cui segue l'indirizzo IP, è stato

disattivato;

enterpriseSpecific(6) : si è verificato un evento particolare, specificato nel

campo specific-trap.

2.6 SNMPv3

A partire dalla seconda metà del 1999 è disponibile una ulteriore versione del protocollo SNMP. Poiché le differenze con le precedenti sono notevoli, verranno analizzate le caratteristiche maggiormente innovative. Tale versione nasce, come detto, per sopperire alle mancanze dei suoi predecessori nell'ambito della sicurezza delle trasmissioni. Questo protocollo è stato pensato, inoltre, per essere scalabile, duraturo, per quanto riguarda la sua architettura, portabile e compatibile con le precedenti versioni utilizzando le stesse MIBs.

Nonostante ciò, la versione 3 non ha, almeno per ora, trovato grosso spazio sul mercato, dove continua ad essere adottata la prima versione perchè la maggiorazione delle funzionalità è andata a scapito della semplicità del protocollo. La classica architettura di tipo Manager/Agent è stata sostituita, in SNMPv3, da una più complessa, composta da SNMP Engine e SNMP Applications come riportato in

(19)

figura 2.10.

Fig. 2.10: SNMPv3 entity

Il formato dei messaggi è sostanzialmente diverso da quello visto in precedenza e riguardante le prime due versioni del protocollo, infatti include anche alcuni parametri di sicurezza ed il controllo dell'accesso.

A tal fine SNMPv3 consente di accettare messaggi solo nel caso in cui alcune interrogazioni ricevano una risposta affermativa o comunque valida. Tali politiche di sicurezza sono implementate tramite crittografia, funzioni di hash e alti strumenti che consentono l'autenticazione dei pacchetti, delle password e delle PDUs.

Tramite diversi livelli di sicurezza si può stabilire se consentire un accesso senza autenticazione, con semplice autenticazione o con autenticazione e codifica dei dati.

Figura

Fig. 2.4: Struttura della MIB-II
Tab. 2.1: Nodi della MIB-II
Fig. 2.6: Funzionamento del protocollo SNMP
Fig. 2.7: Messaggio GetRequestPDU
+2

Riferimenti

Documenti correlati

PTPC indicando i fattori che hanno determinato l’efficacia delle misure attuate In un clima di collaborazione tra tutte le strutture dell'Istituto e coerentemente ai principi

Di seguito si trasmettono i numeri di repertorio degli Accordi Quadro inviati in data 12 febbraio u.s.:. *

La modalità request/response supporta tutte le attività di interrogazione e controllo (ossia tutti gli interventi di tipo sollecitato) da parte della stazione di gestione nei

Sono state proposte, nel tempo, numerose meto- diche perimetriche non convenzionali, atte a dia- gnosticare un difetto più precocemente della pe- rimetria convenzionale, con

5.C Se è stata erogata la formazione in materia di prevenzione della corruzione, indicare quali tra i seguenti ne sono ne stati i destinatari: (più risposte possibili).

Commissione LSC: Locale collocato nel plesso Ex-Asilo, l’entrata è da via Venticinque Aprile di fronte all'Ufficio Postale, per l’uscita utilizzano il medesimo percorso. Locale per

Disciplina: le attività di pulizia e sanificazione degli spazi, degli arredi, dei materiali; la disponibilità e l’impiego dei dispositivi di protezione individuale e dei

Come ha potuto l’esercizio dell’inventiva e del gioco diventare una faccenda per specializzati (considerati d’altronde un po’ matti), a cui i sani sono ammessi