Netzwerkverbindungen auf Linux Host mit netstat kontinuierlich anzeigen
Netstat – abgeleitet von Netzwerk Statistik, ist ein Befehlszeilen-Dienstprogramm, das von Systemadministratoren zum Analysieren von Netzwerkstatistiken verwendet wird. Es zeigt eine ganze Reihe von Statistiken an, wie beispielsweise offene Ports und entsprechende Adressen auf dem Hostsystem, Routing-Tabelle und maskierte Verbindungen.
Dieser Artikel beleuchtet, wie mithilfe von „netstat“ und „ss“ aktuelle Verbindungen auf einem Linux Hostsystem für Analysen in nahezu Echtzeit angezeigt werden können.
net-tools installieren und netstat anwenden
Auf vielen modernen Linux Distributionen wird netstat durch das neue Dienstprogramm ss ersetzt, falls es nicht vorinstalliert ist, kann netstat nachträglich installiert werden. Das Paket das netstat enthält ist net-tools.
$ yum install net-tools [CentOS/RHEL]
$ apt install net-tools [Debian/Ubuntu]
Der netstat-Befehl wird mit Filter bearbeitet, so das nur die Remote Adressen ausgegeben werden, und mit dem watch-Befehl in Intervalle kontinuierlich ausgeführt wird. Die Ausgabe zeigt die aktuellen https Anfragen auf einem Webserver.
$ watch -n 5 "netstat -nt | grep :443 | tail -n +3 | awk '{print \$5}' | cut -d: -f1 | sort | uniq -c | sort -n"
Hier werden die Remote Adressen in einem Intervall von 5 Sekunden für Anfragen über https, TCP Port 443 ausgegeben.
Möchte man die aktuellen Anfragen eines SMTP-Relays analysieren, wird Port 25 herausgefiltert, und nachfolgend alle 10 Sekunden ausgegeben.
$ watch -n 10 "netstat -nt | grep :25 | tail -n +3 | awk '{print \$5}' | cut -d: -f1 | sort | uniq -c | sort -n"
Grundsätzlich ist die Intervall Überprüfung mit jedem Dienst möglich, beliebige Ports und Intervallzeiten in Sekunden können gewählt werden.
IPv6 Netzwerk Verbindungen überprüfen
Mit dem neuen Befehlszeilen-Dienstprogramm, mit dem ss-Befehl können die Verbindungen ebenfalls ausgegeben werden. Grundsätzlich fragt es den Kernel direkt ab und kann schneller antworten als netstat.
$ watch -n 3 "ss -nH | grep :443 | awk '{print \$6}' | sort | uniq -c | sort -n"
Hier werden die Filter tail
und cut
nicht mehr eingesetzt, da das ss-Dienstprogramm über eigene Filter Operatoren verfügt.
Es werden die Verbindungen für IPv4 so wie für IPv6 ausgegeben, jeweils mit IPv4-als-IPv6-Adresse und dem peer Source Port.
Unter Verwendung von multitail gibt es weitere Anwendungsmöglichkeiten, so können mehrere Befehle in Fenstern aufgeteilt werden, wie es das Beispiel mit multitail zeigt.
$ multitail -R 3 -l "ss -nH | grep :443 | awk '{print \$6}' | sort | uniq -c | sort -n" -cS apache /var/log/apache2/access.log
Die Ausgabe zeigt das apache.log mit den Verbindungen auf einem Debian Webserver, wobei multitail in zwei Fenster horizontal gesplittet wird, -R 3 gibt das Intervall von 3 Sekunden vor, -l für das externe Kommando, hier „ss -nH“ mit Header Unterdrückung. Das Befehlszeilen-Tool kann mit „apt install multitail“ bereitgestellt werden.
Conclusion
Der Artikel beleuchtet, wie das Dienstprogramm netstat verwendet werden kann, um mittels watch – der netstat-Befehl regelmäßig ausgeführt wird, um mit der Ausgabe die aktuellen Anfragen auf Services zu überprüfen. Es ist auch wichtig, darauf hinzuweisen, dass „netstat“ veraltet ist und stattdessen das „ss“ Utility seinen Platz eingenommen hat, um spezifiziertere Netzwerkstatistiken anzuzeigen. Man kann sagen, dass das „ältere“ netstat sowohl durch ss- als auch durch ip-Befehle ersetzt wird.