Für jeden Administrator ist der Paket-Sniffer Wireshark [1] – früher unter dem Namen Ethereal bekannt – ein Muss. Wenn Sie irgendwann einmal die Ursache für ein Netzwerkproblem finden oder Server-Traffic debuggen müssen, ist Wireshark das passende Tool dafür. Wie die meisten anderen Programme, die Netzwerkdaten mitschneiden, benutzt auch Wireshark die Libpcap. Sie stellt eine Abstraktionsschicht vom jeweiligen systemspezifischen Interface eines Betriebssystems dar, um alle Pakete zu empfangen, die über ein Shared-Netzwerk fließen. Das erspart Programmierern, für jedes Betriebssystem spezifischen Code zu schreiben. Deshalb funktioniert Software, die Libcap verwendet, auf einer ganzen Reihe von Betriebssystemen wie Linux, den BSD-Varianten, Solaris, Windows und so weiter.
Wireshark gibt es für die meisten Betriebssysteme. Bei Linux-Distributionen ist es häufig in zwei Pakete aufgeteilt, von dem das eine die Backend-Tools wie »tshark
«
und »mergecap
«
enthält und das andere die grafische Oberfläche. Auf Fedora und Red Hat lassen sich die Pakete folgendermaßen installieren:
yum install libpcap yum install wireshark-gnome
Bei Debian/Ubuntu sieht das so aus:
apt-get install libpcap0 apt-get install wireshark
Wer noch eine ältere Linux-Distribution verwendet, die nur eine veraltete Wireshark-Version anbietet (beispielsweise 1.2), kann sich das Programm auch aus dem Quellcode kompilieren. Die Baureihen 1.3 und 1.4 enthalten eine Menge von Bugfixes, GeoIP-Support, neue Protokolle und so weiter. Um das Tool selbst zu übersetzen, laden Sie es von [2] oder dem Subversion-Repository [3] herunter und folgen der üblichen Prozedur mit Configure und Make. An Voraussetzungen benötigen Sie wenigstens die Entwicklungspakete der Libpcap, empfehlenswert sind außerdem GnuTLS, PCRE (Perl Compatible Regular Expressions) und GeoIP, wenn man dies benötigt.
Um Live-Daten mitzuschneiden, müssen Sie Wireshark mit Root-Rechten ausführen. Leider hatte Wireshark in der Vergangenheit einige Sicherheitslücken, die ein Angreifer mit speziell manipulierten Paketen ausnutzen konnte. Es gibt zwei Möglichkeiten, bei der Ausführung von Wireshark mehr Vorsicht walten zu lassen. Die erste besteht darin, ein Programm wie »dumpcap
«
oder »tcpdump
«
zum Mitschneiden zu verwenden und die entstehende Logdatei später als regulärer Anwender mit Wireshark zu untersuchen.
Bei der zweiten Variante betreibt man Wireshark zwar mit Root-Rechten, aber in einem Container/Jail oder einer virtuellen Maschine. Weil Libcap Zugriff auf den Netzwerktreiber gewährt, kann man auch im Gastsystem allen Traffic mitschneiden. Der Nachteil davon ist, dass diese Möglichkeit dann auch einem eventuellen Angreifer offensteht. Feiner granulierte Rechtekontrolle wäre auf einem nativen wie auch einem virtualisierten System beispielsweise mit SELinux möglich.
Von einem belebten Netzwerk die Daten mitzuschneiden, entspricht etwa dem Versuch, aus einem Feuerwehrschlauch zu trinken [4]. Glücklicherweise bieten die meisten Programme, die Libpcap verwenden, Filter, die von vornherein die Datensammlung begrenzen. Leider sind die Filtermöglichkeiten relativ begrenzt und beschränken sich weitgehend auf Netzwerkadressen und Ports, aber wenigstens können Sie so schon einmal die Menge der Rohdaten drastisch reduzieren. Zum Beispiel nimmt der folgende Ausdruck nur Webtraffic auf, der an die Ports 80 und 443 (HTTPS) gerichtet (»dst
«
) ist:
dst port 80 or 443
Ausführliche Informationen zur Syntax liefert die Manpage zu Tcpdump.