darkstat - un analizzatore di traffico di rete

ArticleCategory: [Choose a category, translators: do not translate this, see list below for available categories]

SystemAdministration

AuthorImage: [Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in de Mario M. Knopf

de to en Mario M. Knopf

en to it Davide Lo Vetere

AboutTheAuthor:[A small biography about the author]

Mario si occupa di Linux, reti e altri temi legati alla sicurezza.

Abstract:[Here you write a little summary]

Questo articolo presenta un analizzatore di traffico di rete, "darkstat", e fornisce una panoramica sulla installazione e l'uso del programma.

ArticleIllustration:[One image that will end up at the top of the article]

[Illustration]

ArticleBody:[The main part of the article]

Introduzione

"darkstat" [1] � un monitor di rete, che analizza il traffico di rete e genera sulla base di queste delle statistiche HTML. Queste statistiche posso dunque essere fruite con un web browser. A questo scopo l'autore del programma, Emil Mikulic, usava "ntop" [2] strumento di vecchia data. Ma era poco soddisfatto della sua stabilit� e di alcuni problemi legati all'uso della memoria. Per questo ha sviluppato "darkstat". Le statistiche si riferiscono alla comunicazione tra gli host, il traffico generato e le porte usate. In pi� si possono avere diagrammi sull'intervallo temporale in cui i pacchetti sono stati analizzati.

Installazione

I sorgenti del programma "darkstat" sono qui [3]. Alternativamente ci sono dei mirror [4] e [5]. Chi cercasse il package per Debian cerchi qui [6].

"darkstat" dipende, come molti analizzatori di rete, dalla "libpcap" [7]. Questa libreria, usata dagli analizzatori di pacchetti, fornisce una comoda interfaccia per catturare e analizzare i pacchetti al livello del dispositivo di accesso alla rete. Per installare "darkstat" serve dunque questa libreria.

Si deve poi compilare come al solito "./configure && make && make install". Naturalmente l'ultima istruzione deve essere da root.

Cominciamo

"darkstat" presenta dei parametri che possono essere impostati all'esecuzione. Comunque, per un primo test, un avvio senza parametri va benissimo. Per poter lavorare il programma deve essere avviato da root o con un "sudo" appositamente configurato [8]:

neo5k@proteus> sudo /usr/local/sbin/darkstat

Immaginiamo che abbiate le nozioni base di Amministratore di Sistema.
Di solito queste due sono d'oro:

#1) Rispettare la privacy altrui.
#2) Pensare prima di digitare.

Password:

Dopo che l'utente autorizzato ha immesso la password, "darkstat" parte e stampa diversi messaggi di stato:

darkstat v2.6 using libpcap v2.4 (i686-pc-linux-gnu)
Firing up threads...
Sniffing on device eth0, local IP is 192.168.1.1
DNS: Thread is awake.
WWW: Thread is awake and awaiting connections.
WWW: You are using the English language version.
GRAPH: Starting at 8 secs, 51 mins, 22hrs, 30 days.
Can't load db from darkstat.db, starting from scratch.
ACCT: Capturing traffic...
Point your browser at http://localhost:666/ to see the stats.

Dato che la partenza � stata buona e che l'output � perentorio, possiamo dare un'occhiata ai possibili parametri che accetta il software.

Opzioni d'avvio

Come detto prima, "darkstat" fornisce diverse opzioni, che gli si possono dare all'avvio. I parametri sono:

l'opzione "-i" specifica l'interfaccia di rete.

darkstat -i eth1

Avviato senza parametri "darkstat" apre la porta 666 (brrr..). Si pu� cambiare la porta di default col parametro "-p":

darkstat -p 8080

Per associare una porta a una specifica interfaccia di rete si pu� usare l'opzione "-b". In quest'esempio � associato l'indirizzo di local loopback:

darkstat -b 127.0.0.1

La risoluzione DNS pu� essere inibita col parametro "-n". Questo pu� essere utile a coloro che sono senza una linea dedicata.

darkstat -n

L'opzione "-P" impedisce a "darkstat" di impostare come promiscuo l'accesso alla scheda di rete ("promiscuous mode"). Questo non � tuttavia consigliabile perch� "darkstat" in questo modo intercetta e analizza solo i pacchetti indirizzati al MAC della scheda di rete sulla quale � in ascolto, perdendo cos� tutto il resto di traffico: inutile direi.

darkstat -P

Il parametro "-l" attiva un filtro "SNAT"per la rete locale. "SNAT" � acronimo di "Source Network Address Translation" (Traduzione degli indirizzi sorgente di rete) e significa che il router sostituisce l'indirizzo IP del client (privato) col suo (pubblico). Ogni pacchetto viene dunque instradato in vece del client.

darkstat -l 192.168.1.0/255.255.255.0

Col parametro "-e" si pu� implementare un filtro sul pacchetto.

darkstat -e "port not 22"

Dalla versione 2.5 in poi "darkstat" pu� essere slegato dalla shell ed eseguito come demone.

darkstat --detach

Col parametro "-d" si pu� specificare dove "darkstat" deve creare il suo database.

darkstat -d /directory

L'opzione "-v" attiva la modalit� prolissa ("verbose mode"):

darkstat -v

La versione del software e la sua sintassi completa si ottiene col parametro "-h".

darkstat -h

Cattura

Dopo l'avvio di "darkstat" si pu� puntare col browser a "http://localhost:666/", di default. Qui ci sono alcune statistiche generate dalla partenza al momento corrente:

darkstat main
Figura 1: la home di darkstat

Gli "hosts" sono tutte la macchine che stanno comunicando. Queste possono essere ordinate in base al traffico generato, oppure per indirizzo IP. In questo modo si possono rapidamente conoscere le macchine che hanno generato pi� traffico nella LAN. In questo modo l'amministratore di rete pu� avere informazioni utili a venire a capo di un problema. Per esempio in questo screenshot sarebbe il client con questo IP "192.168.1.203".

darkstat hosts
Figura 2: hosts in darkstat

Nella figura 3 si vedono le porte usate dalle applicazioni server e client. Si possono riconoscere subito le porte usate dei demoni: 21 (FTP), 22 (SSH), 139 (Samba), 631 (CUPS), 666 (darkstat), 3128 (Squid). I due servizi "dhcpd" e "dnsmasq" non sono visibili perch� parlano UDP. Tutte le altre porte sopra la 1024 non sono riservate e sono usate dalle applicazioni client per la comunicazione. Il server proxy "squid" fa eccezione, perch� utilizza la 3128 di default. Si pu� avere la lista completa e aggiornata delle porte e dei servizi ad esse associati qui alla IANA [9], organo ufficiale responsabile di queste assegnazioni. Oppure si pu� andare qui (ma non ci sono tutte) "/etc/services".

darkstat ports
Figura 3: porte darkstat

In questa figura si vedono i protocolli "ICMP", "TCP" e "UDP" per la trasmissione dei file, che sono parte di una sessione di comunicazione. Chi fosse interessato in questi protocolli trover� in questi RFC una introduzione [10], [11] e [12].

darkstat protocols
Figura 4: protocolli darkstat

L'ultimo screenshot mostra un sommario degli ultimi grafici:

darkstat graphs
Figura 5: un grafico darkstat

Sviluppi Futuri

La versione 2.6 di "darkstat" della quale abbiamo discusso � sfortunatamente dipendente da "pthreads". Questo causa problemi in alcune piattaforme (per esempio NetBSD). Per questo l'autore ha deciso di interrompere il progetto 2.x e di aprire il branch 3.x per eliminare questa limitazione.

Nella prossima versione verra introdotta la possibilit� di catturare i pacchetti da pi� interfacce simultaneamente. Verr� introdotto un parser per un file di configurazione, una miglioria nel layout grafico dei diagrammi (comparabile con il RRDtool [13]), un CSS customizzabile, un sistema di logon e la possibilit� di editare il DB dal web e altro ancora.

Conclusioni

"darkstat" � uno strumento di monitoraggio di rete molto stabile e veloce, che fa bene quello che deve fare: analizzare il traffico. In pi� non ha preoblemi, � in continuo sviluppo e presto nelle nuove versioni avr� numerose novit� interessanti. Cos� vi auguro di scovare con successo chi fa il "furbo" nella vostra rete.

Links

[1] http://purl.org/net/darkstat [Home of darkstat]
[2] http://www.ntop.org/ [Home of ntop]
[3] http://dmr.ath.cx/net/darkstat/darkstat-2.6.tar.gz [Download]
[4] http://yallara.cs.rmit.edu.au/~emikulic/_/darkstat-2.6.tar.gz [Download Mirror #1]
[5] http://neo5k.de/downloads/files/darkstat-2.6.tar.gz [Download Mirror #2]
[6] http://ftp.debian.org/debian/pool/main/d/darkstat/ [Debian Packages]
[7] http://www.tcpdump.org/ [Home of libpcap]
[8] http://www.courtesan.com/sudo/ [Home of sudo]
[9] http://www.iana.org/assignments/port-numbers [IANA Port-Numbers]
[10] ftp://ftp.rfc-editor.org/in-notes/rfc792.txt [RFC 792 - ICMP]
[11] ftp://ftp.rfc-editor.org/in-notes/rfc793.txt [RFC 793 - TCP]
[12] ftp://ftp.rfc-editor.org/in-notes/rfc768.txt [RFC 768 - UDP]
[13] http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ [Home of RRDtool]