Den Datenverkehr im eigenen Netzwerk nicht nur überwachen, sondern detailliert auswerten – bei dieser Aufgabe hilft Ntop. Mit den gewonnenen Einblicken hält der Admin sein Netz in Form.
Wie viele Daten durch welche Leitung laufen ist mit MRTG[1] und anderen Tools gut zu erkennen (siehe Linux-Magazin 9/02). Das ist aber nur der Anfang, den Admin interessieren tiefere Zusammenhänge:
- Welcher Arbeitsplatz verursacht wie viel Netzverkehr?
- Wie viel Prozent davon sind durch E-Mails verursacht?
- Auf welchen Arbeitsplätzen läuft Software wie Morpheus oder Audiogalaxy?
Ntop[2] findet Antworten auf solche Fragen. Das mächtige Werkzeug überwacht das Netzwerk und wertet die Daten grafisch aus, und zwar aufgeschlüsselt nach vielen Krite- rien. Ursprünglich von Luca Deri geschrieben entwickeln inzwischen mehrere Programmierer Ntop.
Der Sourcecode ist als Tar-Paket oder via anonymem CVS erhältlich. Fertig kompilierte Pakete gibt es bei allen größeren Linux-Distributionen sowie auf der Sourceforge-Seite[3]. Auch Linux-Abtrünnige profitieren von Ntop: Es gibt fertige Binaries für Mac OS und Windows.
Installation
Die Installation ist mit den vorkompilierten Paketen leicht zu bewerkstelligen. Wer lieber selbst übersetzt, muss mit den mitgelieferten Bibliotheken beginnen. Das Shellskript »buildAll.sh« im Verzeichnis »gdchart0.94c« erledigt die Arbeit automatisch. Anschließend genügt der gewohnte Dreisatz:
./configure make make install
Die genauen Installationsverzeichnisse variieren je nach Linux-Distribution ein wenig. Das Debian-Paket[4] ist am bequemsten: »debconf« fragt die Parameter interaktiv ab. Die folgenden Beispiele beziehen sich allerdings auf Red Hat 7.x – dort ist Handarbeit angesagt.
Vor dem ersten Start setzt der Admin das Passwort mit folgendem Kommando:
ntop -P /usr/share/ntop --set-admin-password=Geheim
Bei älteren Versionen ist diese Option noch nicht vorhanden. Dort lautet das Admin-Passwort per Default »admin«, genauso wie der Account.
Die mitgelieferten RC-Skripte können Ntop nach einem Reboot automatisch starten. Ohne Wechsel des Runlevels lässt sich das auch manuell erledigen: »service ntop start«. Jetzt kann sich der Admin mit einem Browser zu Port 3000 verbinden und beobachten, was alles in seinem Netzwerk passiert.
Web-Oberfläche
Ntop bietet eine Fülle von Statistiken und Auswertungen des Datenverkehrs. Es analysiert nicht nur den Anteil, den der eigene Host verursacht, sondern den gesamten Verkehr, der an seinem Netzsegment sichtbar ist. Über Netflow- und sFlow-Streams (dazu später mehr) wertet Ntop sogar Datenströme in entfernten Segmenten aus.
Das Menü der Web-Oberfläche ist zweigeteilt (siehe Abbildung 1): Am oberen Rand befindet sich das Hauptmenü, im linken Frame das aktive Untermenü. Im »About«-Menü sind Informationen zu Ntop zu finden, inklusive der Manpage. Hier verbirgt sich auch eine Konfigurationsseite: Die Konfiguration lässt sich damit zwar nicht ändern, aber die Seite zeigt alle aktuellen Parameter.
In den Menüs »Data Rcvd« und »Data Sent« sind Statistiken und Auswertungen darüber zu finden, welchen Verkehr die einzelnen Hosts verursacht haben. Dabei sind die Richtungen (Senden und Empfangen) getrennt aufgeführt. Im Untermenü »All Protocols« sind die Daten nach IP-Protokollen aufgeteilt, etwa TCP, UDP, ICMP, IPX, Decnet, ARP, Appletalk, OSPF, Netbios oder IGMP. Das Untermenü »TCP/UDP« enthält zum Beispiel FTP, HTTP, DNS, Telnet, Mail, DHCP, BOOTP oder SNMP (siehe Abbildung 2). Die Tabellen lassen sich nach verschiedenen Kriterien auf- und absteigend sortieren – ein Klick auf eine Spaltenüberschrift genügt.
Das Untermenü »Throughput« gibt den Durchsatz der einzelnen Hosts an, jeweils den aktuellen Wert, den Durchschnitt und das Maximum der Datenmenge und der Paketzahl. »Host Activity« gibt einen schnellen Überblick, wann welcher Host am meisten Verkehr verursacht hat.

Abbildung 1: Den zeitlichen Verlauf der Netzlast grafisch darstellen ist eine Grundfunktion von Ntop.
Statistiken für jeden Bedarf
Allgemeine Statistiken sind im Menü »Stats« zu finden. Das Untermenü »Multicast« ist für den gleichnamigen Verkehr zuständig. In »Traffic« sind Informationen über die Art der Pakete zu finden, etwa die Aufteilung in Unicast/Multicast/Broadcast, die Verteilung der Paketlängen und darüber, welche IP-Protokolle wie stark vertreten sind. Sogar eine Statistik der TTL-Werte ist hier vertreten. Hosts« enthält Informationen zu den einzelnen Rechnern, »Domains« zu den beteiligten Domänen. In »Network Load« stellt Ntop die Netzlast grafisch dar (siehe Abbildung 1) – diese Funktion erinnert an MRTG. Über »Plugins« sind Erweiterungsmodule zugänglich, etwa »icmpWatch« für ICMP-Pakete oder »nfsWatch«, das den NFS-Verkehr genauer aufschlüsselt.
Über »IP Traffic« kann der Admin erfahren, welche externen Hosts wie viel in das lokale Netz senden (»R->L«), welche Datenmengen welcher interne Host nach außen sendet (»L->R«) und welcher Verkehr lokal anfällt (»L->L«). Hinter »Matrix« verbirgt sich eine Tabelle mit den zwischen allen Hosts übertragenen Datenmengen.
Das Hauptmenü »IP Protos« liefert weitere Auskünfte zur Verteilung der Protokolle (im Untermenü »Distribution«) und darüber, welcher Host welche TCP/UDP-Protokolle benutzt (»Usage«), welche Verbindungen gerade aktiv sind (»Sessions«) und welche Router an das Netz angeschlossen sind (»Routers«).
Wo immer in Ntop einzelne Hosts aufgeführt sind, werden sie als Link in die HTML-Seite integriert. Über diesen Link sind weitere Details zu finden: IP- und MAC-Adressen, Hersteller der Ethernet-Karte, wann der Host aktiv war (»First/Last Seen«) und vieles mehr. Außerdem enthält diese Seite Statistiken, wann der Rechner wie viele Daten gesendet hat, welche Protokolle er benutzt und mit welchen Hosts er zuletzt verbunden war.

Abbildung 2: Die Tabelle zeigt, welcher Host wie viel Daten empfangen hat. An erster Stelle steht das Gateway, über das fast 98 Prozent des Netzverkehrs laufen.
Konfiguration
Per Default lauscht der in Ntop integrierte Webserver an jedem Netzwerk-Interface auf Port 3000. Gerade bei Firewalls und Gateways ist dies nicht zu empfehlen: Es reicht, wenn Ntop vom lokalen LAN aus erreichbar ist. Als Beispiel dient eine Firewall mit drei Netzwerk-Interfaces (Abbildung 3).
Der Parameter »-w« legt fest, auf welchem Port und an welcher IP-Adresse der Server auf Verbindungen wartet. Für HTTPS gilt der Parameter »-W«. Soll Ntop normales HTTP verwenden, sich aber nur an das LAN-Interface binden (IP-Adresse 192.168.20.1), dann lautet die Option »-w 192.168.20.1:3000«. Die Startzeile in »/etc/rc.d/init.d/ntop« sieht dann wie folgt aus:
daemon $prog -d -P /usr/share/ntop/ -u ntop -E -w 192.168.20.1:3000
In vielen Fällen ist nur der Datenverkehr in einem Teil der angeschlossenen Netze interessant. Soll Ntop das LAN ignorieren (im Beispiel an »eth2« angeschlossen) und nur »eth0« und »eth1« überwachen, dann ist der Parameter »-i« zu verwenden: Die Startzeile im Init-Skript muss »-i eth0,eth1« enthalten.
Die Pakete, die Ntop auswerten soll, lassen sich noch genauer spezifizieren. Der Parameter »-B« gibt Filterregeln vor, die ähnlich aufgebaut sind wie die Regeln von Tcpdump. Soll sich Ntop auf den Webserver 212.217.203.29 in der DMZ konzentrieren, so heißt der Parameter:
-B 'src host 212.217.203.29 or dst host 212.217.203.29'

Abbildung 3: Ntop kann das Netz am leichtesten an zentralen Stellen überwachen, etwa auf einer Firewall. Der Server sollte aber nicht über alle Interfaces erreichbar sein, das LAN-Interface genügt.
Dienste und ihre Namen
Ntop unterscheidet die TCP/IP-Protokolle anhand ihrer Portnummer und stellt die Netzlast, die sie verursachen, übersichtlich dar (Abbildung 5). Meist ist die Zuordnung von Portnummer und Dienst korrekt. Wer allerdings etwa seinen SSH-Server auf einem anderen Port startet als üblich, wird feststellen, dass die Statistik nicht stimmt.
Damit Ntop auch ungewöhnliche Ports beim Namen kennt, müssen deren Nummern in der Protokoll-Liste enthalten sein. Hierfür ist der Parameter »-p« zuständig. Doch erwartet Ntop die vollständige Liste und nicht nur den geänderten Teil. Da diese Aufstellung oft sehr lang ist, kann man sie auch in einer Datei ablegen und deren Namen beim Start mit »-p Dateiname« angeben.
Die Standard-Protokoll-Liste von Ntop ist in Listing 1 zu sehen. Der Aufbau folgt dem Schema »Name=Portnummern,Name=Portnummer,…«. Sind einem Namen mehrere Ports zugeordnet, werden sie durch »|« getrennt. Neben der numerischen Darstellung eines Ports sind auch die Bezeichnungen aus »/etc/services« erlaubt. Wichtig ist, dass alle Angaben in einer Zeile stehen.
In der Liste sind auch die Ports von Morpheus (1214) und Audiogalaxy (41000 -41900) zu finden. Damit lässt sich die dritte Einstiegsfrage beantworten: Ntop gibt unter »Data Sent | TCP/UDP« aus, welcher Host über diese Protokolle wie viele Daten sendet. Auch die Menge der empfangenen Daten ist sichtbar: »Data Rcvd | TCP/UDP«.

Abbildung 5: Ntop misst die Last im lokalen Netz und schlüsselt sie nach den einzelnen Protokollen auf. Die Balkengrafik in »Stats | Traffic« zeigt, dass E-Mail in diesem Netz die meiste Last erzeugt.
Listing 1: Protokoll-Liste von Ntop
FTP=ftp|ftp-data,HTTP=http|www|https|3128,DNS=name|domain,Telnet=telnet|login,NBios-IP=netbios-ns|netbios-dgm| netbios-ssn,Mail=pop-2|pop-3|pop3|kpop|smtp|imap|imap2,DHCP/BOOTP=67-68,SNMP=snmp|snmp-trap,NNTP=nntp,NFS=mount| pcnfs|bwnfs|nfsd|nfsd-status,X11=6000-6010,SSH=22,Gnutella=6346|6347|6348,Morpheus=1214,WinMX=6699|7730, Audiogalaxy=41000-41900
Einzelner Ntop-Rechner
Aus Sicherheitsgründen ist es nicht besonders geschickt, zusätzliche Dienste auf einem Router oder gar auf einer Firewall zu installieren. Abbildung 4 zeigt ein Netzwerk, in dem ein dedizierter Ntop-Rechner die Monitoring-Aufgabe übernimmt. Auf dem Switch muss dazu das Port Mirroring aktiviert sein, damit Ntop die Pakete im gesamten Netzwerk sieht und nicht nur den Traffic, der zu seinem eigenen Rechner gerichtet ist. Zusätzlich muss Ntop mit dem Parameter »-j« gestartet werden.
In der Regel soll nicht jeder Benutzer auf die Statistiken von Ntop zugreifen können. Um hierfür passende Regeln umsetzen zu können, verfügt Ntop über eine Benutzerverwaltung. Im Bereich »Admin | Users« lassen sich Accounts anlegen, ändern und löschen und unter »Admin | URLs« wird festgelegt, auf welche Seiten die einzelnen Benutzer zugreifen dürfen.

Abbildung 4: Ntop kann auch auf einem allein stehenden Rechner den Netzverkehr beobachten. Der Switch muss Port Mirroring unterstützen, damit Ntop den gesamten Netzverkehr sieht.
Gimmicks
Wie in Abbildung 6 zu sehen ist, kann Ntop sogar die geografische Position eines Rechners herausfinden. Dafür ist das Skript »mapper.pl« zuständig. Zuerst holt es sich von Netgeo[9] die Längen- und Breitengrade der IP-Nummer. Netgeo nutzt dazu eine »whois«-Anfrage: In den Whois-Daten sind in der Regel Angaben zu Land und Stadt enthalten, die der Server auswertet. Netgeo liest auch die Telefonnummern und E-Mail-Adressen, um den Standort zu ermitteln. Die Voraussetzung für dieses Verfahren ist, dass der Rechner eine öffentliche IP-Adresse besitzt.
Die von Netgeo gelieferte Positionsangabe gibt »mapper.pl« an Multimap[10] weiter, das wiederum ein GIF-Bild erzeugt. Dieses Bild bettet Ntop dann in seine eigene Seite ein. Wo Ntop das »mapper.pl«-Skript findet, erfährt es über den Parameter »-U URL«. Wer das Skript nicht lokal installieren möchte, kann auf »-U http://jake.ntop.org/cgi-bin/mapper.pl« zurückgreifen.

Abbildung 6: Unter den Informationen, die Ntop über einen Host anzeigen kann, ist sogar der Eintrag seines Standorts in einer Landkarte. Die Daten dazu stammen von Netgeo und Multimap.
Netflow
Über das Netflow-Plugin empfängt und versendet Ntop auch Netflow-Streams (siehe[5] und den Kasten “Cisco Netflow”). Hierfür muss das Netflow-Plugin unter »Stats | Plugins« aktiviert werden. Nach einem Klick auf den Netflow-Link erscheint eine Seite, in der das Plugin konfiguriert wird (Abbildung 7). Damit Ntop die Statistiken aus einem Netflow-Stream generieren kann, muss es nur wissen, auf welchem UDP-Port und auf welchem Interface die Pakete ankommen. In »Admin | Switch NIC« muss das Netflow-Plugin ausgewählt sein.
Ntop kann die gesammelten Daten auch wieder als Netflow-Stream exportieren, dazu wird im Plugin die IP-Adresse des Empfängers eingestellt. Im Unterschied zu anderen Netflow-Exportern (Switch, Router) kann Ntop Teile eines Flows nicht während der TCP-Verbindung übertragen. Bei lange dauernden Verbindungen wäre es sinnvoll, in festen Zeitabständen solche Zwischenergebnisse zu senden – Ntop exportiert die Daten aber erst am Ende der Verbindung.

Abbildung 7: Mit Hilfe eines zusätzlichen Plugins kann Ntop auch Netflow-Daten empfangen. Über dieses Protokoll übertragen Router und Switches die von ihnen gemessenen Statistiken.
sFlow
Eine ähnliche Aufgabe wie Netflow erfüllt sFlow[6]. Ntop enthält hierfür ein eigenes Plugin, das ähnlich wie das Netflow-Plugin unter »Stats | Plugins« aktiviert und konfiguriert wird.
Im Ntop-Paket befindet sich auch die Kommandozeilen-Version »intop« (siehe Abbildung 8). Sie benutzt intern die Ntop-Engine und zeigt die Netzwerk-Statistiken als Ascii-Tabellen an. Wer also nur mal sehen will, welcher Rechner im Netzwerk gerade die meiste Last verursacht, muss nicht erst den Ntop-Daemon starten und den Browser bemühen, »intop« genügt. Leider wird dieses Programm zurzeit nicht aktiv entwickelt, es kann daher instabil sein.
Ntop selbst zeigt sich als stabiles und leistungsfähiges Tool, das mit seinen umfangreichen Statistiken und Aus- wertungen den Netzwerk-Administrator wirksam unterstützt. (fjl)

Abbildung 8: Ntop enthält auch einen Client für die Konsole: »intop« zeigt die Statistiken als Ascii-Tabelle.
Cisco Netflow |
|
Netflow ist eine von Cisco entwickelte Technik, die sehr detaillierte Auskünfte über einzelne Flows ermittelt und weitergibt. Zu einem Flow gehören zum Beispiel die Pakete einer TCP-Verbindung, die in eine gemeinsame Richtung laufen. Ein Router oder ein Switch misst den Datenverkehr der Interfaces und exportiert die gesammelten Flow-Daten zu einem anderen Rechner, der sie etwa für Netzwerküberwachung oder Accounting auswertet. Wenn Netflow auf einem Interface aktiviert ist, werden die Pakete zuerst in Flows aufgeteilt. Das geschieht anhand verschiedener Parameter: Source- und Destination-IP-Adresse, IP-Protokoll (TCP, UDP, ICMP, …), Quell- und Zielports von TCP oder UDP, TOS-Feld (Type of Service), DSCP (Differentiated Services Code Point). Für jeden Flow gibt es unter anderem ein Flag sowie einen Paketzähler. Diese Flows werden asynchron exportiert, wenn einer der folgenden Zustände eintritt:
Wenn die Daten exportiert werden sollen, versucht der Sender bis zu 30 Flows in ein UDP-Paket zu packen, das er per Default an Port 2055 des Accounting-Rechners schickt. |
Infos |
|
[1] Multi Router Traffic Grapher: [http://www.mrtg.org] [2] Ntop-Homepage: [http://www.ntop.org] [3] Sourceforge-Seite für Ntop: [http://sourceforge.net/projects/ntop] [4] Ntop-Debian-Paket: [http://packages.debian.org/unstable/net/ntop] [5] Netflow-Informationen: [http://www.cisco.com/go/netflow] [6] sFlow-Informationen: [http://www. inmon.com/sflowTools.htm] und [http://www.sflow.org] [7] Ntop-Live-Demo: [http://ntop.teuto.net] [8] Ntop-Community: [http://snapshot.ntop.org] [9] Netgeo-Datenbank: [http://www.caida.org/tools/utilities/netgeo/] [10] Multimap: [http://www.multimap.com] |
Der Autor |
|
Dennis Schön arbeitet als Systemadministrator und Programmierer bei Teuto.net Netzdienst GmbH. Er ist aktiver Entwickler von Ntop und Maintainer des Debian-Pakets. Auf [http://ntop.teuto.net] betreibt er einen öffentlichen Ntop-Server zum Reinschnuppern. |






