NetFlow, Cisco и мониторинг трафика
Всем доброго времени суток! Разбираясь с NetFlow, таким простым, удобным и часто используемым протоколом, я осознал, что он не такой уж и простой, и подводных камней при его эксплуатации хватает.
Под катом я собрал все, что для начала необходимо знать о NetFlow и его настройках на Cisco, отдал дань eucariot, пишущему отличные статьи о сетях, и… Картинки, немного веселых картинок.
Определимся с основными понятиями
NetFlow — проприетарный открытый протокол, разработанный Cisco для мониторинга трафика в сети. Netflow предоставляет возможность анализа сетевого трафика на уровне сеансов, делая запись о каждой транзакции TCP/IP.
Архитектура системы строится на сенсоре, коллекторе и анализаторе:
— Сенсор собирает статистику по проходящему через него трафику. Сенсоры имеет смысл ставить в «узловых точках» сети, например, на граничных маршрутизаторах сегментов сети.
— Коллектор осуществляет сбор информации от сенсоров. Полученные данные он сбрасывает в файл для дальнейшей обработки. Различные коллекторы сохраняют данные в различных форматах.
— Анализатор, или система обработки, считывает эти файлы и генерирует отчеты в форме, более удобной для человека. Эта система должна быть совместима с форматом данных, предоставляемых коллектором [1]. В современных системах коллектор и анализатор часто объединены в одну систему.
Обычно коллектор и анализатор являются частями одного программного комплекса, работающего на сервере. Разновидностей ПО коллектор/анализатор множество, платные и бесплатные, под Windows и Unix-системы.
В статье я не буду затрагивать эту область, рассмотрю только принципы работы NetFlow и настройку сенсора на Cisco.
Нужно сразу уяснить — коллектор и стоящий за ним анализатор являются «пассивными» элементами системы. Сенсор шлет на коллектор отчеты о трафике, коллектор принимает, анализатор анализирует, и заполняет свою базу данных на сервере. По сути, при поднятом сервере, нам не нужно вручную подключать устройства, подпадающие под мониторинг, на сервере. Пока сенсор шлет отчеты, коллектор их принимает, анализатор регистрирует. Если сенсор выключен, он «исчезает» из текущей «он-лайн» статистики.
Описание протокола
- Адрес источника;
- Адрес назначения;
- Порт источника для UDP и TCP;
- Порт назначения для UDP и TCP;
- Тип и код сообщения для ICMP;
- Номер протокола IP;
- Сетевой интерфейс (параметр ifindex SNMP);
- IP Type of Service.
Собственно, настройка
Разберем конфигурацию сенсора при настройке на Cisco:
Router_NF# conf t
Router_NF(config)# ip flow-export destination 192.168.0.1 9996
Router_NF(config)# ip flow-export destination 10.10.0.1 9996
Router_NF(config)# ip flow-export version 9
В конфигурационном режиме указываем адреса коллектора и порты, куда отправлять статистику, указываем версию протокола NetFlow. В сложной сети можно иметь два интерфейса коллектора, если есть какие-то ограничения маршрутизации между сегментами
Router_NF(config)# ip flow-cache timeout active 1
Указываем, как часто обновлять кэш NetFlow данными о трафике еще активной сессии
Router_NF(config)# ip flow-cache timeout inactive 15
Указываем время, в течение которого если в существующем потоке не передаются данные, то он закрывается, и информация о нем записывается в кэш, а затем передается на коллектор
Router_NF(config)# ip flow-export source FastEthernet 0/0
Router_NF(config)# ip flow-export source vlan4
Router_NF(config)# ip flow-export source Port-channel1.2
Источники отчета о трафике, статистика будет собираться с них. На стороне анализатора будут отдельно промониторены и интерфейс, и VLAN, и Port-channel
!
ip access-list standard iacl-snmp
remark ACL for SNMP access to device
permit 192.168.0.1
permit 10.10.0.1
deny any log
!
Добавим ACL для более гармоничного фэн-шуя
!
snmp-server group snmp v1 access iacl-snmp
snmp-server group snmp v2c access iacl-snmp
snmp-server community ******** **** iacl-snmp
snmp-server ifindex persist
snmp-server trap-source Loopback0
snmp-server enable traps tty
!
Настраиваем snmp для правильного распознавания имен интерфейсов
Наконец дошло до интерфейса:
Router_NF(config)# interface FastEthernet 0/0
Router_NF(config-if)# ip flow egress
Router_NF(config-if)# ip flow ingress
Указываем, какой трафик будет учитываться, входящий в интерфейс или исходящий из него? Если исходящий, то ip flow egress, если входящий, то ip flow ingress
Или
Router_NF(config-if)# ip route-cache flow
«ip route-cache flow» может использоваться только для основного интерфейса, а «ip flow ingress» — это расширение для использования для сабинтерфесов. Функционал NetFlow Subinterface Support позволяет включать NetFlow для каждого сабинтерфейса. В сценарии, когда ваша сеть содержит множество сабинтерфейсов, а вам необходимо собирать записи только с некоторых, вы можете тонко настроить сбор информации только с определенных сабинтерфейсов
Что можно посмотреть на сенсоре:
Router_NF# show ip cache flow
Информация о трафике, ожидающая отправки на коллектор
Router_NF# show ip cache verbose flow
Детальная информация о трафике, ожидающая отправки на коллектор
Router_NF# show ip flow interface
Интерфейсы, являющиеся сенсорами NetFlow
Router_NF# show ip flow export
source и destination отчетов NetFlow, сколько отправлено дэйтаграмм, сколько ошибок
Router_NF# show ip flow top-talkers
Информация о чемпионах, представлена категорийно, вплоть до самых посещаемых интернет — ресурсов
По основной настройке все, полезные ссылки для более полного просветления [4], [5] и [6].
Ложка дегтя
«Другой» трафик. Как известно, за многими распространенными приложениями закреплены свои порты, рассмотрим
часть вывода show ip cache flow
Рисунок взят из [7].
Однако с течением времени доля трафика, попадающего в раздел «Other», растет, в связи с ростом числа приложений, использующих динамические, случайно сгенерированные порты.
В документе [8], обозревающем NetFlow, вскользь упоминается проблема, хорошо проиллюстрированная на рисунке
Конечно, хотелось бы, чтобы самый разный трафик четко описывался в отчетах, например:
Отличная таблица, взята из статьи, не смог пройти мимо
Категория трафика | Порты | Протокол прикладного уровня |
25, 109, 110, 113, 143 | smtp, pop2, pop3, ident, imap | |
Web | 80, 8080, 443 | http, https |
data | 20, 21, 3306, 66, 1521, 1526, 1524 | ftp, MySQL, sqlnet, Oracle, Ingres |
Network management | 53, 137, 138, 139, 445, 161, 123, 783, 8200 | domain, netbios, snmp, ntp, spamassassin, GoToMyPC |
Interactive | 22, 23, 513, 543 | ssh, telnet, rlogin, klogin |
nntp | 119 | nntp |
Chat | 194, 6891–6901, 1863, 5050, 5190 | irc, msn messenger, yahoo messenger, ICQ |
streaming | 554, 1755, 1220, 8000–8005, 7070, 7071, 6970 | rtsp, ms-streaming, Apple quicktime, internet radio (shoutcast), Real Audio & Video |
Malware & games | 1433, 1434, 666, 1999, 31337, 12345, 12346, 20034, 1024, 1025, 31338, 31339, 3127, 27015, 27016, 26000, 27001, 27960, 3724 | Ms-sql-s, ms-sql-m, backdoor, Back Orifice, NetBus, netspy, myDoom, HalfLife, Quake, QuakeWorld, QuakeIII, WarCraft |
p2p | 411, 412, 1214, 3531, 4111, 4661–4665, 4672, 6346, 6347, 6669,6881–6889, 23302, 32285, 59049, 41170, 57990 | Direct Connect, Fasttrack, Kazaa, eDonkey, Gnutella, Napster, BitTorrent, Ares, Mp2p, Azureus |
Others | — | — |
Прогресс не стоит на месте, технологии идут вперед, и шеф получит полный отчет проблему нераспознанного трафика решают разными интересными способами, например с помощью технологии NBAR.
Во время поисков было найдено обсуждение [11] и интересная презентация [12]. Дальше в дебри не пойду, ибо юн, горяч и неопытен.
Есть мнение, что у автора поста каша в голове, и он что-то упускает!
В процессе написания статьи я, как мог, ответил на свои вопросы, и надеюсь, не поставил новых нигде не ошибся.
Спасибо за внимание!
5 лучших анализаторов и коллекторов Netflow
Системным инженерам и администраторам сетей, постоянно приходится сталкиваться с проблемами, причины которых не всегда очевидны. В этих случаях очень полезным будет провести беглый анализ сетевого трафика. Представляем вашему вниманию обзор лучших анализаторов и коллекторов Netflow, которые помогут значительно упростить вам жизнь.
Анализаторы и коллекторы NetFlow — это очень полезный инструментарий для мониторинга и анализа данных сетевого трафика, который поможет вам обнаружить возможные проблемы еще до того, как они станут реальной угрозой. Анализаторы NetFlow позволят вам определить те машины и устройства, которые негативно влияют на пропускную способность вашей сети, найти узкие места в вашей системе, а также, в конечном счете, повысить общую эффективность функционирования вашей сети.
Само понятие «NetFlow» относится к сетевому протоколу, разработанному компанией Cisco для сбора информации о трафике, проходящем через различные устройства в сети. Существует несколько версий протокола NetFlow (от 1 до 9), часть из которых уже устарели. На данный момент наиболее распространенными являются NetFlow версии 5, 7 и 9. Сейчас NetFlow представляет собой, фактически, промышленный стандарт и поддерживается не только оборудованием Cisco, но и многими другими устройствами от других производителей.
В то же время часть вендоров используют собственные версии NetFlow: к примеру, компания Juniper Networks называет свой протокол J-Flow, у компании Huawei — это NetStream. Несмотря на то, что эти «Flow» имеют разные имена, все они работают аналогичным NetFlow образом, предоставляя, в основном, одну и ту же информацию. Кроме того, на основе NetFlow версии 9 также был разработан открытый универсальный стандарт IPFIX (Internet Protocol Flow Information eXport) для передачи информации об IP-потоках.
Информация, которую собирает из IP-трафика NetFlow, включает в себя:
- IP-адрес источника;
- IP-адрес назначения;
- порт источника для UDP и TCP;
- порт назначения для UDP и TCP;
- тип и код сообщения для ICMP;
- номер интернет-протокола транспортного уровня, инкапсулированного в протокол IP;
- тип обслуживания (Type of Service, ToS);
- сетевой интерфейс.
Собирая и анализируя эту информацию, вы можете много узнать о функционировании вашей сети, а также использовать ее для разных целей, включая мониторинг пропускной способности, устранение неполадок в работе сети и обнаружение аномалий.
Когда в сети реализована поддержка протокола NetFlow, активируется работа двух основных компонентов: Flow Exporter и Flow Collector. Flow Exporter захватывает статистическую информацию о потоке и отправляет ее в коллектор. Он обычно настраивается на устройстве, таком, как маршрутизатор или коммутатор, а в некоторых случаях на одном устройстве используется несколько Flow Exporter для мониторинга разных потоков. Flow Collector получает данные о потоках и сохраняет их. Во многих современных решениях для анализа сетевого трафика функциональность коллектора и анализатора совмещена в одном решении — статистическая информация о потоках не только собирается и сохраняется, но также обрабатывается и анализируется, чтобы представить ее пользователям в удобном для понимания виде. В ряде случае Flow Collector может использоваться просто для получения данных, при этом их анализ осуществляется другим приложением с функциональностью анализатора.
Существует множество программных решений на основе протокола NetFlow, и в рамках этой статьи мы представим вам 5 лучших коммерческих и бесплатных анализаторов и коллекторов NetFlow. Большинство поставщиков программного обеспечения NetFlow, перечисленных ниже, имеют инструкции по включению NetFlow на устройства различных производителей. Кроме того, эта информация также должна содержаться в документации производителя вашего устройства.
Solarwinds NetFlow Traffic Analyzer
NetFlow Traffic Analyzer (NTA) производства компании Solarwinds — это программный инструмент для анализа сетевого трафика и мониторинга пропускной способности, который поддерживает работу с различными протоколами, включая: NetFlow, J-Flow, sFlow, IPFIX и NetStream.
Решение Solarwinds NTA позволит понять, как используется пропускная способность сети. К примеру, вы можете узнать, какой IP-адрес или приложение имеет максимальные объемы потребления ресурсов пропускной способности в определенный момент времени. Также вы сможете использовать шаблоны для анализа трафика, тем самым значительно расширив свои возможности для проведения детализированного сетевого анализа.
NetFlow Traffic Analyzer собирает данные трафика, согласовывает их с используемым форматам и демонстрирует полученную информацию пользователю через веб-интерфейс для мониторинга сетевого трафика. Вы можете анализировать сетевой трафик за конкретный период: за минуту, час, день или месяц.
Solarwinds NTA позволит понять, работают ли политики QoS так, как это было запланировано. Т.е., если ваш бизнес зависит от VoIP, электронной коммерции или других облачных приложений, мониторинг NetFlow поможет подтвердить, что приоритетный трафик проходит беспрепятственно через вашу сеть.
Вы можете планировать и проводить подробный анализ сетевого трафика, а также получать различные временные отчеты об использовании ресурсов пропускной способности, с помощью всего нескольких кликов мышки. Накопление данных позволит определять пиковые периоды пропускной способности и корректировать политики для большей управляемости процессов в вашей сети. В ряде случаев это позволит сэкономить на неоправданном повышении пропускной способности.
Solarwinds NTA — это коммерческий продукт, цена которого зависит от количества элементов для мониторинга, однако, для ознакомления вам доступна 30-дневная бесплатная пробная версия. Также не маловажно то, что Solarwinds NTA полностью интегрируется с Solarwinds Network Performance Monitor (NPM) — решением для сокращения сбоев в работе сети и повышения производительности.
Существует также сильно упрощенная бесплатная версия NetFlow Traffic Analyzer от компании SolarWinds — Real-Time NetFlow Analyzer. Этот инструмент позволит вам сортировать данные, представлять их в виде графиков, а также отображать информацию другими различными способами, которые позволяют визуализировать и анализировать сетевой трафик. Продукт отлично подойдет для таких задач, как просмотр сетевого трафика в зависимости от типа или конкретного времени, а также запуска различных тестов для проверки того, сколько ресурсов сети используется различными приложениями. Таким образом, с помощью бесплатного решения Real-Time NetFlow Analyzer вы можете упростить поиск устройств ограничивающих пропускную способностью (в ом числе оконечных точек), изучать и устранять неполадки и спады в функционировании сети, а также определять пользователей, приложения и устройства, которые используют больше всего ресурсов сети. Ограничением бесплатной версии программы является доступность только одного интерфейса NetFlow для мониторинга и хранение только 60 минут данных.
Коммерческое решение, с возможностью загрузки 30-дневной бесплатной пробной версии: https://www.solarwinds.com/netflow-traffic-analyzer
Скачать бесплатную версию программы Solarwinds NetFlow Traffic Analyzer: https://www.solarwinds.com/free-tools/real-time-netflow-analyzer
PRTG Network Monitor
PRTG Network Monitor — это универсальное программное решение для мониторинга сети, которое включает в себя мониторинг производительности, отслеживание ограничений пропускной способности, наблюдение за работой серверов, центральных процессоров, приложений, веб-сайтов, облачных служб и многого другого. Стандартная установка изначально предоставляет вам все необходимые инструменты для мониторинга всего трафика в вашей сети. PRTG Network Monitor может использовать для анализа различные версии стандарта NetFlow (v5 и v9), открытый универсальный стандарт IPFIX, а также другие технологии для учета сетевого трафика, такие как sFlow и J-Flow.
Одной из возможностей применения мониторинга NetFlow, доступной в PRTG Network Monitor, является продвинутый анализ пропускной способности. Отчеты визуализируются в виде рейтинговых списков, позволяющих отслеживать данные по разным настраиваемым категориям, что значительно упростит вам задачу. К примеру, вы можете отслеживать и тут же сравнивать полученные результаты отдельно для различных IP-адресов, для подключений, для протоколов, для приложений и т. д. Это очень полезно при устранении неполадок в работе сети.
Существует также небольшая бесплатная программа Paessler NetFlow Testers, которая просто собирает все пакеты (поддерживаются версии 5, 9, а также IPFIX от привязанных к NetFlow маршрутизаторов. Для этого сначала протокол NetFlow необходимо включить и настроить на каждом маршрутизаторе, с которого вы хотите получать статистику, а также ему необходимо задать IP-адрес компьютера, на котором запущен NetFlow Testers, чтобы сюда отправлялись UDP-пакеты с данными NetFlow. Это типичный Flow Collector в классическом понимании, который не имеет ничего общего с программным обеспечением для анализа.
Как мы уже отмечали выше, программное обеспечение PRTG Network Monitor, включает в состав NetFlow Collector, который работает автоматически на любом локальном или удаленном компьютере с установленным PRTG зондом. PRTG Network Monitor использует зонды как платформу для осуществления мониторинга всей вашей сетевой инфраструктуры. Все объекты, сконфигурированные под конкретным зондом, будут контролироваться через этот зонд.
Обратите внимание на то, что для ценовой политики компании Paessler важное значение в иерархии объектов программного обеспечения PRTG имеет понятие сенсора. На каждом устройстве (практически любом физическом или виртуальном устройстве в вашей сети, у которого есть собственный IP-адрес) можно создать несколько сенсоров. Каждый сенсор контролирует один аспект работы устройства. Например, это может быть:
- одно устройство NetFlow;
- один сетевой сервис, такой как SMTP, FTP, HTTP и т. д.;
- трафик одного порта сетевого коммутатора;
- загрузка центрального процессора устройства;
- загрузка памяти устройства;
- трафик на одной сетевой карте;
- общее состояние системы на устройстве;
- различный контент (например, использование базы данных, электронной почты, HTTP, XML, файлов и т. д.).
Программное обеспечение PRTG Network Monitor доступно в двух версиях: коммерческой и бесплатной. Бесплатная редакция — это полностью функциональное решение PRTG Network Monitor, которое позволяет контролировать до 100 сенсоров. Если вам необходимо осуществлять мониторинг более 100 сенсоров, вам понадобиться уже коммерческая лицензия. Кроме того, изначально вам доступна бесплатная пробная версия, которая в первые 30 дней не имеет никаких ограничений.
Скачать бесплатную и коммерческую версию PRTG Network Monitor (30-дней Trial): https://www.paessler.com/prtg
Scrutinizer
Программное решение Scrutinizer — это намного больше, чем просто анализатор NetFlow. Программа представляет собой полноценную систему реагирования на инциденты, которая может использоваться как для анализа сетевого трафика, так и получения отчетов об инцидентах безопасности. Scrutinizer может собирать и анализировать данные из различных типов потоков, используя NetFlow, J-Flow, NetStream и IPFIX. Другими словами, данное решение будет полноценно работать с различными устройствами от различных поставщиков.
Scrutinizer обеспечивает видимость как в физической среде, так и виртуальной. Он также имеет быструю и продвинутую функциональность по формированию отчетности, поддерживает возможности коллективной работы и чрезвычайно масштабируем, так как построен на принципах распределенной архитектуры.
Для Scrutinizer существует три варианта развертывания: на базе аппаратного обеспечения, как виртуальная машина, а также как SaaS (Software as a Service, программное обеспечение как услуга). Вы можете попробовать Scrutinizer бесплатно в течение 30 дней, после чего функциональность продукта будет понижена до бесплатной версии, которая имеет ряд ограничений. В частности, ограничен коллективный доступ, а также отсутствует возможность как-либо сохранять или экспортировать данные. Кроме того, вы можете собирать данные с любого количества потоков, но эта информация будет доступна только в течение пяти часов. Другими словами, у вас не будет доступа к ранее собранным данным и каждый раз вам придется начинать заново.
Скачать бесплатную и коммерческую версию Scrutinizer (30-дней Trial): https://www.plixer.com/products/scrutinizer/free-edition/
ManageEngine NetFlow Analyzer
Сервис ManageEngine предлагает коллектор и анализатор NetFlow, который по своей функциональности очень схож с решениями, которые мы описали выше. Это мощный программный продукт с полным спектром возможностей для сбора данных о потоках в вашей сети и анализа этой информации. ManageEngine NetFlow Analyzer поддерживает различные технологии для сбора информации о потоках, такие как NetFlow, J-Flow и NetStream, и предназначен для анализа сетевого трафика, а также мониторинга пропускной способности в реальном времени.
Кроме этого, ManageEngine NetFlow Analyzer имеет несколько интересных возможностей, таких как:
- настраиваемая панель мониторинга для вывода сводных данных по приложениям, протоколам и используемым ресурсам;
- встроенная система оповещений при достижении пороговых значений;
- приложение для iPhone, позволяющее вам проводить мониторинг в любое время и из любого места;
- поддержка отчетов Cisco Medianet и Cisco WAAS.
ManageEngine предлагает онлайн-демонстрацию своего анализатора NetFlow, что позволит вам оценить его возможности, прежде чем принять решение о полнофункциональном использовании. ManageEngine NetFlow Analyzer доступен в двух версиях: Essential (для малых, средних и больших компаний) и Distributed (для корпораций). Обе версии могут быть опробованы бесплатно в течение 30 дней. Цена версии Essential зависит от выбранной функциональности и количества интерфейсов, для которых проводится мониторинг. Существует также возможность использовать бесплатную версию решения без необходимости в какой-либо лицензии, которая может быть применена для мониторинга не более двух интерфейсов.
Скачать бесплатную и платную версию ManageEngine NetFlow Analyzer (30-дней Trial): https://www.manageengine.com/products/netflow/netflow-analyzer-editions.html
nProbe and ntopng
Решение ntopng — это веб-инструмент с открытым исходным кодом для мониторинга и анализа сетевого трафика. Программа была написана для использования на мобильных устройствах под управлением любой из популярных платформ: Unix, MacOS и Windows. Через зашифрованный интерфейс поступают данные о переданных пакетах. Программа анализирует их и предоставляет различную полезную информацию о функционировании вашей сети. К примеру, с помощью ПО ntopng вы можете:
- сортировать информацию о сетевом трафике по многим параметрам, включая IP-адреса, порты, протоколы, пропускная способность и т. д.;
- в режиме реального времени отслеживать наиболее активные хосты и приложения, требующие больше всего пропускной способности;
- отслеживать информацию о переданных байтах, а также количество отправленных, полученных и потерянных пакетов;
- сохранять на диск историю сетевого трафика для последующего анализа;
- определять географическое местоположение и строить схемы соединения хостов на карте местности,
а также многое другое.
Программа ntopng может подключаться к nProbe, который является коллектором NetFlow / IPFIX. В этом тандеме роли распределены следующим образом: nProbe собирает данные о потоках и отправляет эту информацию в ntopng, который, в свою очередь, анализирует ее и представляет в удобном для восприятия виде.
Хотя ntopng и доступен в бесплатной версии (существуют также более расширенные платные версии продукта), вам понадобится лицензия для использования nProbe (за исключением некоммерческих организаций или учебных заведений). ПО nProbe поставляется в двух версиях: Standard и Pro с плагинами.
Заключение
Мы обсудили использование протокола NetFlow и других схожих по своей функциональности технологий для получения статистической информации о работе сети. Эти данные могут оказаться очень полезны вам в ряде случаев, включая задачи анализа сетевого трафика, устранения проблем с производительностью и мониторинга пропускной способности.
Также мы представили список лучших на наш взгляд инструментов, которые могут быть использованы для сбора и анализа данных NetFlow — это Solarwinds NetFlow Traffic Analyzer, PRTG Network Monitor, Scrutinizer, ManageEngine NetFlow Analyzer и ntopng / nProbe. Существуют и другие программные решение, которые мы не упомянули, такие как, к примеру, NFDUMP и EHNT, являющиеся бесплатными и с открытым исходным кодом. Основная причина, по которой мы не обсуждали эти и другие подобные решения состоит в том, что они ограничены только одной или несколькими версиями NetFlow, в отличие от рассмотренных в данной статье инструментов, которые поддерживают как NetFlow и IPFIX, так и J-Flow, NetStream и т. д. Кроме того, у бесплатных решений практически отсутствует какой-либо аналитический функционал.
Если вы ищете решение, которое не только собирает, но и анализирует NetFlow, а также предлагает расширенные возможности масштабирования для различных платформ и протоколов, мы рекомендуем обратить внимание на Solarwinds NetFlow Traffic Analyzer (возможно, с Network Performance Monitor).
Если вас больше интересует анализ NetFlow в качестве дополнения к решению сетевого мониторинга, тогда присмотритесь к PRTG Network Monitor или ManageEngine NetFlow Analyzer, если нужна безопасность — Scrutinizer может стать для вас еще одним вариантом. И, наконец, если вам нужно недорогое решение с открытым исходным кодом, взгляните на пару ntopng / nProbe.
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
- Устанавливаем зависимости
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.
Настройка протокола netflow на оборудовании cisco.
Netflow – протокол, разработанный изначально компанией Cisco для учёта сетевого трафика. В настоящий момент его сфера применения выходит далеко за пределы устройств этой компании, существуют свободные реализации, многие производители добавляют поддержку netflow в свои устройства. Существует несколько версий этого протокола, наиболее распространены версии 5 и 9, при этом функциональные отличия между версиями невелики.
В рамках netflow подразумевается три роли, в которых могут выступать устройства:
- Сенсор – устройство, собирающее статистику о трафике и передающее её коллектору. В качестве сенсора может выступать маршрутизатор или коммутатор третьего уровня cisco.
- Коллектор – приложение, работающее на сервере, собирающее и сохраняющее статистику, полученную от сенсоров.
- Анализатор – приложение, анализирующее и обрабатывающее сохранённую коллектором статистику, предоставляет различные отчёты, графики и т.п.
В статистике, собираемой на коллекторе учитывается не каждый пакет индивидуально – это было бы слишком ресурсоёмко, а потоки. Поток (flow) – это группа пакетов, у которых совпадают:
- Адрес отправителя;
- Адрес получателя;
- Порт источника (для TCP или UDP);
- Порт получателя (для TCP или UDP);
- Тип и код сообщения (для ICMP);
- Протокол, инкапсулированный в IP (поле заголовка IP «protocol»);
- Значение поля ToS;
- Интерфейс, на котором появился пакет.
Таким образом, группа пакетов, у которых эти параметры совпали называется потоком, а в пределах потока можно посчитать, сколько в нём передано пакетов, сколько байт информации и другую статистику. Маршрутизатор собирает эту информацию и передаёт её коллектору.
Статистика по потокам отправляется на коллектор и частично может быть просмотрена локально на самом маршрутизаторе. Приведём конкретный перечень того, что отправляется на коллектор:
- Версия протокола;
- Порядковый номер записи о потоке;
- Время начала и окончания потока;
- Количество байт и пакетов в потоке;
- Интерфейсы, через которые осуществлялась передача;
- Адрес получателя и отправителя;
- Порты получателя и отправителя;
- Номер протокола, инкапсулированного в IP;
- Значение ToS;
Настройка протокола netflow достаточно проста. Необходимо выбрать интерфейсы, на которых мы хотим организовать сбор статистики и направление трафика, который мы хотим мониторить (на вход, на выход или оба). Например:
R1(conf)# interface FastEthernet 0/1 R1(config-if)# ip flow ingress R1(config-if)# ip flow egress
Соответственно, ingress заставляет мониторить входящий на интерфейс Fa0/1 трафик, а egress – исходящий. Второй элемент настройки – указание адреса коллектора и номера UDP порта, на котором он готов получать от нас статистику. Кроме того, можно указать версию протокола netflow, которая будет понятна коллектору. Это ещё две строчки конфига:
R1(config)# ip flow-export destination 192.168.0.100 2055 R1(config)# ip flow-export version 5
Для отладки хорошо использовать две команды: show ip cache flow – выдаёт локальную статистику netflow прямо на маршрутизаторе, без коллектора; show ip flow export – отображает статистику по взаимодействию с коллектором (сколько потоков отправлено, сколько пакетов ушло на коллектор, ошибки при взаимодействии с коллектором и т.п.).
Как видно из данной статьи, настройка протокола Netflow на оборудовании cisco дело достаточно простое, я бы сказал, что сложнее настроить коллектор. Что может выступать в качестве коллектора? Во-первых, многие биллинг-системы работают с этим протоколом. Через него они получают статистику, какой ip адрес сколько скачал из интернета, а через SNMP отправляют на маршрутизатор команды по изменению списков контроля доступа, чтобы запретить выход тем пользователям, кто пересидел свой лимит. Во-вторых, есть платное ПО, которое выступает в качестве коллектора и анализатора, например, Scrutinizer NetFlow Analyzer от Plixer International. В-третьих, есть бесплатные коллекторы. В частности, под Ubuntu и Debian линуксом я пользовался отличным пакетом flow-tools. Минус последнего варианта заключается в том, что анализатор пришлось писать самому.