Перейти к содержимому

Как установить flow tools на linux

  • автор:

Установка и использование flow-tools

Flow-tools — набор утилит для отправки, сбора, обработки, анализа данных NetFlow.

Установим коллектор, который будет принимать статистику с сенсоров:

sudo apt-get install flow-tools

Откроем файл конфигурации, например в текстовом редакторе nano (Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/flow-tools/flow-capture.conf

Закоментируем все и добавим в конце строку:

-w /var/log/flow -n 275 0/192.168.0.5/555

Ключ -w указывает директорию хранения файлов, -n указывает количество ротаций файлов за день (то есть в моем случае каждый день будет сохранятся 275 файлов, при большом трафике мелкие файлы потом легче анализировать), 0 означает что нужно слушать все сетевые интерфейсы, 192.168.0.5 адрес сенсора с которого будут приниматься статистика, 555 порт на который будут приходить данные с сенсора.

Создадим директорию для файлов:

sudo mkdir /var/log/flow

Перезапустим flow-capture чтобы применить изменения в конфигурационном файле:

sudo service flow-capture restart

Проверить работает ли flow-capture можно так:

sudo service flow-capture status sudo netstat -lpnu|grep flow-capture netstat -anpl |grep 555

Ошибки и попытки прислать статистику от сенсоров, будут писаться в /var/log/syslog.
Можем посмотреть так:

sudo less /var/log/syslog | grep flow

Если используется iptables, то разрешим входящие UDP соединения на порт 555 всем:

sudo iptables -A INPUT -p udp --dport 555 -j ACCEPT

Либо конкретному адресу или сети:

sudo iptables -A INPUT -s 10.0.0.0/24 -p udp --dport 555 -j ACCEPT
  • Нажмите, чтобы открыть на Facebook (Открывается в новом окне)
  • Нажмите, чтобы поделиться на Twitter (Открывается в новом окне)
  • Нажмите, чтобы поделиться записями на Pinterest (Открывается в новом окне)
  • Нажмите, чтобы поделиться на LinkedIn (Открывается в новом окне)
  • Нажмите, чтобы поделиться записями на Tumblr (Открывается в новом окне)
  • Нажмите, чтобы поделиться в Telegram (Открывается в новом окне)
  • Ещё
  • Нажмите, чтобы поделиться записями на Pocket (Открывается в новом окне)
  • Нажмите, чтобы поделиться на Reddit (Открывается в новом окне)
  • Нажмите, чтобы поделиться в WhatsApp (Открывается в новом окне)
  • Нажмите для печати (Открывается в новом окне)

How To Install flow-tools-dev on Ubuntu 18.04

In this tutorial we learn how to install flow-tools-dev on Ubuntu 18.04.

What is flow-tools-dev

Flow-tools is library and a collection of programs used to collect, send, process, and generate reports from NetFlow data. The tools can be used together on a single server or distributed to multiple servers for large deployments. The flow-tools library provides an API for development of custom applications for NetFlow export versions 1,5,6 and the 14 currently defined version 8 subversions. A Perl and Python interface have been contributed and are included in the package.

This package contains the flow-tools libraries and headers.

There are three methods to install flow-tools-dev on Ubuntu 18.04. We can use apt-get , apt and aptitude . In the following sections we will describe each method. You can choose one of them.

Install flow-tools-dev Using apt-get

Update apt database with apt-get using the following command.

After updating apt database, We can install flow-tools-dev using apt-get by running the following command:

Install flow-tools-dev Using apt

Update apt database with apt using the following command.

After updating apt database, We can install flow-tools-dev using apt by running the following command:

Install flow-tools-dev Using aptitude

If you want to follow this method, you might need to install aptitude first since aptitude is usually not installed by default on Ubuntu. Update apt database with aptitude using the following command.

After updating apt database, We can install flow-tools-dev using aptitude by running the following command:

How To Uninstall flow-tools-dev on Ubuntu 18.04

To uninstall only the flow-tools-dev package we can use the following command:

Uninstall flow-tools-dev And Its Dependencies

To uninstall flow-tools-dev and its dependencies that are no longer needed by Ubuntu 18.04, we can use the command below:

Remove flow-tools-dev Configurations and Data

To remove flow-tools-dev configuration and data from Ubuntu 18.04 we can use the following command:

Remove flow-tools-dev configuration, data, and all of its dependencies

We can use the following command to remove flow-tools-dev configurations, data and all of its dependencies, we can use the following command:

References

  • flow-tools-dev website
  • flow-tools-dev on packages.ubuntu.com

Summary

In this tutorial we learn how to install flow-tools-dev package on Ubuntu 18.04 using different package management tools: apt , apt-get and aptitude .

Установка flow-tools

Пакет утилит для работы с NetFlow потоками, отправляемыми маршрутизаторами Cisco или Juniper.

Установка flow-tools на FreeBSD

flow-tools @ FreeBSD 11.1

flow-capture на FreeBSD 11.1 ведет себя нестандартно. Может поработать минуту и потом креш. Поэтому рекоммендуется ставить flow-tools следующим образом :

cd /usr/ports/net-mgmt/flow-tools make WITH_DEBUG=yes make install

Устанавливаем пакет, даем права пользователю на директорию статистики:

pkg install flow-tools mkdir -p /usr/abills/var/log/ipn chown flowtools /usr/abills/var/log/ipn/

Заносим flow-capture в автозагрузку :

/etc/rc.conf

flow_capture_enable="YES" flow_capture_datadir="/usr/abills/var/log/ipn/" flow_capture_port="9996" flow_capture_flags="-S 5 -n 287 -N 0 -d 5"

В данном случае, flow-tools запускаются со следующими опциями :

Каждые 5 минут коллектор будет скидывать статистику о своей работе в лог. Самое интересное там — это количество потерянных посылок, которые не дошли до коллектора.

Количество ротаций файлов с записями о соединениях в сутки. 287 означает создание нового файла с данными netflow каждые 5 минут.

по порядку: адрес, на котором коллектор будет принимать netflow, адрес с которого коллектор будет принимать netflow и порт, на который коллектор будет принимать netflow.

Если первый заменить на 0, то коллектор будет принимать на любой адрес из доступных интерфейсов, если второй заменить на 0, то коллектор будет принимать netflow данные с любых адресов.

Этого делать не рекомендуется по одной простой причине: netflow не имеет никаких средств авторизации, поэтому если адрес, на котором коллектор принимает netflow, доступен кому-то еще,

то злоумышленник может послать ложные данные. Учитывая то, что данные netflow могут использоваться как для расчетов, так и выявления сетевых проблем и аномалий, лучше обезопаситься и

задать все жестко. Кроме того, можно запустить несколько коллекторов на разных адресах и/или портах, так же один коллектор может работать с несколькими роутерами одновременно и различать

их по полю engine-id.

/usr/local/etc/rc.d/flow_capture start
Запуск нескольких демонов flow_capture

Иногда возникают ситуации когда нужно запустить несколько процессов flow_capture для получения flow потоков от разных серверов доступа.

/etc/rc.conf

flow_capture_enable="YES" flow_capture_profiles="r1 r2" # описание первого демона на порту 9997 flow_capture_r2_datadir="/usr/abills/var/log/ipn/" flow_capture_r2_port="9997" flow_capture_r2_flags="-S 5 -n 1400 -N 0 -d 5" # описание второго демона 9996 flow_capture_r1_datadir="/usr/abills/var/log/ipn2/" flow_capture_r1_port="9996" flow_capture_r1_flags="-S 5 -n 287 -N 0 -d 5"

Установка flow-tools на Ubuntu / Debian

Устанавливаем пакет, даем права пользователю на директорию статистики:

apt-get install flow-tools mkdir -p /usr/abills/var/log/ipn

Меняем конфиг (параметры запуска те же что представлены в секции «Установка flow-tools на FreeBSD»):

echo "-S 5 -n 287 -N 0 -d 5 -w /usr/abills/var/log/ipn/ 0/0/9996" > /etc/flow-tools/flow-capture.conf

Заносим flow-capture в автозагрузку:

update-rc.d flow-capture defaults update-rc.d flow-capture enable

Для Debian 8 нужно создать симлинки, иначе traffic2sql работать не будет:

ln -s `which flow-cat` /usr/local/bin/flow-cat ln -s `which flow-print` /usr/local/bin/flow-print
/etc/init.d/flow-capture start

Установка flow-tools на CentOS 7

Устанавливаем flow-tools из epel rep, даем права пользователю на директорию статистики:

# скачиваем и устанавливаем крайний epel-release yum install wget -yq wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm rpm -Uvh epel-release*rpm # устанавливаем flow tools yum install flow-tools # директория и права mkdir -p /usr/abills/var/log/ipn chown -R flow-tools. /usr/abills/var/log/ipn

Меняем конфиг (параметры запуска те же что представлены в секции «Установка flow-tools на FreeBSD»):

echo 'OPTIONS="-S 5 -n 287 -N 0 -w /usr/abills/var/log/ipn/ 0/0/9996"' > /etc/sysconfig/flow-capture

Добавляем flow-capture в автозагрузку:

systemctl enable flow-capture

NFStats — анализ netflow данных для ISP «на коленке»

Приветствую! Продолжая рубрику «на коленке» (написал два года назад одну статью и уже рубрика), наконец у меня появилось время рассказать еще об одном проекте (а заодно и привести его в порядок), который используется у нас на сети небольшого транзитного провайдера для сбора и анализа статистики сетевого трафика .

Как и при анализе Ddos атак (link) проект использует в своей основе набор утилит flow-tools для сбора Netflow данных с сетевого оборудования. NFStats позволяет просматривать статистику в разрезе BGP автономных систем, IP-адресов, интерфейсов через web-интерфейс, что весьма полезно при балансировке трафика и общего понимания какой трафик проходит через/в/из вашу/ей AS. По описанию можно заметить сходство с Ntopng, однако NFStats предоставляет несколько иную статистику, более подходящую ISP.

Проект написан на python3 с использованием фреймворка django. Для отображения статистики используются google charts. Проект на Github

Оглавление:

Подготавливаем

Чтобы развернуть NFStats, как ранее было сказано, для начала нужно установить пакет утилит flow-tools. Во FreeBSD он доступен как пакет и из портов. В прошлой статье (link) я немного останавливался на описании и настройке flow-tools во FreeBSD и на оборудовании.

Для GNU/Linux его можно собрать только из исходников. Поэтому здесь можно разобрать это подробнее на примере Ubuntu.

Установка Flow-tools в Ubuntu

  1. Устанавливаем зависимости
sudo apt install build-essential tcpd zlib1g-dev
mkdir ~/src wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/flow-tools/flow-tools-0.68.5.1.tar.bz2
tar -xf flow-tools-0.68.5.1.tar.bz2 cd flow-tools-0.68.5.1 ./configure make install clean
adduser --system --no-create-home --shell /usr/sbin/nologin --group flow-toolsools
mkdir /var/flows chown -R flow-tools:flow-tools /var/flows
# cat /etc/systemd/system/flow-capture.service [Unit] Description=flow-capture [Service] ExecStart=/usr/local/flow-tools/bin/flow-capture -z0 -n1439 -N3 -E10G -e0 -S1 -w /var/flows -D -p - 10.0.0.1/10.0.0.10/99919991 User=flow-tools Group=flow-tools Restart=on-failure [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload sudo systemctl start flow-capture sudo systemctl enable flow-capture

Кроме FreeBSD или GNU/Linux со flow-tools нам понадобятся:

  • SNMP клиент и настроенный протокол snmpv2c на сетевом оборудовании
  • Python 3.6 или выше (Для GNU/Linux также нужен пакет соответственно python3.6-venv или выше для виртуального окружения)
  • СУБД
    • PostgreSQL 9.6 или выше
    • MySQL 5.7 или выше
    • Oracle Database Server 12.2 или выше. Version 6.0 or higher of the cx_Oracle Python driver is required.

    Перейдем непосредственно к установке приложения

    Загружаем проект и подготавливаем виртуальное окружение.

    cd /var/www git clone https://github.com/owenear/nfstats.git cd nfstats python3 -m venv venv source venv/bin/activate pip install -r requirements.txt

    Далее, в активированном виртуальном окружении! необходимо установить адаптер для используемой вами СУБД. Например для Postgres:

    pip install psycopg2-binary
    postgres=# create database nfstats_db; postgres=# create user nfstats_dbuser with encrypted password 'nfstatsdbpass'; postgres=# grant all ON DATABASE nfstats_db to nfstats_dbuser;

    Создаем файл настроек для Django

    cd /var/www/nfstats/nfstats/nfstats cp settings.py.sample settings.py

    Вносим в него необходимые изменения

    DATABASES = < 'default': < 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'nfstats_db', 'USER' : 'nfstats_dbuser', 'PASSWORD' : 'nfstatsdbpass', 'HOST' : 'localhost', 'PORT' : '5432', >>
    ALLOWED_HOSTS = [ 'nfstats.example.com' ]
    TIME_ZONE = 'Europe/Moscow'

    Далее необходимо провернуть небольшой финт ушами для инициализации БД.

    Сначала комментируем в URL диспетчере Django /var/www/nfstats/nfstats/nfstats/urls.py подключение url’ов приложения

    urlpatterns = [ path('admin/', admin.site.urls), # path('', include('mainapp.urls')), ]

    Затем запускаем миграцию БД (Также в активированном виртуальном окружении)

    cd /var/www/nfstats/nfstats python manage.py migrate

    И снова подключаем url в /var/www/nfstats/nfstats/nfstats/urls.py

    urlpatterns = [ path('admin/', admin.site.urls), path('', include('mainapp.urls')), ]

    Создаем файл /var/log/nfstats.log с правами на чтение для пользователя под которым будет запущено web приложение (например www-data для Apache). Соответственно он должен иметь также права на чтение для папки /var/www/nfstats

    Проверяем также, чтобы к /var/www/nfstats/nfstats/flow-tools доступ на чтение имел пользователь flow-tools.

    Добавляем проект в настройки web-сервера. Пример для Apapche:

     ServerName nfstats.example.com DocumentRoot /var/www/nfstats Alias /static/ /var/www/nfstats/nfstats/static/ WSGIScriptAlias / /var/www/nfstats/nfstats/nfstats/wsgi.py WSGIDaemonProcess nfstats.example.com python-home=/var/www/nfstats/venv python-path=/var/www/nfstats/nfstats WSGIProcessGroup nfstats.example.com 

    Cкрипт /var/www/nfstats/nfstats/bin/interface_speed.py необходимо добавить в CRON на ежеминутное исполнение

    */1 * * * * /var/www/nfstats/venv/bin/python /var/www/nfstats/nfstats/bin/interface_speed.py

    Данный скрипт записывает скорости интерфейсов, на которых настроен съем статистики netflow (так называемый sampling) в базу данных. Эти значения используется для пересчета данных собранных flow-tools, что позволяет отображать правдивые данные относительно скорости даже при условии, что семплинг на оборудовании настроен не один к одному, а к примеру 1:2000 (то есть анализируется один из 2000 пакетов). Так, к примеру, советует Juniper для 10G интерфейсов. Это позволяет экономить ресурсы оборудования и место на диске.

    На этом разворачивание приложения закончено.

    Можно переходить к nfstats.example.com

    При первом открытии вас перенаправит на страницу настроек, где нужно будет добавить сетевое оборудование на котором настроен netflow с указанием где лежат данные, собранные flow-tools.

    На вкладке «System» можно отредактировать настройки связанные с SNMP, директориями, логированием. History — количество дней, которые будут храниться данные о скоростях (зависит от настроек flow-capture и объема собираемых данных)

    Далее, на вкладке «Interfaces» необходимо пополнить базу интерфейсов с оборудования. Жмем на «Read SNMP» и добавляем необходимые интерфейсы (обычно все). Тут надо отметить, что в списке появятся только те интерфейсы, на которых настроен «description» на оборудовании

    Отмечаем среди них те, на которых включен sampling (т.е. те, с которых снимается netflow). Обычно это будут Uplink интерфейсы, т.е будут собираться данные о трафике, который поступает и который уходит из нашей автономной системы.

    Ну, и наконец использование

    Переходим на nfstats.example.com. На вкладке «Common Stats» отображается статистика по автономным системам. Так называемые pie-charts интерактивны, при нажатии на номер AS отобразится ее имя в базе Ripe. Direction меняет направление трафика. Input — входящий в интерфейс трафик, Output — соответственно исходящий.

    «BGP AS» — показывает распределение трафика по интерфейсам для конкретной source и/или destination AS.

    «Interface» отображает похожее распределение только для определенного интерфейса. Здесь можно выбрать или ввести snmpid только тех интерфейсов, для которых НЕ! включен сэмплинг.

    И «IP» — топ статистика по ip-адресам с возможностью различной фильтрации. При клике на отдельный «bar» также выводится информация о названии сети и кнопка «show traffic», которая позволяет просмотреть подробный вывод netflow данных для выбранного ip-адреса

    Как видите, я постарался как можно подробнее описать процесс установки и использования (что было в моих силах). Кое-какую документацию я положил и в репозиторий на Github.

    Но я конечно готов ответить на вопросы, если такие возникнут.

    UPD: Добавлена поддержка коллектора из пакета NFDUMP. А с ним и поддержка netflow-v9 и ipfix.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *