настройка сервера для учёта интернет-трафика по netflow

Краткое описание пакета flow-tools

Netflow очень популярен в сетевом мире, с одной стороны из за того что это один из двух основных методов получения детальной статистики с роутеров cisco (второй метод это ip accounting но он дает гораздо меньшую детализацию), с другой стороны, под так любимые все в том же сетевом мире OS xxxBSD и Linux которые часто используют для роутинга есть программы способные выдавать с них информацию о проходящих пакетах по netflow. Примерами таких програм являются ipcad, fprobe, fprobe-ng, fprobe-ulog, в freebsd так же помоему есть netgraph модуль для этих целей, а посему почему бы не использовать это для снятия статистики и учета? в том числе и денег:)
Принцип работы netflow прост – есть netflow exporter и netflow collector. exporter это то что тем или иным способом снимает информацию о прохождении пакетов через роутер, далее exporter отсылает эту информацию по udp на колектор, никаких подтверждений о посылке/приеме не предусмотрено поэтому если посылка не удалась данные теряются, исходя из этого необходимо предусмотреть надужную связь между экспортером и коллектором, колектор же это программа как правило на nix машине которая слушает определенный порт в ожидании посылок от экспортера, при приходе оной колектор обрабатывает и записывает эти данные. колекторов и экспортеров много разных, настройку экспортеров я рассмтаривать не буду, а рассмотрю работу с одним из колекторов – flow-tools.

Учтановка и настройка netflow коллектора

Вся установка будет производится на сервере с CentOS 6.7. Для начала добавляем репозиторий EPEL

rpm -ihv http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Дальше стандартная установка

yum install flow-tools

Добавляем в автозагрузку

chkconfig flow-capture on

Настраиваем параметры запуска коллектора flow-capture, для этого правим файл /etc/sysconfig/flow-capture под свои нужды,

# Change the source IP and port to what is used on your network
OPTIONS="-n 287 -N 0 -w /var/flow-tools -S 5 0/0/9995"

Здесь:

-n-количество ротаций файлов с записями о соединениях в сутки, по умолчанию 297 что равно каждые 5 минут, тоесть по прошествии каждых 5 минут создается новый файл и поступающие данные пишутся в него, работает на самом деле странновато в том плане что поидее если поставить 1 то по идее должен бы получаться 1 файл в сутки, однако на практике получается 2, с 0 получается как раз 1

-N-так называемый nesting_level, определяет структуру директорий которая будет создаваться при записи файлов с соединениями

Configure the nesting level for storing flow files. The default is 0.
 -3 YYYY/YYYY-MM/YYYY-MM-DD/flow-file
 -2 YYYY-MM/YYYY-MM-DD/flow-file
 -1 YYYY-MM-DD/flow-file
 0 flow-file
 1 YYYY/flow-file
 2 YYYY/YYYY-MM/flow-file
 3 YYYY/YYYY-MM/YYYY-MM-DD/flow-file

 -w- дирректория куда будет складываться статистик neflow.

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

 0/0/9995- по порядку – адрес на котором колектор будет принимать netflow, адрес с которого колектор будет принимать netflow и порт на который колектор будет принимать netflow, если первый заменить на 0 то колектор будет принимать на любой адрес из доступных интерфейсов, если второй заменить на 0 то соответсвенно будет принимать netflow данные с любых адресов, этого делать не рекомендуется по одной простой причине – netflow не имеет никаких средств авторизации а посему если адрес на котором колектор ждет netflow доступен кому то еще то он может послать ложные данные, учитывая то что netflow данные могут использоваться как для расчетов так и выявления сетевых проблем и аномалий то лучше обезопаситься и задать все жестко.

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

mkdir -p /var/log/flow

И запускаем коллектор

service flow-capture start

На всякий случай убеждаемся что коллектор слушает нужный порт:

netstat -lpnu|grep flow-capture

В случае если всё хорошо — вывод будет выглядеть примерно вот так:

udp        0      0 192.168.0.252:9995          0.0.0.0:*                               3062/flow-capture

Если же коллектор не запустился — внимательно проверьте его настройки. Через некоторое время в указанной директории начнут собираться логи. Остаётся только написать скрипты для генерации отчётов на основе эти логов. Создадим директорию /etc/scripts/flows, все дальнейшие действия мы будем производить в ней:

mkdir /etc/scripts/flows

Создадим файл flow.acl, в котором опишем необходимые нам спискидоступа, этот файл потом будет использоваться утилитой flow-filter:-filter:

ip access-list standard localnet permit 192.168.0.0 0.0.0.255
ip access-list standard localnet deny any

ip access-list standard internet deny 192.168.0.0 0.0.0.255
ip access-list standard internet permit any

Здесь список localnet описывает адресное пространство локальной сети, а список internet описывает адресное пространство, трафик с которого мы будем считать. Если какие-то адреса нужно внести в «бесплатную зону» — их нужно добавить в список internet с директивой deny (По аналогии с адресным пространством локальной сети).

Следующим шагом создадим файл report.conf, который будет использоваться утилитой flow-report:

 

stat-report localnet
type ip-destination-address
output 
format ascii
options +header,+xheader,+totals
fields -flows,-packets,-durationstat
stat-definition localnet
report localnet

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

ИТ Проффи

Сообщить об опечатке

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