Es gibt tausende Tools und Utilities für Linux. “out of the box” pickt sich die Rosinen raus und stellt pro Monat ein Progrämmchen vor, das wir für schlichtweg unentbehrlich oder aber zu Unrecht wenig beachtet halten. Diesmal widmet sich der Artikel dem Netzwerkmonitor ntop.
Die zunehmend vernetzte Rechnerwelt hält mittlerweile auch in die Wohnzimmer Einzug. Die Zweit- oder Drittmaschine wird mit dem heimischen Hauptrechner verbunden und tauscht via TCP/IP munter Daten aus. Wer den Überblick über seine private Rechnerfarm und auch deren Netzverbindungen nach “draußen” behalten will, dem wird ntop von Luca Deri eine willkommene Hilfe sein.
Top N
Damit das Programm läuft, muss die ncurses–Bibliothek (inklusive zugehörigem Development-Paket) installiert sein. Weiterhin benötigen Sie die libpcap, die Sie sich von http://www.tcpdump.org/release/libpcap-0.6.2.tar.gz oder der Heft-CD besorgen können. Für das Übersetzen der libpcap brauchen Sie die Pakete flex und bison. Ntop selbst bekommen Sie unter http://www.ntop.org/ntop.html; es liegt natürlich auch auf CD bei.
Sind alle Voraussetzungen erfüllt, lässt sich ntop mit den folgenden Schritten kompilieren und installieren:
tar xzf libpcap-0.6.2.tar.gz cd libpcap-0.6.2 ./configure --prefix=../libpcap make make install cd .. tar xzf ntop-1.1-src.tgz cd ntop-1.1 ./configure make su (root-Passwort eingeben) cp ntop /usr/local/bin cp ntop.8 /usr/local/man/man8 exit
SUID oder nicht SUID?
Damit ntop direkten Zugriff auf Netzwerkpakete bekommt, muss es mit root-Rechten laufen. Zwei Möglichkeiten stehen dafür zur Verfügung: In Variante 1 verschaffen Sie sich mit dem su-Kommando (und entsprechendem root-Passwort) die nötigen Rechte, bevor Sie ntop starten, und geben diese nach dem Beenden des Programms mit exit wieder auf.
Alternativ vergeben Sie (als root) mit chmod 4755 /usr/local/bin/ntop das SUID-(“Set UserID on execution”)-Recht. So wird ntop – egal von welchem User gestartet – immer mit root-Rechten laufen.
Die erste Möglichkeit ist umständlicher, aber sicherer, da dann nur User mit Kenntnis des root-Passworts das Netz überwachen dürfen. Eine bessere, kontrollierte Zuteilung von root-Rechten an Benutzer bietet das Programm sudo, dessen Konfiguration aber den Rahmen des Artikels sprengen würde.
Klassik: Das Text-Interface
Wird ntop in einem Text-Terminal gestartet, so verhält es sich ähnlich wie der Unix-Klassiker top. Nur zeigt ntop nicht die Prozessorauslastung durch diverse Prozesse an, sondern den durch verschiedene Rechner verursachten Netzwerkverkehr. In Abbildung 1 findet gerade ein größeres Datengeschaufel von sphere nach camera statt. Der aktuelle Durchsatz (“Throughput“) ist oben rechts ablesbar. Das Programm wurde mit ntop -i eth0 gestartet, also angewiesen, Pakete auf der ersten Ethernet-Karte abzugreifen.

ntop« im Text-Terminal” width=”300″ height=”75″ />
Abbildung 1:Im Text-Interface reagiert ntop auf verschiedene Tasten. Am interessantesten ist die Leertaste, die weitere Informationen in die Spalten der angezeigten Tabelle holt, etwa zu Anwendungsprotokollen wie FTP, HTTP oder DNS. Andere Tastenfunktionen entnehmen Sie der Manpage, die Sie mit man ntop lesen können.
Pop: Das Web-Interface
Jetzt verlassen wir das Textinterface mit der Taste q und starten das Programm mit ntop -i eth0 -w 888 erneut. Im Terminal ist nun keine Ausgabe mehr sichtbar, dafür können Sie sich mit einem Frame-fähigen Web Browser auf Port 888 mit dem so gestarteten ntop-Dienst verbinden. Dies geschieht, indem Sie im Browser http://localhost:888/ als Seitenadresse eingeben. Anders als im Textinterface müssen Sie ein [Strg-C] ins Terminal mit dem ntop-Aufruf schicken, um den Dienst wieder zu beenden.
Über das Web-Interface stellt ntop wesentlich mehr Informationen zur Verfügung. Die Abbildungen 2 und 3 zeigen nur eine kleine Auswahl der umfangreichen Statistiken über die Anteile der Protokolle am Gesamtdurchsatz, die Bandbreitennutzung, Netzwerkkartenhersteller, aktuell laufende Netzwerkverbindungen und vieles mehr. In Tabelle 1 sind alle Links von der ntop-Hauptseite und deren Funktionen beschrieben.
Kleine Netzwerkprotokollkunde
Grundlegende Protokolle
(R)ARP (“[Reverse] Address Resolution Protocol”) wird verwendet, um zu einer IP-Adresse die MAC-Adresse einer Netzwerkkarte zu finden. Nur so können in einem lokalen Netz IP-Pakete an den richtigen Rechner zugestellt werden. Die MAC-(“Media Access Control”)-Adresse ist eine durch die Hardware der Netzwerkkarte festgelegte Adresse.
IP (“Internet Protocol”) ist ein Transportmechanismus für verschiedene Protokolle wie TCP und UDP. Es versendet Pakete anhand ihrer Ziel-IP-Adresse. IP ist nicht auf ein lokales Netz beschränkt.
TCP (“Transmission Control Protocol”) ist ein verbindungsorientiertes Protokoll, über das viele Dienstprotokolle wie HTTP, SSH oder NBios-IP laufen. Während mit IP Pakete nur verschickt werden, bietet TCP eine Empfangsbestätigung. Verbindungsorientiert bedeutet dabei, dass Netzwerkverbindungen durch spezielle IP-Pakete explizit auf- und abgebaut werden müssen.
UDP (“User Datagram Protocol”) ist ein verbindungsloses Protokoll, über das Dienstprotokolle wie DNS laufen. Zum zuverlässigen Übertragen größerer Datenmengen ist UDP nicht geeignet. Verbindungslos bedeutet, dass es protokollintern keine Möglichkeit gibt sicherzustellen, dass ein Paket wirklich beim Empfänger angekommen ist.
Eine kleine Auswahl Dienstprotokolle
HTTP (“Hypertext Transfer Protocol”) ist das Übertragungsprotokoll des World Wide Web.
SSH (“Secure Shell”) ist ein verschlüsseltes Protokoll für das Anmelden auf entfernten Rechnern.
NBios-IP (“Netbios over IP”, auch SMB (“Server Message Block”) genannt) ist das Protokoll, das ein Samba-Server für Windows-Dateifreigaben benutzt.
DNS (“Domain Name Service”) löst Rechnernamen wie www.linux.de zu IP-Adressen auf.
Tabelle 1: Welcher Link zeigt was?
| Nr. | Bezeichnung | Bedeutung |
|---|---|---|
| 1. | What’s ntop? | Allgemeine Informationen über ntop. |
| 2. | Data Rcvd | Übersicht über empfangene Daten, aufgeschlüsselt in Daten, die auf IP oder alle Protokolle entfallen, sowie den Durchsatz. |
| 3. | Data Sent | Übersicht über gesendete Daten, aufgeschlüsselt in IP, alle Protokolle und den Durchsatz. |
| 4. | Multicast Stats | Pakete, die gleichzeitig an mehrere Rechner verschickt werden. |
| 5. | Traffic Stats | Information über Paketgrößen und Anteile der Protokolle am Gesamtdurchsatz. |
| 6. | Thpt Stats | Der Durchsatz der letzten 60 Minuten als Balkengrafik. |
| 7. | Hosts Info | Information zu Rechnern, aufgeschlüsselt nach Rechnern. |
| 8. | R->L IP Traffic | Netzverkehr von außen ins lokale Netz. |
| 9. | L->R IP Traffic | Netzverkehr aus dem lokalen Netz nach außen. |
| 10. | L<- ->L IP Traffic | Netzverkehr innerhalb des lokalen Netzes. |
| 11. | Active TCP Sessions | Momentan aufgebaute TCP-Verbindungen. |
| 12. | IP Protocol Distribution | Anteile der über IP transportierten Protokolle. |
| 13. | IP Protocol Usage | Zwischen welchen Rechnern werden welche Protokolle benutzt? |
| 14. | IP Traffic Matrix | Zwischen welchen Rechner wurde wieviel übertragen? |
| 15. | Credits | Danksagung des Autors. |
| 16. | Man Page | Die Manualseite zu ntop. |
Wer hören will, muss wissen
Der Zugriff auf das Web-Interface lässt sich mit einem Passwort sperren. Dazu muss der Benutzer, der ntop startet, in seinem Home-Verzeichnis eine Datei .ntop mit einem Benutzername-/Passwort-Paar anlegen. Der Inhalt dieser Datei könnte etwa so aussehen:
# ntop Passwortdatei # tux trockenfisch
Benutzername und Passwort dürfen durch beliebig viele Leer- oder Tabulatorzeichen getrennt sein, Zeilen, die mit dem Hash-Zeichen (#) beginnen, sind Kommentare und werden ignoriert. Im Beispiel ist tux der Benutzername und trockenfisch das Passwort. Groß- und Kleinschreibung werden beim Anmelden unterschieden. Sie können auch mehrere Benutzername-/Passwort-Paare in die Datei eintragen. Dies ist allerdings nur bedingt sinnvoll, da es nicht möglich ist, verschiedenen Anwendern unterschiedlich weit gehende Benutzungsrechte zuzuteilen.
Glossar
-
TCP/IP
-
“Transmission Control Protocol/Internet Protocol”, die Netzwerkprotokollfamilie des Internets.
-
Bibliothek
-
Dateien, die eine Sammlung nützlicher C-Funktionen für bestimmte Zwecke enthalten. So gibt es etwa die libm, die mathematische Funktionen bereit stellt, oder die libpcap, die Netzwerkpakete “abgreifen” und untersuchen kann. Oft werden Bibliotheken von mehreren Programmen gemeinsam (“shared”) genutzt.
-
Development-Paket
-
Beim Übersetzen von Quelltexten werden zu allen vom Programm verwendeten Bibliotheken die Development-Pakete benötigt. Wesentlicher Bestandteil sind die Header-Dateien (Endung .h), die die Parameter der in den Bibliotheken enthaltenen Funktionen angeben.
-
kompilieren
-
Ein Programm ist in Quelltextform einer höheren Programmiersprache noch nicht vom Betriebssystem ausführbar. Erst durch das Kompilieren (“Übersetzen”) mit einem Compiler wird daraus eine durch den jeweiligen Prozessor ausführbare Darstellung.
-
Durchsatz
-
Der Durchsatz gibt an, wieviel Daten pro Zeiteinheit (üblicherweise gemessen in KBit/Sekunde oder MBit/Sekunde) über ein Netzwerkgerät wandern.
-
Manpage
-
Die Manpages (kurz für “Manual pages”) sind ein Online-Referenzhandbuch für Unix-Kommandos. Sie werden mit man kommando aufgerufen.
-
Port
-
Eine Anlegestelle für Netzwerkverbindungen. Die Ports sind mit Nummern versehen, und viele sind über diese Nummer einem Dienst zugeordnet. Beispielsweise benutzt FTP den Port 21, SSH den Port 22, TALK den Port 517, …
-
Home-Verzeichnis
-
Das persönliche Heimatverzeichnis eines Benutzers. In diesem Verzeichnis landet er nach erfolgreicher Anmeldung oder mit dem Kommando cd ohne weitere Parameter.







