Verbindungsdaten loggen mit Fritzbox und ntopng

Allgemein Linux

Wer saugt da schon wieder das halbe Internet leer und legt den gesamten Internetzugang der Familie lahm. Welche Seiten werden besonders häufig angesurft und welche Geräte zu Hause kommunizieren eigentlich mit welchen Servern und Diensten (Stichwort IoT). Was verbraucht mehr Traffic – Netflix oder Youtube? Du wirst es herausfinden mit deiner Fritzbox und ntopng.

Wer hat sie nicht in Deutschland zu Hause stehen? Gefühlt teilt sich der Router-Markt in Speedport (Telekom) oder Fritzbox (Vodafone, 1&1, etc.). Aber gerade die Fritzbox kann viel mehr, als sie auf den ersten Blick zeigt. Den einen oder anderen überrascht vielleicht schon der Wechsel von der Standard- zur erweiterten Ansicht.

Noch viel interessanter wird ein Klick unten links auf Inhalt, gefolgt von Fritz!Box Support (ggf. nach unten scrollen). Erstaunblich, was man da so alles unter der Haube findet (Direktlink fritz.box/support.lua).

Ich möchte mich in diesem Blogbeitrag auf den Abschnitt Paketmitschnitt konzentrieren.

Ein Klick auf den Link Paketmitschnitte ermöglicht nahezu an jeder physikalischen als auch logischen Schnittstelle des Routers die Bits und Bytes, die so durch die Leitung flitzen, abzugreifen und anderen Anwendungen zuzuführen. Grundsätzlich werden die Datenpakete als pcap im Wireshark-Format mitgeschnitten. Bei einem Klick auf START der jeweiligen Schnittstelle erscheint im Browser ein „Speichern unter…“-Dialogfenster, wo nur noch das Ziel festgelegt werden muss. Kurz darauf werden sämtliche Datenpakete der ausgewählten Schnittstelle zusätzlich auf die Festplatte gespeichert und können bereits zur Laufzeit, also auch nach dem Beenden der Aufzeichnung (STOPP) in voller Länge begutachtet werden. Wireshark ist dafür aus meiner Sicht am geeignetsten.

Wiresharkmitschnitt der Fritzbox

Nett, oder?

Aber es geht noch viel besser. Mit ntopng gibt es eine Applikation, bei der sich diese Datenpaket nicht nur einfach speichern, sondern analysieren und grafisch auswerten lassen. Und im Vergleich zum Speichern als reines pcap-File, welches in kurzer Zeit durchaus die Grenzen deiner Festplatte „sprengen“ kann, wertet ntopng diese Daten für dich aus, speichert die Verbindungdaten und verwirft letzten Endes die Payload – also das was die Megabytes, Gigabytes und Terrabytes deines Internetzugangs so ausmachen. Das Resultat ist eine sehr kompakte Datenbank mit Verbindungsdaten.

Bleibt eigentlich die Frage, wie du diesen PCAP-Datenstrom so umleitest, das er gar nicht erst als Datei gespeichert wird, sondern direkt nach ntopng umgeleitet werden kann. Aber auch da gibt es für dich eine einfache Lösung. Die Entwickler von ntopng haben speziell für die Fritzbox ein Script entwickelt, welches nach wenigen Anpassungen den Datenstrom zur Standard-Ausgabe umleitet und von da aus direkt wieder an ntopng übergibt. Und schon beginnt das große Datensammeln.

Doch machen wir einen Schritt nach dem anderen. Installiere zuerst ntopng und mache dich ein wenig mit der Oberfläche vertraut. Die Repoistories liegen unter https://packages.ntop.org/apt-stable/, ich erläutere dir die Installation unter Debian 10 mit Root-Rechten.

Zuerst öffnest du die Datei sources.list im Editor und fügst an Ende einer jeden Zeile, die mit deb oder deb-src beginnt ein contrib hinten an, sofern nicht bereits vorhanden.

# nano /etc/apt/sources.list
...

Anschließend lädst du das ntopng-deb-Paket herunter, welches dir die Paketquellen und Keys in deine Repositories einfügt und installierst dieses.

# wget https://packages.ntop.org/apt-stable/stretch/all/apt-ntop-stable.deb
# apt install ./apt-ntop-stable.deb 

Dann kann es auch schon mit der Installation von ntopng selbst losgehen:

# apt clean all 
# apt update 
# apt install ntopng ntop-data 

Uuuuund fertig. Der Dienst ntopng wird automatisch gestartet und das Ergebnis kannst du dir im Browser ansehen, in dem du entweder auf dem Rechner, auf dem ntopng gerade läuft http://localhost:3000 oder von einem anderen Rechner im Netzwerk mit http://ip-adresse:3000 die Website aufrufst.

Nach der erstmaligen Anmeldung mit admin/admin wirst du aufgefordert, das Passwort zu ändern. Anschließend siehst du das Dashboard, in dem ntopng eine erste Zusammenfassung der derzeit erkannten Schnittstellen und deren Datenpakete zeigt. Bei jedem Start läuft ntopng zehn Minuten lang in der Enterprise-Edition mit allen Funktionen, anschließend wechselt es in den abgespeckten Community-Modus, welcher aber für die üblichen Zwecke ausreichen sollte. Ansonsten wird es nicht gerade günstig, aber du kannst die Entwickler durchaus anschreiben und nach einen Angebot für Privatnutzer fragen, aber in jedem Fall erwarten dich jährliche Gebühren. Deshalb bin ich bei der Community Edition geblieben.

Oben links kannst du deine vorhanden physikalischen Netzwerkschnittstellen auswählen, über welche dein System verfügt, auf dem ntopng installiert wurde. Du kannst Alarme einrichten, aktuelle Verbindungsdaten einsehen und und und.

Unser Ziel ist jedoch, die Schnittstellen der Fritzbox „abzuschnorcheln“. Zum einen musst du dir darüber klar werden, welche Schnittstelle es sein soll. Ich habe mich für die Routing-Schnittstelle entschieden, da über diese sämtlicher Datenverkehr, welcher rein und raus geht (inklusive Gäste-WLAN), durch muss. Vor allem hat diese ein Beinchen in allen Netzen und kann deshalb auch jeden Client unabhängig von NAT, VPN und anderen Diensten identifizieren. Des weiteren musst du dir darüber bewusst sein, das die Schnittstelle, über die ntopng mit der Fritzbox verbunden ist, mindestens über dieselbe freie Bandbreite wie die „abzuschnorchelnde“ Schnittstelle verfügt.

Negatives Beispiel: Du möchtest deinen kompletten Datenverkehr der Routing-Schnittstelle (das ist sämtlicher Traffic ins und aus dem Internet) z.B. an einem 500MBit/s-Kabelanschluss abgreifen und dann über über WLAN (oder einen 100 Mbit/s-LAN-Anschluss) an deinen ntopng-Server weiterleiten? Dann solltest du dir im klaren darüber sein, das ggf. über einen längeren Zeitraum ganze 500 MBits/s (bei Vollauslastung) parallel durch dein WLAN (oder FastEthernet-Anschluss) durch wollen. Datenstau ist somit vorprogrammiert, du legst zeitweise dein eigenes Heimnetz lahm. Wenn wie in der folgenden Grafik 5 Endgeräte gleichzeitig viel Netzwerklast (Videostreaming z.B.) erzeugen, dann schafft das zwar vielleicht in der Summe noch dein Breitband-Kabelanschluss, aber alle Datenpakete parallel über einen 100 MBit/s-Anschluss an den ntopng-Server auszuliefern, damit ntopng die Datenpakete analysieren kann, wird durch diesen Flaschenhals definitiv nichts. Das Problem wird sogar noch viel gravierender. Die Fritzbox legt die Datenpakete zunächst in eine Queue (Warteschlange) ab, um den Flaschenhals zu kompensieren. Das wird aber nur sehr kurze Zeit „gut“ gehen, da sich das Problem mit dem Flaschenhals ja nicht auflöst und die Datenpakete nicht weniger werden. Dann fängt die Fritzbox recht schnell an, Datenpakete an dem Anschluss zu ntopng zu verwerfen, was zum einen die Analyse extrem fehlerhaft macht. Zum zweiten bekommt die Fritzbox richtig was zu tun und welche Auswirkungen das ggf. auf die CPU der Fritzbox und dessen Gesamtperformance hat…darüber möchte ich gar nicht spekulieren.

                              Internet
                                 ^
                                 ^
                                +--+
                                |  |
                                |  |   500
                                |  |  MBit/s
                                |  |
+-------------------------------+--+-----------+
|                                              |    100    +--------+
|                                              |   MBit/s  |        |
|                 Router                       +-----------+ ntopng |
|                                              |           |        |
|                                              |           |        |
+-------+----------+----------+-------+-------++           +--------+
   100  |     100  |     100  |  100  |       | 100
  MBit/s|    MBit/s|    MBit/s| MBit/s|       |MBit/s
+-------++ +-------++ +-------++ +----+---+ +-+------+
|        | |        | |        | |        | |        |
|   PC   | |   PC   | |   PC   | |   PC   | |   PC   |
|        | |        | |        | |        | |        |
|        | |        | |        | |        | |        |
+--------+ +--------+ +--------+ +--------+ +--------+

Positives Beispiel: Du möchtest immer noch dieselbe Routing-Schnittstelle abgreifen (Internet-Anschluss mit 500MBit/s) und verbindest deinen ntopng-Server per 1GBit/s-LAN mit deiner Fritzbox. Dann hast du auf dem Interface immer noch 500MBit/s Reserve für andere Anwendungen. Denn das Management für den ntopng-Server (also Traffic, der auch ohne Paketmitschnitt an dieser Schnttstelle entstehen würde, inklusive Updates und Online-Backups) darf auch nicht unterschätzt werden.

Wie oben bereits erwähnt stellen die ntopng-Entwickler ein passendes Script für die Fritzbox unter https://raw.githubusercontent.com/ntop/ntopng/dev/tools/fritzdump.sh zur Verfügung. Auch ist ein passendes Readme unter https://github.com/ntop/ntopng/blob/dev/doc/README.fritzbox vorhanden. Schauen wir uns das Script einmal näher an. Ich teile das im folgenden in mehrere Abaschnitte auf:

#!/bin/bash
# This is the address of the router
FRITZIP=http://fritz.box
# This is the WAN interface
IFACE="2-0"
# Lan Interface
#IFACE="1-lan"

Nach der Shebang wird die URL für die Fritzbox definiert, das ist im heimischen LAN http://fritz.box, du kannst aber auch http://192.168.178.1 schreiben, sofern du die Standard-Einstellungen nicht geändert hast.

Als nächstes muss du das Interface definieren, welches du abgreifen möchtest. Dafür benötigst du den Namen der Schnittstelle. Dazu öffnest du am besten, während du die Paketmitschnitt-Seite deiner Fritzbox geöffnet hast, den Entwickler-Modus in deinem Browser (für Google Chrome CTRL-SHIFT-i oder STRG-UMSCH-i), aktivierst (ist dann blau) das Symbol oben links an der Entwicklerschnittstelle (der auf ein Dokument zeigende Pfeil) und gehst mit der Maus dann über den START-Button der gewollten Schnittstelle. Auf der rechten Seite siehst du dann unter „value=…“ den gesuchten Namen der Schnittstelle, in meinem Fall „value=3-0“. Und genau diese 3-0 musst du in diesem fall bei IFACE eintragen. Aufgepasst! Du kannst mit diesem Script immer nur eine Schnittstelle auswählen. Selbst wenn du das Kommentarzeichen beim zweiten IFACE-Eintrag entfernst, überschreibst du mit dem zweiten Eintrag den ersten.

Google Chrome Extwicklermodus

ntopng benötigt für den Zugriff auf die Fritzbox eine Session-ID. Dazu musst du beim Scriptaufruf (dazu kommen wir später noch einmal) Benutzername und Passwort übergeben und damit macht das Script dann einen http-Request. Im Ergebnis kommt dann mit ein wenig Voodoo (Authentifizierung durch Hash Challenge) eine Session-ID heraus, welche als Variable SID im Script später weiter genutzt wird.

# If you use password-only authentication use 'dslf-config' as username.
FRITZUSER=$1
FRITZPWD=$2
SIDFILE="/tmp/fritz.sid"
if [ -z "$FRITZPWD" ] || [ -z "$FRITZUSER" ]  ; then echo "Username/Password empty. Usage: $0 <username> <password>" ; exit 1; fi
echo "Trying to login into $FRITZIP as user $FRITZUSER"
if [ ! -f $SIDFILE ]; then
  touch $SIDFILE
fi
SID=$(cat $SIDFILE)
# Request challenge token from Fritz!Box
CHALLENGE=$(curl -k -s $FRITZIP/login_sid.lua |  grep -o "<Challenge>[a-z0-9]\{8\}" | cut -d'>' -f 2)
# Very proprieatry way of AVM: Create a authentication token by hashing challenge token with password
HASH=$(perl -MPOSIX -e '
    use Digest::MD5 "md5_hex";
    my $ch_Pw = "$ARGV[0]-$ARGV[1]";
    $ch_Pw =~ s/(.)/$1 . chr(0)/eg;
    my $md5 = lc(md5_hex($ch_Pw));
    print $md5;
  ' -- "$CHALLENGE" "$FRITZPWD")
  curl -k -s "$FRITZIP/login_sid.lua" -d "response=$CHALLENGE-$HASH" -d 'username='${FRITZUSER} | grep -o "<SID>[a-z0-9]\{16\}" | cut -d'>' -f 2 > $SIDFILE
SID=$(cat $SIDFILE)

Als nächstes wird die ermittelte SID verifiziert und letztendlich mit wget der Mitschnitt der Schnittstelle gestartet. Am Ende der Zeile wird mittels Pipe (|) die Ausgabe an ntopng an das Interface (-i -) STDOUT übergeben.

# Check for successfull authentification
if [[ $SID =~ ^0+$ ]] ; then echo "Login failed. Did you create & use explicit Fritz!Box users?" ; exit 1 ; fi

echo "Capturing traffic on Fritz!Box interface $IFACE ..." 1>&2

# In case you want to use tshark instead of ntopng
#wget --no-check-certificate -qO- $FRITZIP/cgi-bin/capture_notimeout?ifaceorminor=$IFACE\&snaplen=\&capture=Start\&sid=$SID | /usr/bin/tshark -r -

wget --no-check-certificate -qO- $FRITZIP/cgi-bin/capture_notimeout?ifaceorminor=$IFACE\&snaplen=\&capture=Start\&sid=$SID | ntopng -i -

Ich habe in die letzte Zeile meiner fritzdump.sh weitere Modifikationen eingefügt, um der Anwendung gleich meine lokalen Netzwerke (Standard-LAN und Gäste-WLAN) zu übergeben, sowie eine Datenbank (nindex) für die Speicherung der Netzwerkflüsse festzulegen. So kann ich auch über eine sehr lange Zeit hinweg Verbindungsdaten auswerten. Beachte hierbei bitte den Datenschutz.

wget --no-check-certificate -qO- $FRITZIP/cgi-bin/capture_notimeout?ifaceorminor=$IFACE\&snaplen=\&capture=Start\&sid=$SID | ntopng -m "192.168.178.0/24,192.168.179.0/24" -F nindex -i -

Genug zur Theorie, ändere mit dem Editor deiner Wahl das Interface in der Datei fritzdump.sh ab. Anschließend gebe dem Script Ausführungsrechte.

# nano fritzdump.sh
...
IFACE="3-0"
...
# chmod +x fritzdump.sh

Im vorletzten Schritt legst du dir auf der Fritzbox einen neuen Benuter an und gibst ihm das Recht, auf die Einstellungen zuzugreifen. Dieser Schritt ist notwendig, da AVM seit OS-Version 7.25 einiges an dem Benutzermanagement geändert hat und so dass selbst der Standard-Nutzer jetzt über einen Benutzernamen verfügt. dslf-config, wie im Script aufgeführt, hat bei mir zumindst nicht mehr funktioniert.

Benutzer anlegen

Im letzten Schritt beendest du erst einmal die laufende Instanz von ntopng, unterbindest zukünftig den automatischen Start und startest das modifizierte Script, indem du gleich noch Benutzername und Passwort mitgibst (das waren im Script die Variablen $1 und $2): fritzdump.sh <USER> <PASSWORD> &
Mit dem & am Ende der Zeile erzwingst du die Ausführung im Hintergrund, so dass das Script auch weiter läuft, wenn du das Terminal schließt.

# systemctl stop ntopng
# systemctl disable ntopng
# fritzdump.sh ntopng MySuperSecureP@ssw0rd &
Trying to login into http://fritz.box as user ntopng
Capturing traffic on Fritz!Box interface 3-0 ...
28/Jun/2021 10:45:11 [Ntop.cpp:2347] Setting local networks to 192.168.178.0/24,192.168.179.0/24
28/Jun/2021 10:45:11 [Redis.cpp:157] Successfully connected to redis 127.0.0.1:6379@0
28/Jun/2021 10:45:11 [Redis.cpp:157] Successfully connected to redis 127.0.0.1:6379@0
28/Jun/2021 10:45:11 [NtopPro.cpp:320] [LICENSE] Reading license from Redis
28/Jun/2021 10:45:11 [NtopPro.cpp:464] [LICENSE] Unable to validate license [Empty license file]
28/Jun/2021 10:45:11 [NtopPro.cpp:533] WARNING: [LICENSE] Invalid license [Empty license file]
28/Jun/2021 10:45:11 [NtopPro.cpp:550] WARNING: [LICENSE] ntopng will now run in Enterprise L edition for 10 minutes
28/Jun/2021 10:45:11 [NtopPro.cpp:552] WARNING: [LICENSE] before returning to community mode
28/Jun/2021 10:45:11 [NtopPro.cpp:554] WARNING: [LICENSE] You can buy a permanent license at http://shop.ntop.org
28/Jun/2021 10:45:11 [NtopPro.cpp:556] WARNING: [LICENSE] or run ntopng in community mode starting
28/Jun/2021 10:45:11 [NtopPro.cpp:557] WARNING: [LICENSE] ntopng --community
28/Jun/2021 10:45:11 [Ntop.cpp:2452] Registered interface stdin [id: 3]
28/Jun/2021 10:45:11 [main.cpp:312] PID stored in file /var/run/ntopng.pid
28/Jun/2021 10:45:11 [Geolocation.cpp:140] Loaded database GeoLite2-ASN.mmdb [/usr/share/GeoIP/GeoLite2-ASN.mmdb][ip_version: 6]
28/Jun/2021 10:45:11 [Geolocation.cpp:140] Loaded database GeoLite2-City.mmdb [/usr/share/GeoIP/GeoLite2-City.mmdb][ip_version: 6]
28/Jun/2021 10:45:11 [Geolocation.cpp:60] Using geolocation provided by MaxMind (https://maxmind.com)
28/Jun/2021 10:45:12 [HTTPserver.cpp:1554] Web server dirs [/usr/share/ntopng/httpdocs][/usr/share/ntopng/scripts]
28/Jun/2021 10:45:12 [HTTPserver.cpp:1557] HTTP server listening on 3000
28/Jun/2021 10:45:12 [Utils.cpp:764] User changed to ntopng
28/Jun/2021 10:45:12 [NetworkInterface.cpp:2641] Started flow dump loop on interface stdin [id: 3]...
28/Jun/2021 10:45:12 [NIndexFlowDB.cpp:106] Successfully open DB /var/lib/ntopng/3/flows
28/Jun/2021 10:45:12 [NIndexFlowDB.cpp:109] [nIndex] Successfully created flow database index [/var/lib/ntopng/3/flows]
28/Jun/2021 10:45:12 [NetworkInterface.cpp:2607] Started flow user script hooks loop on interface stdin [id: 3]...
28/Jun/2021 10:45:12 [main.cpp:382] Working directory: /var/lib/ntopng
28/Jun/2021 10:45:12 [main.cpp:384] Scripts/HTML pages directory: /usr/share/ntopng
28/Jun/2021 10:45:12 [Ntop.cpp:440] Welcome to ntopng x86_64 v.4.2.210624 - (C) 1998-20 ntop.org
28/Jun/2021 10:45:12 [Ntop.cpp:450] Built on Debian GNU/Linux 10 (buster)
28/Jun/2021 10:45:12 [NtopPro.cpp:741] [LICENSE] System Id:     ABBAKAFFEEAFFEEA
28/Jun/2021 10:45:12 [NtopPro.cpp:742] [LICENSE] Edition:       Enterprise L (Bundle)
28/Jun/2021 10:45:12 [NtopPro.cpp:743] [LICENSE] License Type:  Time-Limited [Empty license file] License
28/Jun/2021 10:45:12 [NtopPro.cpp:763] [LICENSE] Validity:      Until Mon Jun 28 10:55:11 2021
28/Jun/2021 10:45:12 [PeriodicActivities.cpp:107] Started periodic activities loop...
28/Jun/2021 10:45:13 [startup.lua:50] Processing startup.lua: please hold on...
28/Jun/2021 10:45:18 [startup.lua:144] [lists_utils.lua:758] Refreshing category lists...
28/Jun/2021 10:45:19 [startup.lua:144] [lists_utils.lua:696] Category Lists (695 hosts, 4601 IPs, 99 JA3) loaded in 1 sec
28/Jun/2021 10:45:19 [startup.lua:218] Startup completed: ntopng is now operational
28/Jun/2021 10:45:19 [PeriodicActivities.cpp:168] Each periodic activity script will use 2 threads
28/Jun/2021 10:45:19 [NetworkInterface.cpp:2749] Started packet polling on interface stdin [id: 3]...

Und so schaut das ganze dann im Browser aus:

Startseite ntopng CE

Aktualiserungen von ntopng

Um zukünftig ntopng auf Stand zu halten, genügt die übliche Linux-Vorgehensweise:

# killall ntopng
# apt update 
# apt upgrade 
# fritzdump.sh ntopng MySuperSecureP@ssw0rd &

Viel Spaß bei der Analyse. Und denk dir ein besseres Passwort aus 😉

39 thoughts on “Verbindungsdaten loggen mit Fritzbox und ntopng

  1. hi,

    sehr interessantes und gut lesbares how-to. danke. hast du erfahrung was der server mit ntopng so an ressources braucht. kann das z.b. ein raspi ausreichen?

    bg,
    jejune

    1. Ja, ein Raspi ist ausreichend. Allerdings sollte sonst nicht mehr all zu viel darauf laufen, da die Daten auch verarbeitet werden müssen. Meine Konfiguration verbraucht derzeit ca. 200 MB RAM und ca. 20% CPU-Leistung, wobei ich einen MiniPC dafür nutze mit 8 GB RAM und einer IntelCeleron CPU J3160 @1,60GHz

  2. Hallo, danke für den Beitrag hier. Leider verstehe ich das mit dem Script nicht ganz. Ist das fritzdump.sh schon irgendwo vorhanden oder muss ich es selber erstellen. Auch gibt es einmal eine fritzdump.sh und dann eine fritzbox.sh.
    Wäre toll wenn du das hier noch mal erklären könntest.

    Gruß, Kai

    1. Das Skript ist ursprünglich unmittelbar von den Entwicklern, das habe ich relativ mitten im Beitrag erwähnt und verlinkt. Hier aber gerne noch einmal der Link zum Original https://raw.githubusercontent.com/ntop/ntopng/dev/tools/fritzdump.sh

      Danke für den Hinweis mit fritzbox.sh, da war ein Fehler im Tutorial (kam genau einmal darin vor, wenn ich es nicht noch irgendwo überlesen habe) und habe ich soeben korrigiert.

      Wenn darüber hinaus noch etwas unklar ist, einfach fragen. Ich passe den Betrag gerne an, damit er noch verständlicher wird.

  3. Vielen Dank für das Tutorial!
    Ich hab mir einen LXC-Container erstellt und darin ntopng installiert und nach deiner Anleitung an die FritzBox angebunden.
    Ich musste noch curl installieren und bei mir hieß das Interface laut Entwicker-Tools „3;0;all“. Nach ein paar Tests habe ich im fritzdump-Skript das Interface auch 3-0 benannt. Damit funktioniert alles wunderbar.

    1. Hallo Apex,

      ein paar mehr Infos bräuchte ich dann schon, wenn ich helfen soll. Bei welchem Schritt kommt die Fehlermeldung? Benutzt du dasselbe Setup oder hast du etwas anderes gemacht?

      1. Habe ntopng in Docker laufen, im Script habe ich alles richtig eingetragen, so wie es im Tutorial beschrieben wurde. Als Ausgabe kommt dann :
        Trying to login into http://fritz.box as user „Username“
        Capturing traffic on Fritz!Box interface 3-0 …
        /bin/bash: line 50: ntopng: command not found

        1. Du musst auch einen Benutzer angeben, der es auf der Fritzbox tatsächlich existiert (gegebenenfalls zuvor anlegen). Ich denke nicht, das es dort einen Benutzer gibt, der „Username“ heißt, oder?

          1. natürlich steht dort der Benutzername der Zugriff auf die Einstellungen hat, wollte nur nicht den Usernamen öffentlich teilen

            Trying to login into http://fritz.box as user Trafficmon
            Capturing traffic on Fritz!Box interface 3-0 …
            /bin/bash: line 50: ntopng: command not found

            ich führe das script auch in der Aufgabenplanung aus, bin mit Linuxbefehlen nicht so bewandert, so dass ich nicht weiss wie ich die fritzdump.sh ausführe

          2. Was steht denn in der Zeile 50 im Skript?
            Bist du sicher, das ntopng auch installiert ist?

            Was ist denn der Output, wenn du “ ntopng –version“ auf der Kommandozeile eingibst (System ID solltest du hier nicht nicht posten, die steht nämlich auch dabei)?

          3. Das Problem ist, das der Prozess gar nicht angezeigt wird, alle anderen Prozesse bzw. Dockercontainer werden angezeigt, Sinusbot, TS3-Server, Portainer. Aber ntopng fehlt als Prozess und ich denke das wird das Problem sein, die Zeile 50 ist die letzte Zeile. Komme aber über die IP in die ntopng Oberfläche und kann dort die Schnittstellen auswählen. Nun wollte ich den Netzwerktraffic von der Fritzbox mitschneiden aber es scheint wohl ein Problem mit Docker zu geben.

          4. Meine Lösung setzt darauf, das ntopng nicht als Dockercontainer, sondern nativ unter Debian läuft. Ich starte das Skript auch nicht aus Docker heraus, sondern unmittelbar von der Kommandozeile.
            Wenn bei dir ntopng im Docker läuft, erklärt das auch deine Fehlermeldung.

          5. okay, habe ein Script gefunden das mit einer Dockerinstallation funktionieren soll, es läuft auch bis zu einem gewissen Punkt durch, jetzt muss ich auf Fehlersuche gehen

          6. An Skript liegt es grundsätzlich nicht. Das Problem mit der Dockerinstanz ist, das du ntopng während der Laufzeit mitteilen musst, das es jetzt eine neue Schnittstelle (stdin) zu überwachen gibt, die beim starten des Containers in dieser Form noch gar nicht existiert. Ntopng im Docker dazu zu bringen, die logische Schnittstelle stdin zu überwachen, wird eine Herausforderung, denke ich.
            Da ist es einfacher, sich selbst ein Dockerimage für ntopng zu basteln und das Startskript da zu integrieren.

  4. Das ist genau das, was ich schon lange suche.

    Leider scheitere ich schon an der Installation beim letzten Schritt:

    root@ntopng:~# apt install ntopng ntopdata
    Reading package lists… Done
    Building dependency tree… Done
    Reading state information… Done
    E: Unable to locate package ntopdata

    Was kann ich da machen?

  5. ok, mit einem

    apt-get install ntopng

    konnte ich die Installation durchführen und es läuft auch. Aber …

    Nun bekomme ich beim Start des Scriptes folgende Meldung:

    root@ntopng:~# -bash: fritzdump.sh: command not found

      1. Ich habe bei der Installation gesehen, dass auch einiges zu ntopdata heruntergeladen wurde. Wie kann ich das prüfen?

        Das Script habe ich herunter geladen und angepasst. Dann nach /root kopiert und ausführbar gemäß der Anleitung gemacht.

        Wenn ich es dann aber starte, kommt sofort die Meldung
        root@ntopng:~# -bash: fritzdump.sh: command not found

        das heißt es kommen nicht mal die echo Anzeigen auf den Bildschirm.

        ist /root evtl. der falsche Ort für das Script und er findet es nicht?

        1. Wenn ich den Befehl aus Deiner Anleitung einmal starte, bekomme ich diese Meldung:

          root@ntopng:~# apt install ntopng ntopdata
          Reading package lists… Done
          Building dependency tree… Done
          Reading state information… Done
          E: Unable to locate package ntopdata

      2. Erstmal an dieser Stelle vielen Dank für die geniale Anleitung!
        Nur leider funktioniert es seit ntopng 6.x nicht mehr… im Log ist alles i.O. wie unter 5.x nur kommen keine Daten in ntopng an bzw werden sie nicht sichtbar… weiss jemand Rat?

  6. ich habe den Server jetzt einfach mal neu gestartet und schon läuft die Kiste ?!?

    Ich sehe Netzwerktraffic von meinen Geräten im Netzwerk. Wobei „eth0: Top Ziele extern“ leer bleibt.

  7. Ich habe die Ursache gefunden.
    Ich habe die .SH Datei unter Windows erstellt und dann auf den Linus Rechner per FTP hochgeladen. Das hat dann nicht funktioniert.

    Als ich die Datei unter Linux neu erstellt habe und den Inhalt dann über die Zwischenablage eingefügt habe, hat es auf Anhieb funktioniert.

    1. Hallo Volker,

      jetzt weiß ich gar nicht, auf welche Nachricht ich jetzt zuerst antworten soll.
      Aber wenn ich dich richtig verstehe, dann funktioniert es jetzt? In ntopng solltest du mindestens 2 Interface oben links auswählen können. Das oder die physikalischen Interface vom Server und ein „stdin“, welches durch das Script fritzbox.sh generiert wurde.
      Falls dem nicht so ist, schicke mir bitte einen Screenshot oder die Ausgabe von Script an der Konsole, gerne auch per Messenger Threema, meine ID ist 7W427ZN4

  8. Hallo Lars,

    Ich habe in meinem Netzwerk einen ungewöhnlich hohen Upload Traffic festgestellt und wollte der Sache auf den Grund gehen.
    Dabei bin ich auf deinen Blog gestoßen – Vielen Dank dafür 🙂
    Es funktioniert alles wie gewollt (bei mir läuft es jedoch unter Docker auf einem Synology NAS).

    Folgendes habe ich leider festgestellt: Immer wenn der Paketmitschnitt läuft, reduziert sich mein Internet-Durchsatz.
    Ich habe eine 100Mbit Leitung, die laut Speed Test auch zu 100% bei mir ankommt.

    Bei laufenden Mitschnitt, kommen leider nur noch 50-80Mbit an.
    Konntest du bei dir ähnliches feststellen?

    Besten Dank,
    Wlad

    1. Nein, das konnte ich nicht beobachten. Sicher, das der Traffic dein Netzwerk nicht doppelt durchläuft (das zweite mal auf dem Weg zur NAS)? Wie ist diese angeschlossen?
      Ich nutze für die Weiterleitung des Traffics eine nur dafür reservierte 1GBit/s-Schnittstelle an der Fritzbox, um das Problem zu umgehen.

  9. Bei mir startet alles aber ich sehe in ntopng keine Daten. Ich sehe auch das der Pi von mir voll läuft und auf der Fritzbox Seite läuft der Paketmitschnitt auch, aber irgendwie kriegt er das nicht in ntop-ng rein….

    Ich habe auch anstatt „apt-install ntopdata “ das Paket „apt-install ntop-data“ installiert, weil er das andere Paket nicht gefunden hat. Läuft bei mir auf einem Debian12 (Dietpi).
    Ich kriege auch die Fehlermeldung beim Skriptstart:
    10/Jan/2024 19:12:00 [startup.lua:121] [lists_utils.lua:467] Failure loading host ‚ip‘ category ‚100‘ in list ‚Stratosphere Lab‘
    10/Jan/2024 19:12:01 [startup.lua:121] [lists_utils.lua:467] Failure loading host ‚56565‘ category ‚100‘ in list ‚ThreatFox‘
    10/Jan/2024 19:12:01 [startup.lua:121] [lists_utils.lua:467] Failure loading host ’noluyoruzawk‘ category ‚100‘ in list ‚ThreatFox‘
    10/Jan/2024 19:12:01 [startup.lua:121] [lists_utils.lua:467] Failure loading host ‚4040‘ category ‚100‘ in list ‚ThreatFox‘
    10/Jan/2024 19:12:01 [startup.lua:121] [lists_utils.lua:467] Failure loading host ‚datacikerim‘ category ‚100‘ in list ‚ThreatFox‘
    10/Jan/2024 19:12:01 [startup.lua:121] [lists_utils.lua:467] Failure loading host ’nicehash‘ category ‚100‘ in list ‚ThreatFox‘
    10/Jan/2024 19:12:02 [startup.lua:121] [lists_utils.lua:467] Failure loading host ‚mpapwpodllalw‘ category ‚100‘ in list ‚ThreatFox‘
    10/Jan/2024 19:12:02 [startup.lua:121] [lists_utils.lua:467] Failure loading host ‚makelovenotmalware.local‘ category ‚100‘ in list ‚ThreatFox‘
    10/Jan/2024 19:12:02 [startup.lua:121] [lists_utils.lua:467] Failure loading host ‚lwwfechxdr8aiq0bbhtrxry7i1c8itnz‘ category ‚100‘ in list ‚ThreatFox‘
    10/Jan/2024 19:12:02 [startup.lua:121] [lists_utils.lua:467] Failure loading host ‚ddkkba0zqra9dtqunixbqaa8olgtkc5j‘ category ‚100‘ in list ‚ThreatFox‘

    Hatte das Problem schonmal jemand? Liegt es vielleicht wirklich an dem Paket ntopdata?

    1. Die o.a. Fehlermeldungen bekommen ich auch beim Start, funktioniert aber trotzdem.
      Und in der Tat hat sich der Paketname geändert, grundsätzlich funktioniert ntopng aber auch ohne das ntop-data-Paket.
      Was zeigt die WebGUI denn an Schnittstellen an?

  10. Hi Lars;

    Habt Ihr das Script aktualisiert das man
    zumindest 2 Schnittstellen auswählen kann ?

    Bei mir kommt hier nur StandardIn (stdin)
    wenn ich

    ntopng normal direkt auf der Konsole starte…
    kann ich die enp1s0 auswählen.

    Das Ziel wäre die Auswahl:

    *stdin
    *enp1s0

    LG

    Tipp am Rande im Script:

    wget –no-check-certificate -qO- $FRITZIP/cgi-bin/capture_notimeout?ifaceorminor=$IFACE\&snaplen=\&capture=Start\&sid=$SID | ntopng –https-port=443 –http-port=0 -i –

    …startet die ausschließlich die TLS Verbindung und –> HTTP P3000 ist forbidden.

    1. Zur ersten Frage: Wenn du im Skript am Ende in der der Zeile mit wget statt ntopng -i – folgendes schreibst, dann klappt das auch instant mit den 2 Schnittstellen:

      ntopng -i enp1s0 -i –

      Zu deinem Tipp: Wenn ntopng deine einzige Web-Applikation auf deinem Server ist, kannst du das gerne so machen. Spätestens wenn da noch weitere Anwendungen über HTTPS (Port 443) erreichbar sein sollen (Webserver, WebClient für Mail etc.), braucht es da einen Web-Proxy (siehe auch meinen Blogbeitrag zu nginx) und du kommst wieder zu der Lösung mit Port 3000 zurück 🙂

  11. Hi Lars,

    erstmal danke für den Artikel.

    Ich spiele mich auch seit ein paar Tagen mit ntopng + fritzdump.sh auf dem Raspbery Pi und bin hier auch deinen Beitrag gestoßen.

    Du schreibst, dass du den Fluss per -F nindex speicherst. Funktioniert das auch noch mit der aktuellen ntopng Version (6.1.x) unter Community Lizenz? Ich habe schon ein paar Kombinationen mit -F „syslog“, nur -F etc. ausprobiert, doch ich bekomme ntopng nicht dazu, die Flow Daten zu speichern bzw. mir die entsprechenden Flow Dump Settings anzuzeigen (wie in diesem Artikel beschrieben: https://www.ntop.org/guides/ntopng/advanced_features/flows_dump.html).

    Mir scheint, als ob das Flow Dump Feature nicht mehr ohne kostenpflichtige Lizenz unterstützt ist. Hast du ein Setup mit aktueller ntopng Version und Flow Historie am Laufen? Wenn ja, bin ich über sachdienliche Hinweise dankbar 😉

    Gruß
    Matthias

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert