NetFlow mit nfdump und NfSen (2024)

Table of Contents
Nfdump aufsetzen Testen NfSen

weidner/archives/2022/05/

Nachdem ich vor kurzem die Vorteile von NetFlowfür die Arbeit als Netzwerk-Administratorgeschildert habe,komme ich in diesem Artikel zum praktischen Teil,dem Aufsetzen eines NetFlow-Kollektors mit nfdump und NfSen.

Prinzipiell reicht nfdump aus,wenn ich die NetFlow-Daten nur sammeln und durchsuchenoder automatisch auswerten will.NfSen bietet jedoch eine webbasierte Oberfläche,die vorteilhaft ist für schnelle Auswertungen.

Nfdump aufsetzen

Nfdump wird aktiv gepflegt,in den Linux-Distributionen gibt es relativ aktuelle Pakete,doch das auf GitHub erhältliche Releaseenthält einige Korrekturen,die ich mir nicht entgehen lassen will.Ich installiere daher nfdump,genauso wie anschließend NfSen,aus den Quellen,weil ich die Entwicklerwerkzeuge für letzteres sowieso benötige.

Als Plattform verwende ich Debian 11,bei anderen Plattformen heißen die Paketemit den Werkzeugen und Bibliotheken eventuell anders.

Zunächst installiere ich die Entwicklerwerkzeugesowie die für die Kompilierung benötigten Bibliotheken.

$ sudo apt update$ sudo apt install build-essential autoconf libtool pkg-config$ sudo apt install rrdtool mrtg librrds-perl librrdp-perl librrd-dev \ libmailtools-perl php bison flex libbz2-dev stow

Nachdem ich alle Werkzeuge und Bibliotheken habe,hole ich die Quellen und packe sie aus.Während ich an diesem Text schreibe,ist das letzte Release von nfdump 1.6.24.

$ wget https://github.com/phaag/nfdump/archive/refs/tags/v1.6.24.tar.gz$ tar xvzf v1.6.24.tar.gz

Ich wechsle in das Verzeichnis,erzeuge das configure Skriptund schaue mir die Optionen für die Kompilierung an.

$ cd nfdump-1.6.24$ ./autogen.sh$ ./configure --help # optional, shows the build settings available...Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local]... --enable-devel compile debug and development code into nfdump; default is NO --enable-nsel compile nfdump, to read and process ASA/NSEL/NEL event data; default is NO --enable-jnat compile nfdump, to read and process Junos NAT event logging; default is NO --enable-nel (depricated) compile nfdump, to read and process NAT/NSEL/NEL event data; default is NO --enable-fixtimebug enable code for swap time bug of some v5 exporters; default is NO --enable-ftconv Build the flow-tools to nfdump converter; default is NO --enable-nfprofile Build nfprofile used by NfSen; default is NO --enable-influxdb enable stats to influxdb (default is no) --enable-nftrack Build nftrack used by PortTracker; default is NO --enable-sflow Build sflow collector sfcpad; default is NO --enable-readpcap Build nfcapd collector to read from pcap file instead of network data; default is NO --enable-nfpcapd Build nfpcapd collector to create netflow data from interface or pcap data; default is NO...

Von den Optionen sind --prefix, --enable-nfprofile und --enable-nftrackfür NfSen wichtig.Mit diesen konfiguriere ich das Verzeichnis,übersetze und installiere nfdump.

$ ./configure --enable-nfprofile --enable-nftrack \ --prefix=/usr/local/stow/nfdump-1.6.24$ make$ sudo make install$ cd /usr/local/stow$ sudo stow nfdump-1.6.24

Die Option --prefix beim Konfigurierenund der Aufruf von stow nach der Installationerlauben mir,verschiedene Versionen von nfdump gleichzeitig auf dem System zu haltenund relativ schnell zwischen diesen zu wechseln.Da nfdump aktiv entwickelt wird,will ich mir die Möglichkeit zum Upgrade so einfach wie möglich halten.

Testen

Zum Testen lege ich ein temporäres Verzeichnis an,starte nfcapd über diesem Verzeichnisund richte eine NetFlow-Probeauf Port 9996/udp an diesem Rechner.

$ sudo mkdir /tmp/nfcap-test$ sudo nfcapd -E -p 9996 -l /tmp/nfcap-test/

Habe ich noch keine NetFlow-Probe,kann ich eine auf meinem Rechner einrichtenund für Netzverkehr sorgen.Als Probe eignen sich zum Beispiel fprobe oder softflowd,die ich in der Paketverwaltung finde.In einem späteren Artikel gehe ich auf verschiedene Proben für NetFlow ein.

Nach etwa 10 Minuten breche ich den nfcapd-Prozess abund kann mit nfdump die Dateien anschauen.Diese enthalten das Datum und die Uhrzeit im Dateinamen,ich muss also zunächst mit ls nach dem aktuellen Namen schauen.

$ nfdump -r /tmp/nfcap-test/nfcapd.202205031625 Date first seen Duration Proto Src IP Addr:Port Dst IP Addr:Port Packets Bytes Flows2022-05-03 16:26:21.233 0.000 ICMP 10.0.2.15:0 -> 1.1.1.1:8.0 1 56 12022-05-03 16:26:21.249 0.000 ICMP 1.1.1.1:0 -> 10.0.2.15:0.0 1 56 12022-05-03 16:26:22.257 0.000 ICMP 10.0.2.15:0 -> 1.1.1.1:8.0 1 56 12022-05-03 16:26:22.272 0.000 ICMP 1.1.1.1:0 -> 10.0.2.15:0.0 1 56 12022-05-03 16:27:07.745 0.000 ICMP6 fe80::a..39:460b.0 -> ff02::2.133.0 1 16 12022-05-03 16:26:03.428 0.000 TCP 10.0.2.2:34584 -> 10.0.2.15:22 2 40 12022-05-03 16:26:03.427 0.000 TCP 10.0.2.15:22 -> 10.0.2.2:34584 2 152 12022-05-03 16:26:29.231 50.601 TCP 10.0.2.15:38732 -> 192.168.1.254:22 84 5470 12022-05-03 16:26:29.232 50.600 TCP 192.168.1.254:22 -> 10.0.2.15:38732 84 14847 1Summary: total flows: 9, total bytes: 20749, total packets: 177, avg bps: 2172, avg pps: 2, avg bpp: 117Time window: 2022-05-03 16:26:03 - 2022-05-03 16:27:19Total flows processed: 9, Blocks skipped: 0, Bytes read: 696Sys: 0.004s flows/second: 2177.1 Wall: 0.003s flows/second: 2627.7 

Damit ist nfdump einsatzbereitund ich kann mich der Installation von NfSen zuwenden.

NfSen

Für NfSen gibt es keine fertigen Pakete bei Debian 11,ich muss es aus den Quellen installieren.Diese bekomme ich von SourceForge.

$ wget https://downloads.sourceforge.net/project/nfsen/stable/nfsen-1.3.8/nfsen-1.3.8.tar.gz$ tar xzf nfsen-1.3.8.tar.gz

Nach dem Download und Auspackenwechsle ich in das Verzeichnisund kopiere die Konfigurationsdatei an die richtige Stelle.

$ cd nfsen-1.3.8/$ cp etc/nfsen-dist.conf etc/nfsen.conf$ vi etc/nfsen.conf

Diese Datei ist so noch nicht einsatzfähig.Die folgenden Variablen muss ich mindestens anpassen:

$BASEDIR = "/var/nfsen";$WWWUSER = 'www-data';$WWWGROUP = 'www-data';# Receive buffer size for nfcapd - see man page nfcapd(1)%sources=('sensor1' => {'port'=>'9995','col'=>'#0000ff','type'=>'netflow'},);$HTMLDIR = "/var/www/html/nfsen/";

Die Bedeutung der Variablen erschließt sich aus der Handbuchseite,die ich nach der Installation mit man nfsen.conf einsehen kann.

Als nächstes lege ich einen Benutzer für NfSen an,der Mitglied in der Gruppe des Webservers sein muss.

$ sudo useradd -d /var/nfsen -G www-data -m -s /bin/false netflow

Nun könnte ich NfSen bereits installieren.Das würde allerdings fehlschlagen,weil NfSen nicht so aktiv weiterentwickelt wird wie nfdump.Mit einem Patchnehme ich ein paar geringfügige Änderungen an den Quellen vor,um NfSen unter Debian 11 zu installieren.Diesen Patch spiele ich im Quellverzeichnis von NfSen wie folgt ein:

$ patch -p1 < ../nfsen-1.3.8.patch.txt

Beim Installieren muss ich das aktuelle Verzeichnis in den Suchpfad aufnehmen (-I.),weil das Installationsskript selbsteinige Bibliotheken aus dem Verzeichnis libexec verwendetund diese nur so findet.

$ sudo perl -I. install.pl etc/nfsen.conf

NfSen wird nicht so aktiv entwickelt wie nfdump,so dass ich mir hier den Zwischenschritt mit stow erspare.

Als letztes sorge ich dafür, das NfSen beim Systemstart automatisch anläuft.

$ sudo ln -s /var/nfsen/bin/nfsen /etc/init.d/nfsen$ sudo update-rc.d nfsen defaults 20$ sudo service nfsen start$ ps auxwww | grep nfcap

Damit habe ich einen laufenden Kollektor für NetFlow-Daten,die ich von den Sonden im Netzwerk dorthin senden kann.Etwa 10 Minuten nach dem eine neue Sonde aufgenommen wurde,sollten ihre Daten zu sehen sein.

Posted 2022-05-14

Tags:computernetznetflownfdumpnfsensysadmintroubleshoot

NetFlow mit nfdump und NfSen (2024)
Top Articles
Latest Posts
Article information

Author: Nicola Considine CPA

Last Updated:

Views: 5621

Rating: 4.9 / 5 (69 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Nicola Considine CPA

Birthday: 1993-02-26

Address: 3809 Clinton Inlet, East Aleisha, UT 46318-2392

Phone: +2681424145499

Job: Government Technician

Hobby: Calligraphy, Lego building, Worldbuilding, Shooting, Bird watching, Shopping, Cooking

Introduction: My name is Nicola Considine CPA, I am a determined, witty, powerful, brainy, open, smiling, proud person who loves writing and wants to share my knowledge and understanding with you.