darkstat - Ein Network-Traffic-Analyzer

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

System Administration

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

AboutTheAuthor:[A small biography about the author]

Mario besch�ftigt sich leidenschaftlich gerne mit Linux, Netzwerken und sicherheitsrelevanten Themen.

Abstract:[Here you write a little summary]

Der Artikel stellt den Network-Traffic-Analyzer "darkstat" vor und liefert einen �berblick bez�glich Installation, Start und Benutzung des Programms.

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

[Illustration]

ArticleBody:[The main part of the article]

Einleitung

Bei "darkstat" [1] handelt es sich um ein Network-Monitoring-Tool, das den anfallenden Traffic eines Netzwerks analysiert und anhand dieser Daten diverse Statistiken im HTML-Format generiert, welche dann komfortabel in einem Browser betrachtet werden k�nnen. Da der Programmautor Emil Mikulic �ber lange Zeit "ntop" [2] f�r diesen Zweck im Einsatz hatte, aber mit dessen Speicherumgang und Stabilit�t unzufrieden war, entwickelte er schlie�lich "darkstat". Die angesprochenen Statistiken beziehen sich auf die an der Kommunikation beteiligten Hosts, dem verursachten Traffic und den benutzten Portnummern bzw. den �bertragungsprotokollen. Weiterhin k�nnen Diagramme in Bezug auf die erfassten Zeitperioden und eine kurze Zusammenfassung der analysierten Datenpakete seit Programmstart betrachtet werden.

Installation

Die Quellen des Programms "darkstat" lassen sich direkt unter [3] beziehen. Alternativ kann auch einer der beiden Mirrors unter [4] und [5] besucht werden. Wer hingegen Debian-Pakete sucht, wird bei [6] f�ndig.

Wie bei vielen anderen Network-Monitoring-Tools besteht auch bei "darkstat" die Abh�ngigkeit zur Datei "libpcap" [7]. Dies ist eine Bibliothek f�r sogenannte Packet-Sniffer und bietet diesen eine Schnittstelle, um den Inhalt passierender Datenpakete mitzuschneiden und zu analysieren. Zwingende Voraussetzung zur Installation von "darkstat" ist also die Pr�senz dieser Bibliothek.

Kompiliert wird dann mit dem allseits bekannten Dreisatz "./configure && make && make install" - wobei zu beachten ist, da� der letzte Befehl mit root-Rechten ausgef�hrt werden mu�.

Start

"darkstat" stellt einige Parameter zur Verf�gung, die direkt beim Programmaufruf �bergeben werden k�nnen. F�r einen ersten Test reicht jedoch ein Start ohne jegliche Optionen. Um seine Arbeit verrichten zu k�nnen, mu� das Programm allerdings als root oder per "sudo" [8] gestartet werden:

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

We trust you have received the usual lecture from the local System Administrator.
It usually boils down to these two things:

#1) Respect the privacy of others.
#2) Think before you type.

Password:

Nachdem der autorisierte Benutzer sein Passwort eingegeben hat, startet "darkstat" und liefert dabei diverse Statusmeldungen:

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.

Da der Test erfolgreich verlaufen ist und die Ausgaben selbsterkl�rend sind, k�nnen nun die m�glichen Startparameter betrachtet werden.

Startoptionen

Wie bereits erw�hnt, stellt "darkstat" diverse Optionen bzw. Parameter bereit, die beim Programmstart einfach angeh�ngt werden k�nnen. Jene Parameter lauten folgenderma�en:

Durch Option "-i" l��t sich die Netzwerkschnittstelle spezifizieren, an welcher "darkstat" nach passierenden Paketen snifft:

darkstat -i eth1

Sofern "darkstat" ohne spezielle Parameter gestartet wird, �ffnet er standardm��ig den privilegierten Port 666. Mit Hilfe der Option "-p" kann dies ge�ndert werden:

darkstat -p 8080

Anhand der folgenden Option l��t sich ein bestimmter Port an die angegebene Schnittstelle binden. Im Beispiel an die lokale Loopback-Adresse:

darkstat -b 127.0.0.1

F�r Leute, die �ber keine Standleitung oder Flatrate verf�gen, k�nnte die Option "-n" interessant sein, da sie st�ndige DNS-Abfragen unterbindet.

darkstat -n

Um zu vermeiden, da� "darkstat" die jeweilige Schnittstelle in den "promiscuous mode" schaltet, bedient man sich der Option "-P". Dies ist allerdings nicht empfehlenswert, da "darkstat" dann nur noch die an die MAC der �berwachten Netzwerkkarte adressierten Datenpakete analysiert und alle anderen verwirft.

darkstat -P

Der Schalter "-l" aktiviert korrektes "SNAT"-Verhalten im lokalen Netzwerk. "SNAT" steht f�r "Source Network Address Translation" und sagt aus, da� der Router die lokale IP-Adresse des Clients in seine �ffentliche �bersetzt und somit stellvertretend f�r den Client die Anfrage ins Internet schickt.

darkstat -l 192.168.1.0/255.255.255.0

Mit Parameter "-e" lassen sich spezielle Ausdr�cke erzeugen, welche die Filterung bestimmter Ports betreffen.

darkstat -e "port not 22"

Ab Version 2.5 l��t sich "darkstat" mit dem Schalter "--detach" von dem Terminal, in welchem es gestartet wurde, losl�sen und arbeitet dadurch als Daemon.

darkstat --detach

Durch die Option "-d" kann angegeben werden, in welchem Verzeichnis "darkstat" seine Datenbank speichert bzw. anlegt.

darkstat -d /directory

Parameter "-v" ist bereits von anderen Programmen bekannt und schaltet den sogenannten "verbose mode", also den ausf�hrlichen Ausgabemodus, ein:

darkstat -v

Die Option "-h" zeigt neben der eingesetzten Versionsnummer auch alle verf�gbaren Parameter und die von "darkstat" verlangte Syntax an.

darkstat -h

Betrieb

Nachdem "darkstat" das erste Mal gestartet wurde, kann dessen Startseite unter "http://localhost:666/" (Standard-Einstellung) betrachtet werden. Dort kann man bereits eine kurze und nicht allzu detaillierte Zusammenfassung der generierten Statistiken samt entsprechendem Diagramm seit Programmstart sehen:

darkstat main
Abbildung 1: darkstat main

Unter "hosts" kann man alle an der Kommunikation beteiligten Maschinen erkennen. Diese lassen sich problemlos nach ihrer jeweiligen IP-Adresse oder dem verursachten Traffic anordnen. Durch diese M�glichkeit lassen sich die Rechner, die den h�chsten Traffic im Netzwerk verursachen, sehr schnell ausfindig machen. Der zust�ndige System- bzw. Netzwerkadministrator kann der Ursache dann auf den Grund gehen. In nachfolgendem Screenshot w�re dies beispielsweise der Client mit der lokalen IP-Adresse "192.168.1.203".

darkstat hosts
Abbildung 2: darkstat hosts

In Abbildung 3 sieht man die von Serverdiensten bzw. Client-Applikationen benutzten Portnummern. Hier lassen sich sofort die von den entsprechenden Daemons genutzten Ports erkennen: 21 (FTP), 22 (SSH), 139 (Samba), 631 (CUPS), 666 (darkstat), 3128 (Squid). Nicht zu sehen sind hingegen die Portnummern der Dienste "dhcpd" und "dnsmasq", da diese per "UDP" kommunizieren. Alle anderen Ports gr��er 1024 sind unprivilegierte Ports und werden von den Clients zur Kommunikation benutzt. Eine Ausnahme stellt hierbei der Proxyserver "Squid" dar, da dieser standardm��ig den Port 3128 nutzt, aber trotzdem zu den Serverdiensten z�hlt. Eine gepflegte �bersicht aller Portnummern l��t sich bei der daf�r zust�ndigen IANA [9] einsehen. Alternativ kann auch die auf jedem System vorhandene Datei unter "/etc/services" betrachtet werden.

darkstat ports
Abbildung 3: darkstat ports

Wie der Name "protocols" bereits vermuten l��t, zeigt die n�chste Abbildung die Statistiken zu den f�r die Daten�bertragung ben�tigten Protokolle "ICMP", "TCP" und "UDP" an. Wer sich n�her f�r die genannten Protokolle interessiert, findet in den jeweiligen RFCs unter [10], [11] und [12] gute Einstiegspunkte.

darkstat protocols
Abbildung 4: darkstat protocols

Der letzte Screenshot zeigt eine Zusammenfassung der erfassten Zeitperioden in Diagramm-Form:

darkstat graphs
Abbildung 5: darkstat graphs

Ausblick

Die hier besprochene Version 2.6 von "darkstat" ist zwingend auf "pthreads" angewiesen, was aber auf anderen Plattformen wie beispielsweise NetBSD Probleme bereitet. Aus diesem Grund hat sich der Programmautor Emil Mikulic dazu entschlossen, die aktuelle Reihe 2 nicht mehr weiterzuentwickeln und arbeitet stattdessen bereits an Version 3.

In der neuen Version sollen Dinge wie die gleichzeitige Paketanalyse mehrerer Schnittstellen, ein Parser zur Modifikation der Konfigurationsdatei, eine optisch verbesserte Diagrammausgabe (vergleichbar mit dem RRDtool [13]), eine an die eigenen Bed�rfnisse anpassbare CSS-Datei, die M�glichkeit zum Login und zur �nderung der Datenbank via Browser etc. implementiert werden.

Fazit

"darkstat" ist ein stabiles und performantes Network-Monitoring-Tool, das ausschlie�lich seinem Einsatzzweck - der Traffic-Analyse - dient und problemlos seine Arbeit verrichtet. Des Weiteren befindet es sich in st�ndiger Entwicklung und wird in der zuk�nftigen Version 3 sicherlich viele weitere interessante und brauchbare Funktionsmerkmale beinhalten. Bis dahin w�nsche ich allerdings noch viel Erfolg auf der Suche nach den "Traffic-S�ndern"!

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]