FreeBSD: Mikrotik и Nfsen

В данной заметке рассмотрим работу Mikrotik с NetFlow.
Так же установим и настроим Nfsen для сбора и визуализации трафика.
Пару слов о Nfsen:)
Название происходит от NetflowSensor.
При установке Nfsen в FreeBSD по мимо web-интерфейса так же устанавливаются несколько утилит для работы с NetFlow:

  • nfcapd — коллектор NetFlow
  • nfdump для работы с данными nfcapd
  • nfprofile — профилировщик сетевых потоков

Для каждого потока требуется запуск отдельного экземпляра nfcapd.

FreeBSD: Mikrotik и Nfsen
Рисунок с сайта http://nfdump.sourceforge.net

Немного вводных данных:

  • FreeBSD 12.1 (192.168.88.2)
  • NGINX
  • PHP (включая php-fpm)
  • Mikrotik (192.168.88.1)
  • Локальная сеть — 192.168.88.0/24
  • nfsen.mydomain.ru — имя виртуального хоста

Предполагается, что у вас настроен NGINX и php-fpm, если нет, то дело 10 минут.
Обязательно в php.ini пропишите свою часовую зону, иначе Nfsen будет считать время UTC:

vi /usr/local/etc/php.ini
date.timezone = Europe/Moscow

Ставить будем из портов:

portsnap fetch update
cd /usr/ports/net-mgmt/nfsen && make install clean
echo nfsen_enable=\"YES\" >> /etc/rc.conf

Сразу перезапустим php-fpm:

/etc/usr/local/rc.d/php-fpm restart

На всякий случай сделаем копию конфигурационного файла Nfsen:

cp /usr/local/etc/nfsen.conf /usr/local/etc/nfsen.conf.sample

Опишем в конфигурационном файле Nfsen наш канал данных Netflow (предварительно удалив тестовые данные из него):

vi /usr/local/etc/nfsen.conf
%sources = (
    'Mikrotik3011'    => { 'port' => '9995', 'col' => '#0000ff', 'type' => 'netflow' },
);

Добавим данный канал (source) в Nfsen командой:

nfsen reconfig
New sources to configure : Mikrotik3011
Continue? [y/n] y

Add source 'Mikrotik3011'

Reconfig done!

Запустим Nfsen:

/usr/local/etc/rc.d/nfsen start

Включим Trafic Flow в Mikrotik и создадим цель (Targets), сделаем через консоль:

/ip traffic-flow
set cache-entries=1M enabled=yes
/ip traffic-flow target
add dst-address=192.168.88.2 port=9996 version=5

Настроим NGINX, подключим конфигурационные файлы виртуальных хостов из директории /usr/local/etc/nginx/conf.d, указав это в блоке http nginx.conf.
Обратите внимание на запись allow 192.168.88.0/24; — этой записью мы разрешили доступ только для сети 192.168.88.0/24:

vi /usr/local/etc/nginx/nginx.conf
include conf.d/*.conf;

mkdir /usr/local/etc/nginx/conf.d /var/nginx/nfsen
vi /usr/local/etc/nginx/conf.d/nfsen.mydomain.conf
server {
        listen 80;
        server_name nfsen.mydomain.ru;
        root /usr/local/www/nfsen;
        access_log /var/log/nginx/nfsen/access.log;
        error_log  /var/log/nginx/nfsen/error.log  error;
        index nfsen.php;


location / {
  allow   192.168.88.0/24;
  deny    all;
}

location ~* \.(gif|jpg|png)$ {
        expires 30d;
}


location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
}
}

Перезапустим NGINX:

nginx -s reload

Заходим на страницу http://nfsen.mydomain.ru браузером, если все сделали верно, то вывод будет похож на мой (раздел Details):
FreeBSD: Mikrotik и Nfsen

Интерес представляет окно для ввода фильтров (Filter):
К примеру правило — src net 192.168.3.0/24 отфильтрует только обращения из данной сети (у меня на ней живут Wi-Fi пользователи CapsMan), так же фильтры можно сохранять для повторного использования:

Aggregated flows 4724
Top 10 flows ordered by flows:
Date first seen          Duration Proto      Src IP Addr:Port           Dst IP Addr:Port   Out Pkt   In Pkt Out Byte  In Byte Flows
2020-06-25 11:12:45.369 16629.730 TCP        192.168.3.30:41887 <->   107.155.52.117:5222         0      139        0    16309    64
2020-06-25 13:57:57.059  2153.250 TCP        192.168.3.30:60650 <->   213.180.204.60:443          0      105        0     7086    37
2020-06-25 13:57:42.489  2167.820 TCP        192.168.3.30:58360 <->     5.255.255.60:443          0      540        0   135310    37
2020-06-25 13:57:57.039  2153.270 TCP        192.168.3.30:54289 <->    87.250.251.60:443          0      530        0    32709    37
2020-06-25 13:57:45.139  2165.170 TCP        192.168.3.30:36134 <->   213.180.204.63:443          0       49        0     4357    37
2020-06-25 13:57:59.109  2151.200 TCP        192.168.3.30:39327 <->      77.88.21.60:443          0       49        0     3744    37
2020-06-25 13:57:59.129  2151.180 TCP        192.168.3.30:39328 <->      77.88.21.60:443          0       56        0     6568    37
2020-06-25 10:09:09.049 20465.500 UDP        192.168.3.13:138   <->     192.168.3.255:138          0       75        0    17803    35
2020-06-25 09:54:21.089  6349.450 TCP        192.168.3.15:47477 <->   64.233.165.188:5228         0       65        0     4340    30
2020-06-25 10:27:52.749  3291.370 TCP        192.168.3.15:42707 <->     77.88.21.125:993          0       99        0     6957    21
Summary: total flows: 6389, total bytes: 15.5 M, total packets: 179085, avg bps: 5762, avg pps: 8, avg bpp: 86
Time window: 2020-06-25 09:45:00 - 2020-06-25 15:50:58
Total flows processed: 3773370, Blocks skipped: 0, Bytes read: 211320808
Sys: 0.730s flows/second: 5165617.6  Wall: 0.720s flows/second: 5237547.3

Для более детального изучения синтаксиса построения фильтров — рекомендую man nfdump

На этом вроде все:)

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.