claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 01/2005   »   Ausgabe bestellen

Internet-Verkehr beobachten mit Ethereal

Abgehört

von Elisabeth Bauer


Was passiert eigentlich beim Mail-Empfang oder Aufruf einer Website? Mit dem Netzwerk-Analyse-Tool Ethereal werfen Sie einen Blick hinter die Kulissen.

Was unter der grafischen Oberfläche passiert, sehen Sie als Anwender bei heutigen Betriebssystemen kaum, und das ist auch gut so. Doch sobald Fehler auftreten, ist guter Rat teuer: Die einprogrammierten Fehlermeldungen grafischer Programme führen oft auf die falsche Spur, wenn der Anwender denn überhaupt eine Fehlermeldung zu Gesicht bekommt und das Programm nicht einfach stillschweigend den Dienst verweigert.

In so einem Fall muss ein Diagnose-Tool her, für Netzwerkprobleme bietet sich das Programm Ethereal an. Seine Arbeitsweise ist simpel: Es zeichnet alle Daten auf, die über eine ausgewählte Schnittstelle, zum Beispiel den Modem- oder Ethernetanschluss, den Rechner verlassen oder hereinkommen.

Mit wenigen Handgriffen können Sie so beobachten, was wirklich passiert, wenn Sie im Browser eine Website aufrufen oder Ihre E-Mails abholen.

Mit Filtern beschränken Sie die Ausgabe auf die Daten, die Sie interessieren, zum Beispiel nur die Verbindungen zu einer bestimmten Website. Im Klartext können Sie so verfolgen, wie Ihr Browser mit dem entfernten Web-Server kommuniziert und welche Daten dabei die Leitung passieren.

Ethereal ist ein professionelles Analysewerkzeug für Systemadministratoren großer Netze. So ist die Programmoberfläche explizit für Profis gestaltet, die sich mit der Fachterminologie gut auskennen. Auch zur genauen Interpretation des aufgezeichneten Netzverkehrs braucht man einiges an Spezialwissen.

Beschränkt man sich jedoch auf einige Kernfunktionen, kann auch ein Anfänger das Programm sinnvoll nutzen. In diesem Artikel erklären wir Schritt für Schritt die grundlegende Handhabung und die wichtigsten Meldungen.

Installation

Alle EasyLinux-Distributionen, mit Ausnahme der Suse-Personal-Versionen, liefern Ethereal auf CD mit.

Unter Mandrake Linux starten Sie über Einstellungen / Paketierung / Software installieren RPMDrake. Da nur der Administrator Software installieren darf, fragt Sie Mandrake nach Ihrem Root-Passwort. Geben Sie ins Suchfeld ethereal ein und markieren Sie das gefundene Paket ethereal. Die Meldung, dass weitere Pakete installiert werden müssen, bestätigen Sie mit OK. Über Installieren spielen Sie die Pakete ein.

Suse-Professional-Nutzer installieren Ethereal über YaST. Rufen Sie das Modul Software installieren oder löschen auf, geben Sie ins Suchfeld ethereal ein und markieren Sie das gefundene Paket. Nach dem Klick auf Übernehmen fordert YaST die benötigte CD oder DVD an und installiert das Paket.

In der Suse-Linux-Personal-Version ist Ethereal nicht enthalten. Benutzer dieser Distribution laden das Paket ethereal-xxx.i586.rpm aus dem Internet von [1] bzw. [2] herunter und speichern es in ihrem Home-Verzeichnis. Im Konqueror klicken Sie das Paket an und anschließend den Button Installiere Paket mit YaST. Nach der Eingabe des Root-Passworts spielt YaST das Paket ein.

Unter Fedora starten Sie die Paketverwaltung über den Eintrag Systemeinstellungen / Paket-Management im K-Menü. Ethereal befindet sich in der Gruppe Systemtools. Markieren Sie die Checkbox bei dieser Gruppe, will Fedora gleich mehrere Pakete installieren, darunter auch Ethereal. Wer Platz sparen will, öffnet über den Link Details die Paketauswahl und entfernt die Markierungen vor allen Paketen außer ethereal und ethereal-gnome. Über Aktualisieren installieren Sie die ausgewählten Pakete.

Auf Beobachtungsposten

Nicht jeder darf unter Linux den Netzverkehr beobachten, sondern nur der Administrator. Dafür gibt es gute Gründe: Sind mehrere Benutzer angemeldet, kann so keiner den anderen belauschen. Das Programm Ethereal müssen Sie deshalb mit Root-Rechten starten. Öffnen Sie dazu mit [Alt-F2] ein Schnellstartfenster und geben dort kdesu ethereal ein. Nachdem Sie Ihr Root-Passwort angegeben haben, startet Ethereal. Unter Fedora ist Ethereal bereits besonders konfiguriert, dort genügt die Eingabe von ethereal.

Über Capture / Start rufen Sie den Filterdialog auf (Abbildungen 1 und 2). Je nach Ethereal-Version ist dieser unterschiedlich gestaltet, die Grundfunktionalität ist jedoch dieselbe. Wählen Sie zuerst das Interface, d. h. die Schnittstelle aus, die Ethereal abhören soll. Im Dropdown-Menü zeigt Ethereal die vorhandenen Schnittstellen an. Modem- und DSL-Nutzer wählen zum Beispiel ppp0, für eine Ethernet-Verbindung benutzen Sie eth0.

Die Option Update list of packets in real time sorgt dafür, dass Ethereal schon während der Aufnahme die Daten im Fenster anzeigt. Aktivieren Sie diese Checkbox, sollten Sie Automatic scrolling in live capture ebenfalls markieren.

Um den kompletten Netzverkehr zu beobachten, klicken Sie nun auf Ok. Da dabei jedoch sehr viele Daten anfallen, ist es sinnvoll, sie zu filtern.

Abb. 1: Im Capture-Dialog stellen Sie ein, welche Netzverbindungen Sie beobachten wollen.

Abb. 2: Mandrake 9.2 und Suse Linux 9.0 bringen eine ältere Ethereal-Version mit. Die Aufteilung ist unterschiedlich, aber die Eingaben sind gleich.

Im ersten Beispiel beobachten Sie, was beim Abholen von E-Mails über POP passiert. Dazu geben Sie im Eingabefeld neben Capture Filter den Wert port 110 ein. Alle Dienste, zum Beispiel Web-, E-Mail- oder FTP-Server werden unter einem so genannten Port angesprochen -- eine Liste, welcher Dienst welchen Port verwendet, bringt jedes Linux in der Datei /etc/services mit. Mail-Server benutzen traditionell Port 110 -- und genau die Verbindungen zu und von diesem Port zeichnet Ethereal mit dieser Filterregel auf.

Ein Klick auf Ok startet die Aufzeichnung und öffnet ein Fenster mit statistischen Informationen über die Pakete. Jetzt wechseln Sie ins Mail-Programm und rufen Ihre E-Mails ab. In unserem Beispiel haben wir KMail verwendet, Sie können jedoch jedes beliebige Mail-Programm dafür nutzen, der grundsätzliche Ablauf ist gleich. Zurück in Ethereal beenden Sie über einen Klick auf Stopp im Capture-Dialog die Aufzeichnung.

Im Hauptfenster von Ethereal hat sich nun eine auf den ersten Blick verwirrende Fülle von Daten angesammelt. Wenn zwei Rechner sich übers Netz Daten zuschicken, teilen sie diese üblicherweise in kleine Häppchen mit einer festen Größe auf, die beim Empfang wieder zusammengesetzt werden. Jede Zeile im Ethereal-Fenster steht für ein solches Datenpaket.

Die Pakete mit TCP in der Spalte Protokoll dienen dem Verbindungsaufbau auf einer unteren Ebene: Bevor wirklich konkrete Daten oder Anfragen der Programme übertragen werden, veranstalten Ihr Rechner und der Server einen so genannten TCP-Handshake. Handshake heißt auf Deutsch Händeschütteln, und genauso läuft dieser Vorgang ab: Ein Rechner schickt ein Paket "Hallo, will mit dir reden". Computer fassen sich natürlich kürzer: In der Sprache des TCP-Protokolls ist das ein so genannter SYN-Request, den Sie in der Spalte Info sehen.

Der andere, wenn er erreichbar ist, antwortet mit einem "Ja, kann dich hören -- red weiter" (SYN, ACK). Sein Gegenüber antwortet darauf mit einem ACK -- "Okay". Damit ist die Verbindung hergestellt, und der für die E-Mail interessante Teil beginnt.

Post abholen

Dieser läuft über POP, das Post Office Protocol, eine festgelegte Reihe von Anfragen und Antworten, mit denen sich Mail-Programme und Mail-Server unterhalten. Dieser Dialog ist auch für Menschen gut lesbar -- zumindest solange Sie im Mail-Programm keine Verschlüsselung eingestellt haben.

Um den Dialog besser zu verfolgen, geben Sie in der Filterzeile pop ein: Damit blendet Ethereal alles aus, was nichts direkt mit dem Mail-Abruf zu tun hat. Wollen Sie wieder alles anzeigen, klicken Sie auf Leeren.

Abb. 3: Ethereal zeigt, was sich beim Abrufen neuer Nachrichten zwischen Mail-Programm und Server abspielt. Das Mail-Programm schickt Benutzernamen und Passwort und fragt den Server nach neuen Nachrichten. Das untere Feld enthält den Inhalt einer Mail, die übertragen wird.

Abbildung 3 zeigt den kompletten Dialog zwischen Mail-Programm und Server. In den Spalten Source ("Quelle") und Destination ("Ziel") sehen Sie, wer wem Daten geschickt hat -- eine der Adressen ist Ihre eigene, die andere die des Mail-Servers. Ethereal zeigt an dieser Stelle die IP-Adressen statt der Domain-Namen. Im Terminal finden Sie mit dem Befehl host, zum Beispiel host 62.245.157.216, heraus, welcher Domain-Name sich hinter einer IP-Adresse verbirgt.

Die Spalte Info zeigt die Anfragen des Mail-Programms (Request) und die Antworten des Servers (Response).

Mit USER elian@gmx.li schickt der Client den Benutzernamen zum Server. Dieser antwortet in allerfeinstem Englisch mit OK May I have your password please? ("Dürfte ich bitte das Passwort haben?"). Relevant für die Progamme ist hier und im ganzen Dialog nur das OK, der englische Text ist für Menschen gedacht. Im nächsten Zug schickt das Mail-Programm das Passwort -- und zwar im Klartext, der Server prüft es intern und gibt ein OK zurück: Die Anmeldung war erfolgreich. Anschließend erkundigt sich KMail mit LIST, wie viele Mails denn überhaupt auf dem Server liegen: eine einzige in diesem Fall. Mit UIDL ruft KMail deren Identifikationsnummer ab und weist anschließend mit RETR (steht für Retrieve, "Beziehen") den Server an, die Mail zu schicken.

Die Mail ist zu groß für ein Datenpaket, deswegen schickt der Server sie in mehreren Happen. Markieren Sie eine der Continuation-Zeilen, zeigt Ethereal im unteren Fenster den Inhalt des Pakets an: einen Teil einer E-Mail mit der Subject-Zeile.

Sobald KMail die Mail erhalten hat, löscht es sie mit dem Befehl DELE auf dem Server und verabschiedet sich mit QUIT.

Haben Sie die Daten durchgesehen und wollen eine neue Aufzeichnung starten oder Ethereal beenden, bietet das Programm an, die Aufzeichnung in eine Datei zu speichern. Diese können Sie später über File / Open wieder laden und weiter auswerten.

Browser belauschen

Wer wissen will, was sein Browser beim Surfen verschickt, geht ähnlich vor wie im Beispiel zum E-Mail-Abruf. Statt port 110 tragen Sie für Browser-Verbindungen port 80 als Capture-Filter ein. Das ist der Port, an dem Web-Server üblicherweise Anfragen entgegennehmen. Nachdem Sie mit einem Klick auf Ok die Aufnahme gestartet haben, wechseln Sie diesmal zum Browser und surfen die Website an, von der Sie herausfinden wollen, was übertragen wird.

Wie Mail-Programme und Mail-Server über POP, kommunizieren Browser und Web-Server über das HTTP-Protokoll ("Hypertext Transfer Protocol"). In der Filterzeile des Hauptfensters geben Sie deshalb http ein, um die Anzeige darauf zu beschränken.

HTTP ist etwas komplizierter als POP, aber das Prinzip ist dasselbe. Browser und Web-Server unterhalten sich in einem vorgegebenen Format. Mit GET /pfad/dateiname ("Hole") verlangt der Browser vom Web-Server eine Datei. Dabei schickt er noch eine ganze Reihe weiterer Informationen mit, die Ethereal in sortierter Form im mittleren und in roher Form im unteren Fenster darstellt.

Klicken Sie auf das unterste Dreieck im mittleren Feld, sehen Sie, was der Browser an den Web-Server schickt (Abbildung 4): Mit GET /pix/elsk_fedora2s_png fordert er ein PNG-Bild von der EasyLinux-Website (Host: easylinux.de) an, mit User-Agent stellt er sich als Mozilla Firefox vor. Anschließend erzählt er noch, welche Dateiformate und Zeichensätze er akzeptiert und welche Sprache er bevorzugt.

Der Web-Server liefert als Antwort so genannte Status-Codes zurück: Zahlen mit einer bestimmten Bedeutung. Bestimmt haben Sie schon einmal den Fehler 404 gesehen: "Datei nicht gefunden."404 ist ein solcher Status-Code. Geht alles glatt, sendet der Server 200 für "Okay" zurück und schickt anschließend die angeforderte Seite, aufgeteilt in mehrere aufeinander folgende Pakete, da die wenigsten Dateien komplett in ein Paket passen (Abbildung 5).

Abb. 4: Eine HTTP-Verbindung zwischen Browser und Web-Server. In der markierten Zeile fordert der Browser vom Web-Server ein Bild an. Im mittleren Fenster schlüsselt Ethereal die Details der Anfrage auf.

Abb. 5: Der Browser lädt die Startseite von EasyLinux. Im mittleren Fenster ist der Anfang des übertragenen HTML-Codes der Seite zu sehen.

Neben 200 und 404 gibt es weitere Antworten, die jedoch wesentlich seltener vorkommen. Als Faustregel gilt: Alle mit einer Zwei beginnenden Status-Codes sind Erfolgsmeldungen, im Dreihunderterbereich finden sich Änderungsmeldungen, zum Beispiel wenn eine Seite umgezogen ist. Die Meldungen ab 400 sind für Fehler auf der Browser-Seite gedacht, zum Beispiel den Aufruf einer nicht existierenden Seite oder eine fehlgeschlagene Anmeldung auf einer passwortgeschützten Seite. 500 und aufwärts sind Fehler auf Seiten des Web-Servers, etwa wenn er zeitweilig ausgefallen ist. Auf [3] finden Sie eine detaillierte Übersicht.

Doch Browser rufen nicht nur Websites ab, manchmal schicken sie auch Daten, zum Beispiel wenn Sie ein Formular ausfüllen. Einen solchen Vorgang zeigt Abbildung 6: Dort haben wir uns auf der GMX-Website eingeloggt, die Eingaben schickt der Browser mit einem POST-Request ab. Das Passwort geht dabei, wie man erkennen kann, im Klartext durchs Netz. Zum Vergleich: Bei einer SSL-verschlüsselten Verbindung (Abbildung 7) sehen Sie nur Zeichensalat.

Wer eine SSL-Verbindung beobachten will, trägt im Capture-Dialog port 443 ein und ruft im Browser eine Website auf, die HTTPS verwendet -- zum Beispiel das Home-Banking-Angebot Ihrer Bank. Zur Analyse tragen Sie anschließend in der Filterzeile ssl ein.

Abb. 6: Füllt der Benutzer ein Formular auf einer Website aus, schickt der Browser die Eingaben mit dem Befehl "POST" ("Senden") an den Web-Server. Die beiden unteren Fenster zeigen, welche Inhalte der Browser dabei überträgt. Hier loggen wir uns mit der Mail-Adresse elian@gmx.li und dem Passwort a3Xf49di beim Webmail-Dienst GMX ein.

Abb. 7: Bei einer SSL-verschlüsselten Verbindung zeigt auch Ethereal nur Zeichensalat -- entschlüsselt werden die Daten erst im Browser bzw. auf dem Web-Server.

Auf Fehlersuche

Vor allem für die Fehleranalyse erweist sich Ethereal als nützlich. Oft führen die Fehlermeldungen grafischer Programme den Nutzer in die Irre, statt ihn auf die Ursache hinzuweisen.

Im Beispiel haben wir uns das Update-Tool von Mandrake Linux vorgeknöpft. Beim Versuch, ein beliebiges Programmpaket zu aktualisieren, beschwert sich das Update-Programm über eine fehlende Signatur (Abbildung 8).

Abb. 8: Das Mandrake-Update-Tool weigert sich, das Paket xchat zu aktualisieren und meckert über eine fehlende Signatur.

Mit Ethereal schauen Sie, was wirklich passiert. Als Filter tragen Sie host sunsite.informatik.rwth-achen.de, die Adresse des Update-Servers ein, um nur die Kommunikation zu diesem Server aufzunehmen (Abbildung 9). Nach einem Klick auf Ok versuchen Sie im Update-Programm noch einmal, das Paket zu aktualisieren.

Abb. 9: Um die Verbindung zu einem bestimmten Server zu belauschen, tragen Sie im Filterdialog "host" und die gewünschte Domain ein.

Nach dem erneuten Fehlschlag wechseln Sie zurück zu Ethereal und schauen sich die aufgezeichnete Verbindung an (Abbildung 10). Dort finden Sie eine FTP-Fehlermeldung: Da momentan zu viele Benutzer am Server angemeldet sind, weist der Update-Server die Verbindung ab. Statt mit einer Meldung über eine fehlende Signatur zu verwirren, hätte das Mandrake-Update-Programm das auch gleich sagen können. Jetzt ist auch die Lösung des Problems klar: Entweder folgt man dem Ratschlag des FTP-Servers und versucht es später noch einmal, wenn weniger Betrieb herrscht, oder man trägt im Software Media Manager einen anderen, weniger belasteten Update-Server ein. (eba)

Abb. 10: Die mit Ethereal aufgezeichneten Verbindungsdaten zeigen die wirkliche Fehlerursache: Der Update-Server ist überlastet und weist deshalb den Verbindungsversuch zurück. "There are too many connected users, please try later" (zu viele Verbindungen, versuchen Sie es später noch mal).
Infos
[1] Paket-Verzeichnis für Suse Linux 9.0: ftp://ftp.suse.com/pub/suse/i386/9.0/suse/i586
[2] Paket-Verzeichnis für Suse Linux 9.1: ftp://ftp.suse.com/pub/suse/i386/9.1/suse/i586
[3] HTTP-Statusmeldungen: http://de.selfhtml.org/diverses/httpstatuscodes.htm

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2012 Linux New Media AG | Last modified: 2007-04-05 11:10

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]