Traffic-flow колектор за събиране на мрежови данни
Конфигурация на MikroTik Traffic-flow
Маршрутизатора MikroTik от който ще събираме данни е с IP адрес 172.16.100.100 a Linux сървъра който ще поеме и подреди даните е с IP адрес 172.16.200.200
[admin@R1] > ip traffic-flow print
enabled: yes
interfaces: all
cache-entries: 512k
active-flow-timeout: 30m
inactive-flow-timeout: 15s
[admin@R1] > ip traffic-flow target print detail
Flags: X - disabled
0 src-address=0.0.0.0 dst-address=172.16.200.200 port=2055 version=5
v9-template-refresh=20 v9-template-timeout=30m
Инсталиране на flow-tools в Ubuntu 16.04
sudo apt-get install flow-tools
Стартиране на колектора за събиране на данни
sudo flow-capture -p /var/run/flow-capture.pid -n 287 -w /home/samyil/flow/ -V5 -S5 172.16.200.200/172.16.100.100/2055
Проверка дали работи flow-capture
;
samyil@storage:~$ netstat -an | grep 2055
udp 0 0 172.16.200.200:2055 0.0.0.0:*
;
samyil@storage:~$ ps axf | grep -v grep | grep flow-capture
5539 ? Ss 0:22 flow-capture -p /var/run/flow-capture.pid -n 287 -w /home/samyil/flow/ -V5 -S5 172.16.200.200/172.16.100.100/2055
;
-p pid, идентификатор на процес
-n 278 278 файла за 24 часа
-w Директорията в която ще се записват данните
-V5 Cisco/NetFlow версия 5
-S5 На всеки 5 минути да се записва файл
172.16.200.200/172.16.100.100/2055
Router/Server/Port
Router Рутера или комутатора който изпраща данните
Server Машината която събита данните
Port Порта на който слуша сървъра за да събира данните
Директорията flow/ в която записва flow-capture:
Преглеждане на събраната информация
flow-cat flow/2017/2017-03/2017-03-08/ft-v05.2017-03-08.233500+0200 | flow-print -n | head -10
srcIP dstIP prot srcPort dstPort octets packets
93.155.131.29 84.46.229.37 udp 46482 33522 192 2
78.159.148.68 93.155.131.53 udp 52661 26328 192 4
78.63.241.219 93.155.131.100 udp 18887 41664 196 2
74.125.153.57 93.155.169.6 tcp https 42632 1742 10
213.179.239.157 93.155.131.72 udp 8999 20407 96 2
183.157.160.60 93.155.162.3 udp iclpv-n 12569 258 2
93.155.131.10 46.73.23.32 tcp 65348 8621 204 4
85.118.94.38 86.127.153.136 udp 63349 22310 634 2
88.203.249.204 116.234.164.74 udp 6881 6881 1567 3
flow/2017/2017-03/2017-03-08/ Директория flow с под-директории (година, месец, ден)
ft-v05.2017-03-08.233500+0200 Компресиран файл от колектора (версията, датата и часа)
flow-print -n Превръщане на данните в четима информация
head -10 Само първите 10 резултата
По destination port 443
flow-cat flow/2017/2017-03/2017-03-08/ft-v05.2017-03-08.233500+0200 | flow-filter -P443 | flow-print -n | head -10
srcIP dstIP prot srcPort dstPort octets packets
85.118.94.233 95.81.170.22 tcp 54612 https 1708 12
85.118.94.233 95.81.170.22 tcp 54613 https 1708 12
85.118.94.233 95.81.170.22 tcp 54610 https 1708 12
85.118.94.233 95.81.170.22 tcp 54611 https 1708 12
93.155.130.155 172.217.17.174 tcp 51023 https 2949 26
88.203.250.35 31.13.92.10 tcp 41747 https 232 2
88.203.250.10 31.13.93.36 tcp 51484 https 1048 5
88.203.251.73 62.204.137.81 tcp 6475 https 1724 16
88.203.250.10 62.204.137.82 tcp 54432 https 5303 84
По destination port 443 с IP 93.155.130.38
flow-cat flow/2017/2017-03/2017-03-08/ft-v05.2017-03-08.233500+0200 | flow-filter -P443 | flow-print -n | grep 93.155.130.38 | head -10
93.155.130.38 40.77.226.194 tcp 49166 https 2309 4
93.155.130.38 52.184.224.148 tcp 52702 https 293 4
93.155.130.38 207.200.35.240 tcp 33706 https 120 3
93.155.130.38 172.224.96.139 tcp 51060 https 1467 14
93.155.130.38 40.77.226.194 tcp 49166 https 2309 4
93.155.130.38 162.125.18.133 tcp 56664 https 2064 2
93.155.130.38 52.184.224.148 tcp 52702 https 293 4
93.155.130.38 207.200.35.240 tcp 33706 https 80 2
93.155.130.38 207.200.35.240 tcp 33706 https 80 2
93.155.130.38 40.77.226.194 tcp 49166 https 2309 4
В точно определено време по секунда
flow-print -f5 < flow/2017/2017-03/2017-03-09/ft-v05.2017-03-09.091500+0200 | head -10
Start End Sif SrcIPaddress SrcP DIf DstIPaddress DstP P Fl Pkts Octets
0309.09:14:44.747 0309.09:14:44.747 19 88.203.248.85 57787 17 35.185.22.244 8108 6 2 4 252
0309.09:14:44.747 0309.09:14:44.747 19 88.203.248.85 57788 18 182.18.194.23 16882 6 2 6 332
0309.09:14:44.747 0309.09:14:44.747 19 88.203.248.85 57790 17 89.25.24.245 43032 6 2 9 1117
0309.09:14:44.747 0309.09:14:44.747 7 93.155.130.14 4722 18 208.67.222.222 53 17 0 2 154
0309.09:14:34.077 0309.09:14:44.747 26 60.214.217.85 16001 19 88.203.248.85 56555 17 0 3 387
0309.09:14:44.747 0309.09:14:44.747 5 93.155.131.157 36404 7 93.155.130.11 53 17 0 2 118
0309.09:14:44.747 0309.09:14:44.747 43 88.203.251.105 57822 18 31.13.92.37 443 6 2 7 578
0309.09:14:44.747 0309.09:14:44.747 7 93.155.130.11 53 5 93.155.131.157 36404 17 0 2 830
Протокола https с destination и source IP адрес
flow-print -f3 -n < flow/2017/2017-03/2017-03-09/ft-v05.2017-03-09.091500+0200 | grep https | grep 216.58.208.106 | grep 88.203.251.71
srcIP dstIP prot srcPort dstPort octets packets
88.203.251.71 216.58.208.106 tcp 57855 https 2940 13
216.58.208.106 88.203.251.71 tcp https 57855 4961 11
216.58.208.106 88.203.251.71 tcp https 57855 156 3
88.203.251.71 216.58.208.106 tcp 57855 https 128 2
src IP, dst port 80 и 443, между 17:00 и 18:00 часа
flow-cat flow/2017/2017-03/2017-03-12/ft-v05.2017-03-12.17* | flow-filter -P80,443 | flow-print -n | grep 93.155.130.38 | head -10
srcIP dstIP prot srcPort dstPort octets packets
93.155.130.38 162.125.18.133 tcp 44532 https 2064 2
93.155.130.38 162.125.18.133 tcp 44532 https 2064 2
60.191.38.77 93.155.130.38 tcp 15017 https 80 2
93.155.130.38 162.125.18.133 tcp 44532 https 2064 2
93.155.130.38 162.125.18.133 tcp 44532 https 2064 2
93.155.130.38 162.125.18.133 tcp 44532 https 2064 2
93.155.130.38 162.125.18.133 tcp 44532 https 2064 2
93.155.130.38 162.125.18.133 tcp 44532 https 2064 2
93.155.130.38 162.125.18.133 tcp 44532 https 2064 2
184.105.247.240 93.155.130.38 tcp 43086 http 80 2
По протокол (47-gre)
flow-cat flow/2017/2017-03/2017-03-12/ft-v05.2017-03-12.175500+0200 | flow-filter -r 47 | flow-print -n | grep 93.155.130.38
srcIP dstIP prot srcPort dstPort octets packets
77.238.86.2 93.155.130.38 gre 0 0 144 3
93.155.130.38 77.238.86.2 gre 0 0 144 3
93.155.130.38 77.238.86.2 gre 0 0 338 2
77.238.86.2 93.155.130.38 gre 0 0 64 2
77.238.86.2 93.155.130.38 gre 0 0 144 3
93.155.130.38 77.238.86.2 gre 0 0 144 3
93.155.130.38 77.238.86.2 gre 0 0 338 2
77.238.86.2 93.155.130.38 gre 0 0 64 2
93.155.130.38 31.211.159.43 gre 0 0 335722 3536
31.211.159.43 93.155.130.38 gre 0 0 284196 2373
77.238.86.2 93.155.130.38 gre 0 0 144 3
93.155.130.38 77.238.86.2 gre 0 0 144 3
93.155.130.38 77.238.86.2 gre 0 0 338 2
77.238.86.2 93.155.130.38 gre 0 0 64 2
93.155.130.38 77.238.86.2 gre 0 0 144 3
77.238.86.2 93.155.130.38 gre 0 0 144 3
93.155.130.38 77.238.86.2 gre 0 0 338 2
77.238.86.2 93.155.130.38 gre 0 0 64 2
77.238.86.2 93.155.130.38 gre 0 0 144 3
93.155.130.38 77.238.86.2 gre 0 0 144 3
93.155.130.38 77.238.86.2 gre 0 0 338 2
77.238.86.2 93.155.130.38 gre 0 0 64 2
Web интерфейс за основни справки
След като взех за основа най често изполвата комбинация за справка:
flow-cat /home/samyil/flow/2017/2017-03/2017-03-21/ft-v05.2017-03-21.115500+0200 | flow-filter -P443 | flow-print -n | grep 93.155.130.38 | head -1000
Аз си сглобих прост уеб интерфейс който написах на PHP:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Flow</title>
</head>
<body>
<form action="flow.php" method="post">
Year: <input type="text" name="year"> Година, формат: 2017<br>
Month: <input type="text" name="month"> Месец, формат: 03<br>
Day: <input type="text" name="day"> Ден, формат: 21<br>
Hour: <input type="text" name="hour"> Час, формат: 22<br>
Min: <input type="text" name="min"> Минути, формат: 10/15/45/*<br>
Port: <input type="text" name="port"> Порт, формат 80/443/80,443<br>
Addr: <input type="text" name="addr"> Адрес, формат, 93.155.130.38<br>
<input type="submit">
</form>
<hr>
<pre>srcIP dstIP prot srcPort dstPort octets packets</pre>
<?php
$output = shell_exec("flow-cat /home/samyil/flow/" . $_POST['year'] . "/" . $_POST['year'] . "-" . $_POST['month'] . "/" . $_POST['year'] . "-" . $_POST['month'] . "-" . $_POST['day'] . "/ft-v05." . $_POST['yea$
echo "<pre>$output</pre>";
?>
<hr>
</body>
</html>
И ето как изглежда една справка:

Важно е да се отбележи, че когато зададем минути, например 10 справката е от 10 до 15 минути, тоест филтрира се резултата в тези 5 минути. При попълане на звездичка * вместо число филтъра приема информацията от целия час (всички минути в рамките на часа).


