LinuxCon 2015 Linux Kernel Networking WalkthroughThomas Graf
This presentation features a walk through the Linux kernel networking stack for users and developers. It will cover insights into both, existing essential networking features and recent developments and will show how to use them properly. Our starting point is the network card driver as it feeds a packet into the stack. We will follow the packet as it traverses through various subsystems such as packet filtering, routing, protocol stacks, and the socket layer. We will pause here and there to look into concepts such as networking namespaces, segmentation offloading, TCP small queues, and low latency polling and will discuss how to configure them.
Open vSwitch - Stateful Connection Tracking & Stateful NATThomas Graf
Update on status of connection tracking and stateful NAT addition to the Linux kernel datapath. Followed by a discussion on the topic to collect ideas and come up with next steps.
LinuxCon 2015 Linux Kernel Networking WalkthroughThomas Graf
This presentation features a walk through the Linux kernel networking stack for users and developers. It will cover insights into both, existing essential networking features and recent developments and will show how to use them properly. Our starting point is the network card driver as it feeds a packet into the stack. We will follow the packet as it traverses through various subsystems such as packet filtering, routing, protocol stacks, and the socket layer. We will pause here and there to look into concepts such as networking namespaces, segmentation offloading, TCP small queues, and low latency polling and will discuss how to configure them.
Open vSwitch - Stateful Connection Tracking & Stateful NATThomas Graf
Update on status of connection tracking and stateful NAT addition to the Linux kernel datapath. Followed by a discussion on the topic to collect ideas and come up with next steps.
Kamailio combined with Asterisk creates and incredibly robust and durable VoIP framework. With scalability and security, adding Kamailio to an asterisk deployment makes sense and saves money.
Performance comparison between different versions of Asterisk and different channels.
Presentation at Astricon 2017
Online Trainings
Complete Asterisk PBX Training Coupon http://bit.ly/2E6U7fP
Understanding and Troubleshooting SIP http://bit.ly/2WZKkzy
VoIP Design Training Coupon http://bit.ly/2tlLFmG
VoIP Hacking Training Coupon http://bit.ly/2X4Pjz7
Quick Start to OpenSIPS Coupon http://bit.ly/2Bt72XJ
Books
Complete Asterisk Training Paperback and Kindle Book https://amzn.to/2tm7TFb
Complete Asterisk Training eBook PDF http://bit.ly/2UUebHG
Building Telephony Systems with OpenSIPS http://bit.ly/2SsUt9a
Treinamento Online
SIP em Profundidade Coupon de Treinamento http://bit.ly/2GpatTq
Asterisk Essencial Coupon de Treinamento http://bit.ly/2BzCjs1
Livros:
Guia e Configuração do Asterisk Paperback e Kindle https://amzn.to/2S2lwmZ
Guia de Configuração do Asterisk eBook PDF http://www.asteriskguide.com
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...Fred Posner
Presentation from AsteriskWorld 2017 at ITEXPO. Discussion of how I started with Asterisk and Kamailio as well as how to build Reliability, Scalability, and Security into your telephony platform.
IPv6 Segment Routing is a major IPv6 extension that provides a modern version of source routing that is currently being developed within the Internet Engineering Task Force (IETF). We propose the first open-source implementation of IPv6 Segment Routing in the Linux kernel. We first describe it in details and explain how it can be used on both endhosts and routers. We then evaluate and compare its performance with plain IPv6 packet forwarding in a lab environment. Our measurements indicate that the performance penalty of inserting IPv6 Segment Routing Headers or encapsulat- ing packets is limited to less than 15%. On the other hand, the optional HMAC security feature of IPv6 Segment Routing is costly in a pure software implementation. Since our implementation has been included in the official Linux 4.10 kernel, we expect that it will be extended by other researchers for new use cases.
Presented at ANRW'17 https://irtf.org/anrw/2017/program.html on behalf of David Lebrun
Kamailio combined with Asterisk creates and incredibly robust and durable VoIP framework. With scalability and security, adding Kamailio to an asterisk deployment makes sense and saves money.
Performance comparison between different versions of Asterisk and different channels.
Presentation at Astricon 2017
Online Trainings
Complete Asterisk PBX Training Coupon http://bit.ly/2E6U7fP
Understanding and Troubleshooting SIP http://bit.ly/2WZKkzy
VoIP Design Training Coupon http://bit.ly/2tlLFmG
VoIP Hacking Training Coupon http://bit.ly/2X4Pjz7
Quick Start to OpenSIPS Coupon http://bit.ly/2Bt72XJ
Books
Complete Asterisk Training Paperback and Kindle Book https://amzn.to/2tm7TFb
Complete Asterisk Training eBook PDF http://bit.ly/2UUebHG
Building Telephony Systems with OpenSIPS http://bit.ly/2SsUt9a
Treinamento Online
SIP em Profundidade Coupon de Treinamento http://bit.ly/2GpatTq
Asterisk Essencial Coupon de Treinamento http://bit.ly/2BzCjs1
Livros:
Guia e Configuração do Asterisk Paperback e Kindle https://amzn.to/2S2lwmZ
Guia de Configuração do Asterisk eBook PDF http://www.asteriskguide.com
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...Fred Posner
Presentation from AsteriskWorld 2017 at ITEXPO. Discussion of how I started with Asterisk and Kamailio as well as how to build Reliability, Scalability, and Security into your telephony platform.
IPv6 Segment Routing is a major IPv6 extension that provides a modern version of source routing that is currently being developed within the Internet Engineering Task Force (IETF). We propose the first open-source implementation of IPv6 Segment Routing in the Linux kernel. We first describe it in details and explain how it can be used on both endhosts and routers. We then evaluate and compare its performance with plain IPv6 packet forwarding in a lab environment. Our measurements indicate that the performance penalty of inserting IPv6 Segment Routing Headers or encapsulat- ing packets is limited to less than 15%. On the other hand, the optional HMAC security feature of IPv6 Segment Routing is costly in a pure software implementation. Since our implementation has been included in the official Linux 4.10 kernel, we expect that it will be extended by other researchers for new use cases.
Presented at ANRW'17 https://irtf.org/anrw/2017/program.html on behalf of David Lebrun
Uno studio sull'efficacia di checker automatici per la modernizzazione di cod...Idriss Riouak
La continua evoluzione dei linguaggi di programmazione ha reso difficile mantenere i software aggiornati con le ultime convenzioni dettate dagli standard. Come ogni processo aziendale, la modernizzazione del software rappresenta un costo. Nasce così l’esigenza d’avere strumenti che automatizzino tale processo.
Clang Tidy è uno software scritto in C++. Il suo scopo è quello di mettere a disposizione degli sviluppatori, un framework flessibile per diagnosticare e correggere i più comuni errori di programmazione e l’utilizzo obsoleto
dei costrutti del linguaggio.
Anomaly detection in network traffic flows with big data analysis techniques Maurizio Cacace
Tesi magistrale in Ingegneria Informatica.
Per un ulteriore approfondimento sull'attività svolta, visitare il mio profilo Linkedin: https://www.linkedin.com/in/mauriziocacace/
Implementazione in Java di plugin Maven per algoritmi di addestramento per re...Francesco Komauli
L’idea del progetto di questa tesi è applicare all’addestramento di reti neurali artificiali le funzionalità di uno strumento di gestione di progetti software, in questo caso Maven, per rendere configurabili e componibili in modo dichiarativo, e possibilmente estendibili, sia l’algoritmo di addestramento che le componenti di supporto, come la persistenza della rete neurale e la gestione dei dati dell’insieme di addestramento. Tale idea è nata dall’analogia tra progetti software e addestramento di reti neurali artificiali. Prima dell’introduzione di strumenti di gestione, ciascun progetto software possedeva una propria organizzazione del processo di compilazione, test, deploy, di versionamento e di gestione delle dipendenze. Maven introduce un’interfaccia comune ed un insieme di convenzioni che, oltre a rendere portabile il progetto, ne semplifica il processo di build. Le reti neurali vengono costruite e addestrate usando strumenti di calcolo matematico o scrivendo un eseguibile che utilizzi una libreria dedicata. Il codice per l’addestramento è sviluppato per lo specifico problema, talvolta scartato una volta terminato il suo compito. Nonostante l’addestramento di reti neurali non sia deterministico come un processo di compilazione, ma adotti una serie di tecniche ed euristiche per trovare soluzioni non ottime, sono state cercate delle caratteristiche comuni ai due processi. Si vuole quindi introdurre Maven per definire un prototipo di interfaccia comune all’addestramento di reti neurali artificiali, tenendo conto delle problematiche di questo tipo di processo. Il meccanismo sviluppato per consentire configurabilità e componibilità delle componenti introduce il concetto di servizi: tipologie di oggetti a ciascuna delle quali è associata una factory col compito di configurare le istanze create. Nella configurazione da iniettare attraverso una factory sono tenuti distinti i puri dati, come parametri numerici o stringhe, e servizi collaboratori dotati di comportamento. Attraverso questa distinzione è possibile rappresentare in formato puramente testuale la gerarchia di composizione di un qualunque servizio. Le responsabilità del gestore di progetti sono importare le factory da librerie dichiarate come dipendenze, costruire i servizi in base alla struttura gerarchica specificata nel descrittore di progetto ed utilizzarli per effettuare l’addestramento.
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...Gianluca Ritrovati
Implementazione di una
interfaccia grafica (GUI) per la gestione di una rete di illuminazione pubblica. L’applicazione, legge da un database esterno i dati della rete di illuminazione e li presenta all’utente. Questi dati comprendono le coordinate
GPS, le caratteristiche tecniche e l’indirizzo seriale di ciascun lampione. Mediante questi dati la rete di illuminazione viene rappresentata su una mappa
topografica e sottoforma di lista ordinata.
L’operatore ha quindi a disposizione una serie di strumenti e di criteri
per la seleziare i lampioni e per inviare determinati comandi da remoto.
Publish/Subscribe EDI with Content-Based RoutingNicola Mezzetti
"Progettazione e sviluppo di un sistema di comunicazione Publish/Subscribe con routing content-based di contenuti XML" - tesi di laurea di Roberto Santi, correlatore dr. Nicola Mezzetti, relatore prof. Fabio Panzieri
Sistemi SCADA - Supervisory control and data acquisitionAmmLibera AL
I sistemi SCADA (Supervisory control and data acquisition) svolgono un ruolo importante in tutte le strutture che realizzano l'automazione industriale. Per conoscerli, progettarli e realizzarli è necessario disporre di conoscenze che non si limitano a una specifica disciplina.
Un buon progetto SCADA può comportare l'uso di strumenti e metodi di ingegneria del software, di progettazione hardware, di gestione dei progetti. Allo stesso tempo debbono essere ben note le caratteristiche del processo fisico da controllare, le funzionalità comunemente richieste a un sistema di controllo, le attitudini degli operatori e altro ancora.
Questo ebook ha lo scopo di presentare gli elementi essenziali che caratterizzano uno SCADA e, al tempo stesso, una sintesi delle conoscenze necessarie a chiunque si trovi a partecipare alla realizzazione di sistemi di questo tipo.
Gli autori:
Stefano Bimbo, responsabile tecnico in un'azienda di automazione, progettista e sviluppatore di sistemi SCADA, ha partecipato a importanti progetti in ambito nazionale e internazionale in diversi settori dell'automazione.
Enrico Colaiacovo, ingegnere elettronico, progettista di sistemi informativi aziendali e sviluppatore di sistemi SCADA, ha partecipato a progetti di automazione nel settore dell'energy management.
Link all’articolo originale "Sistemi SCADA - Supervisory control and data acquisition" su apogeonline.com:
http://www.apogeonline.com/libri/88-503-1042-0/scheda
"Un'architettura dinamica service-oriented
per l'esecuzione distribuita di task" - Tesi di laurea di Andrea Piemontese, correlatore dr. Nicola Mezzetti, relatore prof. Fabio Panzieri
The fundamental objective is stopping and so identifying, the attacks even before they might bring
about damage to the system; for that reason a good project has to operate at the source of the attack.
Both IDS and IPS act during the attack, so sometimes they are ineffective. The instrument that will be designed must have the purpose of identifying any attack before it comes out. To make this sort of “magic prevention” possible, let’s imagine we have to attack a system by taking on the attacker’s point of view.
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
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.
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.
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);