Page 1 of 1

fprobe / Netflow

Posted: June 24th, 2017, 10:49 pm
by TheUnicornXXL
Moin,

hat wer schon fprobe für ipfire (64Bit) kompiliert und kann mir das Ergebnis zur Verfügung stellen?

Viele Grüße

Stefan

Re: fprobe / Netflow

Posted: June 25th, 2017, 4:40 pm
by ummeegge
Moin moin,
hatte fprobe mal für 32 Bit gebaut, hab´s für dich aber mal für 64 Bit kompiliert --> http://people.ipfire.org/~ummeegge/Netf ... _analyzer/ aber noch nicht getestet.

Grüsse,

UE

Re: fprobe / Netflow

Posted: June 27th, 2017, 8:52 am
by ummeegge
Hab mal die nfdump tools --> http://nfdump.sourceforge.net/ mitgebaut und bin derzeit am Testen wie sich das mit fprobe zusammen verhält und das sieht bis jetzt recht gut aus:

Code: Select all

-> /etc/init.d/netflow state
----------------------------------------------------------------------------------------------------------------------------------------------

fprobe is running with:

root      7692  0.2  0.2  39636  4460 ?        Ssl  Jun26   3:18 /usr/sbin/fprobe -i any 127.0.0.1:23456 -p -c /var/empty

----------------------------------------------------------------------------------------------------------------------------------------------

nfcapd is running with:

netflow   7699  0.0  0.2  13780  4652 ?        S    Jun26   0:00 /usr/bin/nfcapd -w -D -p 23456 -B 200000 -S 1 -z -I ipfire-server-any -l /var/netflow -u netflow -g netflow
----------------------------------------------------------------------------------------------------------------------------------------------
. Habe fprobe mal mit folgenden Parametern gestartet

Code: Select all

fprobe -i any 127.0.0.1:23456 -p -c /var/empty
chrooten geht aber den User wechseln macht er nicht mit.

Der netflow capture daemon nfcapd wurde so gestartet:

Code: Select all

nfcapd -w -D -p 23456 -B 200000 -S 1 -z -I ipfire-server-any -l /var/netflow -u netflow -g netflow
user netflow wurde vorher neu angelegt mit einem

Code: Select all

useradd -M -s /bin/false -G nobody netflow
habe ihn mit in die Gruppe nobody gepackt damit ich da mit NFsen --> http://nfsen.sourceforge.net/ über Apache später auch was machen kann.

Das Auslesen des binär formats geht in sehr vielfälltige Weise z.b. --> http://www.linuxcertif.com/man/1/nfdump/ .

Nebeninfo: Der Speicherplatz hält sich mit diesem Format auch in Grenzen dafür das alle Interfaces ('any') abgegriffen werden, ok ist auch nicht allzuviel Traffic auf der Maschine:

Code: Select all

1.3M	/var/netflow/2017/06/26
568K	/var/netflow/2017/06/27
192K	/var/netflow/2017/06/25
2.1M	/var/netflow/2017/06
2.1M	/var/netflow/2017
2.1M	/var/netflow/
Beispiel Top Ten nach Bytes sortier (tcpdump Syntax geht da auch):

Code: Select all

nfdump -R /var/netflow/ -o extended -s record/bytes
Ausgabe:

Code: Select all

-> nfdump -R /var/netflow/ -o extended -s record/bytes
Aggregated flows 15818
Top 10 flows ordered by bytes:
Date first seen          Duration Proto      Src IP Addr:Port          Dst IP Addr:Port   Flags Tos  Packets    Bytes      pps      bps    Bpp Flows
2017-06-26 15:38:11.519    80.166 TCP      46.21.xx.xx:80    ->      192.168.xx.xx:57233 .AP.SF   0   118243  181.2 M     1474   18.1 M   1532     1
2017-06-27 10:18:24.758    30.382 TCP         81.3.xx.xx:80    ->      192.168.xx.xx:54664 .AP.SF   0   107366  166.2 M     3533   43.8 M   1548     1
2017-06-26 07:37:48.310    14.730 TCP         81.3.xx.xx:80    ->      192.168.xx.xx:46414 .AP.SF   0    54313   83.8 M     3687   45.5 M   1543     1
2017-06-26 07:40:03.326    12.779 TCP         81.3.xx.xx:80    ->      192.168.xx.xx:46554 .AP.SF   0    45998   71.3 M     3599   44.7 M   1550     1
2017-06-26 07:34:53.338    12.457 TCP         81.3.xx.xx:80    ->      192.168.xx.xx:46287 .AP.SF   0    45790   70.6 M     3675   45.3 M   1541     1
2017-06-26 07:36:10.932    11.870 TCP         81.3.xx.xx:80    ->      192.168.xx.xx:46327 .AP.SF   0    42356   64.8 M     3568   43.7 M   1530     1
2017-06-26 07:33:27.762    17.741 TCP         81.3.27.45:22    ->      192.168.xx.xx:59239 .AP.SF   0    30870   47.3 M     1740   21.3 M   1533     1
2017-06-26 07:37:34.916     6.245 TCP         81.3.xx.xx:80    ->      192.168.xx.xx:46405 .AP.SF   0    22089   34.0 M     3537   43.5 M   1538     1
2017-06-26 07:35:38.630     5.908 TCP         81.3.xx.xx:80    ->      192.168.xx.xx:46302 .AP.SF   0    21931   33.6 M     3712   45.5 M   1532     1
2017-06-26 07:38:11.926     5.961 TCP         81.3.xx.xx:80    ->      192.168.xx.xx:46425 .AP.SF   0    21591   33.2 M     3622   44.6 M   1539     1
Summary: total flows: 19578, total bytes: 4395595448, total packets: 4676285, avg bps: 256024, avg pps: 34, avg bpp: 939
Time window: 2017-06-25 20:20:00 - 2017-06-27 10:34:01
Total flows processed: 19578, Blocks skipped: 0, Bytes read: 1150488
Sys: 0.159s flows/second: 122363.3   Wall: 0.242s flows/second: 80670.5
Gut da steckt noch einiges mehr an Arbeit drinne.
- Hab mal ein Initskript für fprobe + nfcapd gebaut.
- nfdump wurde in den configure options flow-tools support spendiert.
- Die flow-tools baue ich mal testweise mit um zu schauen wo die unterschiede zu fprobe so sind.
- NFsen ist mittlerweile installier (da hat´s noch das Socks6 Perl Modul als minimum gebraucht), aber den Datenaustausch von nfcapd zu nfsen hab ich noch nicht hinbekommen.
- und noch so einige Sachen mehr.......

Die klassischen Netflow Tools von Cisco hab ich nicht verwendet da grössere Libs wie z.b. GNU yacc nicht verwendet werden, Cisco will da Berkeley Libs was mir erstmal zu viel Hintergrundarbeit ist da es auch anders geht.
Das NAT wird irgendwie noch nicht mitgeschrieben (auch bei 'Interface any' ) was so erstmal nicht so dolle ist, gehen soll es aber scheinbar (nsel Option) ...

Naja viel Infos und bis jetzt auch keine Rückmeldung von dir was du dir genauer vorstellst, wenn du hierauf keine Lust hast ist das auch nicht weiter schlimm, da mich das Thema sowieso interessiert mach ich vielleicht einfach mal einen eigenen Topic auf wenn mir klarerer ist wofür ich mich entscheide (sflow, flow-tools, fprobe, .....) .

Grüsse,

UE

EDIT: OK NFsen geht nun auch, obige Config muss dafür aber geändert werden... :

Image

Re: fprobe / Netflow

Posted: June 27th, 2017, 10:57 am
by Hellfire
Hi UE,

ich bin da immer gerne graphisch unterwegs. Gibt es dieses NFSEN villeicht schon als "fertige" Lösung zum Einbau in IPFire? Also so als Komplettpaket mit diesem nfdump Tool?

Grüße,
Michael

Re: fprobe / Netflow

Posted: June 27th, 2017, 11:49 am
by ummeegge
Moin Michael,
die NFdump Tools hab ich jetzt schon ein paar mal gebaut und bin da immer wieder am ergänzen derzeitiger Build läuft mit folgenden configure options:

Code: Select all

	cd $(DIR_APP) && ./configure		\
		--prefix=/usr			\
		--sysconfdir=/etc		\
		--localstatedir=/var/netflow	\
		--enable-nftrack		\
		--enable-sflow			\
		--enable-nfpcapd		\
		--enable-nsel			\
		--enable-nel			\
		--enable-ftconv			\
		--with-ftpath=/usr		\
		--enable-nfprofile
das derzeitige fprobe --> https://sourceforge.net/projects/fprobe/ hatte die letzte Aktualisierung 2013 und ich wollte mal schauen ob es noch was anderes gibt für die NetFlow probes und habe da die flow-tools gefunden. Deswegen auch '--enable-ftconv' im nfdump build. Da kommt ausserdem dazu das ich sflow gerne mal ausprobieren wollte da es da scheinbar noch entsprechende Erweiterungen gibt Layer 2-7 ( für einen Kurzüberblick --> https://www.pcwdld.com/netflow-vs-sflow ) . OK, viel Kleinholz...

NFsen: Ist eigentlich schon ein Komplettpaket was nicht allzuschwer zu installieren ist. Die nfsen.conf muss da vorher auf die eigenen Bedürfnisse konfiguriert werden und ein './install.sh ./etc/nfsen.conf' macht dann das meiste selber (Vhost für Apache mit TLSv1.2 auf Port TCP 9999, mit Allow from {zum IP restricten}, nfsen-access und nfsen-error.log hab ich schon fertig) ...
Was ein wenig umständlich ist, um den minimalen Abhängikeiten zu genügen brauchts noch das Socket6 Perl Modul --> http://search.cpan.org/~umemoto/Socket6-0.28/Socket6.pm um z.b. bei einem Alarm Benachrichtigungen zu bekommen teile der MailTools --> http://search.cpan.org/~markov/MailTool ... ternet.pod . Ich bau das gerade alles mal um weiter zutesten was nett ist und was nicht geht.

Wenn das dann alles mal soweit ist
- muss ich das Initskript umbauen da NFsens nfcapd aufruft,
- wie/ob ich das dann mit fprobe mach muss ich mir mal noch überlegen
- Es gibt noch Warnungen bei NFsen, wäre nett die noch wegzubekommen
- Der Installationspfad für NFsen muss noch anders sein
- PHP meckert noch rum wegen strftime() localtime() was aber denke ich recht einfach zu fixen sein sollte (timezone in php.ini).
- Nfsen braucht ein Patch da die RRD Tools von IPFire zu neu sind :D ,

Code: Select all

--- nfsen/libexec/NfSenRRD.pm.orig	2017-06-26 21:02:02.794816207 +0200
+++ nfsen/libexec/NfSenRRD.pm	2017-06-26 21:02:32.211323519 +0200
@@ -73,7 +73,7 @@
 	if ( $rrd_version < 1.1 ) { # it's RRD 1.0.x
 		$RRDoffset = 77;
 	}
-	if ( $rrd_version >= 1.2 && $rrd_version < 1.5 ) {
+	if ( $rrd_version >= 1.2 && $rrd_version < 1.6 ) {
 		$RRDoffset = 67;
 	}
- ....

Kurzum das dauert noch einwenig bis ich die Pakete so hätte das ich da ein Testpaket machen wollte. Es sei denn jemand will helfen, ist interessiert an meinem derzeitigen Stand und/oder bringt auch eigene Ideen mit ein ???!!!

Was für eine Platform hast du ? 64 oder 32 Bit ?

Der NFsen Plugins Überblick --> https://github.com/mdjunior/nfsen-plugins ist auch ganz interessant :P ...

Grüsse,

UE

Re: fprobe / Netflow

Posted: June 27th, 2017, 1:57 pm
by Hellfire
Keine Eile ;)

Re: fprobe / Netflow

Posted: July 3rd, 2017, 6:45 pm
by ummeegge
Bin mal umgezogen --> https://forum.ipfire.org/viewtopic.php? ... 89#p108889 .

Grüssle,

UE

Re: fprobe / Netflow

Posted: July 4th, 2017, 10:06 pm
by TheUnicornXXL
ummeegge wrote:
June 25th, 2017, 4:40 pm
Moin moin,
hatte fprobe mal für 32 Bit gebaut, hab´s für dich aber mal für 64 Bit kompiliert --> http://people.ipfire.org/~ummeegge/fprobe/ aber noch nicht getestet.

Grüsse,

UE
Super, danke Dir. Im Moment kämpfe ich noch mit meinem Samba Server, danach setze ich mich wieder an dieses Projekt.

Grüße

Stefan

Re: fprobe / Netflow

Posted: July 5th, 2017, 9:59 am
by ummeegge
Hallo Stefan,
jo gerne. Habe eine Ergänzung die für diesen Topic speziell interesant sein könnte. Anstatt fprobe hab ich softflowd --> https://code.google.com/archive/p/softflowd/ mal getestet und auch für 64 Bit gebaut.
Warum softflowd ? Im Gegensatz zu fprobe reduziert softflowd automatisch seine Privilegien auf 'nobody', chrooten kann man in den compile time options gleich mitangeben, es gibt eine softflowctl, die flow format Version lässt sich angeben und es gibt noch ein paar erweiterte Optionen. Für einen schnellen Überblick --> http://manpages.ubuntu.com/manpages/xen ... owd.8.html bzw. --> http://manpages.org/softflowctl/8 .

Schnelltest sieht so aus:
softflowd starten:
softflowd -i any -n 127.0.0.1:9999 -v 9
ein

Code: Select all

softflowctl statistics
gibt nach ein paar Minuten folgendes aus:

Code: Select all

softflowd[23193]: Accumulated statistics since 2017-07-05T09:15:53 UTC:
Number of active flows: 526
Packets processed: 207863
Fragments: 8
Ignored packets: 344 (344 non-IP, 0 too short)
Flows expired: 1315 (0 forced)
Flows exported: 1315 in 230 packets (0 failures)
Packets received by libpcap: 213561
Packets dropped by libpcap: 4276
Packets dropped by interface: 0

Expired flow statistics:  minimum       average       maximum
  Flow bytes:                  56         48453      21334879
  Flow packets:                 1            50         14260
  Duration:                  0.00s        17.10s       521.01s

Expired flow reasons:
       tcp =         0   tcp.rst =        89   tcp.fin =       443
       udp =       772      icmp =        11   general =         0
   maxlife =         0
over 2 GiB =         0
  maxflows =         0
   flushed =         0

Per-protocol statistics:     Octets      Packets   Avg Life    Max Life
           icmp (1):           2872           32      56.46s     169.39s
        Unknown (6):       63431961        63958      40.27s     521.01s
       Unknown (17):         279756         1588       1.00s     144.12s
       Unknown (58):           1132           17      14.22s      96.18s
<-- Die Zeit stimmt bei softflowctl noch nicht (softflowd macht da kein Problem) ??? Muss ich nochmal schauen
nfcapd starten:
Testverzeichnis für nfcapd angelegt:

Code: Select all

mkdir /tmp/softflow
und gestartet

Code: Select all

nfcapd -w -D -l /tmp/softflow/ -p 9999
Nach einer halben Stunde (bis jetzt) sieht das ganz gut aus:
-> ls -la /tmp/softflow/
total 172
drwxr-xr-x 2 netflow netflow 4096 Jul 5 11:50 .
drwxrwxrwt 3 root root 38 Jul 5 11:00 ..
-rw-r--r-- 1 netflow netflow 276 Jul 5 11:15 nfcapd.201707051115
-rw-r--r-- 1 netflow netflow 276 Jul 5 11:25 nfcapd.201707051120
-rw-r--r-- 1 netflow netflow 276 Jul 5 11:23 nfcapd.201707051123
-rw-r--r-- 1 netflow netflow 12420 Jul 5 11:30 nfcapd.201707051125
-rw-r--r-- 1 netflow netflow 36884 Jul 5 11:35 nfcapd.201707051130
-rw-r--r-- 1 netflow netflow 40860 Jul 5 11:40 nfcapd.201707051135
-rw-r--r-- 1 netflow netflow 21700 Jul 5 11:45 nfcapd.201707051140
-rw-r--r-- 1 netflow netflow 30052 Jul 5 11:50 nfcapd.201707051145
-rw-r--r-- 1 netflow netflow 276 Jul 5 11:50 nfcapd.current.23704
bzw.:

Code: Select all

-> ps aux | grep -v grep | grep softflowd && ps aux | grep -v grep | grep nfcapd
nobody   23193  0.8  0.1  10812  2944 ?        Ss   11:15   0:21 softflowd -i any -n 127.0.0.1:9999 -v 9
netflow  23706  0.0  0.0  14908  1116 ?        S    11:24   0:00 nfcapd -w -D -p 9999 -l /tmp/softflow/ -u netflow -g netflow
<-- nicht wundern bei mir ist netflow User und Gruppe schon angelegt und nfcapd läuft mit -u und -g Schalter auf 'netflow' .
ein

Code: Select all

nfdump -R /tmp/softflow/
liefert entsprechende Ergebnisse, wenn auch die "X-Src" und "X-Dst" noch nicht angezeigt werden was aber bei fprobe auch der Fall ist (nsel funktioniert noch nicht)...

Prinzipiell finde ich softflowd fast besser... Du findest das Paket hier --> http://people.ipfire.org/~ummeegge/Netf ... _analyzer/ <-- gibt in dem Paket noch kein Initskript.

Grüsse,

UE

EDIT: Das Softflowd Package hat nun auch ein init Skript.

Code: Select all

-> /etc/init.d/softflowd 
Usage: /etc/init.d/softflowd {start|stop|restart|status|state}
. Konfigurieren geht somit auch über /etc/rc.d/init.d/softflowd . Geeignete Symlinks sucht sich install.sh selber raus, uninstall.sh löscht das alles auch wieder.