Überwachung der Netzwerkaktivität auf einem Linux-System

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

Wie man Netzwerkaktivitäten auf einem Linux-System überwacht

Softwareanforderungen und verwendete Konventionen

Softwareanforderungen und Linux-Befehlszeilen-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 sudoBefehl.
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
Linux Systemanalytiker gesucht !
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
HINWEIS
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.

netstat -tulpen output

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 unterVirtualBoxnach 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 alstcpundudpaufgeführt), bei denenLocal Addressals0.0.0.0aufgefü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.1aufgefü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 Addressvon::(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.

netstat -atupen output

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

sudo netstat -atupen | grep ESTABLISHED output

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.

Abschluss

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.