NfSen — Сбор и анализ трафика

Предисловие

Основная польза для сетевого инженера от анализатора трафика, это пожалуй поиск флуда и DDoS-атак. Если к вам летит какая-то гадость из интернетов, канал к узлу агрегации стал в «полку», свитчи пингуются с потерями и вы не знаете как искать виновника «гирлянды» в пингере — загляните в NfSen

Хороший и понятный мануал к программе лежит на сайте проекта http://nfsen.sourceforge.net/ и если после прочтения написанного ниже у вас возникнет желание копнуть глубже, появятся вопросы, а возможно вам больше нравится сразу обращаться к первоисточнику за информацией… вы знаете что делать 😉

1. Интерфейс


Домашняя страница — графическая статистика по количеству потоков, пакетов и трафику на одной странице. В нашем случае из-за нагромождения источников flow на графиках, практически не несет смысловой нагрузки. При крепком DDoSe можно заметить всплеск, но информативности мало.


Графики — тоже самое что и на гланой странице, но с более крупными графиками. Удобно посматривать за графиками, при условии что создан хотябы один профайл отличный от live (обсудим чуть позже).


Детали — самая интересная страница, тут можно делать выборки за определенный период, искать топов, трафик по определенному айпи, флуд и прочая.

Статистика — страница с настройками профайла. Можно изменить параметры дефолтной выборки, покрасить график во все цвета радуги, увидеть объем занятого пространства данной статистикой и за какой период есть данные. Также можно увидеть список источников из которых идет выборка в данный профайл.

Что осталось «за кадром»:
Вкладка Alerts — т.к. досконально в том как настроить тригеры я так и не разобрался, если есть люди которые с прмерами смогут описать, как тут все настраивается — давайте дополним статью.
Вкладка Plugins — речь о дополнительных плагинах для вывода различной статистики. Выходит за рамки данной статьи, попробуем рассмотреть в будующих материалах, вместе с их установкой.

Выпадающий список с профилями рассмотрим чуть ниже.

2. Поговорим о деталях

Вкладка Details состоит из трех областей, связаных между собой

Графики

Область представления различных графических данных о трафике.
Справа вверху мы видим:
— текущий выбранный профайл;
— время за которое выбрана статистика ползунком на графике (да, его можно двигать). Период времени указан в интервалах Tstart — Tend. Если выбран сингл таймслот — это снимок трафика за 5мин до указаного в этом диапазоне времени. Время указывается как вы можете видеть в формате год-месяц-день-час-минута (2020-04-17-21-10)
— ниже в виде маленьких превьюшек переключатели основного графика для просмотра в трех единицах измерения — потоках (выбран по умолчанию, самый большой на картинке), пакетах, трафике
Сверху над основным графиком, также есть переключатели по типу протоколов — any (Весь трафик. Выбран по умолчанию), TCP, UDP, ICMP и other (все протоколы которые не относятся к выше перечисленным)
Снизу под графиком разместилась панель нафигации, тут можно выбрать:
— период для обработки, единичный тайм слот или более длительный период (в этом случае ползунков на карте станет два и можно увеличить тайм фрейм)

Помните что чем длительней период, тем дольше по нему будет пересчитываться статистика

— период отображаемый на графике
— навигацию по графику (сегодня, вчера когда-то)
— пик на графике (для дальннейшего его анализа в области ниже)

Статистика

Эта область показывает статистику по трафику за определенный период выбраный ползунком на графике.
Статистика может быть в двух вариантах (переключатель Sum|Rate внизу таблицы):
— средняя скорость на узле за единицу времени (по дефолту 5 мин)
— объем трафика переданный за единицу времени через узел
Справа установкой или снятием галочек мы определяем что мы увидим на графике выше. В нашем случае выбран 114 саммит.

Процессинг

Область подробного анализа трафика, анализируется таймслот указаный на графике выше.
Состоит из трех областей:
— Источник (Source) (узел по которому нам нужна информация)
— Фильтр — параметры для фильтрации советую смотреть здесь http://nfsen.sourceforge.net/#mozTocId652064 все хорошо описано, также часто используемые фильтры можно сохранить. Поверхностно варианты фильтрации рассмотрим чуть ниже при обзоре профайлов
— Опции — общие фильтры представленные наглядно в виде кнопочек и выпадающих списков.
Позволяют:
— вывести список флоу последовательно или сортировать по топам (верхний переключатель List Flows|Stat TopN )
— показать количество первых строк для топов (выпадающее меню Top)
— указать от чего будем отталкиваться при составлении топов (количество флоу, IP, DST IP — топ по закачке, SRC IP — топ по выгрузке, DST Port — к какому порту обращаются и т.д.) Для sFlow не весь выпадающий список актуален, т.к. некоторых полей просто нет в составе sflow пакета, напрмер вы не сможете выбрать топ по AS потому что этих данных во флов нет. В этойже строке можно задать по чем сортировать (количеству потоков, пакетов, переданных байт, пакетов в секунду и так далее)
— указать лимиты которые не стоит учитывать или наоборот стоит
— отображать полные IPv6 адреса
После нажатия кнопки process мы получим результат нашего запроса
Первая строка в выводе это аналог наших настроек, но в виде консольной команды.

# команда в терминале
** nfdump -M /opt/nfsen/profiles-data/live/114summit  -T  -r 2020/04/16/nfcapd.202004161800 -n 10 -s dstip/bytes
# указывает что мы не применили никаких фильтров, any - значит, что обрабатываем весь трафик
nfdump filter:
any
# Это то что мы задали в опциях
Top 10 Dst IP Addr ordered by bytes:

В выводе получаем наших топов. Рассмотрим что обозначают столбцы в таблице:

Date first seen Время, когда IP в первый раз появился в таймслоте
Duration Время активности IP за таймслот.
Дефолтный таймслот 300 сек
Proto Протокол
(TCP, UPD, STP, etc)
Dst IP Addr Параметр сортировки топов.
У нас это Dst IP
Flows(%) Кол-во флоу и % от общего кол-ва
Packets(%) Кол-во пакетов и % от общего
Bytes(%) Кол-во байт и % от общего
pps packet per second
пакетов в секунду
bps bits per second
бит в секунду
bpp bits per packet
кол-во бит в пакете

И завершает это все статистика по количеству обработаных потоков, объему трафика, средней скорости, времени затраченого на обработку запроса и т.д.

3. Вкладка Stats и профили

Попробуем создать новый профайл (выпадающее меню справа на станице навигации)
Пример заполнения на картинке. Что здесь и для чего

Profile Название профайла. Длина не более 31 символа, не должно содержать пробелы
Group Нужно для создания подменю в выпадающем списке. Например:
Description Делаете что-то замысловатое — оставьте описание для чего это, остальным будет легче
Start Время с которого начнет строиться график, если логи флоу в наличии можно начать в прошлом. Чем глубже в прошлое копнете, тем дольше будет генерироваться первоначальный график. Если оставите пустым, график начнет строиться с текущего момента
Finish Конечная дата. Должна быть позже чем дата старта, если оставите поле пустым будет строиться постоянно
Max. Size Максимальный размер профайла. Профайл может складывать флоу попадающие под параметры профиля в отдельную папку. Этот пункт ограничивает размер профиля. Если указать 0 — без ограничений по месту
Expire Время жизни данных в профиле. Данные старее указанного периода будут автоматически удаляться. 0 — без ограничений
Channels Может принять одно из двух значений
1:1 channels from profile live — дефолтный профиль по умолчанию и фильтр применяется сразу ко всем источникам.
individual channels — можно настроить разные параметры выборки и строить более одного графика
Type Тип профиля. Предлагает два варианта:
Real Profile — отдельный профиль с отдельными папками, куда будут писаться данные ограниченные вашими условиями
Shadow Profile — фильтра накладываются на данные из live профиля, папки для складывания пофильтрованых потоков не создаются. Фактически строятся только графики
Sources & Filter Если в каналах выбрали 1:1 добавляется выбор источника и поле для создания фильтра

Если что-то забыли — все поля оснащены знаком вопроса справа, при наведении на него курсора, открывается мини справка по полю

Жмем Create profile и видим что добавилась новая строка внизу Channels list и кнопочка *+* позволяющая создать правило фильтрации

— Указываем имя канала
— Выбираем цвет
— Указываем расположение относительно оси Х (сверху или снизу)
— Если каналов будет много указываем порядковый номер канала (кто над кем идет)
— Пишем условие фильтрации. У меня в примере это вход на все триолановские сети
— выбираем источники и нажимаем добавить канал
Создаю второй канал на исход для всех наших сетей

В итоге у нас получился список каналов, а в поле статус как видно на картинке ниже стоит галочка

Щелкаем по галочке и ждем пока создастся наш профайл

В результате получился график который показывает суммарный объем трафика на выбранных узлах, отдельно для данлоада и аплоада

Теперь на вкладке Stats для выбранного профайла мы можем изменить фильты если нас что-то не устраивает или необходимо что либо добавить. А также поменять иные параметры профиля. Единственное имейте в виду что профиль больше не будет пересчитываться заново, а начнет рисовать изменения с момента внесения правок.

На этом всё. Краткий обзор возможностей NfSen’a будем считать завершенным. Спасибо что дочитали)