Monitoraggio di mac address in lan

  • 6,263 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,263
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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);
  • 67. 6.4 Implementazione 67 6.4.3 Ciclo per numerare gli host attivi A questo punto conviene inserire un ciclo capace di contare il numero di host accesi presenti nella LAN. Occorre quindi realizzare tramite un for il conteggio del numero degli elementi di uno dei due array ($data1 o ` $data2); la scelta e ininfluente perch` contengono lo stesso numero di e elementi. for ($index = 0; $index < sizeof($data1) -1 ; $index++) { /* Creazione di un array ausigliario per il * numero di porte in modo da poter contare */ quelle attive sullo switch $tmp = explode(’SNMP’, $data1[($index +1)]); /* Creazione Tabella *-->Prima colonna con il valore dell’id di ogni host *-->Seconda colonna riporta i valori dei numeri di * porta dello switch *-->Terza colonna i mac address corrispondenti ai numeri * delle porte dello switch */ //variabile ausiliaria per far partire il conteggio degli //host da 1 (e non da 0) in questo modo l’ultimo id della //lista rappresenta il numero totale degli host attivi in //rete $index2 = $index ; $index2++ ; echo "<tr><td>$index2</td><td>" . ($tmp[0]) . "</td><td>$data2[$index]" . ’"’ . "</td></tr>"; } ` Inoltre per garantire un aggiornamento rapido delle informazioni si puo semplicemente aggiungere un pulsante di refresh che ricarichi la pagina php. <form action=http://localhost/index.php target="_self"> <input type="submit"value="Refresh"> </form>
  • 68. 68 SwitchSNMP centro di controllo ` ` Tutto cio e stato realizzato in modo da visualizzare una rappresentazione grafica che permette all’amministratore di rete di avere sotto controllo: • I Mac Address di tutti gli host accesi e connessi alla rete • I numeri di porta ai quali sono connessi gli host • Un identificativo per ogni pc connesso in rete • Il numero totale di host collegati allo switch ` Di seguito si puo osservare un’immagine del piccolo centro di controllo realizzato in questa tesi. Figura 6.1: Centro di Controllo realizzato 6.4.4 Il file index.php ` Per concludere questo capitolo e bene riportare il file index.php al com- pleto per poter visualizzare il codice e per renderlo disponibile a futuri cambiamenti. Questa pagina infatti potrebbe costituire una delle pagine ` di un centro di controllo per le reti locali piu complesso ed esteso ad altri livelli della struttura ISO - OSI.
  • 69. 6.4 Implementazione 69 <html> <body> <h1>Switch SNMP Control Center</h1> <table width="%" border="1" cellspacing="3" cellpadding="2"> <tr> <td>&nbsp;<strong>Host Id</strong></td> <td><strong>Port Number</strong></td> <td><strong>MAC Address</strong></td> </tr> <tr> <?php /* Inizio ad utilizzare il protocollo SNMP per chiedere * informazioni allo switch con il comando snmpwalk. * Utilizzo la funzione shell_exec che restituisce una * stringa contenente l’output di snmpwalk. Chiamo * output1 e output2 rispettivamente le stringhe contenenti * i numeri di porta dello switch e i mac-address degli * host collegati */ $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’); /* Utilizzo la funzione explode per elaborare le * stringhe le divido in base alle caratteristiche * dell’output di snmpwalk ed ottengo come output * rispettivamente 2 array data1 e data2 */ $data1 = explode(’ ’, $output1); $data2 = explode(’ "’, $output2); // Prova di utilizzo split(); // $data1 = split(’n’, $output1, sizeof($data2)); /* Eseguo un ciclo for che controlla la lunghezza * dell’array (posso controllare sia data1 che data2 * dato che hanno lo stesso numero di elementi) in modo * da ottenere il conteggio degli host presenti sulla * rete e posso riempire il campo Host id */ for ($index = 0; $index < sizeof($data1) -1 ; $index++){
  • 70. 70 SwitchSNMP centro di controllo /* Creo un array per il conteggio delle porte * / attive sullo switch $tmp = explode(’SNMP’, $data1[($index +1)]); /* Creo la tabella. La prima colonna contiene il valore * dell’id di ogni host, nella seconda colonna riporto * i valori del numero di porta dello switch ed infine * nella terza colonna il mac address corrispondente * al numero di porta dello switch */ $index2 = $index ; $index2++ ; echo "<tr><td>$index2</td><td>" . ($tmp[0]) . "</td><td>$data2[$index]" . ’"’ . "</td></tr>"; } ?> </tr> </table> <!-- Pulsante refresh --> <form action=http://localhost/index.php target="_self"> <input type="submit"value="Refresh"> </form> <p>&nbsp;</p> </body> </html>
  • 71. 6.5 Confronto dei risultati 71 6.5 Confronto dei risultati Come passo finale per verificare il corretto funzionamento del centro di controllo implementato, utilizzo il software di controllo messo a disposi- zione dalla 3Com per amministrare lo switch. Per farlo basta collegarsi allo switch tramite il browser di un host della rete. Per entrare in que- sto centro di controllo occorrono le credenziali da amministratore della rete che, una volta inserite, permettono di controllare e modificare tutte ` le informazioni relative allo switch. La sezione piu interessante di questo centro di controllo e lo Switch Database del quale e riportata un’immagine. ` ` Figura 6.2: 3Com Switch Database Osservando questa immagine gi` ci si rende conto del funzionamen- a to del piccolo centro di controllo, infatti anche in questo sono presenti le stesse associazioni tra mac address degli host e numero di porta dello switch.
  • 72. 72 SwitchSNMP centro di controllo
  • 73. Capitolo 7 Conclusioni Lo studio del protocollo SNMP e delle MIB mi hanno portato a cercare una soluzione per il monitoraggio del link - layer nella rete del laboratorio. Non essendo possibile utilizzare al momento un protocollo migliore del- ` l’ARP, per prevenire attacchi a questo livello e indispensabile un monito- raggio assiduo. L’utilizzo di strumenti open-source, che permettono di ottenere gli stes- si risultati di potenti software commerciali, per il controllo di una lan, si ` e rivelata un’ottima scelta anche per la capacit` di integrazione di questi a strumenti. Lo svolgimento della mia tesi mi ha condotto alla realizzazione di un piccolo centro di controllo per le reti locali tramite il linguaggio php. Per quel che riguarda lo sviluppo futuro di questo lavoro, sicuramente in primo luogo ci potr` essere un’integrazione di questa pagina php in un a ` centro di controllo piu esteso capace di monitorare anche altri livelli del sistema ISO/OSI. ` Realizzando un centro di controllo piu ampio si possono sviluppare an- che delle politiche per la gestione degli utenti, manager ed amministratori ` del centro di controllo. Il funzionamento di SwitchSNMP e stato testato ` piu volte in laboratorio verificando l’esatto confronto con i MAC address di ogni macchina attiva sulla rete. Inoltre ho confrontato i risultati utiliz- ` zando l’analogo software della 3COM col quale si puo controllare il data- base dello switch.
  • 74. 74 Conclusioni La modernit` e la rapidit` che il protocollo SNMP impiega per ottenere a a le informazioni sono indubbiamente un punto di forza di questo protocol- lo. Se poi uniamo a questo vantaggio la libert` nella creazione di MIB per- a ` sonalizzati tramite il protocollo SNMP, e veramente possibile monitorare ogni cosa.
  • 75. Elenco delle figure 2.1 OpenView di HP . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Screenshot di OpenNMS . . . . . . . . . . . . . . . . . . . . . 12 2.3 Screenshot di Nagios . . . . . . . . . . . . . . . . . . . . . . . 13 2.4 Schema della rete da monitorare . . . . . . . . . . . . . . . . 14 2.5 Attacco Man in The Middle . . . . . . . . . . . . . . . . . . . 20 3.1 SNMP nel modello ISO-OSI . . . . . . . . . . . . . . . . . . . 24 3.2 Architettura Manager/Agent SNMP . . . . . . . . . . . . . . 25 3.3 Richiesta e risposta SNMP . . . . . . . . . . . . . . . . . . . . 27 3.4 Messaggio Trap . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5 I messaggi SNMP . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.1 Albero MIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.2 Struttura RMON MIB . . . . . . . . . . . . . . . . . . . . . . . 42 6.1 Centro di Controllo realizzato . . . . . . . . . . . . . . . . . . 68 6.2 3Com Switch Database . . . . . . . . . . . . . . . . . . . . . . 71
  • 76. Bibliografia [1] NET - SNMP project http://net-snmp.sourceforge.net/ [2] OpenNMS Project http://www.opennms.org/ [3] ARP protocol http://www.rfc-archive.org/getrfc.php?rfc=1293 [4] An Introduction to ARP Spoofing - Sean Whalen http://www.node99.org/projects/arpspoof/arpspoof.pdf [5] Internet Engineering Task Force http://www.ietf.org/ [6] Strumenti per il monitoraggio di rete tramite Protocollo SNMP - Nicola Calisesi [7] International Organization for Standardization http://www.iso.org/
  • 77. [8] Monitoraggio della posizione di unit` mobili in aree confinate - Tesi a di Giuseppe Raffa http://digilander.libero.it/beppewww/thesisGR/index.htm/ [9] Progetto e realizzazione di un sistema per il monitoraggio per reti eterogenee basato su protocollo SNMP - Riganti Andrea http://etd.adm.unipi.it/theses/available/etd-04062005-143133/ [10] Management Information Base - RFC 1213 [11] Structure and Identification of Management Information for TCP/IP based internets - RFC 1155 [12] Internet Architecture Board http://www.iab.org/ [13] Internet Assigned Number Authority http://www.iana.org/ [14] Documentazione RMON MIB - RFC 1271 http://www.ietf.org/rfc/rfc1271.txt [15] Lesson About SNMP - Maxime Delcroix, Olivier Lumetta, Janusz Kleban http://www.et.put.poznan.pl/snmp/main/mainmenu.html [16] Documentazione 3COM c http://support.3com.com/infodeli/tools/netmgt/tncsunix/product/091500/c15snmp.htm
  • 78. [17] Bridge Objects MIB - RFC 1493 http://www.multinet.de/mib2/rfc1493.html [18] Documentazione CISCO SYSTEMS c http://www.cisco.com/public/support/tac/documentation.html [19] Net - SNMP tutorial http://net-snmp.sourceforge.net/tutorial/tutorial-5/ [20] Apache web server http://httpd.apache.org/ [21] PHP http://www.php.net/docs.php
  • 79. Ringraziamenti Ringrazio innanzitutto il prof. Walter Cerroni per la sua infinita dispo- nibilit` e per avermi guidato nella realizzazione di questa tesi. Volevo a ringraziare anche l’Universit` (II Facolt` di Ingegneria con sede a Cesena) a a per la possibilit` di utilizzare il laboratorio di Via Rasi e Spinelli dove ho a fatto molta pratica sui sistemi Linux. Il merito di questa tesi va anche alla mia famiglia, in particolare ai miei genitori Anna e Giuseppe che mi hanno sempre sostenuto durante gli stu- di e alla mia ragazza Aurora, che ha avuto la pazienza di starmi vicino in questi anni di studio. Un ringraziamento a tutto lo staff di Solarix S.R.L. di Pesaro, che mi ha dato la possibilit` di conoscere la realt` di una azienda a a del settore e mi ha seguito durante l’installazione e l’utilizzo di moltissimi software open-source nel periodo del mio tirocinio presso le loro strutture. Un saluto anche a tutto il gruppo scout di Misano Adriatico, un ab- braccio a tutti gli Shameless Dreams (Dave, Matt, Giammy, Lorenzo, Bigu. E mi raccomando Let’s rock!) e a tutta la mia compagnia (Dani, Luana, Roby, Chicco, Diego, Inno ecc.). Ringrazio infine tutti i miei amici universitari, compagni di studio: Angelo (per l’aiuto con Latex), Giorgio (per le dritte sul PHP), Michele, Mirco, Federico, Bicio, Tommy, Zoff, Arca, Filippo, Matteo, Caca, Cinzia, Marpa, Enrico, Monta, Davide, Marco, Costa, Stewy e tutti gli altri. Ragazzi senza di voi non avrei mai passato degli anni cos` speciali! ı Grazie di cuore da Luca Gentilini