Website-Suche

So überwachen Sie die Netzwerkaktivität auf einem Linux-System


Es gibt viele Gründe, warum Sie die Netzwerkaktivität auf Ihrem Linux-System überwachen sollten. Möglicherweise beheben Sie ein Netzwerkproblem, stellen sicher, dass keine schädlichen Anwendungen verdächtige Netzwerkaktivitäten verursachen, oder Sie möchten einfach nur wissen, ob Prozesse nach Hause telefonieren. Was auch immer der Grund sein mag, hier sind ein paar Methoden, um zu sehen, welche Prozesse auf Ihrem System an Netzwerkaktivitäten beteiligt sind und mit wem sie kommunizieren.

In diesem Tutorial lernen Sie:

  • So überwachen Sie Netzwerkverbindungen und lauschende Dienste mit netstat
  • Überwachen von Netzwerkverbindungen und Abhören von Diensten mit lsof
  • Überwachen von Netzwerkverbindungen und Abhören von Diensten mit ifconfig
  • Welche Tools Sie verwenden können, um die Daten zu untersuchen, die über das Netzwerk gesendet werden

So überwachen Sie die Netzwerkaktivität auf einem Linux-System

Verwendete Softwareanforderungen und Konventionen

Netstat

Netstat ist ein leistungsstarkes Dienstprogramm, das Netzwerkverbindungen, Routing-Tabellen, Schnittstellenstatistiken, Maskerade-Verbindungen und Multicast-Mitgliedschaften drucken kann. Wir werden es nutzen, um Ersteres zu erreichen.

Installieren von Netstat

Auf Debian und Debian-basierten Systemen wie Ubuntu verwenden Sie apt.

apt install net-tools

Verwenden Sie auf Red Hat Enterprise Linux und Red Hat-basierten Systemen yum,

yum install net-tools

Verwenden Sie auf Arch-basierten Systemen pacman.

pacman -S net-tools

HINWEIS
In den folgenden Beispielen verwenden wir eine Neuinstallation von RHEL 8, die in VirtualBox ausgeführt wird, mit installierten Gastzusätzen.

Hörprozesse anzeigen

Sehen wir uns zunächst die Prozesse an, die auf Verbindungen lauschen. Geben Sie dazu den folgenden Befehl ein.

sudo netstat -tulpen

In diesem Befehl zeigt t TCP-Verbindungen an, u zeigt UDP-Verbindungen an, l zeigt nur lauschende Sockets an, p zeigt das Programm an, zu dem die Verbindung gehört, e zeigt erweiterte Informationen und n steht numerisch für Adressen, Benutzer und Ports.

netstat -tulpen Ausgabe

Wenn man das Client-Server-Modell betrachtet, auf dem die meiste Netzwerksoftware basiert, können Abhörprozesse als Software betrachtet werden, die sich im "Server"-Modus befindet. Angesichts unseres Setups ist die Ausgabe nicht überraschend. Dies sind alle Prozesse, von denen Sie erwarten würden, dass sie bei einer Neuinstallation von RHEL 8, die in VirtualBox ausgeführt wird, auf Netzwerkverbindungen lauschen.

Für jeden Listening-Prozess sehen Sie das verwendete Protokoll, die lokale Adresse und den Port, auf dem er lauscht, den Benutzer, unter dem er läuft, und die PID/den Programmnamen. Hier gibt es einen wichtigen Unterschied zu beachten. Bei tcp4/udp4-Verbindungen (einfach als tcp und udp aufgeführt), bei denen die lokale Adresse als 0.0.0.0 aufgeführt ist, lauscht der Prozess auf Verbindungen von jedem Rechner, der in der Lage ist, sich über das Netzwerk mit ihm zu verbinden, während er bei der Auflistung als 127.0.0.1 nur auf Verbindungen auf dem localhost (dem Rechner, auf dem er läuft) oder auf sich selbst wartet und nicht von anderen Computern im Netzwerk verbunden werden kann. Die gleiche Unterscheidung gilt für tcp6/udp6, wenn eine lokale Adresse von ::(netzwerkseitig) und ::1 (nur localhost) verglichen wird.

Alle Netzwerkverbindungen anzeigen

Werfen wir nun einen Blick auf alle aktuellen Netzwerkverbindungen. Geben Sie dazu den folgenden Befehl ein, der dem vorherigen ähnelt, mit der Ausnahme, dass wir -a verwenden, um alle Sockets anzuzeigen, anstatt -l, um nur lauschende Sockets anzuzeigen.

sudo netstat -atupen

Dieser Befehl zeigt uns nicht nur, welche Software wir haben, die auf Verbindungen als "Server" lauscht, sondern zeigt uns auch aktuell hergestellte Verbindungen zu dieser Software und alle etablierten Netzwerkverbindungen, die wir mit Software haben, die als "Client" fungiert, wie z. B. ein Webbrowser.

netstat -atupen Ausgabe

Im Screenshot sehen Sie 2 Verbindungen im ESTABLISHED-Zustand. Auch hier gibt es keine Überraschungen. Einer von ihnen gehört zu NetworkManager und fungiert als DHCP-Client, um das Netzwerk vom Gateway-Server (in diesem Fall dem Host-Computer) zu ermöglichen. Die andere ist eine SSH-Verbindung zum Rechner, die wir nach der Portweiterleitung des SSH-Dienstes mit VirtualBox hergestellt haben. Hätten wir hier etwas Unerwartetes gesehen, dann wäre das vielleicht Anlass für weitere Untersuchungen.

Bestehende Verbindungen anzeigen

Möglicherweise befinden Sie sich in einer Situation, in der Sie nur die ETABLIERTEN Verbindungen anzeigen möchten. Dies ist so einfach wie das Weiterleiten der Ausgabe von netstat an grep.

sudo netstat -atupen | grep ESTABLISHED

sudo netstat -atupen | grep ESTABLISHED-Ausgabe

Wir haben den obigen Befehl eingegeben, nachdem wir in Firefox zu wikipedia.com navigiert sind, und der Screenshot erfasst die Verbindungen, die Firefox beim Erreichen der Site hergestellt hat. Wie Sie sehen können, gibt es vier Server, mit denen Firefox verbunden ist. 91.198.174.192, 172.217.23.100, 216.58.215.67 und 104.111.215.142.
Um zu sehen, wem diese Server gehören, können wir die IP-Adressen mit whois wie folgt abfragen.

whois 91.198.174.192| less

Wenn Sie dies für jeden von ihnen tun, wird deutlich, dass er zu Wikimedia, Google, Google bzw. Akamai gehört.
Dies ist sinnvoll, wenn man bedenkt, dass Wikimedia Wikipedia besitzt und hostet und es sehr üblich ist, dass Websites Ressourcen laden, die auf Servern von Google und Akamai gehostet werden. Tatsächlich zeigt ein Blick auf den Quellcode der Wikipedia-Startseite, dass das Google Play Store App-Badge von google.com und das Apple AppStore App-Badge von apple.com geladen wird.

Wenn Sie zu den URLs für diese 2 App-Badges einzeln navigieren und den obigen netstat-Befehl ausgeben, wird tatsächlich überprüft, ob sie auf Servern gehostet werden, die Google bzw. Akamai gehören.

Wenn dies Ihr Interesse an netstat geweckt hat, haben wir einen Artikel, den Sie lesen können: Erfahren Sie mehr über die Verwendung des Befehls netstat

ß

Der Befehl netstat ist seit langem ein Favorit von Systemadministratoren, wurde jedoch kürzlich durch den Befehl ss ersetzt, der sich rühmt, schneller, einfacher und menschenlesbarer als netstat zu sein. Sehen wir uns an, wie Sie die gleichen Aktionen wie oben mit ss ausführen können. Ss verfügt auch über die Option -e, um erweiterte Informationen anzuzeigen, aber diese Option wurde in den folgenden Beispielen weggelassen, da sie zusätzliche Informationen erzeugt, die zu einer weniger lesbaren Ausgabe führen können.

Hörprozesse anzeigen

Um alle Abhörvorgänge anzuzeigen, geben Sie Folgendes ein.

sudo ss -tlunp

In diesem Befehl zeigt t TCP-Verbindungen an, l zeigt nur lauschende Sockets an, u zeigt UDP-Verbindungen an, n steht numerisch für Adressen, Benutzer und Ports und p zeigt das Programm an, zu dem die Verbindung gehört.

Alle Netzwerkverbindungen anzeigen

Um alle Netzwerkverbindungen anzuzeigen, geben Sie Folgendes ein, wobei a l ersetzt und alle Netzwerk-Sockets anzeigt, nicht nur die lauschenden.

sudo ss -taunp

Bestehende Verbindungen anzeigen

Wenn -a oder -l nicht enthalten sind, zeigt ss nur hergestellte Verbindungen an. Um nur hergestellte Verbindungen anzuzeigen, geben Sie Folgendes ein.

sudo ss -tunp

lsof

Für den Fall, dass netstat und ss für Sie noch nicht genug waren, stellen wir Ihnen lsof vor. Lsof wird verwendet, um geöffnete Dateien aufzulisten. GNU/Linux hat das UNIX-Designprinzip geerbt, dass alles eine Datei ist; Dazu gehören auch Netzwerkverbindungen. Daher kann lsof verwendet werden, um die Netzwerkaktivität auf ähnliche Weise wie die oben genannten Befehle anzuzeigen.

Alle Netzwerkverbindungen anzeigen

Um alle Netzwerkverbindungen anzuzeigen, geben Sie Folgendes ein.

sudo lsof -nP -i

In diesem Befehl steht n für numerische Adressen, P für numerische Ports und i für die Auflistung aller geöffneten Dateien, die nicht als Netzwerkdateien betrachtet werden.

Bestehende Verbindungen anzeigen

Um nur hergestellte Verbindungen anzuzeigen, geben Sie Folgendes ein, wobei die zusätzlichen Schalter alle hergestellten TCP-Verbindungen auflisten.

sudo lsof -nP -iTCP -sTCP:ESTABLISHED

Hörprozesse anzeigen

Geben Sie Folgendes ein, um Listening-Prozesse mit lsof anzuzeigen.

sudo lsof -nP -iTCP -sTCP:LISTEN

Dadurch werden alle Prozesse übersehen, die über UDP lauschen, daher kann es wünschenswert sein, stattdessen Folgendes einzugeben, um auch diese einzuschließen.

sudo lsof -nP -i | grep 'LISTEN\|UDP'

Überwachen von Daten, die über das Netzwerk gesendet werden

Wir haben gesehen, wie netstat, ss und ifconfig verwendet werden können, um zu überwachen, welche Netzwerkverbindungen hergestellt werden und zu wem, aber es ist oft wünschenswert, genau zu sehen, welche Daten über das Netzwerk gesendet werden. Um dieses Ziel zu erreichen, benötigen wir Anwendungen, die in der Lage sind, Paket-Sniffing zu betreiben. Zwei Programme, die sich auf diesen Bereich spezialisiert haben, sind tcpdump und wireshark.

Wir haben zuvor Anleitungen zur Installation von Wireshark auf RHEL 8 geschrieben, Die Grundlagen des Netzwerkprotokollanalysators Wireshark unter Linux, Das Filtern von Paketen in Wireshark auf Kali Linux und der Abschnitt Netzwerküberwachung von Linux-System- und Hardwareüberwachung Effizient gemacht enthält eine schöne Einführung in tcpdump.

Schlussfolgerung

In diesem Artikel haben wir besprochen, wie Sie Überwachungsprozesse, hergestellte Verbindungen und alle Netzwerkverbindungen mit netstat, ss und ifconfig anzeigen können. Dann haben wir Tools eingeführt, um die tatsächlichen Daten zu untersuchen, die über das Netzwerk übertragen werden, und um sie mit großartigen Ressourcen zu verknüpfen, die von unschätzbarem Wert sind, um herauszufinden, wie man sie nutzen kann.

Verwandte Artikel: