Es gibt viele Gründe, warum Sie die Netzwerkaktivität auf Ihrem Linux-System überwachen möchten. Vielleicht beheben Sie ein Netzwerkproblem, vielleicht wollen Sie überprüfen, ob es keine bösartigen Anwendungen gibt, die verdächtige Netzwerkaktivitäten erzeugen, oder Sie wollen einfach wissen, ob irgendwelche Prozesse nach Hause telefonieren. Was auch immer der Grund ist, hier sind einige Methoden, um herauszufinden, welche Prozesse auf Ihrem System im Netzwerk aktiv sind und mit wem sie kommunizieren.
In diesem Tutorial werden Sie lernen:
- Wie man Netzwerkverbindungen und abhörende Dienste mit netstat
- Wie man Netzwerkverbindungen und abhörende Dienste mit lsof
- Wie man Netzwerkverbindungen und abhörende Dienste mit ifconfig
- Welche Tools man verwenden kann, um die Daten zu untersuchen, die über das Netzwerk gesendet werden

Softwareanforderungen und verwendete Konventionen
Kategorie | Anforderungen, Konventionen oder verwendete Softwareversion |
---|---|
System | Distributionsunabhängige |
Software | netstat, lsof, ifconfig, wireshark, tcpdump |
Sonstiges | Privilegierter Zugriff auf Ihr Linux-System als root oder über den sudo Befehl. |
Konventionen | # – erfordert, dass gegebene Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung des sudo -Befehls$ – erfordert, dass gegebene Linux-Befehle als normaler nicht-privilegierter Benutzer ausgeführt werden |
Netstat
Netstat
ist ein leistungsfähiges Dienstprogramm, das Netzwerkverbindungen ausdrucken kann, Routing-Tabellen, Schnittstellenstatistiken, Masquerade-Verbindungen und Multicast-Mitgliedschaften ausgeben kann. Wir werden es verwenden, um ersteres zu erreichen.
Installation von Netstat
Auf Debian und Debian-basierten Systemen wie Ubuntu verwenden Sie apt.
# apt install net-tools
Auf Red Hat Enterprise Linux und Red Hat-basierten Systemen verwenden Sie yum,
# yum install net-tools
auf Arch-basierten Systemen verwenden Sie pacman.
# pacman -S net-tools
Das UAF Geophysical Institute, sucht einen erfahrenen Linux Systemanalytiker, um sein Team von Forschungs-Cyberinfrastruktur-Analytikern und Ingenieuren zu verstärken. STANDORT: Fairbanks, Alaska, USA
JETZT BEWERBEN
In den folgenden Beispielen verwenden wir eine Neuinstallation von RHEL 8, die in VirtualBox mit installierten Gasterweiterungen läuft
Lauschende Prozesse anzeigen
Zunächst wollen wir uns die Prozesse ansehen, die auf Verbindungen warten. 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 an, und n
stellt Adressen, Benutzer und Ports numerisch dar.

Betrachtet man das Client-Server-Modell, auf dem die meiste Netzwerksoftware basiert, kann man sich die lauschenden Prozesse als Software vorstellen, die sich im „Server“-Modus befindet. Bei unserer Konfiguration ist die Ausgabe nicht überraschend. Es handelt sich um alle Prozesse, von denen man erwarten würde, dass sie bei einer Neuinstallation von RHEL 8 unterVirtualBox
nach Netzwerkverbindungen suchen.
Für jeden lauschenden Prozess können Sie das verwendete Protokoll, die lokale Adresse und den Port, an dem er lauscht, den Benutzer, unter dem er läuft, und den PID/Programmnamen sehen. Hier gibt es einen wichtigen Unterschied zu beachten. Beitcp4
/udp4
-Verbindungen (einfach alstcp
undudp
aufgeführt), bei denenLocal Address
als0.0.0.0
aufgeführt ist, lauscht der Prozess auf Verbindungen von jedem Rechner, der in der Lage ist, über das Netz eine Verbindung zu ihm herzustellen, während er, wenn er als127.0.0.1
aufgeführt ist, nur auf Verbindungen auf dem localhost (dem Rechner, auf dem er läuft, oder sich selbst) lauscht und von anderen Computern im Netz nicht angesprochen werden kann. Die gleiche Unterscheidung gilt fürtcp6
/udp6
, wenn man einenLocal Address
von::
(netzwerkorientiert) und::1
(nur localhost) vergleicht.
Alle Netzwerkverbindungen anzeigen
Nun wollen wir uns alle aktuellen Netzwerkverbindungen ansehen. Dazu geben Sie den folgenden Befehl ein, der dem vorherigen ähnelt, außer dass wir -a
verwenden, um alle Sockets zu sehen, anstatt -l
, um nur die lauschenden Sockets zu sehen.
$ sudo netstat -atupen
Dieser Befehl zeigt uns nicht nur, welche Software als „Server“ auf Verbindungen wartet, sondern auch die aktuell bestehenden Verbindungen zu dieser Software und alle bestehenden Netzwerkverbindungen mit Software, die als „Client“ fungiert, wie z. B. ein Webbrowser.

Im Screenshot sehen Sie 2 Verbindungen im ZustandESTABLISHED
. Auch hier gibt es keine Überraschungen. Eine davon gehört zu NetworkManager und arbeitet als DHCP-Client, um das Netzwerk vom Gateway-Server (in diesem Fall der Host-Rechner) zu aktivieren. Der 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, wäre dies ein Grund für weitere Untersuchungen.
Ansicht der hergestellten Verbindungen
Sie könnten sich in einer Situation befinden, in der Sie nur die ESTABLISHED
-Verbindungen sehen möchten. Das geht ganz einfach, indem man die Ausgabe von netstat an grep weiterleitet.
$ sudo netstat -atupen | grep ESTABLISHED

Wir haben den obigen Befehl eingegeben, nachdem wir in firefox zu wikipedia.com navigiert haben, und der Screenshot zeigt die Verbindungen, die von firefox aufgebaut wurden, als wir die Website erreichten. Wie Sie sehen können, gibt es vier Server, mit denen firefox eine Verbindung herstellt: 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 wir dies für jeden dieser Server tun, zeigt sich, dass sie zu Wikimedia, Google, Google bzw. Akamai gehören. Dies macht Sinn, wenn man bedenkt, dass Wikimedia Eigentümer und Hoster von Wikipedia ist und es sehr üblich ist, dass Websites Ressourcen laden, die auf Servern von Google und Akamai gehostet werden. Tatsächlich zeigt eine Untersuchung des Quellcodes der Wikipedia-Homepage, dass sie das Google Play Store App-Badge von google.com und das Apple AppStore App-Badge von apple.com lädt.
Wenn man die URLs dieser beiden App-Badges einzeln aufruft und den oben genannten netstat-Befehl ausführt, kann man tatsächlich feststellen, dass sie auf Servern gehostet werden, die Google bzw. Akamai gehören.
Wenn dies Ihr Interesse an netstat
geweckt hat, dann haben wir einen Artikel, den Sie lesen können, um mehr über die Verwendung des netstat-Befehls zu erfahren
ss
Der netstat
-Befehl ist seit langem ein Favorit von Sysadmins, wurde jedoch kürzlich durch den ss
-Befehl ersetzt, der sich damit rühmt, schneller, einfacher und besser lesbar zu sein als netstat
. Sehen wir uns an, wie man die gleichen Aktionen wie oben mit ss
durchführen kann. Ss
hat auch eine -e
-Option, 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.
Überwachungsprozesse anzeigen
Um alle Überwachungsprozesse 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
stellt Adressen, Benutzer und Ports numerisch dar und p
zeigt das Programm, 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
Aufgebaute Verbindungen anzeigen
Wenn -a
oder -l
nicht enthalten sind, zeigt ss
nur aufgebaute Verbindungen an. Um nur bestehende Verbindungen anzuzeigen, geben Sie Folgendes ein:
$ sudo ss -tunp
lsof
Für den Fall, dass Ihnen netstat
und ss
nicht ausreichen, haben wir lsof
. Lsof
wird verwendet, um offene Dateien aufzulisten. GNU/Linux hat das UNIX-Designprinzip geerbt, dass alles eine Datei ist; das schließt Netzwerkverbindungen ein. Daher kann lsof
verwendet werden, um Netzwerkaktivitäten 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 stellt n
die Adressen numerisch dar, P
stellt die Ports numerisch dar und i
unterdrückt die Auflistung aller offenen Dateien, die nicht als Netzwerkdateien gelten.
Ansicht der bestehenden Verbindungen
Um nur bestehende Verbindungen anzuzeigen, geben Sie Folgendes ein, wobei die zusätzlichen Schalter alle bestehenden TCP
Verbindungen auflisten.
$ sudo lsof -nP -iTCP -sTCP:ESTABLISHED
Lauschende Prozesse anzeigen
Um lauschende Prozesse mit lsof
anzuzeigen, geben Sie Folgendes ein.
$ sudo lsof -nP -iTCP -sTCP:LISTEN
Damit werden alle Prozesse übersehen, die über UDP lauschen, daher kann es wünschenswert sein, stattdessen Folgendes einzugeben, um auch diese zu berücksichtigen.
$ sudo lsof -nP -i | grep 'LISTEN\|UDP'
Überwachung 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 oft ist es 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, Pakete zu schnüffeln. Zwei Programme, die sich auf diesen Bereich spezialisiert haben, sind tcpdump
und wireshark
.
Wir haben bereits Anleitungen zur Installation von Wireshark unter RHEL 8, zu den Grundlagen des Netzwerkprotokoll-Analysators Wireshark unter Linux, zum Filtern von Paketen in Wireshark unter Kali Linux geschrieben, und der Abschnitt Network Monitoring
von Linux System- und Hardware-Überwachung effizient gemacht enthält eine schöne Einführung in tcpdump
.