Конфигурация на 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 минути. При попълане на звездичка * вместо число филтъра приема информацията от целия час (всички минути в рамките на часа).
Много полезна статия. Благодаря на автора.
Само едно малка неточност има в обяснението на синтаксиса на flow-capture. В края на реда не би трябвало да е Router/Server/Port, а Server/Router/Port. Виждам, че в командата правилно са изредени адресите.
Между другото, според мен за “Server” можем спокойно да ползваме 0 вместо адреса.
Поздрави!
Много полезно и систематизирано, браво .. !!!