mh.desing - stock.adobe.com

Mit ntopng, ngrep und iftop den Netzwerkverkehr analysieren

Die Open-Source-Tools ntopng, ngrep und iftop machen Netzwerkverkehr sichtbar und liefern schnelle Einblicke in Flüsse, Muster und Bandbreite für eine wirksame Analyse im Netzwerk.

Viele Probleme im Netzwerk entstehen dort, wo man sie nicht sofort sieht, bei einzelnen Verbindungen, unerwarteten Datenströmen oder verborgenen Protokollen. Drei Werkzeuge helfen, diese unsichtbaren Vorgänge sichtbar zu machen. ntopng liefert eine umfassende Weboberfläche für die Analyse von Traffic-Flows. ngrep ermöglicht die gezielte Suche nach Mustern im Datenstrom. iftop zeigt in Echtzeit, welche Verbindungen wie viel Bandbreite nutzen. Im Zusammenspiel ergeben sich schnelle und präzise Einblicke, die im Unternehmensnetz unverzichtbar sind.

Nutzung mit Kali Linux

Einige Tools sind in Kali Linux verfügbar, aber nicht unbedingt vorinstalliert. Kali eignet sich, da dort auch ergänzende Programme wie Nmap, tcpdump, Tshark, Wireshark oder Suricata bereitstehen. Für den Betrieb von ntopng bietet sich eine Ubuntu-Installation an. Wird auf Kali Linux der SSH-Dienst aktiviert, können Administratoren direkt auch aus dem Windows-Terminal per SSH auf die Kali-VM zugreifen und dort die Befehle nutzen. Das funktioniert ohne Windows-Subsystem für Linux und unabhängig davon, ob Kali in VMware, VirtualBox oder Hyper-V läuft. Unter VMware Workstation lassen sich sogar die WLAN-Adapter des Hosts an die VM durchreichen, sodass auch Funknetzwerke überwacht werden können. Kommt für ntopng noch eine Ubuntu-Installation zum Einsatz, geht das Durchreichen auch mit Ubuntu.

WLAN-Adpapter in Kali-VM nutzen.
Abbildung 1: Wenn Kali Linux für die Netzwerkanalyse zusammen mit VMware Workstation verwendet wird, lassen sich auch WLAN-Adapter auf dem Host in der Kali-VM nutzen.

ntopng – umfassende Sicht im Browser

ntopng ist ein webbasierter Traffic-Analyzer, der Netzwerkflüsse auswertet und Anwendungen automatisch erkennt. Er arbeitet mit SPAN-Ports oder TAPs, versteht NetFlow und sFlow und kann über SNMP auch Netzwerkgeräte abfragen. Im Webinterface zeigt ntopng aktive Hosts, die größten Datenverbraucher, genutzte Protokolle und auffällige Latenzen. Die Installation unter Ubuntu oder Kali erfolgt einfach über:

sudo apt update

sudo apt install ntopng

Bei nicht regelmäßig genutzten Kali-Installationen ist es außerdem sinnvoll, im selben Zuge alle Pakete zu aktualisieren:

sudo apt upgrade

Die Konfiguration liegt in /etc/ntopng.conf. Dort werden Schnittstellen, Speicherlimits und lokale Netze definiert. Ein typischer Eintrag sieht so aus:

--http-port=:3000

--local-networks=10.0.0.0/16=LAN

--dns-mode=3

Damit lauscht ntopng auf Port 3000 und behandelt das gesamte Netz 10.0.0.0/16 als lokal. Nach dem Start kann man das Interface im Browser unter http://<Server-IP>:3000 öffnen und sich mit dem Benutzer admin anmelden. Wenn beim Start von ntopng die Fehlermeldung erscheint, dass Port 3000 bereits belegt ist, kann das Programm nicht an seine Standardadresse binden. In diesem Fall lässt sich ntopng mit einem freien Port sofort wieder starten, ohne dass eine tiefere Konfigurationsänderung nötig ist. Dazu genügt es, beim Aufruf den gewünschten Port explizit anzugeben. Ein typisches Beispiel ist der Start auf Port 3410, kombiniert mit der Schnittstelle eth0. Der Befehl lautet:

sudo ntopng --http-port=:3410 -i eth0

Damit läuft ntopng weiterhin ganz normal, nur dass das Webinterface nun über http://<Server-IP>:3410 erreichbar ist. Auf diese Weise können Administratoren kurzfristig auf einen belegten Standardport reagieren und den Dienst dennoch sofort nutzen.

ntopng lässt sich über eine Weboberfläche nutzen.
Abbildung 2: ntopng lässt sich über eine Weboberfläche nutzen und zeigt auch hier den Datenfluss der Netzwerkgeräte an.

Nützlich ist ntopng auch, wenn es mit nProbe zusammenarbeitet. nProbe sammelt Flows von Routern oder Switches und übergibt sie per ZeroMQ an ntopng. Auf dem Probe-Host wird nProbe gestartet:

nprobe -i eth0 -n none --zmq "tcp://*:5556"

Auf dem Auswertungsserver lauscht ntopng auf diese Quelle:

ntopng -i "tcp://<nprobe-IP>:5556"

So entsteht eine saubere Trennung zwischen Datensammlung und Analyse. In der Weboberfläche kann man im Fenster mit den Hosts oder im Fenster mit den Flows die Hosts anklicken und erhält daraufhin erweiterte Informationen zum jeweiligen Host.

ntopng ermittelt auch Informationen zu den jeweiligen Geräten.
Abbildung 3: ntopng zeigt in der Weboberfläche auch Informationen zu den jeweiligen Geräten an.

Angezeigt wird zunächst die grundlegende Identität des Hosts mit seiner IP-Adresse, der zugeordneten MAC-Adresse und Informationen zum Gerätetyp. Über den Eintrag Name lässt sich nachvollziehen, wie der Host aufgelöst oder benannt ist, was bei der Zuordnung zu realen Endgeräten hilft. Mit Active Monitoring können Administratoren Tests wie ICMP-Pings aktivieren, um die Erreichbarkeit des Systems zu überwachen.

Die Ansicht zeigt außerdem, wann der Host das erste Mal im Netz gesehen und wann zuletzt Daten übertragen wurden. Dadurch lässt sich einschätzen, ob es sich um ein dauerhaft aktives Gerät handelt oder ob der Host nur sporadisch auftritt. Die Sektion Sent vs Received Traffic Breakdown liefert eine Aufschlüsselung des Verhältnisses zwischen gesendetem und empfangenem Datenverkehr, wodurch auffällige Kommunikationsmuster erkannt werden können, etwa wenn ein Client ungewöhnlich viele Daten verschickt.

Unter Traffic Sent / Received und den nachfolgenden Tabellen wird der Datenverkehr nach Rollen unterschieden, einmal als Client und einmal als Server. Hier können Administratoren überprüfen, ob der Host in erster Linie Dienste konsumiert oder ob er selbst Serverdienste bereitstellt. Auffälligkeiten, wie ein Arbeitsplatzrechner, der unerwartet in die Rolle eines Servers wechselt, lassen sich so schnell erkennen.

Die Rubrik Flows zeigt, wie viele aktive Verbindungen bestehen, wie viele insgesamt gesehen wurden und ob es dabei zu Problemen wie Port-Unreachables kam. Zudem können Administratoren unter Total Flows with Blacklisted Hosts sehen, ob der Host bereits mit bekannten unerwünschten oder blockierten Zielen kommuniziert hat. Die Angaben zu Peers und Contacted Servers geben Aufschluss darüber, mit wie vielen verschiedenen Endpunkten der Host interagiert.

Am unteren Ende stehen Verwaltungsfunktionen zur Verfügung. Mit Reset Host Stats lassen sich die gesammelten Daten für den ausgewählten Host zurücksetzen, um die Beobachtung mit einem sauberen Stand neu zu beginnen. Reset Blacklisted Hosts Stats bezieht sich auf die Interaktionen mit gesperrten Zielen und ermöglicht ebenfalls einen Neustart der Zählung. Schließlich gibt es die Option Download, die es erlaubt, die Daten im JSON-Format oder als pcap Download zu exportieren. Dadurch können Administratoren die Daten entweder in anderen Systemen weiterverarbeiten oder in Wireshark für eine tiefergehende Analyse öffnen.

Integration in OPNsense

Auf OPNsense-Firewalls kann ntopng direkt als Plug-in installiert werden. Über System/Firmware/Plugins“ wird das Paket os-ntopng hinzugefügt. Danach erscheint im Menü Services ein Eintrag für ntopng. Zusätzlich ist das Redis-Plugin (os-redis) zu aktivieren. In der Konfiguration lassen sich Schnittstellen, der HTTP-Port und die DNS-Auflösung einstellen. Damit bekommt die Firewall selbst ein vollwertiges Monitoring-Werkzeug. Abhängig von der verwendeten OPNsense-Version müssen die dazu notwendigen Pakete installiert werden.

In einem Unternehmensnetz, zum Beispiel mit dem Adressbereich 10.0.0.0/16 erkennt ntopng sofort, welche Hosts auffällig viele Verbindungen aufbauen oder ungewöhnlich viel Traffic erzeugen. Über die Top-Talker-Liste lässt sich schnell feststellen, wenn ein einzelner Client die Leitung überlastet. Alerts weisen auf ungewöhnliches Verhalten hin, zum Beispiel auf hohe DNS-Fehlerquoten oder verdächtige Verbindungen ins Ausland.

ngrep – Muster im Datenstrom finden

ngrep funktioniert ähnlich wie das bekannte Programm grep, allerdings auf Netzwerkpaketen. Es durchsucht den laufenden Verkehr oder PCAP-Dateien nach Zeichenketten oder regulären Ausdrücken. Dadurch eignet es sich perfekt, um unverschlüsselte Protokolle zu überprüfen oder bestimmte Inhalte im Netzwerk zu finden. Um beispielsweise den gesamten SMTP-Verkehr auf Port 25 zu überwachen, genügt der folgende Befehl:

ngrep -d any port 25

Das Tool steht in Kali Linux zur Verfügung und lässt sich auch direkt mit SSH nutzen. Die Option -d any sorgt dafür, dass ngrep alle verfügbaren Interfaces überwacht. Ein weiteres Beispiel ist die Überwachung von Syslog-Daten auf Fehlermeldungen:

ngrep -d any 'error' port syslog

Hier sucht ngrep nach dem Text error in allen Syslog-Nachrichten. Besonders aufschlussreich ist ngrep bei HTTP-Verbindungen. Mit

ngrep -W byline port 80

werden HTTP-Header zeilenweise dargestellt. So lässt sich leicht nachvollziehen, welche User-Agent-Strings, Cookies oder Formulardaten übertragen werden. ngrep kann auch Mitschnitte anfertigen und später auswerten. Der folgende Befehl schreibt DNS-Pakete in eine Datei:

ngrep -O /tmp/dns.dump -d any -T port domain

Später können in dieser Datei Muster gesucht werden, zum Beispiel alle Pakete, die den String ns3 enthalten:

ngrep -tD ns3 -I /tmp/dns.dump

Darüber hinaus versteht ngrep auch hexadezimale Muster. Damit können Administratoren Binärsignaturen von Schadsoftware oder ungewöhnlichen Protokollen im Verkehr identifizieren.

iftop – Bandbreitenfresser sofort erkennen

iftop ist das Pendant zu top, nur für Netzwerkschnittstellen. Es zeigt in Echtzeit, welche Verbindungen auf einer Schnittstelle bestehen und wie viel Datenverkehr sie erzeugen. Die Installation erfolgt unter Kali Linux oder Ubuntu mit:

sudo apt-get install iftop

Gestartet wird iftop mit Root-Rechten, beispielsweise:

sudo iftop -i eth0
iftop zeigt Netzwerkverbindungen im Terminal an.
Abildung 4: iftop zeigt Netzwerkverbindungen im Terminal an, auch über SSH.

In der Anzeige listet iftop jede Verbindung in zwei Zeilen auf, eine für den ausgehenden und eine für den eingehenden Verkehr. Zusätzlich wird ein Balkendiagramm angezeigt, das sofort sichtbar macht, welche Verbindung den größten Anteil an der Bandbreite beansprucht.

In der linken Spalte werden die beteiligten Systeme angezeigt. In Abbildung 4 sieht man Hostnamen wie kali.joos.int oder OPNsense.joos.int, daneben aber auch IP-Adressen und Broadcast-Adressen. Jeder Eintrag wird durch Pfeile ergänzt: => steht für ausgehenden Verkehr, <= für eingehenden. Dadurch lässt sich direkt erkennen, ob ein Host Daten sendet oder empfängt und mit welchem Ziel er kommuniziert.

Die Spalten rechts daneben zeigen die Übertragungsraten an, aufgeschlüsselt nach kurzen Zeitintervallen. Standardmäßig werden drei Werte dargestellt, die den Durchschnitt über etwa 2, 10 und 40 Sekunden widerspiegeln. Administratoren sehen hier also, ob eine Verbindung nur kurzfristig Daten überträgt oder ob sie kontinuierlich Bandbreite beansprucht. Bei hohen Werten in allen drei Spalten ist von einem stabilen, anhaltenden Datenstrom auszugehen.

Im unteren Bereich blendet iftop eine Zusammenfassung ein. Dort sind die Gesamtwerte für den ausgehenden Verkehr (TX), den eingehenden Verkehr (RX) und die Summe beider Richtungen (TOTAL) zu finden. Für jede Kategorie werden die bisher insgesamt übertragenen Datenmengen (cum), die gemessene Spitzenlast (peak) sowie die aktuellen Übertragungsraten (rates) angezeigt.

Mit diesen Informationen können Administratoren sofort beurteilen, welche Hosts aktuell die meiste Bandbreite nutzen, ob bestimmte Systeme überwiegend senden oder empfangen und wie sich die Auslastung in den letzten Sekunden entwickelt hat. Typische Anwendungsfälle sind die schnelle Lokalisierung von Bandbreitenfressern, das Erkennen ungewöhnlicher Kommunikationspartner oder die Analyse, ob bestimmte Dienste wie Firewalls oder Gateways den Verkehr wie erwartet verarbeiten.

Mit Tastenbefehlen lässt sich die Anzeige anpassen. Mit N kann zwischen IP-Adressen und DNS-Namen umgeschaltet werden, mit P werden Ports eingeblendet. Die Tasten 1, 2 und 3 sortieren die Verbindungen nach der durchschnittlichen Bandbreite der letzten 2, 10 oder 40 Sekunden. Ein praktisches Beispiel ist die Analyse einer WLAN-Schnittstelle, auf der nur SSH-Verbindungen gezeigt werden sollen:

sudo iftop -i wlan0 -f "dst port 22"

Die Option -f erlaubt es, PCAP-Filter wie bei tcpdump zu verwenden. So lassen sich gezielt bestimmte Hosts, Ports oder Protokolle überwachen.

Zusammenspiel in der Praxis

In der Praxis lohnt es sich, die Werkzeuge kombiniert einzusetzen. Angenommen, ein Administrator bemerkt im Netz 10.0.0.0/16 eine starke Auslastung. Mit iftop sieht er sofort, dass der Client 10.0.12.34 in den letzten 40 Sekunden mehrere Megabit pro Sekunde erzeugt. Der Balken in der Anzeige zeigt klar, dass dieser Host die Leitung dominiert.

Mit ngrep kann er dann in den Traffic des Clients schauen. Stellt er fest, dass auf Port 80 unverschlüsselte HTTP-Verbindungen laufen, zeigt ngrep die Header und Inhalte im Klartext an. So lässt sich nachvollziehen, ob sensible Daten ungeschützt übertragen werden.

Parallel liefert ntopng das große Bild. Im Webinterface sieht der Administrator, welche Protokolle im Spiel sind, ob es Retransmissions gibt oder ob verdächtige Verbindungen zu unbekannten Zielen bestehen. Über historische Reports kann er prüfen, ob dieses Verhalten neu ist oder ob der Host regelmäßig auffällig wird.

Fazit

Die Tools ntopng, ngrep und iftop ergänzen sich: iftop zeigt sofort, wer die Bandbreite belegt, ngrep gibt detaillierte Einblicke in die übertragenen Daten und findet Muster oder Klartext-Passwörter und ntopng liefert eine umfassende Übersicht mit Protokollerkennung, Historie und Integration in Firewalls. Gemeinsam helfen die Tools, Bandbreitenfresser zu identifizieren, Fehlkonfigurationen aufzudecken und Sicherheitsvorfälle sichtbar zu machen – egal, ob im Rechenzentrum, im Campusnetz oder in einer virtuellen Umgebung unter Kali Linux in einem Microsoft-Netzwerk.

Dig Deeper on Netzwerk-Monitoring und -Analyse