SlideShare a Scribd company logo
ALMA MATER STUDIORUM - UNIVERSITA’ DI BOLOGNA
                     SEDE DI CESENA
 SECONDA FACOLTA’ DI INGEGNERIA CON SEDE A CESENA
       CORSO DI LAUREA IN INGEGNERIA DELLE
                   TELECOMUNICAZIONI




                  TITOLO DELL’ELABORATO:

 UTILIZZO DI STRUMENTI OPEN-SOURCE
PER IL MONITORAGGIO DEGLI INDIRIZZI
      MAC ALL’INTERNO DI UNA LAN


                       Elaborato in:

LABORATORIO DI RETI DI TELECOMUNICAZIONI L-A




      Relatore:                        Presentata da:

      Prof. Walter Cerroni             Luca Gentilini




                        Sessione II
              Anno Accademico 2005/2006
2
Parole chiave

          Sicurezza LAN
          MAC Spoofing
                    Mib
        Protocollo SNMP
              Net-SNMP
Mac Address, Port Number
           Switch SNMP
4
Indice

1 Introduzione                                                                  7

2 Monitoraggio e sicurezza delle reti LAN                                        9
   2.1   Obbiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    9
   2.2   Strumenti per il monitoraggio . . . . . . . . . . . . . . . . . .       9
   2.3   Gli elementi della rete . . . . . . . . . . . . . . . . . . . . . .    13
   2.4   Sicurezza in una lan . . . . . . . . . . . . . . . . . . . . . . . .   15
         2.4.1   Protocollo ARP . . . . . . . . . . . . . . . . . . . . . .     16
   2.5   Spoofing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    18
         2.5.1   ARP Spoofing . . . . . . . . . . . . . . . . . . . . . . .      19
         2.5.2   Attacco Man In The Middle . . . . . . . . . . . . . . .        20
         2.5.3   Tabelle statiche e ARPwatch come difese dall’attacco
                 Man in the middle . . . . . . . . . . . . . . . . . . . .      20

3 Protocollo SNMP                                                               23
   3.1   Il bisogno di standardizzazione . . . . . . . . . . . . . . . . .      23
   3.2   Messaggi SNMP . . . . . . . . . . . . . . . . . . . . . . . . . .      25
   3.3   Versioni SNMP . . . . . . . . . . . . . . . . . . . . . . . . . .      29
         3.3.1   SNMPv1 . . . . . . . . . . . . . . . . . . . . . . . . . .     31
         3.3.2   SNMPv2 . . . . . . . . . . . . . . . . . . . . . . . . . .     32
         3.3.3   SNMPv3 . . . . . . . . . . . . . . . . . . . . . . . . . .     34

4 Management Information Base                                                   37
   4.1   Struttura delle informazioni . . . . . . . . . . . . . . . . . . .     38
   4.2   Strutture delle MIB . . . . . . . . . . . . . . . . . . . . . . . .    40
   4.3   RMON MIB . . . . . . . . . . . . . . . . . . . . . . . . . . . .       42
6                                                                        INDICE



    4.4   MIB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   43
          4.4.1   RMON 2 . . . . . . . . . . . . . . . . . . . . . . . . . .     45
    4.5   MIB specifiche . . . . . . . . . . . . . . . . . . . . . . . . . . .    47
          4.5.1   dot1dTpFdbAddress . . . . . . . . . . . . . . . . . . .        47
          4.5.2   dot1dTpFdbPort . . . . . . . . . . . . . . . . . . . . .       48

5 Net-SNMP                                                                       49
    5.1   Un software open source . . . . . . . . . . . . . . . . . . . . .      49
          5.1.1   Le caratteristiche di Net-SNMP . . . . . . . . . . . . .       49
    5.2   Installazione Net-SNMP . . . . . . . . . . . . . . . . . . . . .       51
    5.3   Funzioni e comandi . . . . . . . . . . . . . . . . . . . . . . . .     52
          5.3.1   snmptranslate . . . . . . . . . . . . . . . . . . . . . . .    52
          5.3.2   snmpget . . . . . . . . . . . . . . . . . . . . . . . . . .    53
          5.3.3   snmpgetnext . . . . . . . . . . . . . . . . . . . . . . .      54
          5.3.4   snmpwalk . . . . . . . . . . . . . . . . . . . . . . . . .     54
          5.3.5   snmptable . . . . . . . . . . . . . . . . . . . . . . . . .    56
          5.3.6   snmpset . . . . . . . . . . . . . . . . . . . . . . . . . .    57
          5.3.7   snmptrap . . . . . . . . . . . . . . . . . . . . . . . . .     57
    5.4   Uso di snmpwalk . . . . . . . . . . . . . . . . . . . . . . . . .      57

6 SwitchSNMP centro di controllo                                                 61
    6.1   Introduzione e Prerequisiti . . . . . . . . . . . . . . . . . . . .    61
    6.2   Installazione di Apache 2.2 . . . . . . . . . . . . . . . . . . . .    61
    6.3   Installazione PHP 5 . . . . . . . . . . . . . . . . . . . . . . . .    63
    6.4   Implementazione . . . . . . . . . . . . . . . . . . . . . . . . .      65
          6.4.1   Creazione variabili . . . . . . . . . . . . . . . . . . . .    65
          6.4.2   Funzione explode . . . . . . . . . . . . . . . . . . . . .     66
          6.4.3   Ciclo per numerare gli host attivi . . . . . . . . . . . .     67
          6.4.4   Il file index.php . . . . . . . . . . . . . . . . . . . . . .   68
    6.5   Confronto dei risultati . . . . . . . . . . . . . . . . . . . . . .    71

7 Conclusioni                                                                    73
Capitolo 1

Introduzione

Il lavoro del network and system administrator con l’avvento delle nuo-
                                                    `
ve tecnologie e di internet sta diventando sempre piu complicato anche in
                                                             `
relazione all’aumento delle potenzialit` delle reti sempre piu esposte ver-
                                       a
so l’universo di internet. Il monitoraggio di queste infrastrutture richiede
software efficenti e tempi di intervento molto brevi in caso di blocco di
un determinato servizio; del resto le problematiche relative alla sicurezza
                                                                        `
dei sistemi e delle reti stanno diventando di giorno in giorno sempre piu
                                                                   `
importanti da gestire ed amministrare. L’obbiettivo di questa tesi e l’uti-
lizzo di software per il monitoraggio di una LAN (Local Area Network)
per aumentare la sicurezza della rete soprattutto a livello di collegamento.
Gli strumenti per realizzare questo progetto comprendono varie tipologie,
                  `
in particolare pero ci si baser` sullo studio del protocollo SNMP (Simple
                               a
Network Management Protocol) e delle sue caratteristiche, per poi descri-
vere e installare un software che implementa questo protocollo. In que-
         `
sto modo e possibile interagire e fare delle prove con le varie interfacce
                                    `
di rete. Una prima parte della tesi e quindi dedicata allo studio del pro-
tocollo e delle sue versioni, soffermandosi su aspetti importanti come i
MIB (Management Information Base) e la loro struttura. In seguito l’e-
laborato si occupa dell’installazione e della configurazione del tool Net -
SNMP che permette di ottenere importanti informazioni sulle periferiche
che supportano il protocollo. Infine si sfruttano i risultati di questo tool
per la creazione di un piccolo centro di controllo.
8                                                             Introduzione



    Un primo passo di monitoraggio riguarda lo strato fisico (phisycal layer)
                               `
e il laboratorio universitario e un ambiente ben predisposto per effettuare
                                                                          `
una prova di monitoraggio. Lo switch che gestisce la rete del laboratorio e
uno switch della 3COM, il modello SuperStack(R) Switch 3300 XM che ge-
stisce anche il protocollo SNMP. L’interazione tra il software Net - SNMP
e questo switch per ricavare gli indirizzi fisici degli host ad esso collegati
                                                             `
e metterli in relazione con il numero di porta dello switch, e un impor-
tante risultato per aumentare la sicurezza della rete che potrebbe essere
                                                                `
compromessa da attacchi di tipo mac-spoofing. L’obbiettivo finale e quel-
lo di realizzare un vero e proprio centro di controllo, tramite pagine web
dinamiche scritte in PHP capaci di visualizzare l’associazione tra numero
di porta dello switch e Mac Address degli host ad esso collegati, mettendo
cos` a disposizione dell’amministratore di rete un ulteriore strumento di
   ı
monitoraggio.
Capitolo 2

Monitoraggio e sicurezza delle
reti LAN

2.1    Obbiettivi
Questa tesi vuole essere una sorta di manuale che introduce le problema-
tiche di sicurezza e monitoraggio di una rete e il protocollo SNMP (Sim-
ple Network Management Protocol) per arrivare a configurare un piccolo
centro di controllo per le reti locali utilizzando Net - SNMP[1] (implemen-
tazione open-source del protocollo SNMP). Per questo motivo in questo
capitolo verr` solo fatta una breve introduzione al monitoraggio di reti e
             a
agli strumenti software Open -Source (e non) esistenti. Verr` anche affron-
                                                            a
tato l’argomento della sicurezza di una rete locale. Nei capitoli successi-
vi verr` spiegata la struttura ed il funzionamento del protocollo SNMP e
       a
verranno introdotti i MIB (Management Information Base) cio` i databa-
                                                           e
se che contengono le informazioni all’interno di un apparato di rete. Poi
si passer` alla parte pratica installando Net-SNMP ed implementando un
         a
piccolo centro di controllo in PHP per il monitoraggio di una rete locale.



2.2 Strumenti per il monitoraggio
Attualmente lo sviluppo del web e delle reti sta attraversando un periodo
di grandissima espansione, infatti le piccole reti di calcolatori dei primi
10                                Monitoraggio e sicurezza delle reti LAN



anni ’80 si sono trasformate in reti vaste e molto complicate. Il bisogno di
monitorare e di tenere sotto controllo le varie strutture, garantendo il lo-
                                                             `
ro funzionamento e la sicurezza delle informazioni scambiate e diventato
un obbiettivo prioritario nel mondo delle telecomunicazioni. I software a
disposizione attualmente sono moltissimi e di vario genere ed alcuni pos-
sono essere utilizzati anche per scopi negativi come ad esempio software
in grado di compromettere la sicurezza delle informazioni, per infiltrarsi
in reti private e sniffare informazioni oppure per poter agire con l’identit`
                                                                            a
di un’altra persona utilizzando le sue credenziali. Per questo i software di
monitoraggio devono essere sempre aggiornati con nuove funzionalit` e
                                                                  a
nuovi plug-in per evitare il proliferare di attacchi informatici.


                                                                          `
     Quando si parla di sicurezza e monitoraggio di reti in generale si puo
                    `
dire che il mercato e dalla parte dei software proprietari come OpenView
di HP, Tivoli di IBM e OpManager di Advantnet, ma iniziano a diffon-
dersi anche software open-source come ad esempio Nagios, OpenNMS,
Net-SNMP e tanti altri strumenti che possono arrivare ai livelli dei soft-
                   `
ware commerciali piu diffusi.
2.2 Strumenti per il monitoraggio                                       11



           `
   Tra i piu diffusi software nel campo del monitoraggio, troviamo in pri-
                                                   `
mo luogo il software OpenView di HP che contiene piu di ventisette com-
ponenti per il monitoraggio di ogni particolare della rete. L’ esistenza di
moduli aggiuntivi rendono Open View un sistema di monitoraggio mol-
                                            `
to personalizzabile. Il cuore del programma e Network Node Manager, il
      `
quale e in grado di configurare automaticamente la rete da monitorare. Il
                   `
nucleo di OpenView e basato sul protocollo SNMP (Simple Network Ma-
nagement Protocol); la macchina su cui gira l’agent SNMP crea messaggi
trap che vengono inviati alla macchina di management su cui gira Open-
View. Poi il programma generer` gli eventuali alert da spedire all’ammi-
                              a
nistratore. Di seguito riporto un’immagine del programma in esecuzione




                        Figura 2.1: OpenView di HP
12                                 Monitoraggio e sicurezza delle reti LAN



     Per quel che riguarda l’ambiente open-source, che sar` l’ambiente di
                                                          a
                                                                `
sviluppo per questa tesi, OpenNMS e Nagios sono sicuramente i piu diffu-
               `
si. OpenNMS[2] e un centro di controllo in grado di controllare moltissimi
servizi presenti su una rete o su un host, permette inoltre una configura-
zione avanzata di tutte le sue caratteristiche e lavorando con il protocollo
SNMP, permette l’interrogazione di svariati apparati di rete per ottenere
le informazioni che si desiderano, tenendo sotto controllo applicazioni e
servizi come Http , MySql, server FTP e tanti altri. La sua installazione
                                                  `
richiede un attimo di pazienza perch´ il software e scritto in Java/XML
                                    e
ed ha parecchie dipendenze, ma una volta installato e configurato riesce a
fornire risultati soddisfacenti.




                      Figura 2.2: Screenshot di OpenNMS


            `
     Nagios e lo strumento open-source che permette il monitoraggio di
ogni cosa, servizi di rete come SMTP, POP3, HTTP, risorse degli host (pro-
cessi attivi, utilizzo della memoria e dello spazio su disco) e addirittura
                                   `
acquistando degli appositi sensori e possibile monitorare dal server Na-
gios anche la temperatura di un locale.
2.3 Gli elementi della rete                                                13



   Tra le altre funzionalit` esiste anche la possibilit` di integrazione con
                           a                           a
OpenNMS oltre che la possibilit` di funzionare come software stand-alone.
                               a




                       Figura 2.3: Screenshot di Nagios




2.3    Gli elementi della rete
                                 `
La rete da monitorare nella tesi e costituita da 18 host collegati ad una rete
privata locale di indirizzo (secondo la notazione CIDR) 192.168.8.0/24. La
                        `
capienza di questa rete e maggiore del numero di host fisicamente presen-
       `
ti, ma e sempre meglio restare abbondanti nel caso di lan private visto che
    `
non e necessario risparmiare su indirizzi ip privati.


   I diciotto computer sono dotati di una distribuzione molto diffusa (Fe-
dora Core 3) e di due schede di rete, una che li collega alla rete privata
sopracitata tramite uno switch della 3Com e l’altra che collega 2 host uno
                                 `
con l’altro. Per avere un’idea piu concreta del tipo di rete da monitorare
nella pagina seguente verr` illustrata la rete tramite un disegno.
                          a
14                                Monitoraggio e sicurezza delle reti LAN



                                                                `
     Il principale attore per lo smistamento delle informazioni e lo switch
3300 XM della 3COM che presenta le seguenti caratteristiche:

     • 24 porte che autonegoziano la velocit` di connessione
                                            a

     • Supporto virtual lan

     • Supporto del protocollo SNMP

     • Possibilit` di espansione della rete tramite il collegamento ad altri
                 a
       switch




                  Figura 2.4: Schema della rete da monitorare


                         `
     La caratteristica piu interessante, dal punto di vista del monitoraggio,
                  `
per questo switch e sicuramente il supporto del protocollo SNMP, infatti
                           `
grazie a questo protocollo e possibile richiedere tramite appositi messag-
gi delle informazioni allo switch aspettandosi delle risposte. I vari tipi
di messaggi con la struttura del protocollo SNMP verranno spiegati nel
                                                            `
prossimo capitolo. La caratteristica Manager / Agent invece e molto in-
teressante e merita una breve introduzione. Il protocollo SNMP lavora
2.4 Sicurezza in una lan                                                  15



secondo l’architettura client-server ed il ruolo del manager in genere al-
                     `
l’interno della rete e svolto da un Network Management mentre il ruolo
         `
di agent e svolto dalla struttura che si desidera monitorare.
                  `
   A questo punto e giusto chiedersi: perch´ monitorare una rete priva-
                                           e
                                                                     `
ta e studiarla a livello di sicurezza? Innanzitutto perch´ una LAN puo
                                                         e
essere attaccata dall’interno da qualche abile utente, in secondo luogo per-
ch´ un possibile soggetto attaccante potrebbe intercettare le informazioni
  e
in transito tramite appositi software.


2.4 Sicurezza in una lan
                                    `
La sicurezza all’interno della rete e fondamentale e per discutere questo
        `
aspetto e bene introdurre i vari tipi di attacchi che possono compromette-
                                                   `
re la stabilit` di una lan. Un attacco consistente e quello dello spoofing del
              a
mac address di un host. Per comprendere meglio questo tipo di attacco
`
e bene fare chiarezza sul contesto. Un host connesso ad una rete IP ha in
generale 2 indirizzi:


   • Mac Address

   • IP Address


                                                   `
   Il MAC address di una scheda ethernet in teoria e immutabile! Gli indi-
rizzi mac sono necessari affinch` il protocollo ethernet possa inviare in rete
                               e
dati indipendentemente dal protocollo applicativo utilizzato. Ogni trama
ethernet ha le dimensioni di 1500 byte e ogni frame ha un’intestazione che
contiene l’indirizzo mac del computer di partenza e del computer desti-
                              `                       `
natario. Il secondo indirizzo e l’indirizzo IP, ma IP e anche un protocollo
utilizzato per applicazioni indipendentemente da qualsiasi tecnologia di
rete operante in esso. Ogni computer (host) in una rete deve avere un in-
dirizzo IP univoco (nessun altro deve usarlo) per poter comunicare. Gli
indirizzi IP sono virtuali e sono assegnati via software. Per un corretto
funzionamento di una comunicazione in rete il protocollo IP ed il proto-
collo Ethernet devono lavorare insieme. IP comincia a costruire i pacchetti
16                                Monitoraggio e sicurezza delle reti LAN



che sono simili ai frame di livello 2 ma che hanno una struttura diversa.
Questo tipo di pacchetti non possono essere trasmessi senza il link-layer
dei dati.


     I pacchetti creati da IP sono trasmessi allo switch dopo essere stati in-
capsulati e dopo l’aggiunta dell’intestazione ethernet. Lo switch indica
a quale porta spedire il frame, controllando l’indirizzo di destinazione in
una tabella interna che mappa il numero della porta con il mac address di
destinazione.
Quando viene creata una trama da inviare in rete, il protocollo ethernet
non conosce qual` il mac address dell’ host di destinazione. L’ unica in-
                e
                       `
formazione che conosce e l’IP di destinazione. Quindi ci deve essere un
metodo per ottenere dall’indirizzo IP di destinazione il mac address della
                    `
macchina alla quale e destinato il pacchetto. In questo contesto entra in
gioco il protocollo ARP[3](Address Resolution Protocol).



2.4.1     Protocollo ARP
Per capire meglio il funzionamento di questo protocollo basta considerare
il seguente esempio. Una ARP request pone la domanda: il tuo indirizzo
   `              `                                                   `
ip e x.x.x.x.? Se e cos´ mandami il tuo Mac address. La richiesta ARP e un
                       ı
pacchetto broadcast che viene trasmessa a tutti i computer di una lan.
Ogni host controlla la richiesta ARP per verificare la presenza del proprio
IP e poi risponde inviando una risposta ARP contenente il suo mac ad-
dress. Per ridurre al minimo il numero di richieste ARP da trasmettere ad
ogni host i sistemi operativi tengono una cache di risposte ARP. Quando
un computer ricever` una risposta ARP, aggiorner` la sua cache ARP con
                   a                            a
la nuova associazione IP/MAC.
           `
Poich` ARP e un protocollo senza stato, la maggior parte dei sistemi opera-
     e
tivi aggiorner` la loro cache se riceveranno una risposta senza considerare
              a
se essi hanno inviato una vera e propria domanda.
2.4 Sicurezza in una lan                                                17



   Quando si parla di ARP spoofing[4] si ha a che fare con un attacco che
prevede la possibilit` , da parte di un host, di spoofare una entry da una
                     a
tabella (o cache) ARP di un host.


   Esempio (Host A, Host B della stessa lan):




   • Host A invia un ARP request (broadcast) con l’indirizzo IP di Host B;



   • Host B risponde con una falsa ARP reply (perch´ ha spoofato una
                                                   e
     entry ARP);



   • Nell’entry spoofata l’indirizzo IP di host B e associato ad un mac
                                                  `
     diverso dal proprio.


   • Host A completa l’header del suo messaggio e crede di inviarlo a
     Host B, ma fisicamente i pacchetti non vanno verso host B.




   Questo meccanismo di forzatura della cache arp di una macchina viene
chiamato ARP Poisoning cio` avvelenamento ARP.
                          e


                             `
   Lo Spoofing di mac address e basato sulla possibilit` per un sistema di
                                                      a
inviare trame ethernet aventi l’indirizzo MAC mittente diverso da quello
memorizzato nella propria scheda ethernet. Questo tipo di attacco avvie-
ne (nella maggior parte dei casi) sfruttando una debolezza del protocollo
ARP in fase di autenticazione.
   Nel prossimo paragrafo, dove verranno spiegate le basi dello spoofing
verr` anche introdotto il tipo di attacco Man in the middle cio` l’interpo-
    a                                                          e
sizione di un host (tra altre due macchine) capace di inviare riposte ARP
contraffatte dopo aver spoofato il mac address nei frames che invia.
18                                 Monitoraggio e sicurezza delle reti LAN



2.5 Spoofing
                                                                    `
Per comprendere meglio il contesto entro il quale si dovr` lavorare e op-
                                                         a
portuno aggiungere qualche informazione su questo argomento.
Dal dizionario informatico il termine inglese Spoofing si traduce con il ter-
mine imbroglio ed ha due signficati:



     1. Atto di introdursi in un sistema informativo senza averne l’autoriz-
       zazione. L’ intruso cambia il proprio numero IP, non valido per l’ac-
       cesso al sistema, in uno autorizzato.


     2. Tecnica che permette di rendere le linee di comunicazione sgombre
       da pacchetti inviati per il controllo della connessione, tramite router.



                                                    `          `
     Chiaramente in questo contesto la definizione piu corretta e la prima
e comunque non esiste un’unica tipologia di spoofing, ne esistono diversi
          `
tipi. I piu noti ed utilizzati sono:


     • web spoofing

     • mail spoofing

     • sms spoofing

     • ARP spoofing

     • DNS spoofing

     • IP spoofing


                                                               `
     In ogni caso si tratta di far credere alla vittima che si e qualcosa di di-
verso, un hostname, un indirizzo ethernet o altro ancora. Di questi tipi di
                                                     e`
spoofing verrr` analizzato solamente ARP spoofing perch´ e quello che va
             a
                                          `
ad attaccare la sicurezza delle LAN che puo essere attaccata dall’interno se
2.5 Spoofing                                                               19



vi sono utenti maliziosi.


       Un altro metodo di sniffing sulle reti switchate e il MAC flooding. Man-
                                                       `
dando risposte false ARP verso uno switch in maniera molto rapida la
tabella con le corrispondenze porte/MAC avr` un overflow.
                                           a



2.5.1      ARP Spoofing
               `
Questo attacco e applicabile solo su LAN ethernet e viene sfruttata una
modalit` promiscua delle schede ethernet. Una scheda ethernet in que-
       a
           a`
sta modalit` e in grado di vedere tutto il traffico della LAN (in pratica le
schede ethernet in modalit` promiscua possono esaminare frames desti-
                          a
nati a mac address diverso dal proprio). Ricordiamo ora come funziona
                                       `
ARP (Address Resolution Protocol). ARP e il protocollo che provvede a
far conoscere e diffondere il MAC address di una scheda su una LAN.


       Esempio: Un host (H) chiede: dove si trova D? A questo punto viene
cercato D nella rete e, appena risponde, invia il proprio mac address al-
                                                                 `
l’host H che aggiorner` la sua ARP table all’interno della quale e salvata
                      a
la corrispondenza mac address - ip.


       Un attacco a questa procedura consente al soggetto attaccante di ap-
propriarsi di dati ed informazioni che in realt` non sarebbero destinati a
                                               a
lui.


       Esempio: Il nemico si dichiara come host D; viene inviato un ARP re-
ply falso e l’host H invia al Nemico i dati destinati a D.


       Nel prossimo paragrafo verr` studiato quest’ultimo esempio in modo
                                  a
  `
piu rigoroso ed approfondito.
20                              Monitoraggio e sicurezza delle reti LAN



2.5.2   Attacco Man In The Middle
Uno Switch su una LAN smista i pacchetti a livello 2 del modello ISO/OSI.
Nonostante la presenza dello Switch e possibile effettuare un attacco Man
                                    `
in the Middle, senza la necessit` di settare la scheda Ethernet in modalit`
                                a                                         a
promiscua. Viene usata una tecnica chiamata Arp poisoning che e l’attivit`
                                                              `          a
di contraffazione della ARP table di una macchina. Se il nemico spedisce
ad una macchina un ARP reply con il proprio MAC address e con l’indiriz-
zo IP della macchina obiettivo, tutto il traffico indirizzato a quest’ultima
verr` instradato al nemico. Facendo questo per due diverse macchine
    a
obiettivo, avremo l’attacco Man in the Middle.




                   Figura 2.5: Attacco Man in The Middle




2.5.3   Tabelle statiche e ARPwatch come difese dall’attacco
        Man in the middle
Una soluzione hardware a questo tipo di attacco la si ottiene configurando
lo Switch in modo che il traffico in uscita da una porta non possa cambiare
MAC address.
2.5 Spoofing                                                               21



Le soluzioni software sono di due tipi:


   • Tabelle statiche di ARP; mediante il comando arp -s hostname hard-
     ware -address e possibile creare delle tabelle statiche di ARP: queste
                   `
     tabelle non possono essere modificate dall’esterno; questo metodo
     `
     e efficace ma oneroso per grandi LAN perch´ sarebbe necessaria
                                              e
     un’entry statica per ogni macchina in rete e comunque l’overhead
     delle tabelle sarebbe eccessivo.
     `
     E anche degno di nota il comportamento delle route statiche con win-
     dows. I test hanno scoperto che windows ancora accetta le risposte
     ARP false ed aggiorna l’entry statica con il mac contraffatto, sabo-
     tando lo scopo delle route statiche.


   • ARPwatch, un’utility che controlla i cambiamenti della ARP table;
     se vengono notati cambiamenti ARPwatch avvisa tramite email e ag-
     giorna i log.


   Non esistono comunque delle vere e proprie difese universali contro
l’attacco Arp spoofing. La clonazione di Mac Address si puo prevenire con
                                                         `
una caratteristica presente su alcuni tipi di switch (high-end) chiamata port
security (anche nota come Port Binding o Mac Binding).


   Port Security previene cambiamenti alle tabelle port/MAC di uno swit-
ch, a meno che non siano fatti dei cambiamenti dall’amministratore di rete.
                                 `
Non previene l’ARP Spoofing , non e adatto a reti di grandi dimensioni e
    `
non e utilizzabile con reti che utilizzano DHCP (Dynamic Host Configu-
ration Protocol). L’unica difesa possibile resta comunque la scoperta (cio`
                                                                          e
scoprire lo spoofing).


   L’ utilizzo di ARP Watch, che e un programma per sistemi unix dispo-
                                 `
nibile gratuitamente in rete, rende possibile l’ascolto delle risposte ARP
in rete. Il programma costruisce una tavola di associazioni IP/MAC e le
memorizza in un file. Quando il mac address associato ad un IP cambia
22                               Monitoraggio e sicurezza delle reti LAN



               `
(questo evento e chiamato flip -flop) viene inviata una mail all’ammini-
stratore di rete.


                                      `
     La clonazione di indirizzi MAC puo essere scoperta utilizzando anche
RARP (Reverse Address Resolution Protocol). RARP richiede l’indirizzo
IP di un MAC conosciuto. Mandare una sola richiesta RARP per tutti gli
indirizzi MAC di una rete potrebbe rivelare se qualche computer sta clo-
nando o se vengono ricevute risposte multiple per un solo mac-address.


                 `
     ARP spoofing e una delle vulnerabilit` dei moderni protocolli di rete
                                         a
      `
che puo permettere ad un soggetto attaccante un accorto, individuale e li-
bero regno su una rete. IP spoofing, TCP sequence prediction sono solo
                                                                    `
alcuni esempi di altri attuali punti deboli dei protocolli di rete. E impro-
babile che questi problemi siano affrontati dagli enti che standardizzano i
               e              a                                `
protocolli finch` non se ne far` abuso su larga scala; comunque e impor-
tante affrontare questi argomenti e prevenire questi attacchi in modo da
garantire stabilit` e maggiore sicurezza all’interno di una rete.
                  a


                                 `
     L’obbiettivo di questa tesi e quello di realizzare uno strumento per
controllare l’associazione tra i mac address degli host ed il numero di
porta dello switch, per aumentare le possibilit` di controllo da parte del-
                                               a
l’amministratore e migliorare la sicurezza del link-layer all’interno di una
LAN.
Capitolo 3

Protocollo SNMP

3.1     Il bisogno di standardizzazione
                                                                  `
Per gestire la variet` di componenti presenti su una rete moderna e neces-
                     a
saria una standardizzazione in modo da controllare con un unico proto-
collo tutti gli apparati di rete.
   Sono stati creati due principali protocolli: SNMP e CSMIE/CMP (che
significano rispettivamente Simple Network Management Protocol and
Common Management Information Service Element / Common Mana-
                                          `
gement Information). Tra i due protocolli e prevalso il protocollo SNMP
anche se in un primo momento si era pensato di poter lavorare indiffe-
rentemente con uno dei due protocolli per ottenere informazioni dai vari
componenti della rete.


   Il protocollo SNMP nasce ufficialmente nel 1989 e viene definito dal-
la IEFT[5]; da quel momento SNMP diventa un protocollo standard per
controllare gli apparati di rete tramite un’ unica applicazione di controllo.
La comunicazione avviene attraverso il protocollo IP (Internet Protocol)
infatti la prima implementazione avviene su protocollo TCP/IP, ma in se-
guito verr` sviluppato anche su altri tipi di rete come IPX e AppleTalk.
          a
Consultando anche altre fonti, come la documentazione[6] che analizza le
caratteristiche di base di SNMP, ci si rende conto che per un amministra-
                                        `
tore la conoscenza di questo protocollo e fondamentale, perch´ permette
                                                             e
di monitorare, configurare i vari apparati e isolare i componenti difettosi
24                                                          Protocollo SNMP



che si possono trovare su una rete.


     Il protocollo lavora al livello 7 (livello applicativo)del modello ISO/OSI
(standardizzato dall’ente ISO[7]) ed utilizza normalmente l’UDP (User Da-
tagram Protocol) oltre ad un metodo di comunicazione client-server.




                     Figura 3.1: SNMP nel modello ISO-OSI

     Questo metodo di comunicazione si riflette anche sui componenti del
protocollo che principalmente sono:

     • Manager: e un’applicazione software che viene installata su un com-
                `
       puter della rete che verr` utilizzato come stazione di controllo NMS
                                a
       (Network Management Station); esistono inoltre molti software per
                        `
       le piattaforme piu diffuse in modo da non obbligare l’amministrato-
       re di rete ad orientarsi su una determinata piattaforma.


     • Agent: gli agenti risiedono sui dispositivi della rete (switch, rou-
       ter ...) e generano informazioni sul dispositivo. Queste informazioni
       vengono memorizzate all’interno di MIBs (Management Information
       Bases). Questi piccoli database verranno analizzati meglio nel pros-
       simo capitolo
3.2 Messaggi SNMP                                                         25



   Per avere un’idea della struttura manager/agent del protocollo SNMP
basta osservare la seguente figura




               Figura 3.2: Architettura Manager/Agent SNMP


   Tale architettura consente di gestire degli elementi di rete (che sono ap-
parecchiature come router, switch, hub, pc, etc.) usando degli agents, cio`
                                                                          e
moduli software che risiedono sulle apparecchiature da gestire, come ri-
portato in figura 3.2. Tali agents comunicano con una stazione di gestio-
ne centralizzata (Network Management Station o NMS) che, interagendo
con i primi, possono leggere o scrivere informazioni e raccogliere eventua-
li segnalazioni di errore. Le informazioni o le caratteristiche gestibili per
una particolare apparecchiatura, mediante il protocollo SNMP, verranno
indicate come oggetti gestiti. L’insieme di questi oggetti costituisce un’a-
strazione di database detta Management Information Base (MIB) che verr`
                                                                      a
illustrata nei prossimi paragrafi ed in modo particolarmente approfondito
nel prossimo capitolo.


3.2 Messaggi SNMP
I messaggi vengono incapsulati in PDU (Process Data Unit) e viaggiano in
rete grazie al protocollo SNMP che permette uno scambio di informazioni
26                                                           Protocollo SNMP



tra i vari dispositivi. I cinque tipi di messaggi utilizzati sono:


     • GetRequest. Utilizzato per richiedere valori specifici all’Agent sfrut-
       tando il comando get.


     • GetNextRequest. Molto simile al messaggio GetRequest, il Get-
       NextRequest viene utilizzato per scoprire tutti i dispositivi che sup-
       portano il protocollo SNMP all’interno di una rete. Il manager di rete
       con questo comando ogni volta che incontra un nodo SNMP conti-
       nua la ricerca.
       Quando viene riscontrato un errore allora il manager si ferma ed in-
       terrompe la ricerca perch´ ha gi` mappato tutti i nodi SNMP della
                                e      a
       rete.


     • SetRequest. Permette il controllo del dispositivo da remoto trami-
       te SNMP. Tramite il comando set e possibile abilitare o disabilitare
                                       `
       un’interfaccia, pulire i registri, disconnettere utenti ed utilizzare al-
       tre funzioni associate al dispositivo di rete.


                    `
     • GetResponse. E il comando utilizzato dai device di rete per rispon-
       dere alle richieste dei comandi Get, Get-Next, Set.


     • Trap. Messaggio molto interessante attraverso il quale l’agent man-
       da al manager delle informazioni riguardanti il proprio stato oppure
       segnala la presenza di qualche errore. Occorre configurare i vari di-
       spositivi di rete per far in modo che questi restino in attesa di mes-
       saggi trap.


     In generale quindi le comunicazioni con l’ agent SNMP avvengono in
2 modi: Per i primi quattro tipi di messaggi, si ha una sequenza reque-
st/response.
3.2 Messaggi SNMP                                                     27




                   Figura 3.3: Richiesta e risposta SNMP



                                     `
   mentre nel caso dei messaggi Trap e l’ agent ad inviare al manager una
richiesta segnalando la presenza di un eventuale errore.




                        Figura 3.4: Messaggio Trap
28                                                       Protocollo SNMP



     Con la seguente immagine vengono riassunti tutti i messaggi SNMP.




                         Figura 3.5: I messaggi SNMP


     Nella seconda versione del protocollo sono aggiunti altri tre comandi:


     • GetBulkRequest. Accumula in un’unica transazione la request e la
       response, in modo da risparmiare su informazioni e velocizzare il
       protocollo. In pratica Get-Bulk si comporta come una serie di in-
       terazioni GetNextRequest / GetResponse, eccetto il caso in cui sia
       sufficiente una singola interazione


                          `
     • SNMPv2TrapRequest. E stata necessaria la costruzione di un co-
       mando per i messaggi Trap per la seconda versione di SNMP perch´
                                                                      e
       le caratteristiche di questi messaggi sono leggermente differenti da
       quelle della prima versione del protocollo.


     • InformRequest. Conferma la notifica di eventi al manager.


     Queste caratteristiche dei messaggi SNMP verranno richiamate nella
parte relativa all’evoluzione del protocollo.
3.3 Versioni SNMP                                                          29



3.3    Versioni SNMP
Consultando come documentazione[8] e [9], si possono ricavare ulteriori
                                                                    `
informazioni sulla struttura del protocollo SNMP. Questo protocollo e sta-
to realizzato unicamente per poter lavorare al livello applicativo ISO/OSI;
per il trasporto delle informazioni esso si basa sul protocollo UDP. Si cerca
                           `
di mantenere gli agent i piu semplici possibili e concentrare tutta la parte
operativa del protocollo all’interno della stazione manager.


                                            `
   Una rete gestita tramite protocollo SNMP e formata da quattro
elementi:

  1. Manager (stazione di gestione); serve a mettere in comunicazione
      diretta l’amministratore di rete e il sistema da gestire. Possiamo iden-
      tificare 4 fasi funzionali che caratterizzano la stazione di gestione.
      Esse si dividono in funzioni che rimangono indipendenti dall’imple-
      mentazione ed in funzioni che fanno parte dello standard SNMP. Nel
      primo caso le funzioni sono:

        • processi che comunicano sulla rete inviando comandi e riceven-
            do risposte.


        • interfaccia grafica per l’amministratore di rete.


      Nel secondo caso le funzioni hanno la capacit` di trasportare le ri-
                                                   a
      chieste dal software applicativo agli agenti remoti e memorizzare in
      un database le informazioni che si ottengono dagli agent.


  2. Agent;
      Il protocollo SNMP prevede un’architettura Manager/Agent, dove
              `
      l’Agent e indispensabile per la comunicazione. Esso risponde alle ri-
      chieste del manager o NMS (Network Managemet Station) ed esegue
                     `
      le operazioni. E possibile trovare il processo Agent in vari disposi-
      tivi di rete come ad esempio (switch, router ...). Tramite SNMP si
30                                                         Protocollo SNMP



       possono utilizzare anche agenti proxy che riescono a far comunicare
       SNMP con il dispositivo ed i suoi protocolli proprietari. Inoltre un
       Agent al suo interno contiene un database di variabili che servono
       per identificare le varie informazioni reperibili nel dispositivo stesso.


     3. MIB (Management Information Base);


              `                                                    `
       Il MIB e la descrizione di cosa effettivamente il manager puo richie-
                                                                   `
       dere al dispositivo da monitorare. Nel linguaggio comune pero il
           `
       MIB e definito come il database che contiene tutte le possibili infor-
                                `
       mazioni che il manager puo reperire dalla rete. Tale database ha una
       struttura gerarchica ad albero.


     4. Protocollo per la gestione;


       Permette: sia alla stazione di gestione il recupero del valore delle va-
       riabili MIB dall’agent grazie al comando get , sia all’agent di comu-
       nicare determinati eventi alla stazione di gestione grazie al comando
       trap.
3.3 Versioni SNMP                                                            31



3.3.1     SNMPv1
La prima versione del protocollo nasce con delle caratteristiche che si man-
terranno tali anche con lo svilupparsi del protocollo nelle versioni succes-
sive.



   • Indipendenza dalle architetture di rete e dalle piattaforme utilizzate;



   • La semplicit` d’ utilizzo (la prima versione del protocollo prevedeva
                 a
        solo pochi essenziali comandi);



   • La trasportabilit` ;
                      a



   • L’ estensibilit` applicativa (in altre parole la possibilit` di sviluppare
                    a                                           a
        nuove funzioni di management senza, per questo, dover modificare
        gli Agent);



   • L’ indipendenza dalle architetture delle reti o delle piattaforme uti-
        lizzate



   • La robustezza dovuta alla semplicit` del protocollo di trasporto UDP
                                        a
        e alla facilit` di testing che questo implica (non necessita di multith-
                      a
        reading per gestire le connessioni).



   • Indipendenza da altri servizi di rete.



   • Applicabilit` a basso costo a tutti i devices, nuovi ed esistenti (alme-
                 a
        no per il lato Agent).
32                                                         Protocollo SNMP



     Inoltre i moduli Agent sono in ascolto sulla porta UDP 161, le risposte
sono inviate alla Network Management Station (Manager) utilizzando un
                                                                  `
numero di porta casuale. La dimensione massima del pacchetto SNMP e
limitata solamente dalla massima dimensione del payload UDP(65507 by-
te) ed i messaggi di errore e le eccezioni (Trap) sono spediti dall’Agent al
Manager in maniera asincrona utilizzando la porta UDP 162.



3.3.2     SNMPv2
                                                              `
Come gi` detto in precedenza, SNMP, nella sua prima versione, e stato
       a
progettato e realizzato per soddisfare esigenze di performance e quindi ha
una struttura molto semplice e snella che, tuttavia, ne limita le funzionali-
t` e anche gli aspetti di sicurezza.
 a


                    `
     Per questo, si e cercato di rimpiazzarlo con una sua successiva versio-
                                 `
ne: SNMPv2. Anche se SNMPv2 ha piu sotto-versioni, non ha mai preso
                                                                 `
troppo campo nel mondo Internet, fatta eccezione per SNMPv2c che e, al-
                                                            `
meno in qualche caso, usata anche oggi. Questa versione non e mai stata
standardizzata da IETF.


     In SNMPv2c, tra le novit` rispetto a SNMPv1, sono state aggiunte al-
                             a
                              `
cune operazioni che rendono piu semplice l’accesso ai Mib. I comandi
aggiunti sono:



     • GetBulk: Una GetNext alla quale si puo specificare il numero di nuo-
                                            `
                                                           `
        ve variabili da leggere. Se il campo non-repeaters e settato a 1, Get-
        Bulk, prima di fare le GetNext, esegue anche la get e, nel caso che la
        variabile non esista, non invia un errore, bens` esegue direttamente
                                                       ı
        le GetNext.
                                         `
        Un aspetto critico di questa PDU e il valore di max-repetitions, cio`
                                                                            e
                                                                `
        il numero di GetNext da fare: infatti, se questo valore e piccolo po-
        trebbe convenire fare delle GetNext singole, (probabilmente per l’ef-
                                    `                  `
        ficienza), se, al contrario, e troppo grande, puo accadere di leggere
3.3 Versioni SNMP                                                         33



                           `
      molte variabili in piu di quelle che realmente interessano. Nel caso
                                                               `
      in cui il numero di ripetizioni sia grande, la GetBulk puo occupare in
      maniera consistente l’Agent.


   • Inform: Una Trap di SNMPv1 che, pero, prevede una risposta da
                                        `
      parte dell’Agent.



                          `                              `
   Un’altra miglioria che e stata introdotta con SNMPv2c e l’ampliamento
del numero dei possibili messaggi di errore. Spesso in SNMPv1, i messag-
gi di errore erano generici e poco chiarificatori; nel v2c, invece, se ne sono
                                                                    `
aggiunti di nuovi, cos` da permettere al Manager di avere un’idea piu chia-
                      ı
                       `
ra dei problemi in cui e incorsa la PDU che ha inviato. Questa modifica del
protocollo vale in special modo per quanto riguarda la PDU della Set.


          `
   SNMPv2 e stato progettato, inoltre, per essere Transport Independent,
cio` portabile su tutti i protocolli di livello Transport.
   e
   Con questi cambiamenti, SNMPv2 ha migliorato la performance, ri-
                                                                           `
spetto al v1, soprattutto grazie all’introduzione di GetBulk, a scapito pero
dell’efficienza del protocollo che, per tutte queste nuove introduzioni, ri-
sulta molto appesantito rispetto al suo predecessore e, forse per questo,
non ha invaso il mercato.
34                                                          Protocollo SNMP



3.3.3     SNMPv3
Nasce a partire dalla seconda met` del 1999 e rappresenta l’ultima evolu-
                                 a
zione del protocollo SNMP. In seguito verranno analizzate le caratteristi-
      `                                    `
che piu innovative di questa versione, che e stata realizzata per rimediare
alle mancanze delle precedenti versioni nell’ambito della sicurezza delle
trasmissioni.


     Le caratteristiche di base di questo protocollo sono innanzitutto la sca-
labilit` , la sua architettura (progettata per essere scalabile e duratura) e la
       a
sua trasportabilit` (si utilizzano le stesse MIBs delle versioni precedenti).
                  a
             `
Nonostante cio, la versione 3 non ha, almeno per ora, trovato grosso spa-
zio sul mercato, dove continua ad essere adottata la prima versione perch´
                                                                         e
                                  a`
la maggiorazione delle funzionalit` e andata a scapito della semplicit` del
                                                                      a
                                                           `
protocollo. La classica architettura di tipo Manager/Agent e stata sosti-
                           `
tuita, in SNMPv3, da una piu complessa, composta da SNMP Engine e
SNMP Applications:



     • Snmp-Engine e un motore smistatore di messaggi, un sottosistema
                   `
        per elaborare i messaggi, uno per la sicurezza e uno per il controllo
        dell’accesso.



     • Snmp-Applications e un’applicazione che contiene un generatore di
                         `
        comandi, un ricettore di notifiche, un risponditore ai comandi e altre
        funzioni.



     I messaggi SNMPv3 sono sostanzialmente diversi da quelli visti in pre-
cedenza, infatti includono anche alcuni parametri di sicurezza ed il con-
trollo dell’accesso. Questo protocollo consente di accettare messaggi sola-
mente se le interrogazioni ricevono una risposta affermativa o comunque
valida.
3.3 Versioni SNMP                                                         35



                                             `
   Utilizza diversi livelli di sicurezza e puo stabilire se consentire un ac-
cesso:



   • senza autenticazione

   • con semplice autenticazione

   • con autenticazione e codifica dei dati

   Per utilizzare questo protocollo esiste un software scritto in C++ chia-
                               `
mato OpenSNMP. Questo software e una delle implementazioni open-
                                                       `
source del protocollo nella terza versione (SNMPv3) ed e utilizzato come
motore multi-threading.
36   Protocollo SNMP
Capitolo 4

Management Information Base

                                          `
La Management Information Base[10] (MIB), e una base di dati contenente
tutte le informazioni gestite dall’agent SNMP che e in funzione sulla device
                                                  `
monitorata. MIB ha una struttura ad albero e le parti terminali dell’albero
                                                               `
(foglie) rappresentano gli oggetti gestiti, ognuno dei quali puo rappresen-
tare risorse o informazioni.


   In generale gli oggetti MIB si dividono in due tipi:


   • Discrete MIB Objects

   • Table MIB Objects


Gli oggetti discreti SNMP contengono solamente una parte precisa e ben
definita dei dati utili alla gestione. Questi oggetti sono spesso distinti dai
Table Objects aggiungendo un’estensione .0 (dot-zero) ai loro nomi (se
                                                            `
l’estensione .0 viene omessa da un nome di un oggetto SNMP, e sempre
considerata implicita).

Gli oggetti SNMP definiti table (tabella) contengono parti multiple di da-
ti o valori per la gestione. Questa categoria di oggetti si distingue dagli
oggetti discrete aggiungendo . (dot-extension) ai loro nomi seguito da un
numero che distingue unicamente il valore particolare a cui si fa riferimen-
to. La dot-extension si riferisce, in certa letteratura, al numero dell’istanza
38                                         Management Information Base



dell’oggetto SNMP. Nel caso degli oggetti discrete, questo numero sar` ze-
                                                                     a
ro, mentre nel caso degli oggetti table , questo numero sar` l’indice nella
                                                           a
tabella SNMP.


     Molti oggetti SNMP sono discreti, questo significa che l’operatore de-
ve soltanto conoscere il nome dell’oggetto e nessun’altra informazione.
Gli oggetti discreti rappresentano spesso dei valori standard di un dispo-
sitivo, particolarmente utili per ricavare informazioni dalla rete al fine di
monitorare e soprattutto confrontare le prestazioni dei dispositivi di vari
                                                                   `
produttori. Se l’estensione (numero dell’istanza) dell’oggetto non e speci-
ficata, esso viene presupposto come 0 (dot-zero).


                                   `
     Il MIB di un dispositivo SNMP e solitamente fisso; viene progettato e
                                                          ´
implementato dai produttori del device ed in genere non puo essere ag-
giunta o modificata nessuna funzione gi` esistente. Per questo motivo
                                      a
quando si parla di estendibilit` SNMP ci si riferisce al software che ammi-
                               a
                                        `                   `
nistra il protocollo SNMP, infatti esso e un software che puo essere facil-
mente compilato/ricompilato per interfacciarsi con le funzioni aggiuntive
del dispositivo di rete.



Gli oggetti all’interno di una MIB vengono definiti in base alle strutture
SMI.



4.1 Struttura delle informazioni
La Structure of Management Information (SMI), definita nella[11], defini-
sce in modo standard, la struttura delle informazioni degli oggetti gestiti
e la loro gerarchia. La definizione degli oggetti gestiti presenta tre aspetti
principali:



     • Il nome, object identifier (OID). I nomi possono essere visualizzati
       sottoforma numerica e letterale.
4.1 Struttura delle informazioni                                            39



   • L’ Abstract Syntax Notation One (ASN.1) definisce il tipo di dato
     associato ad ogni oggetto gestito e permette l’indipendenza dal tipo
     di macchina utilizzata.

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

   Le caratteristiche principali della struttura SMI sono: la semplicit` , in-
                                                                       a
fatti possono essere utilizzati valori scalari o tabelle bidimensionali di sca-
lari per rappresentare i moduli MIB e l’estendibilit` .
                                                    a


   Esistono due insiemi di dati definiti dall’SMI:


                 `
   Universal che e indipendente dall’applicazione, nel quale possiamo
trovare (Integer, Octect string, Null, Object identifier (per identificare ogni
oggetto), Sequence, Sequence-of (per la definizione di tabelle).


                    `
   Application, che e rilevante per una particolare applicazione. Nel-
la seguente tabella vengono riassunti i tipi di dato comuni a moltissime
applicazioni:

        Tipo di Dato                      Descrizione
        Counter                             `
                            contatore che puo essere incrementato,
                            riparte da 0 in caso di raggiungimento
                                      della soglia massima
        Gauge                               `
                            contatore che puo essere incrementato
                             e decrementato. Quando raggiunge il
                             valore massimo necessita di un reset
        Ipaddress           unico tipo di Network Address, viene
                                      definito al momento
        Networkaddres               definito dal costruttore
        Opaque               necessario per trasferire dati arbitrari
                               codificati mediante Octect String;
        Timeticks           conta il numero di secondi a partire da
                                 un valore di inizio concordato
40                                           Management Information Base


     `
     E inoltre possibile definire oggetti MIB; SNMP prevede tutti gli stru-
menti per farlo partendo dai tipi fondamentali.


4.2     Strutture delle MIB
Lo schema in figura 4.1 riassume la struttura ad albero SNMP MIB e
visualizza anche la parte della MIB2.




                            Figura 4.1: Albero MIB



A partire dall’alto della gerarchia MIB, sono presenti le organizzazioni
standard a livello mondiale (ccitt, joint-iso-ccitt e iso; quest’ultima ha
identificatore 1).
4.2 Strutture delle MIB                                                  41



L’albero prosegue e l’iso utilizza il numero 3 per identificare org (insieme
delle organizzazioni riconosciute e che possono emanare standard) che
riserva l’identificatore 6 per il dod (Department of Defense americano). Da
questo punto nasce il sotto albero internet con identificatore 1.

   Utilizzando la notazione ASN.1 :


    internet OBJECT IDENTIFIER ::= iso(1) org(3) dod(6) internet(1)


    ovvero OID=1.3.6.1


   Internet, si suddivide a sua volta in altri quattro nodi:

   • Directory: Utilizzato da osi per sviluppi futuri;



   • Mgmt: contiene le MIB definite dall’Internet Architecture Board (IAB)
                                                                 `
     [12], un ente che si occupa dello sviluppo di Internet. Non e pos-
     sibile che entrambe le MIB (MIB-I e MIB-II) siano presenti nel sot-
                 `
     toalbero ed e per questo motivo che esse possiedono lo stesso OID
     (1.3.6.1.2.1);



   • Experimental: contiene oggetti utilizzati per gli esperimenti in Inter-
     net;



   • Private: contiene le MIB definite dai costruttori (solo quelli che si
     registrano all’ Internet Assigned Number Authority (IANA)[13]) nel
     sotto ramo enterprise.



                                                       `
   La struttura gerarchica ad albero del nodo internet e di fondamen-
tale importanza sia per la crescita dell’SNMP MIB che per il continuo
aggiornamento del protocollo SNMP.
42                                          Management Information Base



4.3 RMON MIB
Era il 1991 quando fu pubblicato nella [14] un ulteriore gruppo appar-
tenente alla categoria MIB (Management Information Base) chiamato -
RMON MIB (Remote Network Monitoring MIB; molte informazioni su
questo gruppo di mib si possono trovare consultando [15]). Questa RFC
contiene i tools necessari per una network management station (o NMS) in
modo che essa possa controllare e configurare un monitor (una sorta di
nodo che controlla le informazioni della rete).
                   ´
Il ramo RMON MIB puo essere a sua volta suddiviso in altre sezioni:




                       Figura 4.2: Struttura RMON MIB


     Tra questi MIB, quello di particolare importanza per il monitoraggio
                     `                      ´
delle reti switchate e Matrix. Questo MIB puo essere diviso in due tabelle;
una tabella di controllo ed una tabella per i dati (divisa in due parti).


     La Matrix Control Table e una tabella che identifica un’interfaccia per
                             `
controllare e identificare il massimo numero di coppie di indirizzi sorgen-
                                                                ´
te/destinazione (quando la tabella si riempie le associazioni piu vecchie
vengono cancellate).
4.4 MIB2                                                                  43



   La Matrix Source-to-Destination Table (matrixSDTable) contiene un set di
statistiche che tengono traccia dell’ammontare del traffico tra due sistemi.
Gli elementi di questa tabella sono conteggi di pacchetti, di byte e di erro-
ri. Quando manca dello spazio vengono cancellate le informazioni.


   Questa tabella ha come indici le seguenti informazioni nel seguente or-
dine:


  1. Interfacce controllate

  2. indirizzo fisico della sorgente

  3. indirizzo fisico della destinazione

   La Matrix Destination-to-Source Table (matrixDSTable) e identica alla pre-
                                                         `
cedente tabella, cambiano solamente gli ordini degli indici:


  1. Interfacce controllate

  2. indirizzo fisico della destinazione

  3. indirizzo fisico della sorgente

                                      `
   Attualmente lo standard utilizzato e la MIB-II e queste informazioni
sui MIB sono difficili da trovare su uno switch commerciale. Per que-
sto motivo nei prossimi paragrafi verranno presentati esempi concreti, in
particolare verranno controllati i MIB-II.


4.4 MIB2
       `                `
MIB-II e suddiviso in piu gruppi, ognuno dei quali raccoglie informazioni
                                               `
per la gestione e l’analisi della rete. MIB-II e un gruppo molto importante
all’interno dell’albero perch´ ogni workstation che supporta SNMP sup-
                             e
porta anche MIB-II. Esso rappresenta la seconda versione della base di in-
                                             `
formazioni di gestione e la sua definizione puo essere consultata all’inter-
                                                              `
no dell’RFC 1213. La struttura ad albero contenente la MIB-II e quella vista
44                                          Management Information Base



nella figura 4.1, mentre la seguente tabella descrive cosa rappresentano i
nodi che la compongono.


 MIB-II                  OID                         Descrizione
 system (1)          1.3.6.1.2.1.1    Oggetti riguardanti il sistema operativo.
 interfaces (2)      1.3.6.1.2.1.2           Stato di ogni interfaccia di
                                          una periferica gestita, raccoglie
                                            dettagli sul traffico inviato,
                                        ricevuto e su errori di trasferimento.
 at (3)              1.3.6.1.2.1.3             Gruppo non utilizzato.
 ip (4)              1.3.6.1.2.1.4     Contiene dati sul routing e su tutti gli
                                           aspetti relativi al protocollo IP.
 icmp (5)            1.3.6.1.2.1.5        Dati relativi al protocollo ICMP.
 tcp (6)             1.3.6.1.2.1.6     Fornisce lo stato della connessione ed
                                       altre informazioni sul protocollo TCP.
 udp (7)             1.3.6.1.2.1.7       Informazioni sul protocollo UDP.
 egp (8)             1.3.6.1.2.1.8         Dati relativi al protocollo EGP.
 transmission (10)   1.3.6.1.2.1.10      Riguarda informazioni specifiche
                                                 sulla trasmissione.
 snmp (11)           1.3.6.1.2.1.11          Dati sul protocollo SNMP
                                              (Presente solo in MIB-II)
4.4 MIB2                                                                  45



4.4.1   RMON 2
La tabella seguente descrive gli elementi del gruppo RMON2.


        RMON2 Group                           Descrizione contenuto
     Protocol Directory(11)               Lista dei protocolli monitorabili
   Protocol Distribution(12)        Numero di octets e pacchetti dei protocolli
                                                   a livello di rete
        Address Map(13)                 lista di associazioni mac-address/IP
                                        e l’interfaccia dalla quale sono state
                                            ricavate queste informazioni
   Network Layer Host(14)               Conta l’ammontare del traffico da e
                                             verso un indirizzo di rete
  Network Layer Matrix(15)          Conta l’ammontare del traffico tra coppie di
                                                  indirizzi di rete
  Application Layer Host(16)      Conta l’ammontare del traffico, per protocollo,
                                     spedito e ricevuto da un indirizzo di rete
 Application Layer Matrix(17)      Conta l’ammontare del traffico, per protocollo
                                    spedito e ricevuto da una coppia di indirizzi
                                                       di rete
        User History(18)          Controlla periodicamente le variabili dell’utente
                                    e costruisce log in base ai parametri definiti
                                                    dagli utenti.
    Probe Configuration(19)       Definisce configurazioni per i parametri standard
                                                     di RMON

                                       `
   Dalla documentazione della 3Com[16] e possibile ricavare ulteriori in-
formazioni sulla gerarchia MIB-2, in particolare due dei sotto rami di que-
sto gruppo, sono delle MIB complementari chiamate RMON ed RMON2.
RMON2 estende le capacit` dell’originale RMON MIB aggiungendo pro-
                        a
tocolli per il MAC level.
46                                          Management Information Base



     Siccome sono inclusi anche i protocolli a livello di rete (come il pro-
             `
tocollo IP), e possibile monitorare il traffico attraverso router/switch col-
                                      `
legati alle sottoreti locali. RMON2 puo essere utilizzato per identificare
caratteristiche sul traffico e per scoprire applicazioni lente. Inoltre utiliz-
               `
zando RMON2 si e in grado di monitorare:



     • La sorgente del traffico che arriva ad un router tramite un’altra rete

     • La destinazione del traffico che parte da un router tramite un’altra
       rete

                                                                `
Siccome RMON2 include anche protocolli del livello applicativo, e in gra-
do di ottenere informazioni dettagliate sul breakdown di traffico provenien-
te da un’applicazione.
4.5 MIB specifiche                                                        47



4.5     MIB specifiche
Consultando [17] si possono ottenere dei Mib specifici, come quelli della
famiglia Forwarding Database for Transparent Bridges che contengono tutte le
informazioni sulla tabella che memorizza corrispondenze tra mac address
ed indirizzi di porta di uno switch.


4.5.1    dot1dTpFdbAddress
Qualche dettaglio per le variabili MIB che includono OIDs (Object Identi-
fiers) lo possiamo ottenere direttamente dalla documentazione della
CISCO [18] che riporta i due OIDs necessari per i mac address e per i nu-
meri di porta dello switch.



.1.3.6.1.2.1.17.4.3.1.1
dot1dTpFdbAddress OBJECT-TYPE
        -- FROM BRIDGE MIB
        -- TEXTUAL CONVENCTION MacAddress
        SYNTAX           OCTECT STRING (6)
        MAX-ACCESS       read-only
        STATUS           mandatory
        DESCRIPTION      "A unicast MAC address for which
the bridge has forwarding and/or filtering information."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1)
dot1dBridge(17) dot1dTp(4) dot1dTpFdbTable(3)
dot1dTpFdbEntry(1) 1 }}




   Questo tipo di MIB che numericamente si presenta cos`:
                                                       ı



                              .1.3.6.1.2.1.17.4.3.1.1

   `
   e un oggetto di sola lettura che permette la visualizzazione dei singoli
MAC Address che lo switch ha inserito nella tabella di forwarding.
48                                           Management Information Base



4.5.2    dot1dTpFdbPort
Per quanto riguarda i numeri di porta, consultando la stessa documenta-
                          `
zione del caso precedente e possibile ottenere maggiori informazioni sul
MIB.


.1.3.6.1.2.17.4.3.1.2
dot1dTpFdbPort OBJECT TYPE
        -- FROM BRIDGE MIB
        SYNTAX Integer
        MAX ACCESS read only
        STATUS Mandatory
        DESCRIPTION "Either the value "0", or the port
number of the port on which a frame having a source
address equal to the value of the corresponding instance
of dot1dTpFdbAddress has been seen. A value of "0"
indicates that the port number has not been learned, but
that the bridge does have some forwarding/filtering
information about this address (that is,in the
StaticTable). Implementors are encouraged to assign the
port value to this object whenever it is learned, even
for addresses for which the corresponding value of
dot1dTpFdbStatus is not learned(3)."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib 2(1)
dot1dBridge(17) dot1dTp(4) dot1dTpFdbTable(3)
dot1dTpFdbEntry(1) 2 }


     Questo tipo di MIB, che numericamente si presenta cos´:
                                                          ı


                             .1.3.6.1.2.1.17.4.3.1.2

     `
     e un oggetto di sola lettura che permette la visualizzazione dei singoli
numeri di porta che lo switch ha inserito nella tabella di forwarding/filtering.
                                                           `
Se ritorna un valore 0 significa che il numero di porta non e stato memo-
rizzato bene nella tabella di associazioni dello switch.
Capitolo 5

Net-SNMP

5.1      Un software open source
La scelta di Net - SNMP come software da utilizzare per il monitoraggio
di una lan ha svariati vantaggi:

   • Licenza GPL (General Public Licence), e supportato da una comunit`
                                           `                          a
        diffusa in tutto il mondo

   • Praticit` di utilizzo
             a

   • Utilizza il protocollo SNMP diventato ormai uno standard nei router
                         `
        e negli switch piu diffusi.

     ` a
   • E gi` preinstallato nelle ultime versioni delle distribuzioni linux piu
                                                                           ´
        diffuse

                            `
   In generale il pacchetto e l’implementazione open - source del protocol-
lo SNMP e come tale prevede tutte le versioni e tutti i comandi di questo
protocollo.



5.1.1     Le caratteristiche di Net-SNMP
                       `
Dalla linea di comando e possibile richiedere informazioni ed interagire
con un dispositivo SNMP con i seguenti metodi:
50                                                               Net-SNMP



     • Richieste singole (snmpget, snmpgetnext)

     • Richieste multiple (snmpwalk, snmptable, snmpdelta)

     • Manipolazione delle informazioni di configurazione di un dispositi-
       vo (snmpset)

     • Conversione dalla forma numerica a quella testuale del MIB, visua-
       lizzazione sia del contenuto sia della struttura del MIB (snmptran-
       slate)

     Inoltre e presente un browser grafico del MIB (tkmib), scritto in Tk/perl
             `
ed un demone per la ricezione delle notifiche del SNMP (snmptrapd).
Le notifiche selezionate possono essere annotate (su syslog o in un norma-
le file di testo), per poi essere spedite ad un altro sistema di ammini-
strazione di SNMP o essere passate ad un’applicazione esterna.
`
E compreso anche un agente estendibile per la risposta alle domande
del SNMP per informazioni in materia di gestione (snmpd). Inoltre inclu-
de il sostegno incorporato di una vasta gamma di moduli delle informa-
                `
zioni MIB che puo essere estesa usando moduli caricati dinamicamente,
scritti esterni ed ordini, sia con i protocolli di funzionamento in multiplex
dell’ SNMP (SMUX) che con l’estensibilit` dell’agente (AgentX).
                                        a


     Come ultima caratteristica NET -SNMP prevede delle librerie per svi-
luppare nuove applicazioni del protocollo SNMP, sia con il linguaggio C
che tramite il Perl.


     NET-SNMP funziona sulle principali distribuzioni Unix come per i si-
stemi operativi Microsoft Windows.
5.2 Installazione Net-SNMP                                                  51



5.2    Installazione Net-SNMP
                                `
L’ultima versione del programma e comodamente scaricabile da source-
forge (all’indirizzo http://sourceforge.net/project/showfiles.php?group id=12694),
occorre semplicemente estrarre e compilare il file scaricato utilizzando i se-
guenti comandi:


                       tar zxvf net- snmp- 5.3.1.tar.gz
                       cd net- snmp- 5.3.1
                       ./configure
                       su
                       make install

   Una volta installato, per controllare l’effettivo funzionamento del pro-
gramma basta digitare da shell il seguente comando che traduce dalla for-
ma numerica a quella letterale un MIB


                      # snmptranslate .1.3.6.1.2.1.1.3.0


                      SNMPv2-MIB::sysUpTime.0

         `                         `
   Se si e connessi alla rete si puo provare a contattare l’agent di prova sul
sito del programma. In questo esempio viene chiesto il sysUpTime cio` da
                                                                    e
             `
quanto tempo e attivo l’agent SNMP


      # snmpgetnext - u noAuthUser test.net -snmp.org sysUpTime


      SNMPv2 -MIB::sysUpTime.0 = Timeticks: (245066) 0:40:50.66
52                                                               Net-SNMP



5.3 Funzioni e comandi
Esiste una variet` di comandi molto vasta implementata da Net - SNMP
                 a
che segue le caratteristiche del protocollo stesso. Per motivi di utilit` al-
                                                                        a
l’interno di questa tesi verranno elencati i principali comandi. Per avere
          `
un’idea piu dettagliata occorre seguire on line il tutorial [18]. Per testa-
re questi comandi (in caso di assenza di agent SNMP) sulla rete locale e
                                                                       `
possibile utilizzare un apposito agent che lavora sul sito di NET - SNMP
all’indirizzo test.net-snmp.org. Prima di studiare ed utilizzare i comandi
                                                   `
occorre conoscere la loro sintassi che in generale e la seguente:




 # snmp[nome - comando] - v [versione] - u [utente] [destinazione] [mib]


5.3.1    snmptranslate
                                                       `
Questo comando gi` visto in precedenza con un esempio, e molto potente
                 a
e permette di navigare l’albero dei MIB in vari modi. Oltre ad eseguire
la conversione da numerica a letterale, con un apposito comando fornisce
anche la conversione opposta.


        # snmptranslate - On SNMPv2 - MIB::system.sysUpTime.0


        .1.3.6.1.2.1.1.3.0

L’aggiunta di -On serve per permettere al comando un output numerico.
Sono possibili altre modalit` importanti come la seguente, che permette di
                            a
visualizzare le informazioni estese di un nodo mib aggiungendo alla sin-
tassi il flag - Td.
5.3 Funzioni e comandi                                                    53



# snmptranslate -On -Td -Ib ’sys.*ime’

.1.3.6.1.2.1.1.9.1.4
sysORUpTime OBJECT-TYPE
  -- FROM       SNMPv2-MIB
  -- TEXTUAL CONVENTION TimeStamp
  SYNTAX        TimeTicks
  MAX-ACCESS    read-only
  STATUS        current
  DESCRIPTION   "The value of sysUpTime at the time this conceptual
                 row was last instantiated."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1)
      sysORTable(9) sysOREntry(1) 4 }




5.3.2    snmpget
                   `
Il comando snmpget e utilizzato per ricevere informazioni da un host in-
dicando il suo nome, la sua comunit` e il numero di MIB OID (Object
                                   a
Identifier).
Ecco un semplice esempio sempre riguardante il sysUpTime:


    # snmpget -v 2c -c demopublic test.net-snmp.org sysUpTime.0


    system.sysUpTime.0 = Timeticks: (586752671) 67 days, 21:52:06.71
                                               `
   Un errore comune quando si utilizza snmpget e quello di andare fuori
dall’indice dei dati che si stanno cercando. Nei suddetti ordini, la variabi-
                       `                                      `
le richiesta dall’ OID e uno scalare e l’indice degli scalari e sempre un
semplice (zero), quindi tutti gli OID’S devono concludere per .0. Se viene
                                                                            `
omesso, si ottiene un errore. Si noti che i tipi di errori differiscono un po
fra SNMPv1 e SNMPv2c:


   # snmpget - v 1 - c demopublic test.net -snmp.org sysUpTime
   Error in packet
   Reason: (noSuchName) There is no such variable name in this MIB.
   This name doesn’t exist: system.sysUpTime


   # snmpget - v 2c - c demopublic test.net -snmp.org sysUpTime
   system.sysUpTime = No Such Instance currently exists
54                                                             Net-SNMP



5.3.3   snmpgetnext
Tramite questo comando si riesce ad ottenere nell’albero MIB l’oid succes-
sivo a quello dichiarato nel comando. Per chiarire il comportamento anche
in questo caso mostriamo un esempio:




 # snmpgetnext - v 2c - c demopublic test.net -snmp.org system.sysUpTime.0
 SNMPv2 -MIB::sysContact.0 = STRING: wgriffin@sparta.com
 # snmpgetnext - v 2c - c demopublic test.net -snmp.org system.sysContact.0
 system.sysName.0 = net -snmp
 # snmpgetnext - v 2c - c demopublic test.net -snmp.org system.sysName.0
 system.sysLocation.0 = UCDavis

                  `
In questo esempio e stato richiesto l’elemento successivo al system.sys-
                          `
UpTime che in questo caso e sysContact.0, l’elemento successivo a sysCon-
           `
tact.0 che e system.sysName.0 e l’elemento successivo a system.sysName.0
    `
che e system.sysLocation.0. Oltre al nome dell’ object identifier viene re-
stituito anche il contenuto.



5.3.4   snmpwalk
               `
Questo comando e quello che verr` utilizzato nella realizzazione del cen-
                                a
tro di controllo per ottenere delle informazioni importanti come i numeri
di porta dell’agent SNMP (cio` lo Switch 3300 XM della 3Com c ) ed i mac
                               e
address degli host ad esso collegati. Una breve introduzione a snmpwalk
`
e necessaria per capire come il comando riesce ad ottenere queste infor-
mazioni. Snmpwalk funziona come una serie di getnext annidati, capaci
di restituire tutte le informazioni presenti all’interno dell’ agent SNMP.
           `
Ovviamente e possibile estrarre dall’intero elenco le informazioni che si
cercano, specificandole quando si lancia il comando. Anche questa volta
verr` mostrato un esempio per chiarire il comportamento di snmpwalk.
    a
5.3 Funzioni e comandi                                                    55



# snmpwalk -v 2c   -c demopublic test.net-snmp.org system

SNMPv2-MIB::sysDescr.0 = STRING: FreeBSD snmptest.netsec.tislabs.com
5.4-RELEASE-p9 FreeBSD 5.4-RELEASE-p9 #0: Thu Jan 12 05:31:33 UTC 2006
root@zathras.netsec.tislabs.com:/usr/obj/usr/src/sys/GENERIC i386
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.8
SNMPv2-MIB::sysUpTime.0 = Timeticks: (241760) 0:40:17.60
SNMPv2-MIB::sysContact.0 = STRING: wgriffin@sparta.com
SNMPv2-MIB::sysName.0 = STRING: snmptest.netsec.tislabs.com
SNMPv2-MIB::sysLocation.0 = STRING: "netsec lab, room 2021"
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (9) 0:00:00.09
SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.2 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.3 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.4 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.6 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIB
Compliance
SNMPv2-MIB::sysORID.7 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.8 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.9 = OID: IF-MIB::ifMIB
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for managing TCP
implementations
SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module for managing IP and
ICMP implementations
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for managing UDP
implementations
SNMPv2-MIB::sysORDescr.5 = STRING: View-based Access Control Model for
SNMP.
SNMPv2-MIB::sysORDescr.6 = STRING: The SNMP Management Architecture
MIB.
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB for Message Processing and
Dispatching.
SNMPv2-MIB::sysORDescr.8 = STRING: The management information
definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORDescr.9 = STRING: The MIB module to describe generic
objects for network interface sub-layers
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (2) 0:00:00.02
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (3) 0:00:00.03
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (5) 0:00:00.05
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (6) 0:00:00.06
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (6) 0:00:00.06
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (9) 0:00:00.09
56                                                                     Net-SNMP



5.3.5    snmptable

Il comando restituisce, tramite una piccola tabella, le informazioni relative
ad un Object Id in modo da facilitare la visualizzazione dei vari campi,
anche se l’output del comando in alcuni casi restituisce un numero di ca-
ratteri eccessivo per ogni riga.



# snmptable -v 2c -c demopublic -Cw 80 test.net-snmp.org sysORTable

SNMP table: SNMPv2-MIB::sysORTable

                                        sysORID
                            SNMPv2-MIB::snmpMIB
                                TCP-MIB::tcpMIB
                                     IP-MIB::ip
                                UDP-MIB::udpMIB
        SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
 SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
                SNMP-MPD-MIB::snmpMPDCompliance
       SNMP-USER-BASED-SM-MIB::usmMIBCompliance
                                  IF-MIB::ifMIB

SNMP table SNMPv2-MIB::sysORTable, part 2

                                                          sysORDescr
                                  The MIB module for SNMPv2 entities
                     The MIB module for managing TCP implementations
             The MIB module for managing IP and ICMP implementations
                     The MIB module for managing UDP implementations
                           View-based Access Control Model for SNMP.
                               The SNMP Management Architecture MIB.
                     The MIB for Message Processing and Dispatching.
          management information definitions for the SNMP User-based
          Security Model.
          The MIB module to describe generic objects for network
          interface sub-layers

SNMP table SNMPv2-MIB::sysORTable, part 3

  sysORUpTime
 0:0:00:00.06
 0:0:00:00.06
 0:0:00:00.06
 0:0:00:00.06
 0:0:00:00.07
 0:0:00:00.10
 0:0:00:00.10
5.4 Uso di snmpwalk                                                        57



5.3.6   snmpset
               `
Questo comando e utilizzato per modificare le informazioni sull’agent.
Per ogni variabile da configurare occorre specificare l’object id, il tipo di
dato (INTEGER, STRING, TIMETICKS ecc.) e il valore da assegnare alla
                                                                `
variabile. La corretta sintassi da attribuire a questa funzione e visualizza-
bile tramite il comando snmp-h alla sezione TYPE.




 # snmpset -v 2c -c demopublic test.net-snmp.org
 ucdDemoPublicString.0 s prova assegnazione


 UCD-DEMO-MIB::ucdDemoPublicString.0=STRING:prova assegnazione

   Alcuni messaggi di errore potrebbero comparire nel caso l’utente non
disponga del permesso di scrittura.


5.3.7   snmptrap
I messaggi Trap (o notification) possono essere utilizzati dalle entit` di rete
                                                                     a
per segnalare un comportamento anomalo alla stazione manager. Questi
messaggi sono generati in caso di malfunzionamento della rete come ad
esempio la caduta di un collegamento o il sovraccarico di una struttura.
                                       `
Per comprendere meglio questa funzione e possibile consultare il tuto-
rial on line e fare delle prove tramite le varie versioni di SNMP perch´
                                                                       e
i messaggi Trap cambiano sintassi a seconda della versione.


5.4     Uso di snmpwalk
Per ottenere i Mac Address e i corrispondenti numeri delle porte dello
switch nella rete del laboratorio occorre utilizzare snmpwalk. L’output
              `
del comando puo essere modificato e migliorato utilizzando il costrutto
-O che modifica con varie opzioni il formato del risultato. In generale uno
switch che utilizza il protocollo SNMP possiede dei MIB proprietari cio`
                                                                       e
                                                        `
inseriti dai produttori dell’apparato. Per controllarli e possibile scaricare,
58                                                                                       Net-SNMP



presso i siti dei costruttori, un elenco di tutti i MIB che un determinato
switch supporta, oppure utilizzando un mib -browser si riesce a navigare
tutta la struttura.
Come visto nell’esempio del paragrafo riferito al comando snmpwalk la
         `
sintassi e la seguente:




 # snmpwalk - v [n. versione] - c [CommunityString] [Destinazione] [MIB]


     Consultando i MIB e la loro struttura si possono utilizzare quelli visti
nel capitolo precedente che permettono di ricavare le informazioni relative
ai mac address degli host collegati alla rete ed il numero di tutte le porte
attive dello switch. A questo punto basta utilizzare i rispettivi valori MIB
nel comando snmpwalk.


                # snmpwalk - c public -v 1 - O vq 192.168.8.253 1.3.6.1.2.1.17.4.3.1.1

                00 02 B3 D7 EF 15
                00 07 E9 89 AC CF
                00 07 E9 89 AF E3
                00 07 E9 89 B0 95
                00 07 E9 89 B0 A5
                00 07 E9 89 B0 B2
                00 07 E9 E7 49 24
                00 07 E9 E7 4A 23
                00 07 E9 E7 4A 25
                00 07 E9 F5 76 EF
                00 07 E9 F5 77 1D
                00 07 E9 F5 77 22
                00 07 E9 F6 34 5F
                00 07 E9 F6 34 85
                00 07 E9 F6 34 DF
5.4 Uso di snmpwalk                                                                      59



   Per quel che riguarda i numeri di porta occorre utilizzare il seguente
comando


                # snmpwalk - c public -v 1 - O vq 192.168.8.253 1.3.6.1.2.1.17.4.3.1.2

                22
                7
                6
                2
                14
                16
                21
                20
                5
                1
                19
                9
                3
                8
                4




Con i valori v e q del flag output si riesce a modificare la risposta del co-
mando in modo da ottenere solo un valore numerico tralasciando i parti-
colari sulla versione del protocollo, sul tipo di Object Id, e sul tipo
di grandezza.
60   Net-SNMP
Capitolo 6

SwitchSNMP centro di controllo

6.1     Introduzione e Prerequisiti
Dopo aver analizzato il protocollo SNMP, le sue caratteristiche, i MIB ed
il software Net - SNMP (utilizzando i suoi comandi dalla shell di linux)
`
e giunto il momento di realizzare l’implementazione di una pagina web
per riassumere le informazioni utili per il monitoraggio della rete del la-
                                                                       `
boratorio. Per avere maggiore controllo sulle informazioni e sui dati, e
bene implementare una pagina in PHP che permetta di visualizzare dal
web l’associazione tra numeri di porta dello switch e i mac address degli
host ad esso collegati. Essendo il php un linguaggio lato server, necessita
almeno di un server locale per poter fare qualche prova. Per questo mo-
tivo occorre installare e configurare, su un host della rete, una versione di
                                         `
Apache [20] (attualmente il server web piu diffuso) in modo da poter co-
struire e visualizzare da locale una pagina web. Inoltre occorre installare
anche PHP [21] per far funzionare il piccolo centro di controllo. Vediamo
ora l’installazione e la configurazione di questi due potenti software.



6.2 Installazione di Apache 2.2
Per iniziare occorre disporre dei file di installazione che possono essere
tranquillamente scaricati dal sito ufficiale di apache al seguente indirizzo:
http://httpd.apache.org/docs/2.2/install.html. Una volta scaricata l’ultima versio-
62                                             SwitchSNMP centro di controllo



ne occorre decomprimerla utilizzando tar oppure gzip a seconda del file
che si scarica:


                           gzip - d httpd- 2.2.3.tar.gz
                           tar xvf httpd- 2.2.3.tar
     Ora tramite il comando cd httpd-2.2.3 si entra nella cartella appena estrat-
ta dalla quale si avvia la procedura di configurazione e compilazione.


                          ./configure –prefix=PREFIX
                          make
                          make install
                          PREFIX/bin/apachectl start
                       `                                               `
     Il prefisso PREFIX e la directory dove verr` installato Apache e puo
                                               a
essere settato a piacere. In questo caso, seguendo la guida PREFIX =
                                                     `
/usr/local/apache2. Per procedure di configurazione piu avanzate o per
altre informazioni basta digitare da shell il comando ./configure –help. Ter-
minata la procedura di installazione possiamo controllare se effettivamen-
          `
te apache e in esecuzione tramite il comando:
ps aux | grep httpd


     Per avviare il demone quindi occorre digitare da shell:


     • /usr/local/apache2/bin/apachectl start


                                                                     `
     Un altro riscontro del corretto funzionamento di Apache lo si puo otte-
                                                                 `
nere aprendo il browser all’indirizzo http://localhost dal quale e possibile
visualizzare la pagina principale (index.html) situata nella directory /ht-
docs del sottoalbero di /PREFIX. Per fermare il demone occorre digitare
da shell:


     • /usr/local/apache2/bin/apachectl stop
6.3 Installazione PHP 5                                                     63



6.3     Installazione PHP 5
Anche per quanto riguarda php si possono trovare varie versioni
scaricabili gratuitamente dal sito ufficiale:
http://www.php.net/downloads.php. Per questo lavoro e stata utilizzata la
                                                    `
versione 5.1.6 che, una volta estratta, va configurata. Anche in questo
caso per avere dettagli maggiori sulla configurazione basta digitare il
comando ./configure – help. Comunque una configurazione base prevede
gi` il supporto di apache2 e mysql digitando da shell il seguente
  a
comando:



 ./configure - - with - apxs2 = /usr/local/apache2/bin/apxs - - with - mysql

Si passa poi alla fase di compilazione con i seguenti comandi:


                                 make
                                 make install

In seguito occorre copiare il file php.ini in una locazione stabilita. Questo
file permette la configurazione di php:


                  cp php.ini - dist /usr/local/lib/php.ini

A questo punto occorre abilitare il modulo php in Apache. Per farlo basta
editare il file /usr/local/apache2/conf/httpd.conf ed aggiungere, o controllare
che non sia esclusa la seguente linea (per PHP 5):

LoadModule php5_module modules/libphp5.so



Apache non riconosce i file .php, quindi occorre anche aggiungere le
seguenti righe ad httpd.conf che risolvono questo problema:

AddType application/x -httpd -php .php .phtml
AddType application/x -httpd -php -source .phps
64                                          SwitchSNMP centro di controllo



                                      `
Finalmente dopo tutti questi passaggi e possibile testare anche php con
un breve esempio che consiste nell’editare la pagina iniziale di Apache in
modo da creare una pagina php.
Per farlo basta modificare il file index.html aggiungendo poi il tag di
apertura e di chiusura del php (internamente al tag body) inserendo
all’interno una semplice funzione:

<?php
        phpinfo();
 ?>



Occorre salvare il file con l’estensione .php e aprire il browser alla pagina
http://localhost/index.php per poter visualizzare una pagina contenente
tutte le informazioni riguradanti il php.
6.4 Implementazione                                                          65



6.4     Implementazione
                                                    `
Per ottenere il numero di porta e gli indirizzi mac e possibile utilizzare
due funzioni del php:

snmpwalk ( hostname , community, object_id [timeout [retries]]))


shell_exec ( cmd )


La prima funzione ha lo stesso comportamento del comando snmpwalk
                                       `
visto in precedenza, in questo caso pero restituisce un array contenente le
informazioni richieste.
La seconda funzione invece esegue il comando dato come argomento e
come output presenta l’output del comando stesso. Per motivi di praticit`
                                                                        a
in questa tesi ho utilizzato la seconda funzione richiamando i comandi:


      snmpwalk -c public -v 1 -O vq 192.168.8.253 1.3.6.1.2.1.17.4.3.1.1
      snmpwalk -c public -v 1 -O q 192.168.8.253 1.3.6.1.2.1.17.4.3.1.2

Come visto nel capitolo precedente, il primo dei due comandi restituisce i
mac address delle schede ethernet che collegano i computer alle porte
dello switch, mentre il secondo comando restituisce come output i
numeri di porta ai quali sono collegati gli host della rete.
Questi due comandi restituiscono le informazioni in colonna e sotto
                                                     `
forma di stringhe. Tramite il php ed alcune funzioni e possibile elaborare
queste stringhe in modo da ottenere le sole informazioni necessarie.


6.4.1    Creazione variabili
Nel php le variabili non necessitano di una dichiarazione a priori che ne
specifica il tipo. Possono essere create quando si ha la necessit` di
                                                                a
                          `
utilizzarle, l’importante e che siano sempre precedute dal carattere $.
66                                          SwitchSNMP centro di controllo



Per realizzare la pagina in php, che funzioner` da centro di controllo per
                                              a
lo switch, occorre quindi creare alcune variabili che memorizzano
l’output dei comandi visti in precedenza:


$output1 = shell_exec(’snmpwalk -c public -v 1 -O q 192.168.8.253
      1.3.6.1.2.1.17.4.3.1.2’);
$output2 = shell_exec(’snmpwalk -c public -v 1 - O vq 192.168.8.253
      1.3.6.1.2.1.17.4.3.1.1’);




Questi valori costituiscono due stringhe entrambe contenenti un insieme
di valori ed informazioni che andranno elaborate con la funzione
explode.


6.4.2    Funzione explode
                                                         `
Nel php la funzione principale per elaborare le stringhe e explode() che
restituisce un array ed ha la seguente sintassi:

explode ( string separator, string string [int ,limit] )


Questa funzione restituisce un array di stringhe, di cui ciascun elemento
`
e una sottostringa costituita dalla stringa che si ottiene utilizzando
l’argomento separator (o separatore). Se il limite viene fissato, l’array
restituito conterr` un massimo di elementi, cio` quelli dichiarati nel
                  a                            e
                                                                         `
campo limit e come ultimo elemento il resto di stringa. Se il separatore e
una stringa vuota (”), explode () restituir` FALSE. Se il separatore contiene
                                           a
un valore che non e contenuto nel campo stringa, allora explode ()
                  `
restituir` un array che contiene la stringa di partenza. Anche se implode ()
         a
  `
puo, per motivi storici, accettare i parametri senza badare all’ordine,
explode () non riesce a farlo. Occorre accertarsi che il separatore venga
sempre dichiarato prima della stringa da dividere, altrimenti il comando
dar` errore.
   a
Il risultato delle elaborazioni sar` quindi memorizzato, sotto forma di
                                   a
array nelle seguenti variabili:

$data1 = explode(’ ’, $output1);
$data2 = explode(’ "’, $output2);
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan
Monitoraggio di mac address in lan

More Related Content

What's hot

Getting a live_transcript_of_your_call_using_the_ari
Getting a live_transcript_of_your_call_using_the_ariGetting a live_transcript_of_your_call_using_the_ari
Getting a live_transcript_of_your_call_using_the_ari
Pascal Cadotte-Michaud
 
Expanding Asterisk with Kamailio
Expanding Asterisk with KamailioExpanding Asterisk with Kamailio
Expanding Asterisk with Kamailio
Fred Posner
 
Astricon 10 (October 2013) - SIP over WebSocket on Kamailio
Astricon 10 (October 2013) - SIP over WebSocket on KamailioAstricon 10 (October 2013) - SIP over WebSocket on Kamailio
Astricon 10 (October 2013) - SIP over WebSocket on Kamailio
Crocodile WebRTC SDK and Cloud Signalling Network
 
Cisco hsrp configuration
Cisco hsrp configurationCisco hsrp configuration
Cisco hsrp configuration
Wahyu Nasution
 
Eigrp Cheatsheet - EIGRP in 15 min - Rishabh Dangwal - www.theprohack.com
Eigrp Cheatsheet - EIGRP in 15 min - Rishabh Dangwal - www.theprohack.comEigrp Cheatsheet - EIGRP in 15 min - Rishabh Dangwal - www.theprohack.com
Eigrp Cheatsheet - EIGRP in 15 min - Rishabh Dangwal - www.theprohack.com
Rishabh Dangwal
 
Asterisk sip channel performance
Asterisk sip channel performanceAsterisk sip channel performance
Asterisk sip channel performance
Flavio Eduardo de Andrade Goncalves
 
CCNA CheatSheet
CCNA CheatSheetCCNA CheatSheet
CCNA CheatSheet
Eng. Emad Al-Atoum
 
ACI DHCP Config Guide
ACI DHCP Config GuideACI DHCP Config Guide
ACI DHCP Config Guide
Woo Hyung Choi
 
Basic BGP Configuration
Basic BGP ConfigurationBasic BGP Configuration
Basic BGP Configuration
NetProtocol Xpert
 
CCNA - Routing & Switching Commands
CCNA - Routing & Switching CommandsCCNA - Routing & Switching Commands
CCNA - Routing & Switching Commands
Eng. Emad Al-Atoum
 
ARI and AGI, a powerful combination
ARI and AGI, a powerful combinationARI and AGI, a powerful combination
ARI and AGI, a powerful combination
Jöran Vinzens
 
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...
Fred Posner
 
DNS Server configuration in cisco packet tracer
DNS Server configuration in cisco packet tracerDNS Server configuration in cisco packet tracer
DNS Server configuration in cisco packet tracer
ShovonKumar1
 
Kamailio on Docker
Kamailio on DockerKamailio on Docker
Kamailio on Docker
Chien Cheng Wu
 
Troubleshooting Wireless LANs with Centralized Controllers
Troubleshooting Wireless LANs with Centralized ControllersTroubleshooting Wireless LANs with Centralized Controllers
Troubleshooting Wireless LANs with Centralized Controllers
Cisco Mobility
 
Lab hướng dẫn OSPF
Lab hướng dẫn OSPF Lab hướng dẫn OSPF
Lab hướng dẫn OSPF Tài Bùi
 
Implementing IPv6 Segment Routing in the Linux kernel
Implementing IPv6 Segment Routing in the Linux kernelImplementing IPv6 Segment Routing in the Linux kernel
Implementing IPv6 Segment Routing in the Linux kernel
Olivier Bonaventure
 
Timing wheels
Timing wheelsTiming wheels
Timing wheels
supperniu
 
Troubleshooting BGP
Troubleshooting BGPTroubleshooting BGP
Troubleshooting BGP
Duane Bodle
 
Rf design and review guidelines
Rf design and review guidelinesRf design and review guidelines
Rf design and review guidelines
JOSE T Y
 

What's hot (20)

Getting a live_transcript_of_your_call_using_the_ari
Getting a live_transcript_of_your_call_using_the_ariGetting a live_transcript_of_your_call_using_the_ari
Getting a live_transcript_of_your_call_using_the_ari
 
Expanding Asterisk with Kamailio
Expanding Asterisk with KamailioExpanding Asterisk with Kamailio
Expanding Asterisk with Kamailio
 
Astricon 10 (October 2013) - SIP over WebSocket on Kamailio
Astricon 10 (October 2013) - SIP over WebSocket on KamailioAstricon 10 (October 2013) - SIP over WebSocket on Kamailio
Astricon 10 (October 2013) - SIP over WebSocket on Kamailio
 
Cisco hsrp configuration
Cisco hsrp configurationCisco hsrp configuration
Cisco hsrp configuration
 
Eigrp Cheatsheet - EIGRP in 15 min - Rishabh Dangwal - www.theprohack.com
Eigrp Cheatsheet - EIGRP in 15 min - Rishabh Dangwal - www.theprohack.comEigrp Cheatsheet - EIGRP in 15 min - Rishabh Dangwal - www.theprohack.com
Eigrp Cheatsheet - EIGRP in 15 min - Rishabh Dangwal - www.theprohack.com
 
Asterisk sip channel performance
Asterisk sip channel performanceAsterisk sip channel performance
Asterisk sip channel performance
 
CCNA CheatSheet
CCNA CheatSheetCCNA CheatSheet
CCNA CheatSheet
 
ACI DHCP Config Guide
ACI DHCP Config GuideACI DHCP Config Guide
ACI DHCP Config Guide
 
Basic BGP Configuration
Basic BGP ConfigurationBasic BGP Configuration
Basic BGP Configuration
 
CCNA - Routing & Switching Commands
CCNA - Routing & Switching CommandsCCNA - Routing & Switching Commands
CCNA - Routing & Switching Commands
 
ARI and AGI, a powerful combination
ARI and AGI, a powerful combinationARI and AGI, a powerful combination
ARI and AGI, a powerful combination
 
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...
 
DNS Server configuration in cisco packet tracer
DNS Server configuration in cisco packet tracerDNS Server configuration in cisco packet tracer
DNS Server configuration in cisco packet tracer
 
Kamailio on Docker
Kamailio on DockerKamailio on Docker
Kamailio on Docker
 
Troubleshooting Wireless LANs with Centralized Controllers
Troubleshooting Wireless LANs with Centralized ControllersTroubleshooting Wireless LANs with Centralized Controllers
Troubleshooting Wireless LANs with Centralized Controllers
 
Lab hướng dẫn OSPF
Lab hướng dẫn OSPF Lab hướng dẫn OSPF
Lab hướng dẫn OSPF
 
Implementing IPv6 Segment Routing in the Linux kernel
Implementing IPv6 Segment Routing in the Linux kernelImplementing IPv6 Segment Routing in the Linux kernel
Implementing IPv6 Segment Routing in the Linux kernel
 
Timing wheels
Timing wheelsTiming wheels
Timing wheels
 
Troubleshooting BGP
Troubleshooting BGPTroubleshooting BGP
Troubleshooting BGP
 
Rf design and review guidelines
Rf design and review guidelinesRf design and review guidelines
Rf design and review guidelines
 

Similar to Monitoraggio di mac address in lan

Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...Ce.Se.N.A. Security
 
Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...
Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...
Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...danieledegan
 
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
Idriss Riouak
 
Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques
Maurizio Cacace
 
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilitàTesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Riccardo Melioli
 
Profilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzatiProfilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzati
Pietro Corona
 
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...Implementazione in Java di plugin Maven per algoritmi di addestramento per re...
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...
Francesco Komauli
 
Inoltro di pacchetti ip in sistemi linux
Inoltro di pacchetti ip in sistemi linuxInoltro di pacchetti ip in sistemi linux
Inoltro di pacchetti ip in sistemi linuxCe.Se.N.A. Security
 
Tesi: Progetto e realizzazione di un sistema robusto di gestione dei dati per...
Tesi: Progetto e realizzazione di un sistema robusto di gestione dei dati per...Tesi: Progetto e realizzazione di un sistema robusto di gestione dei dati per...
Tesi: Progetto e realizzazione di un sistema robusto di gestione dei dati per...
Paolo Morandini
 
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...Luca Bressan
 
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Gianluca Ritrovati
 
Publish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based RoutingPublish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based Routing
Nicola Mezzetti
 
Sistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisitionSistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisition
AmmLibera AL
 
Dynamic Scheduling
Dynamic SchedulingDynamic Scheduling
Dynamic Scheduling
Nicola Mezzetti
 
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...maaske
 
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMTesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Davide Ciambelli
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computer
Alessandro Mascherin
 

Similar to Monitoraggio di mac address in lan (20)

Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
 
Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...
Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...
Autenticazione Continua Durante la Navigazione Web Basata sulla Dinamica del ...
 
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...
 
Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques
 
Network monitoring tramite snmp
Network monitoring tramite snmpNetwork monitoring tramite snmp
Network monitoring tramite snmp
 
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilitàTesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
 
Profilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzatiProfilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzati
 
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...Implementazione in Java di plugin Maven per algoritmi di addestramento per re...
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...
 
Inoltro di pacchetti ip in sistemi linux
Inoltro di pacchetti ip in sistemi linuxInoltro di pacchetti ip in sistemi linux
Inoltro di pacchetti ip in sistemi linux
 
Sat howto
Sat howtoSat howto
Sat howto
 
Tesi: Progetto e realizzazione di un sistema robusto di gestione dei dati per...
Tesi: Progetto e realizzazione di un sistema robusto di gestione dei dati per...Tesi: Progetto e realizzazione di un sistema robusto di gestione dei dati per...
Tesi: Progetto e realizzazione di un sistema robusto di gestione dei dati per...
 
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
 
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
 
Publish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based RoutingPublish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based Routing
 
Sistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisitionSistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisition
 
Tesiandroid
TesiandroidTesiandroid
Tesiandroid
 
Dynamic Scheduling
Dynamic SchedulingDynamic Scheduling
Dynamic Scheduling
 
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
 
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMTesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computer
 

More from Ce.Se.N.A. Security

Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
 Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route... Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...Ce.Se.N.A. Security
 
Mona cheatsheet
Mona cheatsheetMona cheatsheet
Mona cheatsheet
Ce.Se.N.A. Security
 
Exploit techniques - a quick review
Exploit techniques - a quick reviewExploit techniques - a quick review
Exploit techniques - a quick review
Ce.Se.N.A. Security
 
Msfpayload/Msfencoder cheatsheet
Msfpayload/Msfencoder cheatsheetMsfpayload/Msfencoder cheatsheet
Msfpayload/Msfencoder cheatsheet
Ce.Se.N.A. Security
 
ICTF overview
ICTF overviewICTF overview
ICTF overview
Ce.Se.N.A. Security
 
Anonymous email
Anonymous emailAnonymous email
Anonymous email
Ce.Se.N.A. Security
 
SELinux - overview
SELinux - overviewSELinux - overview
SELinux - overview
Ce.Se.N.A. Security
 
Analisi sulla sicurezza di una autovettura moderna
Analisi sulla sicurezza di una autovettura modernaAnalisi sulla sicurezza di una autovettura moderna
Analisi sulla sicurezza di una autovettura modernaCe.Se.N.A. Security
 
Iena
IenaIena
Crimini informatici e accesso abusivo
Crimini informatici e accesso abusivoCrimini informatici e accesso abusivo
Crimini informatici e accesso abusivoCe.Se.N.A. Security
 

More from Ce.Se.N.A. Security (20)

Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
 Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route... Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
 
Mona cheatsheet
Mona cheatsheetMona cheatsheet
Mona cheatsheet
 
Exploit techniques - a quick review
Exploit techniques - a quick reviewExploit techniques - a quick review
Exploit techniques - a quick review
 
Msfpayload/Msfencoder cheatsheet
Msfpayload/Msfencoder cheatsheetMsfpayload/Msfencoder cheatsheet
Msfpayload/Msfencoder cheatsheet
 
ICTF overview
ICTF overviewICTF overview
ICTF overview
 
Anonymous email
Anonymous emailAnonymous email
Anonymous email
 
Hacking reti wireless
Hacking reti wirelessHacking reti wireless
Hacking reti wireless
 
SELinux - overview
SELinux - overviewSELinux - overview
SELinux - overview
 
Analisi sulla sicurezza di una autovettura moderna
Analisi sulla sicurezza di una autovettura modernaAnalisi sulla sicurezza di una autovettura moderna
Analisi sulla sicurezza di una autovettura moderna
 
Sicurezza delle reti 802.11
Sicurezza delle reti 802.11Sicurezza delle reti 802.11
Sicurezza delle reti 802.11
 
Rilevamento intrusioni in wlan
Rilevamento intrusioni in wlanRilevamento intrusioni in wlan
Rilevamento intrusioni in wlan
 
Rainbow tables
Rainbow tablesRainbow tables
Rainbow tables
 
Monitoraggio di rete con nagios
Monitoraggio di rete con nagiosMonitoraggio di rete con nagios
Monitoraggio di rete con nagios
 
Ip sec vulnerability
Ip sec vulnerabilityIp sec vulnerability
Ip sec vulnerability
 
Insider attack
Insider attackInsider attack
Insider attack
 
Iena
IenaIena
Iena
 
Crimini informatici e accesso abusivo
Crimini informatici e accesso abusivoCrimini informatici e accesso abusivo
Crimini informatici e accesso abusivo
 
Clonare mac os x
Clonare mac os xClonare mac os x
Clonare mac os x
 
sicurezza e php
sicurezza e phpsicurezza e php
sicurezza e php
 
Sql injection - intro
Sql injection - introSql injection - intro
Sql injection - intro
 

Monitoraggio di mac address in lan

  • 1. ALMA MATER STUDIORUM - UNIVERSITA’ DI BOLOGNA SEDE DI CESENA SECONDA FACOLTA’ DI INGEGNERIA CON SEDE A CESENA CORSO DI LAUREA IN INGEGNERIA DELLE TELECOMUNICAZIONI TITOLO DELL’ELABORATO: UTILIZZO DI STRUMENTI OPEN-SOURCE PER IL MONITORAGGIO DEGLI INDIRIZZI MAC ALL’INTERNO DI UNA LAN Elaborato in: LABORATORIO DI RETI DI TELECOMUNICAZIONI L-A Relatore: Presentata da: Prof. Walter Cerroni Luca Gentilini Sessione II Anno Accademico 2005/2006
  • 2. 2
  • 3. Parole chiave Sicurezza LAN MAC Spoofing Mib Protocollo SNMP Net-SNMP Mac Address, Port Number Switch SNMP
  • 4. 4
  • 5. Indice 1 Introduzione 7 2 Monitoraggio e sicurezza delle reti LAN 9 2.1 Obbiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2 Strumenti per il monitoraggio . . . . . . . . . . . . . . . . . . 9 2.3 Gli elementi della rete . . . . . . . . . . . . . . . . . . . . . . 13 2.4 Sicurezza in una lan . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4.1 Protocollo ARP . . . . . . . . . . . . . . . . . . . . . . 16 2.5 Spoofing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.5.1 ARP Spoofing . . . . . . . . . . . . . . . . . . . . . . . 19 2.5.2 Attacco Man In The Middle . . . . . . . . . . . . . . . 20 2.5.3 Tabelle statiche e ARPwatch come difese dall’attacco Man in the middle . . . . . . . . . . . . . . . . . . . . 20 3 Protocollo SNMP 23 3.1 Il bisogno di standardizzazione . . . . . . . . . . . . . . . . . 23 3.2 Messaggi SNMP . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.3 Versioni SNMP . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3.1 SNMPv1 . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3.2 SNMPv2 . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3.3 SNMPv3 . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4 Management Information Base 37 4.1 Struttura delle informazioni . . . . . . . . . . . . . . . . . . . 38 4.2 Strutture delle MIB . . . . . . . . . . . . . . . . . . . . . . . . 40 4.3 RMON MIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
  • 6. 6 INDICE 4.4 MIB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.4.1 RMON 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.5 MIB specifiche . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.5.1 dot1dTpFdbAddress . . . . . . . . . . . . . . . . . . . 47 4.5.2 dot1dTpFdbPort . . . . . . . . . . . . . . . . . . . . . 48 5 Net-SNMP 49 5.1 Un software open source . . . . . . . . . . . . . . . . . . . . . 49 5.1.1 Le caratteristiche di Net-SNMP . . . . . . . . . . . . . 49 5.2 Installazione Net-SNMP . . . . . . . . . . . . . . . . . . . . . 51 5.3 Funzioni e comandi . . . . . . . . . . . . . . . . . . . . . . . . 52 5.3.1 snmptranslate . . . . . . . . . . . . . . . . . . . . . . . 52 5.3.2 snmpget . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.3.3 snmpgetnext . . . . . . . . . . . . . . . . . . . . . . . 54 5.3.4 snmpwalk . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.3.5 snmptable . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.3.6 snmpset . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5.3.7 snmptrap . . . . . . . . . . . . . . . . . . . . . . . . . 57 5.4 Uso di snmpwalk . . . . . . . . . . . . . . . . . . . . . . . . . 57 6 SwitchSNMP centro di controllo 61 6.1 Introduzione e Prerequisiti . . . . . . . . . . . . . . . . . . . . 61 6.2 Installazione di Apache 2.2 . . . . . . . . . . . . . . . . . . . . 61 6.3 Installazione PHP 5 . . . . . . . . . . . . . . . . . . . . . . . . 63 6.4 Implementazione . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.4.1 Creazione variabili . . . . . . . . . . . . . . . . . . . . 65 6.4.2 Funzione explode . . . . . . . . . . . . . . . . . . . . . 66 6.4.3 Ciclo per numerare gli host attivi . . . . . . . . . . . . 67 6.4.4 Il file index.php . . . . . . . . . . . . . . . . . . . . . . 68 6.5 Confronto dei risultati . . . . . . . . . . . . . . . . . . . . . . 71 7 Conclusioni 73
  • 7. Capitolo 1 Introduzione Il lavoro del network and system administrator con l’avvento delle nuo- ` ve tecnologie e di internet sta diventando sempre piu complicato anche in ` relazione all’aumento delle potenzialit` delle reti sempre piu esposte ver- a so l’universo di internet. Il monitoraggio di queste infrastrutture richiede software efficenti e tempi di intervento molto brevi in caso di blocco di un determinato servizio; del resto le problematiche relative alla sicurezza ` dei sistemi e delle reti stanno diventando di giorno in giorno sempre piu ` importanti da gestire ed amministrare. L’obbiettivo di questa tesi e l’uti- lizzo di software per il monitoraggio di una LAN (Local Area Network) per aumentare la sicurezza della rete soprattutto a livello di collegamento. Gli strumenti per realizzare questo progetto comprendono varie tipologie, ` in particolare pero ci si baser` sullo studio del protocollo SNMP (Simple a Network Management Protocol) e delle sue caratteristiche, per poi descri- vere e installare un software che implementa questo protocollo. In que- ` sto modo e possibile interagire e fare delle prove con le varie interfacce ` di rete. Una prima parte della tesi e quindi dedicata allo studio del pro- tocollo e delle sue versioni, soffermandosi su aspetti importanti come i MIB (Management Information Base) e la loro struttura. In seguito l’e- laborato si occupa dell’installazione e della configurazione del tool Net - SNMP che permette di ottenere importanti informazioni sulle periferiche che supportano il protocollo. Infine si sfruttano i risultati di questo tool per la creazione di un piccolo centro di controllo.
  • 8. 8 Introduzione Un primo passo di monitoraggio riguarda lo strato fisico (phisycal layer) ` e il laboratorio universitario e un ambiente ben predisposto per effettuare ` una prova di monitoraggio. Lo switch che gestisce la rete del laboratorio e uno switch della 3COM, il modello SuperStack(R) Switch 3300 XM che ge- stisce anche il protocollo SNMP. L’interazione tra il software Net - SNMP e questo switch per ricavare gli indirizzi fisici degli host ad esso collegati ` e metterli in relazione con il numero di porta dello switch, e un impor- tante risultato per aumentare la sicurezza della rete che potrebbe essere ` compromessa da attacchi di tipo mac-spoofing. L’obbiettivo finale e quel- lo di realizzare un vero e proprio centro di controllo, tramite pagine web dinamiche scritte in PHP capaci di visualizzare l’associazione tra numero di porta dello switch e Mac Address degli host ad esso collegati, mettendo cos` a disposizione dell’amministratore di rete un ulteriore strumento di ı monitoraggio.
  • 9. Capitolo 2 Monitoraggio e sicurezza delle reti LAN 2.1 Obbiettivi Questa tesi vuole essere una sorta di manuale che introduce le problema- tiche di sicurezza e monitoraggio di una rete e il protocollo SNMP (Sim- ple Network Management Protocol) per arrivare a configurare un piccolo centro di controllo per le reti locali utilizzando Net - SNMP[1] (implemen- tazione open-source del protocollo SNMP). Per questo motivo in questo capitolo verr` solo fatta una breve introduzione al monitoraggio di reti e a agli strumenti software Open -Source (e non) esistenti. Verr` anche affron- a tato l’argomento della sicurezza di una rete locale. Nei capitoli successi- vi verr` spiegata la struttura ed il funzionamento del protocollo SNMP e a verranno introdotti i MIB (Management Information Base) cio` i databa- e se che contengono le informazioni all’interno di un apparato di rete. Poi si passer` alla parte pratica installando Net-SNMP ed implementando un a piccolo centro di controllo in PHP per il monitoraggio di una rete locale. 2.2 Strumenti per il monitoraggio Attualmente lo sviluppo del web e delle reti sta attraversando un periodo di grandissima espansione, infatti le piccole reti di calcolatori dei primi
  • 10. 10 Monitoraggio e sicurezza delle reti LAN anni ’80 si sono trasformate in reti vaste e molto complicate. Il bisogno di monitorare e di tenere sotto controllo le varie strutture, garantendo il lo- ` ro funzionamento e la sicurezza delle informazioni scambiate e diventato un obbiettivo prioritario nel mondo delle telecomunicazioni. I software a disposizione attualmente sono moltissimi e di vario genere ed alcuni pos- sono essere utilizzati anche per scopi negativi come ad esempio software in grado di compromettere la sicurezza delle informazioni, per infiltrarsi in reti private e sniffare informazioni oppure per poter agire con l’identit` a di un’altra persona utilizzando le sue credenziali. Per questo i software di monitoraggio devono essere sempre aggiornati con nuove funzionalit` e a nuovi plug-in per evitare il proliferare di attacchi informatici. ` Quando si parla di sicurezza e monitoraggio di reti in generale si puo ` dire che il mercato e dalla parte dei software proprietari come OpenView di HP, Tivoli di IBM e OpManager di Advantnet, ma iniziano a diffon- dersi anche software open-source come ad esempio Nagios, OpenNMS, Net-SNMP e tanti altri strumenti che possono arrivare ai livelli dei soft- ` ware commerciali piu diffusi.
  • 11. 2.2 Strumenti per il monitoraggio 11 ` Tra i piu diffusi software nel campo del monitoraggio, troviamo in pri- ` mo luogo il software OpenView di HP che contiene piu di ventisette com- ponenti per il monitoraggio di ogni particolare della rete. L’ esistenza di moduli aggiuntivi rendono Open View un sistema di monitoraggio mol- ` to personalizzabile. Il cuore del programma e Network Node Manager, il ` quale e in grado di configurare automaticamente la rete da monitorare. Il ` nucleo di OpenView e basato sul protocollo SNMP (Simple Network Ma- nagement Protocol); la macchina su cui gira l’agent SNMP crea messaggi trap che vengono inviati alla macchina di management su cui gira Open- View. Poi il programma generer` gli eventuali alert da spedire all’ammi- a nistratore. Di seguito riporto un’immagine del programma in esecuzione Figura 2.1: OpenView di HP
  • 12. 12 Monitoraggio e sicurezza delle reti LAN Per quel che riguarda l’ambiente open-source, che sar` l’ambiente di a ` sviluppo per questa tesi, OpenNMS e Nagios sono sicuramente i piu diffu- ` si. OpenNMS[2] e un centro di controllo in grado di controllare moltissimi servizi presenti su una rete o su un host, permette inoltre una configura- zione avanzata di tutte le sue caratteristiche e lavorando con il protocollo SNMP, permette l’interrogazione di svariati apparati di rete per ottenere le informazioni che si desiderano, tenendo sotto controllo applicazioni e servizi come Http , MySql, server FTP e tanti altri. La sua installazione ` richiede un attimo di pazienza perch´ il software e scritto in Java/XML e ed ha parecchie dipendenze, ma una volta installato e configurato riesce a fornire risultati soddisfacenti. Figura 2.2: Screenshot di OpenNMS ` Nagios e lo strumento open-source che permette il monitoraggio di ogni cosa, servizi di rete come SMTP, POP3, HTTP, risorse degli host (pro- cessi attivi, utilizzo della memoria e dello spazio su disco) e addirittura ` acquistando degli appositi sensori e possibile monitorare dal server Na- gios anche la temperatura di un locale.
  • 13. 2.3 Gli elementi della rete 13 Tra le altre funzionalit` esiste anche la possibilit` di integrazione con a a OpenNMS oltre che la possibilit` di funzionare come software stand-alone. a Figura 2.3: Screenshot di Nagios 2.3 Gli elementi della rete ` La rete da monitorare nella tesi e costituita da 18 host collegati ad una rete privata locale di indirizzo (secondo la notazione CIDR) 192.168.8.0/24. La ` capienza di questa rete e maggiore del numero di host fisicamente presen- ` ti, ma e sempre meglio restare abbondanti nel caso di lan private visto che ` non e necessario risparmiare su indirizzi ip privati. I diciotto computer sono dotati di una distribuzione molto diffusa (Fe- dora Core 3) e di due schede di rete, una che li collega alla rete privata sopracitata tramite uno switch della 3Com e l’altra che collega 2 host uno ` con l’altro. Per avere un’idea piu concreta del tipo di rete da monitorare nella pagina seguente verr` illustrata la rete tramite un disegno. a
  • 14. 14 Monitoraggio e sicurezza delle reti LAN ` Il principale attore per lo smistamento delle informazioni e lo switch 3300 XM della 3COM che presenta le seguenti caratteristiche: • 24 porte che autonegoziano la velocit` di connessione a • Supporto virtual lan • Supporto del protocollo SNMP • Possibilit` di espansione della rete tramite il collegamento ad altri a switch Figura 2.4: Schema della rete da monitorare ` La caratteristica piu interessante, dal punto di vista del monitoraggio, ` per questo switch e sicuramente il supporto del protocollo SNMP, infatti ` grazie a questo protocollo e possibile richiedere tramite appositi messag- gi delle informazioni allo switch aspettandosi delle risposte. I vari tipi di messaggi con la struttura del protocollo SNMP verranno spiegati nel ` prossimo capitolo. La caratteristica Manager / Agent invece e molto in- teressante e merita una breve introduzione. Il protocollo SNMP lavora
  • 15. 2.4 Sicurezza in una lan 15 secondo l’architettura client-server ed il ruolo del manager in genere al- ` l’interno della rete e svolto da un Network Management mentre il ruolo ` di agent e svolto dalla struttura che si desidera monitorare. ` A questo punto e giusto chiedersi: perch´ monitorare una rete priva- e ` ta e studiarla a livello di sicurezza? Innanzitutto perch´ una LAN puo e essere attaccata dall’interno da qualche abile utente, in secondo luogo per- ch´ un possibile soggetto attaccante potrebbe intercettare le informazioni e in transito tramite appositi software. 2.4 Sicurezza in una lan ` La sicurezza all’interno della rete e fondamentale e per discutere questo ` aspetto e bene introdurre i vari tipi di attacchi che possono compromette- ` re la stabilit` di una lan. Un attacco consistente e quello dello spoofing del a mac address di un host. Per comprendere meglio questo tipo di attacco ` e bene fare chiarezza sul contesto. Un host connesso ad una rete IP ha in generale 2 indirizzi: • Mac Address • IP Address ` Il MAC address di una scheda ethernet in teoria e immutabile! Gli indi- rizzi mac sono necessari affinch` il protocollo ethernet possa inviare in rete e dati indipendentemente dal protocollo applicativo utilizzato. Ogni trama ethernet ha le dimensioni di 1500 byte e ogni frame ha un’intestazione che contiene l’indirizzo mac del computer di partenza e del computer desti- ` ` natario. Il secondo indirizzo e l’indirizzo IP, ma IP e anche un protocollo utilizzato per applicazioni indipendentemente da qualsiasi tecnologia di rete operante in esso. Ogni computer (host) in una rete deve avere un in- dirizzo IP univoco (nessun altro deve usarlo) per poter comunicare. Gli indirizzi IP sono virtuali e sono assegnati via software. Per un corretto funzionamento di una comunicazione in rete il protocollo IP ed il proto- collo Ethernet devono lavorare insieme. IP comincia a costruire i pacchetti
  • 16. 16 Monitoraggio e sicurezza delle reti LAN che sono simili ai frame di livello 2 ma che hanno una struttura diversa. Questo tipo di pacchetti non possono essere trasmessi senza il link-layer dei dati. I pacchetti creati da IP sono trasmessi allo switch dopo essere stati in- capsulati e dopo l’aggiunta dell’intestazione ethernet. Lo switch indica a quale porta spedire il frame, controllando l’indirizzo di destinazione in una tabella interna che mappa il numero della porta con il mac address di destinazione. Quando viene creata una trama da inviare in rete, il protocollo ethernet non conosce qual` il mac address dell’ host di destinazione. L’ unica in- e ` formazione che conosce e l’IP di destinazione. Quindi ci deve essere un metodo per ottenere dall’indirizzo IP di destinazione il mac address della ` macchina alla quale e destinato il pacchetto. In questo contesto entra in gioco il protocollo ARP[3](Address Resolution Protocol). 2.4.1 Protocollo ARP Per capire meglio il funzionamento di questo protocollo basta considerare il seguente esempio. Una ARP request pone la domanda: il tuo indirizzo ` ` ` ip e x.x.x.x.? Se e cos´ mandami il tuo Mac address. La richiesta ARP e un ı pacchetto broadcast che viene trasmessa a tutti i computer di una lan. Ogni host controlla la richiesta ARP per verificare la presenza del proprio IP e poi risponde inviando una risposta ARP contenente il suo mac ad- dress. Per ridurre al minimo il numero di richieste ARP da trasmettere ad ogni host i sistemi operativi tengono una cache di risposte ARP. Quando un computer ricever` una risposta ARP, aggiorner` la sua cache ARP con a a la nuova associazione IP/MAC. ` Poich` ARP e un protocollo senza stato, la maggior parte dei sistemi opera- e tivi aggiorner` la loro cache se riceveranno una risposta senza considerare a se essi hanno inviato una vera e propria domanda.
  • 17. 2.4 Sicurezza in una lan 17 Quando si parla di ARP spoofing[4] si ha a che fare con un attacco che prevede la possibilit` , da parte di un host, di spoofare una entry da una a tabella (o cache) ARP di un host. Esempio (Host A, Host B della stessa lan): • Host A invia un ARP request (broadcast) con l’indirizzo IP di Host B; • Host B risponde con una falsa ARP reply (perch´ ha spoofato una e entry ARP); • Nell’entry spoofata l’indirizzo IP di host B e associato ad un mac ` diverso dal proprio. • Host A completa l’header del suo messaggio e crede di inviarlo a Host B, ma fisicamente i pacchetti non vanno verso host B. Questo meccanismo di forzatura della cache arp di una macchina viene chiamato ARP Poisoning cio` avvelenamento ARP. e ` Lo Spoofing di mac address e basato sulla possibilit` per un sistema di a inviare trame ethernet aventi l’indirizzo MAC mittente diverso da quello memorizzato nella propria scheda ethernet. Questo tipo di attacco avvie- ne (nella maggior parte dei casi) sfruttando una debolezza del protocollo ARP in fase di autenticazione. Nel prossimo paragrafo, dove verranno spiegate le basi dello spoofing verr` anche introdotto il tipo di attacco Man in the middle cio` l’interpo- a e sizione di un host (tra altre due macchine) capace di inviare riposte ARP contraffatte dopo aver spoofato il mac address nei frames che invia.
  • 18. 18 Monitoraggio e sicurezza delle reti LAN 2.5 Spoofing ` Per comprendere meglio il contesto entro il quale si dovr` lavorare e op- a portuno aggiungere qualche informazione su questo argomento. Dal dizionario informatico il termine inglese Spoofing si traduce con il ter- mine imbroglio ed ha due signficati: 1. Atto di introdursi in un sistema informativo senza averne l’autoriz- zazione. L’ intruso cambia il proprio numero IP, non valido per l’ac- cesso al sistema, in uno autorizzato. 2. Tecnica che permette di rendere le linee di comunicazione sgombre da pacchetti inviati per il controllo della connessione, tramite router. ` ` Chiaramente in questo contesto la definizione piu corretta e la prima e comunque non esiste un’unica tipologia di spoofing, ne esistono diversi ` tipi. I piu noti ed utilizzati sono: • web spoofing • mail spoofing • sms spoofing • ARP spoofing • DNS spoofing • IP spoofing ` In ogni caso si tratta di far credere alla vittima che si e qualcosa di di- verso, un hostname, un indirizzo ethernet o altro ancora. Di questi tipi di e` spoofing verrr` analizzato solamente ARP spoofing perch´ e quello che va a ` ad attaccare la sicurezza delle LAN che puo essere attaccata dall’interno se
  • 19. 2.5 Spoofing 19 vi sono utenti maliziosi. Un altro metodo di sniffing sulle reti switchate e il MAC flooding. Man- ` dando risposte false ARP verso uno switch in maniera molto rapida la tabella con le corrispondenze porte/MAC avr` un overflow. a 2.5.1 ARP Spoofing ` Questo attacco e applicabile solo su LAN ethernet e viene sfruttata una modalit` promiscua delle schede ethernet. Una scheda ethernet in que- a a` sta modalit` e in grado di vedere tutto il traffico della LAN (in pratica le schede ethernet in modalit` promiscua possono esaminare frames desti- a nati a mac address diverso dal proprio). Ricordiamo ora come funziona ` ARP (Address Resolution Protocol). ARP e il protocollo che provvede a far conoscere e diffondere il MAC address di una scheda su una LAN. Esempio: Un host (H) chiede: dove si trova D? A questo punto viene cercato D nella rete e, appena risponde, invia il proprio mac address al- ` l’host H che aggiorner` la sua ARP table all’interno della quale e salvata a la corrispondenza mac address - ip. Un attacco a questa procedura consente al soggetto attaccante di ap- propriarsi di dati ed informazioni che in realt` non sarebbero destinati a a lui. Esempio: Il nemico si dichiara come host D; viene inviato un ARP re- ply falso e l’host H invia al Nemico i dati destinati a D. Nel prossimo paragrafo verr` studiato quest’ultimo esempio in modo a ` piu rigoroso ed approfondito.
  • 20. 20 Monitoraggio e sicurezza delle reti LAN 2.5.2 Attacco Man In The Middle Uno Switch su una LAN smista i pacchetti a livello 2 del modello ISO/OSI. Nonostante la presenza dello Switch e possibile effettuare un attacco Man ` in the Middle, senza la necessit` di settare la scheda Ethernet in modalit` a a promiscua. Viene usata una tecnica chiamata Arp poisoning che e l’attivit` ` a di contraffazione della ARP table di una macchina. Se il nemico spedisce ad una macchina un ARP reply con il proprio MAC address e con l’indiriz- zo IP della macchina obiettivo, tutto il traffico indirizzato a quest’ultima verr` instradato al nemico. Facendo questo per due diverse macchine a obiettivo, avremo l’attacco Man in the Middle. Figura 2.5: Attacco Man in The Middle 2.5.3 Tabelle statiche e ARPwatch come difese dall’attacco Man in the middle Una soluzione hardware a questo tipo di attacco la si ottiene configurando lo Switch in modo che il traffico in uscita da una porta non possa cambiare MAC address.
  • 21. 2.5 Spoofing 21 Le soluzioni software sono di due tipi: • Tabelle statiche di ARP; mediante il comando arp -s hostname hard- ware -address e possibile creare delle tabelle statiche di ARP: queste ` tabelle non possono essere modificate dall’esterno; questo metodo ` e efficace ma oneroso per grandi LAN perch´ sarebbe necessaria e un’entry statica per ogni macchina in rete e comunque l’overhead delle tabelle sarebbe eccessivo. ` E anche degno di nota il comportamento delle route statiche con win- dows. I test hanno scoperto che windows ancora accetta le risposte ARP false ed aggiorna l’entry statica con il mac contraffatto, sabo- tando lo scopo delle route statiche. • ARPwatch, un’utility che controlla i cambiamenti della ARP table; se vengono notati cambiamenti ARPwatch avvisa tramite email e ag- giorna i log. Non esistono comunque delle vere e proprie difese universali contro l’attacco Arp spoofing. La clonazione di Mac Address si puo prevenire con ` una caratteristica presente su alcuni tipi di switch (high-end) chiamata port security (anche nota come Port Binding o Mac Binding). Port Security previene cambiamenti alle tabelle port/MAC di uno swit- ch, a meno che non siano fatti dei cambiamenti dall’amministratore di rete. ` Non previene l’ARP Spoofing , non e adatto a reti di grandi dimensioni e ` non e utilizzabile con reti che utilizzano DHCP (Dynamic Host Configu- ration Protocol). L’unica difesa possibile resta comunque la scoperta (cio` e scoprire lo spoofing). L’ utilizzo di ARP Watch, che e un programma per sistemi unix dispo- ` nibile gratuitamente in rete, rende possibile l’ascolto delle risposte ARP in rete. Il programma costruisce una tavola di associazioni IP/MAC e le memorizza in un file. Quando il mac address associato ad un IP cambia
  • 22. 22 Monitoraggio e sicurezza delle reti LAN ` (questo evento e chiamato flip -flop) viene inviata una mail all’ammini- stratore di rete. ` La clonazione di indirizzi MAC puo essere scoperta utilizzando anche RARP (Reverse Address Resolution Protocol). RARP richiede l’indirizzo IP di un MAC conosciuto. Mandare una sola richiesta RARP per tutti gli indirizzi MAC di una rete potrebbe rivelare se qualche computer sta clo- nando o se vengono ricevute risposte multiple per un solo mac-address. ` ARP spoofing e una delle vulnerabilit` dei moderni protocolli di rete a ` che puo permettere ad un soggetto attaccante un accorto, individuale e li- bero regno su una rete. IP spoofing, TCP sequence prediction sono solo ` alcuni esempi di altri attuali punti deboli dei protocolli di rete. E impro- babile che questi problemi siano affrontati dagli enti che standardizzano i e a ` protocolli finch` non se ne far` abuso su larga scala; comunque e impor- tante affrontare questi argomenti e prevenire questi attacchi in modo da garantire stabilit` e maggiore sicurezza all’interno di una rete. a ` L’obbiettivo di questa tesi e quello di realizzare uno strumento per controllare l’associazione tra i mac address degli host ed il numero di porta dello switch, per aumentare le possibilit` di controllo da parte del- a l’amministratore e migliorare la sicurezza del link-layer all’interno di una LAN.
  • 23. Capitolo 3 Protocollo SNMP 3.1 Il bisogno di standardizzazione ` Per gestire la variet` di componenti presenti su una rete moderna e neces- a saria una standardizzazione in modo da controllare con un unico proto- collo tutti gli apparati di rete. Sono stati creati due principali protocolli: SNMP e CSMIE/CMP (che significano rispettivamente Simple Network Management Protocol and Common Management Information Service Element / Common Mana- ` gement Information). Tra i due protocolli e prevalso il protocollo SNMP anche se in un primo momento si era pensato di poter lavorare indiffe- rentemente con uno dei due protocolli per ottenere informazioni dai vari componenti della rete. Il protocollo SNMP nasce ufficialmente nel 1989 e viene definito dal- la IEFT[5]; da quel momento SNMP diventa un protocollo standard per controllare gli apparati di rete tramite un’ unica applicazione di controllo. La comunicazione avviene attraverso il protocollo IP (Internet Protocol) infatti la prima implementazione avviene su protocollo TCP/IP, ma in se- guito verr` sviluppato anche su altri tipi di rete come IPX e AppleTalk. a Consultando anche altre fonti, come la documentazione[6] che analizza le caratteristiche di base di SNMP, ci si rende conto che per un amministra- ` tore la conoscenza di questo protocollo e fondamentale, perch´ permette e di monitorare, configurare i vari apparati e isolare i componenti difettosi
  • 24. 24 Protocollo SNMP che si possono trovare su una rete. Il protocollo lavora al livello 7 (livello applicativo)del modello ISO/OSI (standardizzato dall’ente ISO[7]) ed utilizza normalmente l’UDP (User Da- tagram Protocol) oltre ad un metodo di comunicazione client-server. Figura 3.1: SNMP nel modello ISO-OSI Questo metodo di comunicazione si riflette anche sui componenti del protocollo che principalmente sono: • Manager: e un’applicazione software che viene installata su un com- ` puter della rete che verr` utilizzato come stazione di controllo NMS a (Network Management Station); esistono inoltre molti software per ` le piattaforme piu diffuse in modo da non obbligare l’amministrato- re di rete ad orientarsi su una determinata piattaforma. • Agent: gli agenti risiedono sui dispositivi della rete (switch, rou- ter ...) e generano informazioni sul dispositivo. Queste informazioni vengono memorizzate all’interno di MIBs (Management Information Bases). Questi piccoli database verranno analizzati meglio nel pros- simo capitolo
  • 25. 3.2 Messaggi SNMP 25 Per avere un’idea della struttura manager/agent del protocollo SNMP basta osservare la seguente figura Figura 3.2: Architettura Manager/Agent SNMP Tale architettura consente di gestire degli elementi di rete (che sono ap- parecchiature come router, switch, hub, pc, etc.) usando degli agents, cio` e moduli software che risiedono sulle apparecchiature da gestire, come ri- portato in figura 3.2. Tali agents comunicano con una stazione di gestio- ne centralizzata (Network Management Station o NMS) che, interagendo con i primi, possono leggere o scrivere informazioni e raccogliere eventua- li segnalazioni di errore. Le informazioni o le caratteristiche gestibili per una particolare apparecchiatura, mediante il protocollo SNMP, verranno indicate come oggetti gestiti. L’insieme di questi oggetti costituisce un’a- strazione di database detta Management Information Base (MIB) che verr` a illustrata nei prossimi paragrafi ed in modo particolarmente approfondito nel prossimo capitolo. 3.2 Messaggi SNMP I messaggi vengono incapsulati in PDU (Process Data Unit) e viaggiano in rete grazie al protocollo SNMP che permette uno scambio di informazioni
  • 26. 26 Protocollo SNMP tra i vari dispositivi. I cinque tipi di messaggi utilizzati sono: • GetRequest. Utilizzato per richiedere valori specifici all’Agent sfrut- tando il comando get. • GetNextRequest. Molto simile al messaggio GetRequest, il Get- NextRequest viene utilizzato per scoprire tutti i dispositivi che sup- portano il protocollo SNMP all’interno di una rete. Il manager di rete con questo comando ogni volta che incontra un nodo SNMP conti- nua la ricerca. Quando viene riscontrato un errore allora il manager si ferma ed in- terrompe la ricerca perch´ ha gi` mappato tutti i nodi SNMP della e a rete. • SetRequest. Permette il controllo del dispositivo da remoto trami- te SNMP. Tramite il comando set e possibile abilitare o disabilitare ` un’interfaccia, pulire i registri, disconnettere utenti ed utilizzare al- tre funzioni associate al dispositivo di rete. ` • GetResponse. E il comando utilizzato dai device di rete per rispon- dere alle richieste dei comandi Get, Get-Next, Set. • Trap. Messaggio molto interessante attraverso il quale l’agent man- da al manager delle informazioni riguardanti il proprio stato oppure segnala la presenza di qualche errore. Occorre configurare i vari di- spositivi di rete per far in modo che questi restino in attesa di mes- saggi trap. In generale quindi le comunicazioni con l’ agent SNMP avvengono in 2 modi: Per i primi quattro tipi di messaggi, si ha una sequenza reque- st/response.
  • 27. 3.2 Messaggi SNMP 27 Figura 3.3: Richiesta e risposta SNMP ` mentre nel caso dei messaggi Trap e l’ agent ad inviare al manager una richiesta segnalando la presenza di un eventuale errore. Figura 3.4: Messaggio Trap
  • 28. 28 Protocollo SNMP Con la seguente immagine vengono riassunti tutti i messaggi SNMP. Figura 3.5: I messaggi SNMP Nella seconda versione del protocollo sono aggiunti altri tre comandi: • GetBulkRequest. Accumula in un’unica transazione la request e la response, in modo da risparmiare su informazioni e velocizzare il protocollo. In pratica Get-Bulk si comporta come una serie di in- terazioni GetNextRequest / GetResponse, eccetto il caso in cui sia sufficiente una singola interazione ` • SNMPv2TrapRequest. E stata necessaria la costruzione di un co- mando per i messaggi Trap per la seconda versione di SNMP perch´ e le caratteristiche di questi messaggi sono leggermente differenti da quelle della prima versione del protocollo. • InformRequest. Conferma la notifica di eventi al manager. Queste caratteristiche dei messaggi SNMP verranno richiamate nella parte relativa all’evoluzione del protocollo.
  • 29. 3.3 Versioni SNMP 29 3.3 Versioni SNMP Consultando come documentazione[8] e [9], si possono ricavare ulteriori ` informazioni sulla struttura del protocollo SNMP. Questo protocollo e sta- to realizzato unicamente per poter lavorare al livello applicativo ISO/OSI; per il trasporto delle informazioni esso si basa sul protocollo UDP. Si cerca ` di mantenere gli agent i piu semplici possibili e concentrare tutta la parte operativa del protocollo all’interno della stazione manager. ` Una rete gestita tramite protocollo SNMP e formata da quattro elementi: 1. Manager (stazione di gestione); serve a mettere in comunicazione diretta l’amministratore di rete e il sistema da gestire. Possiamo iden- tificare 4 fasi funzionali che caratterizzano la stazione di gestione. Esse si dividono in funzioni che rimangono indipendenti dall’imple- mentazione ed in funzioni che fanno parte dello standard SNMP. Nel primo caso le funzioni sono: • processi che comunicano sulla rete inviando comandi e riceven- do risposte. • interfaccia grafica per l’amministratore di rete. Nel secondo caso le funzioni hanno la capacit` di trasportare le ri- a chieste dal software applicativo agli agenti remoti e memorizzare in un database le informazioni che si ottengono dagli agent. 2. Agent; Il protocollo SNMP prevede un’architettura Manager/Agent, dove ` l’Agent e indispensabile per la comunicazione. Esso risponde alle ri- chieste del manager o NMS (Network Managemet Station) ed esegue ` le operazioni. E possibile trovare il processo Agent in vari disposi- tivi di rete come ad esempio (switch, router ...). Tramite SNMP si
  • 30. 30 Protocollo SNMP possono utilizzare anche agenti proxy che riescono a far comunicare SNMP con il dispositivo ed i suoi protocolli proprietari. Inoltre un Agent al suo interno contiene un database di variabili che servono per identificare le varie informazioni reperibili nel dispositivo stesso. 3. MIB (Management Information Base); ` ` Il MIB e la descrizione di cosa effettivamente il manager puo richie- ` dere al dispositivo da monitorare. Nel linguaggio comune pero il ` MIB e definito come il database che contiene tutte le possibili infor- ` mazioni che il manager puo reperire dalla rete. Tale database ha una struttura gerarchica ad albero. 4. Protocollo per la gestione; Permette: sia alla stazione di gestione il recupero del valore delle va- riabili MIB dall’agent grazie al comando get , sia all’agent di comu- nicare determinati eventi alla stazione di gestione grazie al comando trap.
  • 31. 3.3 Versioni SNMP 31 3.3.1 SNMPv1 La prima versione del protocollo nasce con delle caratteristiche che si man- terranno tali anche con lo svilupparsi del protocollo nelle versioni succes- sive. • Indipendenza dalle architetture di rete e dalle piattaforme utilizzate; • La semplicit` d’ utilizzo (la prima versione del protocollo prevedeva a solo pochi essenziali comandi); • La trasportabilit` ; a • L’ estensibilit` applicativa (in altre parole la possibilit` di sviluppare a a nuove funzioni di management senza, per questo, dover modificare gli Agent); • L’ indipendenza dalle architetture delle reti o delle piattaforme uti- lizzate • La robustezza dovuta alla semplicit` del protocollo di trasporto UDP a e alla facilit` di testing che questo implica (non necessita di multith- a reading per gestire le connessioni). • Indipendenza da altri servizi di rete. • Applicabilit` a basso costo a tutti i devices, nuovi ed esistenti (alme- a no per il lato Agent).
  • 32. 32 Protocollo SNMP Inoltre i moduli Agent sono in ascolto sulla porta UDP 161, le risposte sono inviate alla Network Management Station (Manager) utilizzando un ` numero di porta casuale. La dimensione massima del pacchetto SNMP e limitata solamente dalla massima dimensione del payload UDP(65507 by- te) ed i messaggi di errore e le eccezioni (Trap) sono spediti dall’Agent al Manager in maniera asincrona utilizzando la porta UDP 162. 3.3.2 SNMPv2 ` Come gi` detto in precedenza, SNMP, nella sua prima versione, e stato a progettato e realizzato per soddisfare esigenze di performance e quindi ha una struttura molto semplice e snella che, tuttavia, ne limita le funzionali- t` e anche gli aspetti di sicurezza. a ` Per questo, si e cercato di rimpiazzarlo con una sua successiva versio- ` ne: SNMPv2. Anche se SNMPv2 ha piu sotto-versioni, non ha mai preso ` troppo campo nel mondo Internet, fatta eccezione per SNMPv2c che e, al- ` meno in qualche caso, usata anche oggi. Questa versione non e mai stata standardizzata da IETF. In SNMPv2c, tra le novit` rispetto a SNMPv1, sono state aggiunte al- a ` cune operazioni che rendono piu semplice l’accesso ai Mib. I comandi aggiunti sono: • GetBulk: Una GetNext alla quale si puo specificare il numero di nuo- ` ` ve variabili da leggere. Se il campo non-repeaters e settato a 1, Get- Bulk, prima di fare le GetNext, esegue anche la get e, nel caso che la variabile non esista, non invia un errore, bens` esegue direttamente ı le GetNext. ` Un aspetto critico di questa PDU e il valore di max-repetitions, cio` e ` il numero di GetNext da fare: infatti, se questo valore e piccolo po- trebbe convenire fare delle GetNext singole, (probabilmente per l’ef- ` ` ficienza), se, al contrario, e troppo grande, puo accadere di leggere
  • 33. 3.3 Versioni SNMP 33 ` molte variabili in piu di quelle che realmente interessano. Nel caso ` in cui il numero di ripetizioni sia grande, la GetBulk puo occupare in maniera consistente l’Agent. • Inform: Una Trap di SNMPv1 che, pero, prevede una risposta da ` parte dell’Agent. ` ` Un’altra miglioria che e stata introdotta con SNMPv2c e l’ampliamento del numero dei possibili messaggi di errore. Spesso in SNMPv1, i messag- gi di errore erano generici e poco chiarificatori; nel v2c, invece, se ne sono ` aggiunti di nuovi, cos` da permettere al Manager di avere un’idea piu chia- ı ` ra dei problemi in cui e incorsa la PDU che ha inviato. Questa modifica del protocollo vale in special modo per quanto riguarda la PDU della Set. ` SNMPv2 e stato progettato, inoltre, per essere Transport Independent, cio` portabile su tutti i protocolli di livello Transport. e Con questi cambiamenti, SNMPv2 ha migliorato la performance, ri- ` spetto al v1, soprattutto grazie all’introduzione di GetBulk, a scapito pero dell’efficienza del protocollo che, per tutte queste nuove introduzioni, ri- sulta molto appesantito rispetto al suo predecessore e, forse per questo, non ha invaso il mercato.
  • 34. 34 Protocollo SNMP 3.3.3 SNMPv3 Nasce a partire dalla seconda met` del 1999 e rappresenta l’ultima evolu- a zione del protocollo SNMP. In seguito verranno analizzate le caratteristi- ` ` che piu innovative di questa versione, che e stata realizzata per rimediare alle mancanze delle precedenti versioni nell’ambito della sicurezza delle trasmissioni. Le caratteristiche di base di questo protocollo sono innanzitutto la sca- labilit` , la sua architettura (progettata per essere scalabile e duratura) e la a sua trasportabilit` (si utilizzano le stesse MIBs delle versioni precedenti). a ` Nonostante cio, la versione 3 non ha, almeno per ora, trovato grosso spa- zio sul mercato, dove continua ad essere adottata la prima versione perch´ e a` la maggiorazione delle funzionalit` e andata a scapito della semplicit` del a ` protocollo. La classica architettura di tipo Manager/Agent e stata sosti- ` tuita, in SNMPv3, da una piu complessa, composta da SNMP Engine e SNMP Applications: • Snmp-Engine e un motore smistatore di messaggi, un sottosistema ` per elaborare i messaggi, uno per la sicurezza e uno per il controllo dell’accesso. • Snmp-Applications e un’applicazione che contiene un generatore di ` comandi, un ricettore di notifiche, un risponditore ai comandi e altre funzioni. I messaggi SNMPv3 sono sostanzialmente diversi da quelli visti in pre- cedenza, infatti includono anche alcuni parametri di sicurezza ed il con- trollo dell’accesso. Questo protocollo consente di accettare messaggi sola- mente se le interrogazioni ricevono una risposta affermativa o comunque valida.
  • 35. 3.3 Versioni SNMP 35 ` Utilizza diversi livelli di sicurezza e puo stabilire se consentire un ac- cesso: • senza autenticazione • con semplice autenticazione • con autenticazione e codifica dei dati Per utilizzare questo protocollo esiste un software scritto in C++ chia- ` mato OpenSNMP. Questo software e una delle implementazioni open- ` source del protocollo nella terza versione (SNMPv3) ed e utilizzato come motore multi-threading.
  • 36. 36 Protocollo SNMP
  • 37. Capitolo 4 Management Information Base ` La Management Information Base[10] (MIB), e una base di dati contenente tutte le informazioni gestite dall’agent SNMP che e in funzione sulla device ` monitorata. MIB ha una struttura ad albero e le parti terminali dell’albero ` (foglie) rappresentano gli oggetti gestiti, ognuno dei quali puo rappresen- tare risorse o informazioni. In generale gli oggetti MIB si dividono in due tipi: • Discrete MIB Objects • Table MIB Objects Gli oggetti discreti SNMP contengono solamente una parte precisa e ben definita dei dati utili alla gestione. Questi oggetti sono spesso distinti dai Table Objects aggiungendo un’estensione .0 (dot-zero) ai loro nomi (se ` l’estensione .0 viene omessa da un nome di un oggetto SNMP, e sempre considerata implicita). Gli oggetti SNMP definiti table (tabella) contengono parti multiple di da- ti o valori per la gestione. Questa categoria di oggetti si distingue dagli oggetti discrete aggiungendo . (dot-extension) ai loro nomi seguito da un numero che distingue unicamente il valore particolare a cui si fa riferimen- to. La dot-extension si riferisce, in certa letteratura, al numero dell’istanza
  • 38. 38 Management Information Base dell’oggetto SNMP. Nel caso degli oggetti discrete, questo numero sar` ze- a ro, mentre nel caso degli oggetti table , questo numero sar` l’indice nella a tabella SNMP. Molti oggetti SNMP sono discreti, questo significa che l’operatore de- ve soltanto conoscere il nome dell’oggetto e nessun’altra informazione. Gli oggetti discreti rappresentano spesso dei valori standard di un dispo- sitivo, particolarmente utili per ricavare informazioni dalla rete al fine di monitorare e soprattutto confrontare le prestazioni dei dispositivi di vari ` produttori. Se l’estensione (numero dell’istanza) dell’oggetto non e speci- ficata, esso viene presupposto come 0 (dot-zero). ` Il MIB di un dispositivo SNMP e solitamente fisso; viene progettato e ´ implementato dai produttori del device ed in genere non puo essere ag- giunta o modificata nessuna funzione gi` esistente. Per questo motivo a quando si parla di estendibilit` SNMP ci si riferisce al software che ammi- a ` ` nistra il protocollo SNMP, infatti esso e un software che puo essere facil- mente compilato/ricompilato per interfacciarsi con le funzioni aggiuntive del dispositivo di rete. Gli oggetti all’interno di una MIB vengono definiti in base alle strutture SMI. 4.1 Struttura delle informazioni La Structure of Management Information (SMI), definita nella[11], defini- sce in modo standard, la struttura delle informazioni degli oggetti gestiti e la loro gerarchia. La definizione degli oggetti gestiti presenta tre aspetti principali: • Il nome, object identifier (OID). I nomi possono essere visualizzati sottoforma numerica e letterale.
  • 39. 4.1 Struttura delle informazioni 39 • L’ Abstract Syntax Notation One (ASN.1) definisce il tipo di dato associato ad ogni oggetto gestito e permette l’indipendenza dal tipo di macchina utilizzata. • Il meccanismo di codifica e decodifica del codice usato, segue le regole del Basic Encoding Rules (BER). Le caratteristiche principali della struttura SMI sono: la semplicit` , in- a fatti possono essere utilizzati valori scalari o tabelle bidimensionali di sca- lari per rappresentare i moduli MIB e l’estendibilit` . a Esistono due insiemi di dati definiti dall’SMI: ` Universal che e indipendente dall’applicazione, nel quale possiamo trovare (Integer, Octect string, Null, Object identifier (per identificare ogni oggetto), Sequence, Sequence-of (per la definizione di tabelle). ` Application, che e rilevante per una particolare applicazione. Nel- la seguente tabella vengono riassunti i tipi di dato comuni a moltissime applicazioni: Tipo di Dato Descrizione Counter ` contatore che puo essere incrementato, riparte da 0 in caso di raggiungimento della soglia massima Gauge ` contatore che puo essere incrementato e decrementato. Quando raggiunge il valore massimo necessita di un reset Ipaddress unico tipo di Network Address, viene definito al momento Networkaddres definito dal costruttore Opaque necessario per trasferire dati arbitrari codificati mediante Octect String; Timeticks conta il numero di secondi a partire da un valore di inizio concordato
  • 40. 40 Management Information Base ` E inoltre possibile definire oggetti MIB; SNMP prevede tutti gli stru- menti per farlo partendo dai tipi fondamentali. 4.2 Strutture delle MIB Lo schema in figura 4.1 riassume la struttura ad albero SNMP MIB e visualizza anche la parte della MIB2. Figura 4.1: Albero MIB A partire dall’alto della gerarchia MIB, sono presenti le organizzazioni standard a livello mondiale (ccitt, joint-iso-ccitt e iso; quest’ultima ha identificatore 1).
  • 41. 4.2 Strutture delle MIB 41 L’albero prosegue e l’iso utilizza il numero 3 per identificare org (insieme delle organizzazioni riconosciute e che possono emanare standard) che riserva l’identificatore 6 per il dod (Department of Defense americano). Da questo punto nasce il sotto albero internet con identificatore 1. Utilizzando la notazione ASN.1 : internet OBJECT IDENTIFIER ::= iso(1) org(3) dod(6) internet(1) ovvero OID=1.3.6.1 Internet, si suddivide a sua volta in altri quattro nodi: • Directory: Utilizzato da osi per sviluppi futuri; • Mgmt: contiene le MIB definite dall’Internet Architecture Board (IAB) ` [12], un ente che si occupa dello sviluppo di Internet. Non e pos- sibile che entrambe le MIB (MIB-I e MIB-II) siano presenti nel sot- ` toalbero ed e per questo motivo che esse possiedono lo stesso OID (1.3.6.1.2.1); • Experimental: contiene oggetti utilizzati per gli esperimenti in Inter- net; • Private: contiene le MIB definite dai costruttori (solo quelli che si registrano all’ Internet Assigned Number Authority (IANA)[13]) nel sotto ramo enterprise. ` La struttura gerarchica ad albero del nodo internet e di fondamen- tale importanza sia per la crescita dell’SNMP MIB che per il continuo aggiornamento del protocollo SNMP.
  • 42. 42 Management Information Base 4.3 RMON MIB Era il 1991 quando fu pubblicato nella [14] un ulteriore gruppo appar- tenente alla categoria MIB (Management Information Base) chiamato - RMON MIB (Remote Network Monitoring MIB; molte informazioni su questo gruppo di mib si possono trovare consultando [15]). Questa RFC contiene i tools necessari per una network management station (o NMS) in modo che essa possa controllare e configurare un monitor (una sorta di nodo che controlla le informazioni della rete). ´ Il ramo RMON MIB puo essere a sua volta suddiviso in altre sezioni: Figura 4.2: Struttura RMON MIB Tra questi MIB, quello di particolare importanza per il monitoraggio ` ´ delle reti switchate e Matrix. Questo MIB puo essere diviso in due tabelle; una tabella di controllo ed una tabella per i dati (divisa in due parti). La Matrix Control Table e una tabella che identifica un’interfaccia per ` controllare e identificare il massimo numero di coppie di indirizzi sorgen- ´ te/destinazione (quando la tabella si riempie le associazioni piu vecchie vengono cancellate).
  • 43. 4.4 MIB2 43 La Matrix Source-to-Destination Table (matrixSDTable) contiene un set di statistiche che tengono traccia dell’ammontare del traffico tra due sistemi. Gli elementi di questa tabella sono conteggi di pacchetti, di byte e di erro- ri. Quando manca dello spazio vengono cancellate le informazioni. Questa tabella ha come indici le seguenti informazioni nel seguente or- dine: 1. Interfacce controllate 2. indirizzo fisico della sorgente 3. indirizzo fisico della destinazione La Matrix Destination-to-Source Table (matrixDSTable) e identica alla pre- ` cedente tabella, cambiano solamente gli ordini degli indici: 1. Interfacce controllate 2. indirizzo fisico della destinazione 3. indirizzo fisico della sorgente ` Attualmente lo standard utilizzato e la MIB-II e queste informazioni sui MIB sono difficili da trovare su uno switch commerciale. Per que- sto motivo nei prossimi paragrafi verranno presentati esempi concreti, in particolare verranno controllati i MIB-II. 4.4 MIB2 ` ` MIB-II e suddiviso in piu gruppi, ognuno dei quali raccoglie informazioni ` per la gestione e l’analisi della rete. MIB-II e un gruppo molto importante all’interno dell’albero perch´ ogni workstation che supporta SNMP sup- e porta anche MIB-II. Esso rappresenta la seconda versione della base di in- ` formazioni di gestione e la sua definizione puo essere consultata all’inter- ` no dell’RFC 1213. La struttura ad albero contenente la MIB-II e quella vista
  • 44. 44 Management Information Base nella figura 4.1, mentre la seguente tabella descrive cosa rappresentano i nodi che la compongono. MIB-II OID Descrizione system (1) 1.3.6.1.2.1.1 Oggetti riguardanti il sistema operativo. interfaces (2) 1.3.6.1.2.1.2 Stato di ogni interfaccia di una periferica gestita, raccoglie dettagli sul traffico inviato, ricevuto e su errori di trasferimento. at (3) 1.3.6.1.2.1.3 Gruppo non utilizzato. ip (4) 1.3.6.1.2.1.4 Contiene dati sul routing e su tutti gli aspetti relativi al protocollo IP. icmp (5) 1.3.6.1.2.1.5 Dati relativi al protocollo ICMP. tcp (6) 1.3.6.1.2.1.6 Fornisce lo stato della connessione ed altre informazioni sul protocollo TCP. udp (7) 1.3.6.1.2.1.7 Informazioni sul protocollo UDP. egp (8) 1.3.6.1.2.1.8 Dati relativi al protocollo EGP. transmission (10) 1.3.6.1.2.1.10 Riguarda informazioni specifiche sulla trasmissione. snmp (11) 1.3.6.1.2.1.11 Dati sul protocollo SNMP (Presente solo in MIB-II)
  • 45. 4.4 MIB2 45 4.4.1 RMON 2 La tabella seguente descrive gli elementi del gruppo RMON2. RMON2 Group Descrizione contenuto Protocol Directory(11) Lista dei protocolli monitorabili Protocol Distribution(12) Numero di octets e pacchetti dei protocolli a livello di rete Address Map(13) lista di associazioni mac-address/IP e l’interfaccia dalla quale sono state ricavate queste informazioni Network Layer Host(14) Conta l’ammontare del traffico da e verso un indirizzo di rete Network Layer Matrix(15) Conta l’ammontare del traffico tra coppie di indirizzi di rete Application Layer Host(16) Conta l’ammontare del traffico, per protocollo, spedito e ricevuto da un indirizzo di rete Application Layer Matrix(17) Conta l’ammontare del traffico, per protocollo spedito e ricevuto da una coppia di indirizzi di rete User History(18) Controlla periodicamente le variabili dell’utente e costruisce log in base ai parametri definiti dagli utenti. Probe Configuration(19) Definisce configurazioni per i parametri standard di RMON ` Dalla documentazione della 3Com[16] e possibile ricavare ulteriori in- formazioni sulla gerarchia MIB-2, in particolare due dei sotto rami di que- sto gruppo, sono delle MIB complementari chiamate RMON ed RMON2. RMON2 estende le capacit` dell’originale RMON MIB aggiungendo pro- a tocolli per il MAC level.
  • 46. 46 Management Information Base Siccome sono inclusi anche i protocolli a livello di rete (come il pro- ` tocollo IP), e possibile monitorare il traffico attraverso router/switch col- ` legati alle sottoreti locali. RMON2 puo essere utilizzato per identificare caratteristiche sul traffico e per scoprire applicazioni lente. Inoltre utiliz- ` zando RMON2 si e in grado di monitorare: • La sorgente del traffico che arriva ad un router tramite un’altra rete • La destinazione del traffico che parte da un router tramite un’altra rete ` Siccome RMON2 include anche protocolli del livello applicativo, e in gra- do di ottenere informazioni dettagliate sul breakdown di traffico provenien- te da un’applicazione.
  • 47. 4.5 MIB specifiche 47 4.5 MIB specifiche Consultando [17] si possono ottenere dei Mib specifici, come quelli della famiglia Forwarding Database for Transparent Bridges che contengono tutte le informazioni sulla tabella che memorizza corrispondenze tra mac address ed indirizzi di porta di uno switch. 4.5.1 dot1dTpFdbAddress Qualche dettaglio per le variabili MIB che includono OIDs (Object Identi- fiers) lo possiamo ottenere direttamente dalla documentazione della CISCO [18] che riporta i due OIDs necessari per i mac address e per i nu- meri di porta dello switch. .1.3.6.1.2.1.17.4.3.1.1 dot1dTpFdbAddress OBJECT-TYPE -- FROM BRIDGE MIB -- TEXTUAL CONVENCTION MacAddress SYNTAX OCTECT STRING (6) MAX-ACCESS read-only STATUS mandatory DESCRIPTION "A unicast MAC address for which the bridge has forwarding and/or filtering information." ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) dot1dBridge(17) dot1dTp(4) dot1dTpFdbTable(3) dot1dTpFdbEntry(1) 1 }} Questo tipo di MIB che numericamente si presenta cos`: ı .1.3.6.1.2.1.17.4.3.1.1 ` e un oggetto di sola lettura che permette la visualizzazione dei singoli MAC Address che lo switch ha inserito nella tabella di forwarding.
  • 48. 48 Management Information Base 4.5.2 dot1dTpFdbPort Per quanto riguarda i numeri di porta, consultando la stessa documenta- ` zione del caso precedente e possibile ottenere maggiori informazioni sul MIB. .1.3.6.1.2.17.4.3.1.2 dot1dTpFdbPort OBJECT TYPE -- FROM BRIDGE MIB SYNTAX Integer MAX ACCESS read only STATUS Mandatory DESCRIPTION "Either the value "0", or the port number of the port on which a frame having a source address equal to the value of the corresponding instance of dot1dTpFdbAddress has been seen. A value of "0" indicates that the port number has not been learned, but that the bridge does have some forwarding/filtering information about this address (that is,in the StaticTable). Implementors are encouraged to assign the port value to this object whenever it is learned, even for addresses for which the corresponding value of dot1dTpFdbStatus is not learned(3)." ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib 2(1) dot1dBridge(17) dot1dTp(4) dot1dTpFdbTable(3) dot1dTpFdbEntry(1) 2 } Questo tipo di MIB, che numericamente si presenta cos´: ı .1.3.6.1.2.1.17.4.3.1.2 ` e un oggetto di sola lettura che permette la visualizzazione dei singoli numeri di porta che lo switch ha inserito nella tabella di forwarding/filtering. ` Se ritorna un valore 0 significa che il numero di porta non e stato memo- rizzato bene nella tabella di associazioni dello switch.
  • 49. Capitolo 5 Net-SNMP 5.1 Un software open source La scelta di Net - SNMP come software da utilizzare per il monitoraggio di una lan ha svariati vantaggi: • Licenza GPL (General Public Licence), e supportato da una comunit` ` a diffusa in tutto il mondo • Praticit` di utilizzo a • Utilizza il protocollo SNMP diventato ormai uno standard nei router ` e negli switch piu diffusi. ` a • E gi` preinstallato nelle ultime versioni delle distribuzioni linux piu ´ diffuse ` In generale il pacchetto e l’implementazione open - source del protocol- lo SNMP e come tale prevede tutte le versioni e tutti i comandi di questo protocollo. 5.1.1 Le caratteristiche di Net-SNMP ` Dalla linea di comando e possibile richiedere informazioni ed interagire con un dispositivo SNMP con i seguenti metodi:
  • 50. 50 Net-SNMP • Richieste singole (snmpget, snmpgetnext) • Richieste multiple (snmpwalk, snmptable, snmpdelta) • Manipolazione delle informazioni di configurazione di un dispositi- vo (snmpset) • Conversione dalla forma numerica a quella testuale del MIB, visua- lizzazione sia del contenuto sia della struttura del MIB (snmptran- slate) Inoltre e presente un browser grafico del MIB (tkmib), scritto in Tk/perl ` ed un demone per la ricezione delle notifiche del SNMP (snmptrapd). Le notifiche selezionate possono essere annotate (su syslog o in un norma- le file di testo), per poi essere spedite ad un altro sistema di ammini- strazione di SNMP o essere passate ad un’applicazione esterna. ` E compreso anche un agente estendibile per la risposta alle domande del SNMP per informazioni in materia di gestione (snmpd). Inoltre inclu- de il sostegno incorporato di una vasta gamma di moduli delle informa- ` zioni MIB che puo essere estesa usando moduli caricati dinamicamente, scritti esterni ed ordini, sia con i protocolli di funzionamento in multiplex dell’ SNMP (SMUX) che con l’estensibilit` dell’agente (AgentX). a Come ultima caratteristica NET -SNMP prevede delle librerie per svi- luppare nuove applicazioni del protocollo SNMP, sia con il linguaggio C che tramite il Perl. NET-SNMP funziona sulle principali distribuzioni Unix come per i si- stemi operativi Microsoft Windows.
  • 51. 5.2 Installazione Net-SNMP 51 5.2 Installazione Net-SNMP ` L’ultima versione del programma e comodamente scaricabile da source- forge (all’indirizzo http://sourceforge.net/project/showfiles.php?group id=12694), occorre semplicemente estrarre e compilare il file scaricato utilizzando i se- guenti comandi: tar zxvf net- snmp- 5.3.1.tar.gz cd net- snmp- 5.3.1 ./configure su make install Una volta installato, per controllare l’effettivo funzionamento del pro- gramma basta digitare da shell il seguente comando che traduce dalla for- ma numerica a quella letterale un MIB # snmptranslate .1.3.6.1.2.1.1.3.0 SNMPv2-MIB::sysUpTime.0 ` ` Se si e connessi alla rete si puo provare a contattare l’agent di prova sul sito del programma. In questo esempio viene chiesto il sysUpTime cio` da e ` quanto tempo e attivo l’agent SNMP # snmpgetnext - u noAuthUser test.net -snmp.org sysUpTime SNMPv2 -MIB::sysUpTime.0 = Timeticks: (245066) 0:40:50.66
  • 52. 52 Net-SNMP 5.3 Funzioni e comandi Esiste una variet` di comandi molto vasta implementata da Net - SNMP a che segue le caratteristiche del protocollo stesso. Per motivi di utilit` al- a l’interno di questa tesi verranno elencati i principali comandi. Per avere ` un’idea piu dettagliata occorre seguire on line il tutorial [18]. Per testa- re questi comandi (in caso di assenza di agent SNMP) sulla rete locale e ` possibile utilizzare un apposito agent che lavora sul sito di NET - SNMP all’indirizzo test.net-snmp.org. Prima di studiare ed utilizzare i comandi ` occorre conoscere la loro sintassi che in generale e la seguente: # snmp[nome - comando] - v [versione] - u [utente] [destinazione] [mib] 5.3.1 snmptranslate ` Questo comando gi` visto in precedenza con un esempio, e molto potente a e permette di navigare l’albero dei MIB in vari modi. Oltre ad eseguire la conversione da numerica a letterale, con un apposito comando fornisce anche la conversione opposta. # snmptranslate - On SNMPv2 - MIB::system.sysUpTime.0 .1.3.6.1.2.1.1.3.0 L’aggiunta di -On serve per permettere al comando un output numerico. Sono possibili altre modalit` importanti come la seguente, che permette di a visualizzare le informazioni estese di un nodo mib aggiungendo alla sin- tassi il flag - Td.
  • 53. 5.3 Funzioni e comandi 53 # snmptranslate -On -Td -Ib ’sys.*ime’ .1.3.6.1.2.1.1.9.1.4 sysORUpTime OBJECT-TYPE -- FROM SNMPv2-MIB -- TEXTUAL CONVENTION TimeStamp SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at the time this conceptual row was last instantiated." ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) sysORTable(9) sysOREntry(1) 4 } 5.3.2 snmpget ` Il comando snmpget e utilizzato per ricevere informazioni da un host in- dicando il suo nome, la sua comunit` e il numero di MIB OID (Object a Identifier). Ecco un semplice esempio sempre riguardante il sysUpTime: # snmpget -v 2c -c demopublic test.net-snmp.org sysUpTime.0 system.sysUpTime.0 = Timeticks: (586752671) 67 days, 21:52:06.71 ` Un errore comune quando si utilizza snmpget e quello di andare fuori dall’indice dei dati che si stanno cercando. Nei suddetti ordini, la variabi- ` ` le richiesta dall’ OID e uno scalare e l’indice degli scalari e sempre un semplice (zero), quindi tutti gli OID’S devono concludere per .0. Se viene ` omesso, si ottiene un errore. Si noti che i tipi di errori differiscono un po fra SNMPv1 e SNMPv2c: # snmpget - v 1 - c demopublic test.net -snmp.org sysUpTime Error in packet Reason: (noSuchName) There is no such variable name in this MIB. This name doesn’t exist: system.sysUpTime # snmpget - v 2c - c demopublic test.net -snmp.org sysUpTime system.sysUpTime = No Such Instance currently exists
  • 54. 54 Net-SNMP 5.3.3 snmpgetnext Tramite questo comando si riesce ad ottenere nell’albero MIB l’oid succes- sivo a quello dichiarato nel comando. Per chiarire il comportamento anche in questo caso mostriamo un esempio: # snmpgetnext - v 2c - c demopublic test.net -snmp.org system.sysUpTime.0 SNMPv2 -MIB::sysContact.0 = STRING: wgriffin@sparta.com # snmpgetnext - v 2c - c demopublic test.net -snmp.org system.sysContact.0 system.sysName.0 = net -snmp # snmpgetnext - v 2c - c demopublic test.net -snmp.org system.sysName.0 system.sysLocation.0 = UCDavis ` In questo esempio e stato richiesto l’elemento successivo al system.sys- ` UpTime che in questo caso e sysContact.0, l’elemento successivo a sysCon- ` tact.0 che e system.sysName.0 e l’elemento successivo a system.sysName.0 ` che e system.sysLocation.0. Oltre al nome dell’ object identifier viene re- stituito anche il contenuto. 5.3.4 snmpwalk ` Questo comando e quello che verr` utilizzato nella realizzazione del cen- a tro di controllo per ottenere delle informazioni importanti come i numeri di porta dell’agent SNMP (cio` lo Switch 3300 XM della 3Com c ) ed i mac e address degli host ad esso collegati. Una breve introduzione a snmpwalk ` e necessaria per capire come il comando riesce ad ottenere queste infor- mazioni. Snmpwalk funziona come una serie di getnext annidati, capaci di restituire tutte le informazioni presenti all’interno dell’ agent SNMP. ` Ovviamente e possibile estrarre dall’intero elenco le informazioni che si cercano, specificandole quando si lancia il comando. Anche questa volta verr` mostrato un esempio per chiarire il comportamento di snmpwalk. a
  • 55. 5.3 Funzioni e comandi 55 # snmpwalk -v 2c -c demopublic test.net-snmp.org system SNMPv2-MIB::sysDescr.0 = STRING: FreeBSD snmptest.netsec.tislabs.com 5.4-RELEASE-p9 FreeBSD 5.4-RELEASE-p9 #0: Thu Jan 12 05:31:33 UTC 2006 root@zathras.netsec.tislabs.com:/usr/obj/usr/src/sys/GENERIC i386 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.8 SNMPv2-MIB::sysUpTime.0 = Timeticks: (241760) 0:40:17.60 SNMPv2-MIB::sysContact.0 = STRING: wgriffin@sparta.com SNMPv2-MIB::sysName.0 = STRING: snmptest.netsec.tislabs.com SNMPv2-MIB::sysLocation.0 = STRING: "netsec lab, room 2021" SNMPv2-MIB::sysORLastChange.0 = Timeticks: (9) 0:00:00.09 SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB SNMPv2-MIB::sysORID.2 = OID: TCP-MIB::tcpMIB SNMPv2-MIB::sysORID.3 = OID: IP-MIB::ip SNMPv2-MIB::sysORID.4 = OID: UDP-MIB::udpMIB SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup SNMPv2-MIB::sysORID.6 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIB Compliance SNMPv2-MIB::sysORID.7 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.8 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance SNMPv2-MIB::sysORID.9 = OID: IF-MIB::ifMIB SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module for SNMPv2 entities SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for managing TCP implementations SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module for managing IP and ICMP implementations SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for managing UDP implementations SNMPv2-MIB::sysORDescr.5 = STRING: View-based Access Control Model for SNMP. SNMPv2-MIB::sysORDescr.6 = STRING: The SNMP Management Architecture MIB. SNMPv2-MIB::sysORDescr.7 = STRING: The MIB for Message Processing and Dispatching. SNMPv2-MIB::sysORDescr.8 = STRING: The management information definitions for the SNMP User-based Security Model. SNMPv2-MIB::sysORDescr.9 = STRING: The MIB module to describe generic objects for network interface sub-layers SNMPv2-MIB::sysORUpTime.1 = Timeticks: (2) 0:00:00.02 SNMPv2-MIB::sysORUpTime.2 = Timeticks: (2) 0:00:00.02 SNMPv2-MIB::sysORUpTime.3 = Timeticks: (2) 0:00:00.02 SNMPv2-MIB::sysORUpTime.4 = Timeticks: (2) 0:00:00.02 SNMPv2-MIB::sysORUpTime.5 = Timeticks: (3) 0:00:00.03 SNMPv2-MIB::sysORUpTime.6 = Timeticks: (5) 0:00:00.05 SNMPv2-MIB::sysORUpTime.7 = Timeticks: (6) 0:00:00.06 SNMPv2-MIB::sysORUpTime.8 = Timeticks: (6) 0:00:00.06 SNMPv2-MIB::sysORUpTime.9 = Timeticks: (9) 0:00:00.09
  • 56. 56 Net-SNMP 5.3.5 snmptable Il comando restituisce, tramite una piccola tabella, le informazioni relative ad un Object Id in modo da facilitare la visualizzazione dei vari campi, anche se l’output del comando in alcuni casi restituisce un numero di ca- ratteri eccessivo per ogni riga. # snmptable -v 2c -c demopublic -Cw 80 test.net-snmp.org sysORTable SNMP table: SNMPv2-MIB::sysORTable sysORID SNMPv2-MIB::snmpMIB TCP-MIB::tcpMIB IP-MIB::ip UDP-MIB::udpMIB SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance SNMP-MPD-MIB::snmpMPDCompliance SNMP-USER-BASED-SM-MIB::usmMIBCompliance IF-MIB::ifMIB SNMP table SNMPv2-MIB::sysORTable, part 2 sysORDescr The MIB module for SNMPv2 entities The MIB module for managing TCP implementations The MIB module for managing IP and ICMP implementations The MIB module for managing UDP implementations View-based Access Control Model for SNMP. The SNMP Management Architecture MIB. The MIB for Message Processing and Dispatching. management information definitions for the SNMP User-based Security Model. The MIB module to describe generic objects for network interface sub-layers SNMP table SNMPv2-MIB::sysORTable, part 3 sysORUpTime 0:0:00:00.06 0:0:00:00.06 0:0:00:00.06 0:0:00:00.06 0:0:00:00.07 0:0:00:00.10 0:0:00:00.10
  • 57. 5.4 Uso di snmpwalk 57 5.3.6 snmpset ` Questo comando e utilizzato per modificare le informazioni sull’agent. Per ogni variabile da configurare occorre specificare l’object id, il tipo di dato (INTEGER, STRING, TIMETICKS ecc.) e il valore da assegnare alla ` variabile. La corretta sintassi da attribuire a questa funzione e visualizza- bile tramite il comando snmp-h alla sezione TYPE. # snmpset -v 2c -c demopublic test.net-snmp.org ucdDemoPublicString.0 s prova assegnazione UCD-DEMO-MIB::ucdDemoPublicString.0=STRING:prova assegnazione Alcuni messaggi di errore potrebbero comparire nel caso l’utente non disponga del permesso di scrittura. 5.3.7 snmptrap I messaggi Trap (o notification) possono essere utilizzati dalle entit` di rete a per segnalare un comportamento anomalo alla stazione manager. Questi messaggi sono generati in caso di malfunzionamento della rete come ad esempio la caduta di un collegamento o il sovraccarico di una struttura. ` Per comprendere meglio questa funzione e possibile consultare il tuto- rial on line e fare delle prove tramite le varie versioni di SNMP perch´ e i messaggi Trap cambiano sintassi a seconda della versione. 5.4 Uso di snmpwalk Per ottenere i Mac Address e i corrispondenti numeri delle porte dello switch nella rete del laboratorio occorre utilizzare snmpwalk. L’output ` del comando puo essere modificato e migliorato utilizzando il costrutto -O che modifica con varie opzioni il formato del risultato. In generale uno switch che utilizza il protocollo SNMP possiede dei MIB proprietari cio` e ` inseriti dai produttori dell’apparato. Per controllarli e possibile scaricare,
  • 58. 58 Net-SNMP presso i siti dei costruttori, un elenco di tutti i MIB che un determinato switch supporta, oppure utilizzando un mib -browser si riesce a navigare tutta la struttura. Come visto nell’esempio del paragrafo riferito al comando snmpwalk la ` sintassi e la seguente: # snmpwalk - v [n. versione] - c [CommunityString] [Destinazione] [MIB] Consultando i MIB e la loro struttura si possono utilizzare quelli visti nel capitolo precedente che permettono di ricavare le informazioni relative ai mac address degli host collegati alla rete ed il numero di tutte le porte attive dello switch. A questo punto basta utilizzare i rispettivi valori MIB nel comando snmpwalk. # snmpwalk - c public -v 1 - O vq 192.168.8.253 1.3.6.1.2.1.17.4.3.1.1 00 02 B3 D7 EF 15 00 07 E9 89 AC CF 00 07 E9 89 AF E3 00 07 E9 89 B0 95 00 07 E9 89 B0 A5 00 07 E9 89 B0 B2 00 07 E9 E7 49 24 00 07 E9 E7 4A 23 00 07 E9 E7 4A 25 00 07 E9 F5 76 EF 00 07 E9 F5 77 1D 00 07 E9 F5 77 22 00 07 E9 F6 34 5F 00 07 E9 F6 34 85 00 07 E9 F6 34 DF
  • 59. 5.4 Uso di snmpwalk 59 Per quel che riguarda i numeri di porta occorre utilizzare il seguente comando # snmpwalk - c public -v 1 - O vq 192.168.8.253 1.3.6.1.2.1.17.4.3.1.2 22 7 6 2 14 16 21 20 5 1 19 9 3 8 4 Con i valori v e q del flag output si riesce a modificare la risposta del co- mando in modo da ottenere solo un valore numerico tralasciando i parti- colari sulla versione del protocollo, sul tipo di Object Id, e sul tipo di grandezza.
  • 60. 60 Net-SNMP
  • 61. Capitolo 6 SwitchSNMP centro di controllo 6.1 Introduzione e Prerequisiti Dopo aver analizzato il protocollo SNMP, le sue caratteristiche, i MIB ed il software Net - SNMP (utilizzando i suoi comandi dalla shell di linux) ` e giunto il momento di realizzare l’implementazione di una pagina web per riassumere le informazioni utili per il monitoraggio della rete del la- ` boratorio. Per avere maggiore controllo sulle informazioni e sui dati, e bene implementare una pagina in PHP che permetta di visualizzare dal web l’associazione tra numeri di porta dello switch e i mac address degli host ad esso collegati. Essendo il php un linguaggio lato server, necessita almeno di un server locale per poter fare qualche prova. Per questo mo- tivo occorre installare e configurare, su un host della rete, una versione di ` Apache [20] (attualmente il server web piu diffuso) in modo da poter co- struire e visualizzare da locale una pagina web. Inoltre occorre installare anche PHP [21] per far funzionare il piccolo centro di controllo. Vediamo ora l’installazione e la configurazione di questi due potenti software. 6.2 Installazione di Apache 2.2 Per iniziare occorre disporre dei file di installazione che possono essere tranquillamente scaricati dal sito ufficiale di apache al seguente indirizzo: http://httpd.apache.org/docs/2.2/install.html. Una volta scaricata l’ultima versio-
  • 62. 62 SwitchSNMP centro di controllo ne occorre decomprimerla utilizzando tar oppure gzip a seconda del file che si scarica: gzip - d httpd- 2.2.3.tar.gz tar xvf httpd- 2.2.3.tar Ora tramite il comando cd httpd-2.2.3 si entra nella cartella appena estrat- ta dalla quale si avvia la procedura di configurazione e compilazione. ./configure –prefix=PREFIX make make install PREFIX/bin/apachectl start ` ` Il prefisso PREFIX e la directory dove verr` installato Apache e puo a essere settato a piacere. In questo caso, seguendo la guida PREFIX = ` /usr/local/apache2. Per procedure di configurazione piu avanzate o per altre informazioni basta digitare da shell il comando ./configure –help. Ter- minata la procedura di installazione possiamo controllare se effettivamen- ` te apache e in esecuzione tramite il comando: ps aux | grep httpd Per avviare il demone quindi occorre digitare da shell: • /usr/local/apache2/bin/apachectl start ` Un altro riscontro del corretto funzionamento di Apache lo si puo otte- ` nere aprendo il browser all’indirizzo http://localhost dal quale e possibile visualizzare la pagina principale (index.html) situata nella directory /ht- docs del sottoalbero di /PREFIX. Per fermare il demone occorre digitare da shell: • /usr/local/apache2/bin/apachectl stop
  • 63. 6.3 Installazione PHP 5 63 6.3 Installazione PHP 5 Anche per quanto riguarda php si possono trovare varie versioni scaricabili gratuitamente dal sito ufficiale: http://www.php.net/downloads.php. Per questo lavoro e stata utilizzata la ` versione 5.1.6 che, una volta estratta, va configurata. Anche in questo caso per avere dettagli maggiori sulla configurazione basta digitare il comando ./configure – help. Comunque una configurazione base prevede gi` il supporto di apache2 e mysql digitando da shell il seguente a comando: ./configure - - with - apxs2 = /usr/local/apache2/bin/apxs - - with - mysql Si passa poi alla fase di compilazione con i seguenti comandi: make make install In seguito occorre copiare il file php.ini in una locazione stabilita. Questo file permette la configurazione di php: cp php.ini - dist /usr/local/lib/php.ini A questo punto occorre abilitare il modulo php in Apache. Per farlo basta editare il file /usr/local/apache2/conf/httpd.conf ed aggiungere, o controllare che non sia esclusa la seguente linea (per PHP 5): LoadModule php5_module modules/libphp5.so Apache non riconosce i file .php, quindi occorre anche aggiungere le seguenti righe ad httpd.conf che risolvono questo problema: AddType application/x -httpd -php .php .phtml AddType application/x -httpd -php -source .phps
  • 64. 64 SwitchSNMP centro di controllo ` Finalmente dopo tutti questi passaggi e possibile testare anche php con un breve esempio che consiste nell’editare la pagina iniziale di Apache in modo da creare una pagina php. Per farlo basta modificare il file index.html aggiungendo poi il tag di apertura e di chiusura del php (internamente al tag body) inserendo all’interno una semplice funzione: <?php phpinfo(); ?> Occorre salvare il file con l’estensione .php e aprire il browser alla pagina http://localhost/index.php per poter visualizzare una pagina contenente tutte le informazioni riguradanti il php.
  • 65. 6.4 Implementazione 65 6.4 Implementazione ` Per ottenere il numero di porta e gli indirizzi mac e possibile utilizzare due funzioni del php: snmpwalk ( hostname , community, object_id [timeout [retries]])) shell_exec ( cmd ) La prima funzione ha lo stesso comportamento del comando snmpwalk ` visto in precedenza, in questo caso pero restituisce un array contenente le informazioni richieste. La seconda funzione invece esegue il comando dato come argomento e come output presenta l’output del comando stesso. Per motivi di praticit` a in questa tesi ho utilizzato la seconda funzione richiamando i comandi: snmpwalk -c public -v 1 -O vq 192.168.8.253 1.3.6.1.2.1.17.4.3.1.1 snmpwalk -c public -v 1 -O q 192.168.8.253 1.3.6.1.2.1.17.4.3.1.2 Come visto nel capitolo precedente, il primo dei due comandi restituisce i mac address delle schede ethernet che collegano i computer alle porte dello switch, mentre il secondo comando restituisce come output i numeri di porta ai quali sono collegati gli host della rete. Questi due comandi restituiscono le informazioni in colonna e sotto ` forma di stringhe. Tramite il php ed alcune funzioni e possibile elaborare queste stringhe in modo da ottenere le sole informazioni necessarie. 6.4.1 Creazione variabili Nel php le variabili non necessitano di una dichiarazione a priori che ne specifica il tipo. Possono essere create quando si ha la necessit` di a ` utilizzarle, l’importante e che siano sempre precedute dal carattere $.
  • 66. 66 SwitchSNMP centro di controllo Per realizzare la pagina in php, che funzioner` da centro di controllo per a lo switch, occorre quindi creare alcune variabili che memorizzano l’output dei comandi visti in precedenza: $output1 = shell_exec(’snmpwalk -c public -v 1 -O q 192.168.8.253 1.3.6.1.2.1.17.4.3.1.2’); $output2 = shell_exec(’snmpwalk -c public -v 1 - O vq 192.168.8.253 1.3.6.1.2.1.17.4.3.1.1’); Questi valori costituiscono due stringhe entrambe contenenti un insieme di valori ed informazioni che andranno elaborate con la funzione explode. 6.4.2 Funzione explode ` Nel php la funzione principale per elaborare le stringhe e explode() che restituisce un array ed ha la seguente sintassi: explode ( string separator, string string [int ,limit] ) Questa funzione restituisce un array di stringhe, di cui ciascun elemento ` e una sottostringa costituita dalla stringa che si ottiene utilizzando l’argomento separator (o separatore). Se il limite viene fissato, l’array restituito conterr` un massimo di elementi, cio` quelli dichiarati nel a e ` campo limit e come ultimo elemento il resto di stringa. Se il separatore e una stringa vuota (”), explode () restituir` FALSE. Se il separatore contiene a un valore che non e contenuto nel campo stringa, allora explode () ` restituir` un array che contiene la stringa di partenza. Anche se implode () a ` puo, per motivi storici, accettare i parametri senza badare all’ordine, explode () non riesce a farlo. Occorre accertarsi che il separatore venga sempre dichiarato prima della stringa da dividere, altrimenti il comando dar` errore. a Il risultato delle elaborazioni sar` quindi memorizzato, sotto forma di a array nelle seguenti variabili: $data1 = explode(’ ’, $output1); $data2 = explode(’ "’, $output2);