NetFlow export
Preparation
First, restore T2 into a pristine state by removing all unnecessary or older plugins from the plugin folder ~/.tranalyzer/plugins:
t2build -e -y
Are you sure you want to empty the plugin folder '/home/wurst/.tranalyzer/plugins' (y/N)? yes
Plugin folder emptied
Then compile the core (tranalyzer2) and the following plugins:
t2build tranalyzer2 basicFlow basicStats tcpStates tcpFlags macRecorder netflowSink
...
BUILD SUCCESSFUL
If you did not create a separate data and results directory yet, please do it now in another bash window, that facilitates your workflow:
mkdir ~/data ~/results
The sample PCAP used in this tutorial can be downloaded here: faf-exercise.pcap.
Please save it in your ~/data folder.
Now you are all set!
Dependencies
Note that the netflowSink plugin requires the basicFlow, basicStats, tcpStates and tcpFlags plugins. The macRecorder plugin is optional, but recommended.
As you can see we do not have the txtSink plugin, so no flow file is generated. If you wish to do that, you can add any sink you deem necessary. Nevertheless, any additional medium adds delays, which is crucial if you sniff from an interface.
To illustrate the configuration and application of the NetFlow export look at netflowSink and
log into nfcapd
, so that the well known nfdump
tool can read it.
If you want to benefit from Tranalyzer extended capabilities you can also use the socketSink plugin which sends flows to any location you deem appropriate.
Plugins and configuration
Let’s have a look at the configuration
netflowSink
vi src/netflowSink.h
...
/* ========================================================================== */
/* ------------------------ USER CONFIGURATION FLAGS ------------------------ */
/* ========================================================================== */
#define NF_SOCKTYPE 0 // Socket type: 0: UDP, 1: TCP
#define NF_VER 9 // NetFlow version 9 or 10 (IPFIX)
/* +++++++++++++++++++++ ENV / RUNTIME - conf Variables +++++++++++++++++++++ */
#define NF_NUM4FLWS 200 // Max # of IPv4 flows in one NetFlow message
#define NF_NUM6FLWS 100 // Max # of IPv6 flows in one NetFlow message
#define NF_SERVADD "127.0.0.1" // Destination address
#define NF_DPORT 9995 // Destination port
/* ========================================================================== */
/* ------------------------- DO NOT EDIT BELOW HERE ------------------------- */
/* ========================================================================== */
...
The default address to log is the local interface, if you want to log remotely
change the address in NF_SERVADD
.
The destination port is set to the nfcapd
default, you can choose any convenient port.
Socket type is UDP, but you may change it, if you have a tool which requires it.
Choose the NetFlow version you want to export and set the maximum IPv4/6 flows
bunches which will be transport in one NetFlow message to the receiving server.
The default values work fine, but you may change them to optimize performance.
In that case, recompile netflowSink
In order to collect T2 flow data iinvoke nfcapd
in another window of your local machine or on the
remote server, use the following command:
nfcapd -T all -B 1000000 -n sourcename,127.0.0.1,.
Or
nfcapd -T all -B 1000000 -n sourcename,serveraddress,.
We use increased buffering, so that nfcapd
can keep up with Tranalyzer.
The sourcename
identifies the sensor associated by the server address.
The .
denotes the base directory where to save the compressed flows.
Now go back to the Tranalyzer window and start T2 with faf-exercise.pcap.
t2 -r ~/data/faf-exercise.pcap
Or from an interface: (Note to enable the inputbuffer if you expect hight traffic load. T2 i/O buffer is then threaded, and independent of the linux buffer, so performance is higher)
t2conf tranalyzer2 -D IO_BUFFERING=1 && t2build -R
st2 -i interface
[sudo] password for wurst:
...
The file which is then produced by nfcapd
: nfcapd.2019xxxxxxxx can be interpreted by nfdump
. Here is a sample of an output
from nfdump
. Just run your own traffic and play around with it.
nfdump -r nfcapd.2019xxxxxxxx -o extended -s srcip -s ip/flows -s dstport/pps/packets/bytes -s record/bytes
Aggregated flows 72
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
2009-11-19 02:29:23.449 21.941 TCP 8fa6:b0a::.64334 -> c0a8:169::.49330 ...... 0 3101 4.3 M 141 1.6 M 1376 1
2009-11-19 00:37:24.836 0.765 TCP c6bd:ff4b::.80 -> c0a8:168::.1908 0xae 45 74 97078 96 1.0 M 1311 1
2009-11-18 12:36:56.878 0.093 TCP c6bd:ff4b::.80 -> c0a8:168::.1260 ...... 0 73 95603 784 8.2 M 1309 1
2009-11-18 12:36:57.319 0.057 TCP c6bd:ff4b::.80 -> c0a8:168::.1262 0xff 200 26 30820 456 4.3 M 1185 1
2009-11-19 00:37:25.961 0.049 TCP c6bd:ff4b::.80 -> c0a8:168::.1910 ...... 0 19 21634 387 3.5 M 1138 1
2009-11-18 17:41:07.717 41.899 TCP 3ff5:dd0b::.80 -> c0a8:168::.1379 0xf8 174 18 15606 0 2979 867 1
2009-11-18 23:33:34.260 1.025 TCP c0a8:166::.1911 -> c0a8:101::.25 0xab 192 20 7079 19 55250 353 1
2009-11-18 19:01:29.224 0.022 TCP c0a8:166::.1405 -> c0a8:101::.25 ...... 0 19 5796 863 2.1 M 305 1
2009-11-18 23:02:37.550 0.771 TCP c0a8:167::.1934 -> c0a8:101::.25 ..PR.F 25 18 5732 23 59476 318 1
2009-11-18 18:23:50.267 0.116 TCP c0a8:167::.1749 -> c0a8:101::.25 ...... 0 19 5679 163 391655 298 1
Top 10 Src IP Addr ordered by -:
Date first seen Duration Proto Src IP Addr Flows(%) Packets(%) Bytes(%) pps bps bpp
2009-11-18 12:36:55.001 43231.002 any c0a8:168:: 16(22.2) 148( 2.5) 8203( 0.2) 0 1 55
2009-11-19 02:29:22.972 328.674 any 8fa6:b0a:: 2( 2.8) 3112(52.7) 4.3 M(91.8) 9 103934 1372
2009-11-18 18:58:29.346 16505.939 any c0a8:166:: 5( 6.9) 89( 1.5) 22018( 0.5) 0 10 247
2009-11-18 18:37:00.264 28370.714 any c0a8:169:: 8(11.1) 1626(27.5) 21396( 0.5) 0 6 13
2009-11-18 17:59:33.904 20041.382 any c0a8:101:: 21(29.2) 551( 9.3) 24948( 0.5) 0 9 45
2009-11-18 17:59:33.904 18534.881 any c0a8:167:: 7( 9.7) 123( 2.1) 27914( 0.6) 0 12 226
2009-11-18 17:41:07.717 41.899 any 3ff5:dd0b:: 2( 2.8) 26( 0.4) 19790( 0.4) 0 3778 761
2009-11-18 12:36:56.878 43229.132 any c6bd:ff4b:: 6( 8.3) 204( 3.5) 252093( 5.4) 0 46 1235
2009-11-18 12:36:55.165 3.092 any 4d43:2cce:: 5( 6.9) 23( 0.4) 5403( 0.1) 7 13979 234
Top 10 IP Addr ordered by flows:
Date first seen Duration Proto IP Addr Flows(%) Packets(%) Bytes(%) pps bps bpp
2009-11-18 17:59:33.904 20041.382 any c0a8:101:: 42(58.3) 894(15.1) 98540( 2.1) 0 39 110
2009-11-18 12:36:55.001 43231.009 any c0a8:168:: 32(44.4) 452( 7.7) 286413( 6.2) 0 53 633
2009-11-18 18:37:00.264 28671.382 any c0a8:169:: 16(22.2) 4906(83.1) 4.3 M(92.4) 0 1199 876
2009-11-18 17:59:33.904 18534.881 any c0a8:167:: 14(19.4) 318( 5.4) 37644( 0.8) 0 16 118
2009-11-18 12:36:56.871 43229.139 any c6bd:ff4b:: 12(16.7) 275( 4.7) 254008( 5.5) 0 47 923
2009-11-18 12:36:55.001 3.256 any 4d43:2cce:: 10(13.9) 49( 0.8) 7058( 0.2) 15 17341 144
2009-11-18 18:58:29.346 16505.940 any c0a8:166:: 10(13.9) 226( 3.8) 28130( 0.6) 0 13 124
2009-11-18 17:41:07.711 41.905 any 3ff5:dd0b:: 4( 5.6) 47( 0.8) 22067( 0.5) 1 4212 469
2009-11-19 02:29:22.891 328.755 any 8fa6:b0a:: 4( 5.6) 4637(78.6) 4.3 M(91.8) 14 103911 920
Top 10 Dst Port ordered by packets:
Date first seen Duration Proto Dst Port Flows(%) Packets(%) Bytes(%) pps bps bpp
2009-11-19 02:29:23.449 21.941 any 49330 1( 1.4) 3101(52.5) 4.3 M(91.8) 141 1.6 M 1376
2009-11-19 02:29:23.371 27.607 any 64334 1( 1.4) 1514(25.7) 0( 0.0) 54 0 0
2009-11-18 17:59:33.904 20041.381 any 25 21(29.2) 343( 5.8) 73592( 1.6) 0 29 214
2009-11-18 12:36:55.001 43231.002 any 80 13(18.1) 118( 2.0) 5847( 0.1) 0 1 49
2009-11-19 00:37:24.836 0.765 any 1908 1( 1.4) 74( 1.3) 97078( 2.1) 96 1.0 M 1311
2009-11-18 12:36:56.878 0.093 any 1260 1( 1.4) 73( 1.2) 95603( 2.1) 784 8.2 M 1309
2009-11-18 18:38:00.152 0.023 any 49219 1( 1.4) 30( 0.5) 799( 0.0) 1304 277913 26
2009-11-18 18:23:50.267 0.116 any 1749 1( 1.4) 30( 0.5) 1405( 0.0) 258 96896 46
2009-11-18 17:59:33.904 2.652 any 1397 1( 1.4) 30( 0.5) 1440( 0.0) 11 4343 48
2009-11-18 18:37:00.264 1.597 any 49218 1( 1.4) 29( 0.5) 1519( 0.0) 18 7609 52
Top 10 Dst Port ordered by bytes:
Date first seen Duration Proto Dst Port Flows(%) Packets(%) Bytes(%) pps bps bpp
2009-11-19 02:29:23.449 21.941 any 49330 1( 1.4) 3101(52.5) 4.3 M(91.8) 141 1.6 M 1376
2009-11-19 00:37:24.836 0.765 any 1908 1( 1.4) 74( 1.3) 97078( 2.1) 96 1.0 M 1311
2009-11-18 12:36:56.878 0.093 any 1260 1( 1.4) 73( 1.2) 95603( 2.1) 784 8.2 M 1309
2009-11-18 17:59:33.904 20041.381 any 25 21(29.2) 343( 5.8) 73592( 1.6) 0 29 214
2009-11-18 12:36:57.319 0.057 any 1262 1( 1.4) 26( 0.4) 30820( 0.7) 456 4.3 M 1185
2009-11-19 00:37:25.961 0.049 any 1910 1( 1.4) 19( 0.3) 21634( 0.5) 387 3.5 M 1138
2009-11-18 17:41:07.717 41.899 any 1379 1( 1.4) 18( 0.3) 15606( 0.3) 0 2979 867
2009-11-18 12:36:55.001 43231.002 any 80 13(18.1) 118( 2.0) 5847( 0.1) 0 1 49
2009-11-18 12:36:57.725 0.028 any 1264 1( 1.4) 7( 0.1) 5268( 0.1) 250 1.5 M 752
2009-11-18 17:41:18.229 31.387 any 1384 1( 1.4) 8( 0.1) 4184( 0.1) 0 1066 523
Top 10 Dst Port ordered by pps:
Date first seen Duration Proto Dst Port Flows(%) Packets(%) Bytes(%) pps bps bpp
2009-11-18 18:38:00.152 0.023 any 49219 1( 1.4) 30( 0.5) 799( 0.0) 1304 277913 26
2009-11-18 19:01:29.224 0.022 any 1405 1( 1.4) 28( 0.5) 632( 0.0) 1272 229818 22
2009-11-18 19:25:38.071 0.033 any 49561 1( 1.4) 28( 0.5) 1466( 0.0) 848 355393 52
2009-11-18 18:42:03.669 0.033 any 1806 1( 1.4) 28( 0.5) 1370( 0.0) 848 332121 48
2009-11-18 19:14:19.091 0.032 any 1836 1( 1.4) 26( 0.4) 1370( 0.0) 812 342500 52
2009-11-18 12:36:56.878 0.093 any 1260 1( 1.4) 73( 1.2) 95603( 2.1) 784 8.2 M 1309
2009-11-18 12:36:57.319 0.057 any 1262 1( 1.4) 26( 0.4) 30820( 0.7) 456 4.3 M 1185
2009-11-19 00:37:25.961 0.049 any 1910 1( 1.4) 19( 0.3) 21634( 0.5) 387 3.5 M 1138
2009-11-18 18:23:50.267 0.116 any 1749 1( 1.4) 30( 0.5) 1405( 0.0) 258 96896 46
2009-11-18 12:36:57.725 0.028 any 1264 1( 1.4) 7( 0.1) 5268( 0.1) 250 1.5 M 752
Summary: total flows: 72, total bytes: 4651854, total packets: 5902, avg bps: 740, avg pps: 0, avg bpp: 788
Time window: 2009-11-18 12:36:55 - 2009-11-19 02:34:51
Total flows processed: 72, Blocks skipped: 0, Bytes read: 9928
Sys: 0.003s flows/second: 22584.7 Wall: 0.000s flows/second: 75550.9
Conclusion
For more info about nfdump
, here is a tutorial.
Note, that Tranalyzer in combination with TAWK provides much more flexibility, especially when it comes to non standard questions,
as in troubleshooting or traffic mining. nfcapd
can also be emulated by the socketSink plugin and netcat in an easy way.