Функції та призначення NetFlow
Одним з найнеобхідніших джерелом інформації для SOC є протокол NetFlow. Протокол NetFlow може використовуватись для забезпечення наступного:
Моніторингу мережі. Дані протоколу NetFlow дозволяють виконувати моніторинг стану мережі. За допомогою програм, яки виконують обробку накопичених даних від NetFlow колекторів, можливо проводити оцінку трафіку при цьому виявляти проблеми, що виникають в мережі (перевантаження або відмова в роботі будь яких мережевих пристроїв, несанкціоновані дії в мережі та інше) і швидко проводити дії по їх вирішенню.
Моніторингу програмного забезпечення. Дані протоколу NetFlow дозволяють мережним адміністраторам мати точну інформацію про програми які на даний час працюють або використовуються в мережі, виявляти з них ті, що створюють проблеми в роботі мережі або перенавантажують їх .
Моніторингу користувачів. Дані протоколу NetFlow дозволяють збирати детальну інформацію про кожного користувача мережі, про те які мережні ресурси він використовує на даний момент, яке програмне забезпечення, з якими IP – адресами працює та інше. Така інформація може використовуватися для визначення можливих проблем з безпекою. Планування розвитку мережі. При забезпеченні збору та аналізу даних протоколу NetFlow можливо виявити тенденцію росту мережі та спланувати необхідний її розвиток та політику безпеки. За даними аналізу можливо виявити небажаний трафік та наслідки мережних атак.
Аналіз безпеки мережі. Під час використання протоколу NetFlow можливо ідентифікувати та класифікувати атаки по відмові в обслуговуванні (DDоS атаки), виявляти трафік, що генерується вірусами та троянськими програмами у реальному часі. Аналізуючи мережну поведінку, можливо оперативно виявити аномалії в мережі та вчасно їх знешкодити. Функціональні можливості протоколу NetFlow, дають можливість вирішення багатьох проблем пов’язаних з безпекою та захистом інформації в інформаційно – телекомунікаційних системах.
Мережний протокол NetFlow – призначений для обліку мережного трафіку, розроблений в 1996 році, він прийшов на заміну CEF, но важливим компонентом залишилась збір статистики. Поняття NetFlow складається з 2-х слів: Net – мережа і Flow – потік. Відповідно, NetFlow означає мережевий потік. Це поняття застосувала компанія Cisco Systems для своєї технології, використовуваної в операційній системі Cisco IOS. Відповідно до NetFlow протоколом виконується аналіз пакетів, що проходять через певний інтерфейс мережевого пристрою, на основі чого формується інформація в певному форматі про параметри різних мережевих потоків, що проходять через цей інтерфейс, і ця інформація передається по IP мережі спеціальною програмою, NetFlow колектором (NetFlow Collector ).
У контексті завдання управління мережею він є незамінним інструментом для моніторингу завантаження каналів передачі даних. Звичайно, протокол NetFlow не може витягувати інформацію безпосередньо з каналу (крученої пари або оптичної лінії) – дані знімаються з пристроїв, підключених до цікавого сегменту. NetFlow підтримується багатьма мережними пристроями: з цього протоколу можуть відправляти інформацію маршрутизатори, комутатори і міжмережні екрани Cisco.
Принцип дії протоколу полягає в наступному. При відкритті чергового сеансу передачі даних на мережевому обладнанні формується інформація про даний сеанс, так званий потік (flow). Відомості про потік включають кількість переданих байтів, вхідний і вихідний інтерфейси для сеансу, IP-адреси відправника / одержувача, порти відправника / одержувача, номер протоколу IP, параметри QoS і т.д. Потоки акумулюються на мережевому пристрої і відправляються колектору NetFlow в датаграму UDP. Колектор NetFlow агрегує отриману інформацію, проводить аналіз і формує зручні для сприйняття звіти і графіки. Один з популярних колекторів NetFlow – NetFlow Analyzer, але існують колектори.. Протокол NetFlow дозволяє отримати повну картину трафіку в каналах. Можна переглянути якісний склад трафіку (IP-адреси, порти, додатки) в будь – якому сегменті мережі, а також оцінити, яку частку пропускної здатності каналу (у відсотковому відношенні) займає той чи інший потік.
Аналіз архітектури протоколу NetFlow
NetFlow дозволяє пристроям Cisco передавати дані про трафік, що проходить через даний пристрій, на будь – який хост в мережі, де ці дані можуть накопичуватися, зберігатися в певному виді і відповідно відображатися. Таким чином маємо три типи обєктів, які працюють з NetFlow: сенсор, колектор, аналізатор (рис. 1).
![](https://the-purple.team/wp-content/uploads/2022/08/Архітектура-NetFlow.png)
Для захоплення, передачі та аналізу даних NetFlow слід використовувати наступні компоненти з підтримкою NetFlow:
Сенсор (Exporter) – збирає статистику трафіка по проходить через нього. Зазвичай це L3 – комутатор або маршрутизатор, хоча можна використовувати і окремі сенсори, які отримують дані шляхом відображення трафіка. Сенсор прослуховує мережу і фіксує дані сеансу. Також як Snort або будь-яка інша система виявлення вторгнень, сенсор повинен мати можливість підключитися до хабу, переглядати порт комутатора або будь – якого іншого пристрою, для перегляду мережного трафіку. Якщо виикористовувати систему пакетної фільтрації на базі BSD або Linux, то це чудове місце для сенсора NetFlow, так як весь трафік буде проходити через цю точку. Сенсор буде збирати інформацію про сеанси і скидати її в колектор.
Сенсор виділяє з трафіку потоки, які характеризуються наступними параметрами (рис. 2):
- IP адреса джерела даних;
- IP адреса приймача даних;
- Порт джерела для UDP і TCP;
- Порт призначення для UDP і TCP;
- Tип і код повідомлення для ICMP;
- Номер протоколу IP;
- Мережний інтерфейс (параметр ifindex SNMP);
- IP Type of Service.
![](https://the-purple.team/wp-content/uploads/2022/08/Параметри-трафіка.png)
Потоком вважається набір пакетів, що проходять в одній області. Коли сенсор визначає, що потік закінчився (за зміною параметрів пакетів), він відправляє інформацію в колектор. В залежності від налаштувань він також може періодично відправляти в колектор інформацію про все ще поточні потоки.
Перераховані вище поля є ключовими в протоколі NetFlow всіх версій. Розглянемо, які версії протоколу NetFlow існують.
Версія 1 протоколу NetFlow на сьогоднішній день вже застаріла і не використовується. Версії 2-4, а також версія 6 ніколи не включалися в Cisco IOS, і, відповідно, не підтримуються. Однією з найбільш популярних стала версія 5, яка була доповнена вимогами про номери автономних систем, використовуваних в протоколі граничного шлюзу (BGP), і номер потоку. Ця версія досі використовується, якщо немає потреби у додатковій інформації, яка надається більш пізніми версіями протоколу. Версія 7 стала розвитком версії 5 і вона стала підтримуватися в серії комутаторів Cisco Catalyst. У версії 8 була введена можливість агрегації даних, що актуально при великих обсягах даних протоколу NetFlow. В останній версії, 9-й, протоколу NetFlow кількість полів істотно збільшилася в порівнянні з версією 5. Ці додаткові поля дозволяють розширити і уточнити інформацію, що проходить в мережевому потоці. Наприклад, версія 9 включає інформацію 2-го рівня мережної моделі: підтримка IPv6, групових (Multicast) розсилок, параметри протоколів MPLS, BGP і інше. Але основне нововведення версії 9 – це використання шаблонів, що забезпечує легке розширення протоколу за рахунок використання нових типів шаблонів даних.
Колектор відповідальний за збір, фільтрування та зберігання даних. Він включає в себе історію про інформацію про потоки, які були підключені за допомогою інтерфейсу. Зниження обсягу даних також відбувається за допомогою колектора та обраних фільтрів, агрегації. Дані NetFlow періодично надсилаються колектору NetFlow. Колектор – це інший сервер або комп’ютер, на якому запускається програмне забезпечення приймача NetFlow, призначене для збору, запису, фільтрування та аналізу отриманих потоків, таких як PRTG NetFlow Analyzer Paessler. Програмне забезпечення колектора повинно підтримувати ту саму версію NetFlow, що і сервер-експортер. Наприклад, для моніторингу маршрутизатора Cisco з використанням NetFlow v5 потрібно буде використовувати датчик NetFlow v5. Для маршрутизатора, що використовує NetFlow v9, потрібен датчик NetFlow v9. Обидва датчики можуть бути включені на одному комп’ютері одночасно, так що єдиний колектор може отримувати дані з обох версій NetFlow і повідомляти про них. Діаграми NetFlow експортуються за допомогою протоколу обробки користувацьких даних UDP та SCTP. IP-адреса колектора та порт призначення повинні бути налаштовані на маршрутизаторі або самостійно. У деяких випадках SNMP може бути використаний для ввімкнення NetFlow та налаштування IP-адреси колектора для надсилання даних. У Cisco IOS команда ip flow-export може використовуватися для налаштування IP-адреси призначення з командного рядка. Один з найпопулярніших портів, який використовується для експорту NetFlow, становить 2055, але в основному можна використовувати будь – який порт, якщо правильно вказати його в приймачі NetFlow.
Аналізатор аналізує зібрані колектором дані і формує придатні для читання людиною звіти (часто у вигляді графіків). NetFlow Analyzer – це просте рішення для адміністраторів, щоб краще розуміти споживання смуги пропускання, тенденції трафіку, додатки, хости і аномалії трафіку, візуалізувати трафік за допомогою мережевих пристроїв, інтерфейсів і підмереж, сегментів трафіку і кінцевих користувачів. NetFlow Analyzer використовує Cisco NetFlow, IPFIX, sFlow і сумісні NetFlow подібних протоколи, щоб допомогти адміністратором з контролем смуги пропускання, дослідженням мережевого трафіку, аналіз і звітністю. Це дозволяє оптимізувати свої мережі і додатки, планувати розширення мережі, економити час, необхідний для усунення неполадок і діагностики, а також підвищити безпеку – в свою чергу, значно знижуючи операційні витрати і підвищуючи продуктивність мережної команди.
Загалом, програмне забезпечення NetFlow Analyzer є невід’ємною частиною будь – якої інфраструктури безпеки для виявлення аномалій в мережі і усунення неполадок з погрозами. Він доповнює брандмауери, орієнтовані на кінцеві точки мережі, забезпечуючи внутрішній вигляд мережі. На відміну від сигнатурних антивірусів, які стикаються з відомими погрозами, ця концепція не попереджувальної, але швидкої реакції необхідна для підвищення атак з нульовим днем. І у вас також є історичний архів даних для подальшого розслідування, коли це буде визнано за необхідне. Таким чином, він фактично охоплює найважливіші загрози, з якими стикаються мережі в даний час, такі як передові постійні погрози, внутрішні загрози і навіть зловживання співробітниками, несанкціонований доступ і випадки витоку даних.
NetFlow Analyzer, повний інструмент аналізу трафіку, використовує технології потоку, щоб забезпечити видимість в мережі в режимі реального часу. Аналізатор NetFlow, в першу чергу інструмент моніторингу пропускної здатності, оптимізує тисячі мереж по всьому світу, надаючи цілісне уявлення про пропускну здатність мережі та структурі трафіку. NetFlow Analyzer – це уніфіковане рішення, яке збирає, аналізує і повідомляє про те, для чого використовується ваша пропускна здатність мережі і ким.
Мережний протокол NetFlow, є відмінним джерелом інформації для задач безпеки. NetFlow може враховувати кожен оброблюваний пакет, надаючи детальний аналіз всього трафіку. Це відрізняє NetFlow від аналогічних протоколів, які вміють збирати тільки агрегированну статистику (sampled flow), аналізуючи кожен n-й пакет. Агрегований і повний NetFlow можна порівняти з читанням кожної сторінки книги і уважним посторінковим читанням. Сукупна статистика дає швидкий погляд на трафік, але гірше підходить для задач безпеки. Повний NetFlow дає вичерпний огляд мережевої активності з точки зору безпеки. Саме на протоколі NetFlow ґрунтується рішення Cisco для захисту від кіберзагроз – Cyber Threat Defense (CTD). Рішення складається з декількох компонентів:
1. Мережна інфраструктура (комутатори, маршрутизатори, міжмережні екрани) з підтримкою протоколу NetFlow.
2. Система для аналізу мережного трафіку Lancope StealthWatch.
3. Опціональна система Cisco Identity Services Engine (ISE), яка додає інформацію про контекст.
Рішення Cyber Threat Defense може використовуватися в різних сценаріях безпеки для захисту від більшої кількості різнопланових атак.
Зокрема CTD може виявляти і допомагати блокувати такі типи атак і аномалій, що впливають на ІБ:
- поширення шкідливого коду і вірусні епідемії;
- активність ботнетів;
- DDoS-атаки;
- мережеву розвідку;
- спроби несанкціонованого доступу до ресурсів;
- несанкціоноване накопичення даних;
- спроби витоків даних;
- використання заборонених додатків (наприклад P2P, IP-телефонії);
Також CTD є відмінним інструментом аудиту інформаційної безпеки, дозволяючи перевіряти чи веде себе мережу так, як планувалося при налаштуванні міжмережевих екранів, IPS і мережевої інфраструктури.
За допомогою CTD можна виявляти підозрілі веб-транзакції. Так як мережева телеметрія NetFlow зазвичай зберігається кілька місяців, можливо знайти і спроби атак, які відбувалися в минулому до офіційної публікації уразливості. NetFlow є відмінним джерелом інформації про інциденти.
NetFlow використовує UDP та SCTP для передачі даних про трафік колектору.
Використання ненадійного транспортного протоколу, такого як UDP для відправки інформації через мережу, основний недолік:
1. Відсутність обізнаності про перевантаження – експортер відправляє пакети так само швидко, як може їх генерувати, без будь-якого зв’язку з пропускною здатністю, доступною в мережі. Якщо посилання повністю перевантажена, коли маршрутизатор NetFlow намагається відправити, пакет можна просто видалити, або до того, як він буде поміщений в чергу виводу експортера, або до того, як він потрапить в чергу введення наступного хоста.
При експорті через UDP збирач не має способу сигналізувати експортеру, що він не отримав експортований пакет. Більшість версій пакета експорту NetFlow містять порядковий номер, тому колекціонер часто знає, коли він втратив пакет. Але, з огляду на, що експортер відкидає експортний пакет відразу ж після його відправки і що маршрутизатора NetFlow не вистачає механізму для запиту повторної передачі пакета, експорт через UDP можна вважати ненадійним.
Функція SCTP використовує SCTP для подолання двох основних недоліків використання UDP як протокол транспортного рівня:
- SCTP має механізм управління перевантаженням, щоб гарантувати, що маршрутизатор не надсилає дані в колектор швидше, ніж може його отримати.
- SCTP передає повідомлення надійним чином. Повідомлення SCTP буферизуются на маршрутизаторі до тих пір, поки вони не будуть визнані колектором. Повідомлення, які не підтверджуються збирачем, повторно передаються маршрутизатором. SCTP – це надійний протокол транспортного рівня, орієнтований на повідомлення, що дозволяє передавати дані між двома кінцевими точками надійним, частково надійним або ненадійним способом. SCTP – сеанс складається з зв’язку між двома кінцевими точками, які можуть містити один або кілька логічних каналів, які називаються потоками. Модель передачі на основі потоку SCTP полегшує експорт змішаних типів даних, таких як шаблони NetFlow і дані NetFlow, за тим же з’єднанням. Максимальна кількість вхідних і вихідних потоків, підтримуваних кінцевою точкою, узгоджується в процесі ініціалізації асоціації SCTP. Проблема з SCTP полягає в тому, що він вимагає взаємодії між кожним колекціонером NetFlow і кожним експортом маршрутизаторів NetFlow. Можуть бути виконавчі обмеження, якщо маршрутизатор повинен мати справу з багатьма колекціонерами NetFlow, і колекціонер NetFlow повинен мати справу з великою кількістю маршрутизаторів, особливо коли деякі з них недоступні через невдачі або обслуговування.
SCTP може бути не ефективним, якщо NetFlow буде експортований до декількох незалежних колекціонерам, деякі з яких можуть бути випробувальними серверами.
Формат запису NetFlow версії 9 складається з заголовка пакета, один або кілька шаблонів або даних FlowSets. Шаблон FlowSet надає опис полів, які будуть присутні в майбутніх пакетах даних FlowSets. Ці дані FlowSets можуть з’являтися пізніше в одному і тому ж пакеті експорту або в наступних експортних пакетах. Шаблони і дані FlowSets можуть змішуватися в одному пакеті експорту (рис. 3).
![](https://the-purple.team/wp-content/uploads/2022/08/Структура-пакету-експорту-NetFlow.png)
Можливі комбінації, які можуть виникати в експортному пакеті, такі:
1. Експортний пакет, що складається з шаблону і даних FlowSets-Collector, не повинен припускати, що ідентифікатори шаблонів, певні в такому пакеті, мають якесь конкретне відношення до даних FlowSets в одному пакеті. Колекціонер повинен завжди кешувати будь – які отримані шаблони і перевіряти кеш шаблону, щоб визначити відповідний ідентифікатор шаблону для інтерпретації запису даних.
2. Експортний пакет, що складається повністю з даних FlowSets, – після того, як відповідні ідентифікатори шаблонів були визначені і надсилати колектора, велика частина пакетів експорту буде складатися тільки з даних FlowSets.
3. Експортний пакет, що складається повністю з шаблону FlowSets, хоча цей випадок є винятком, можна отримувати пакети, що містять тільки записи шаблонів. Зазвичай шаблони перевантажені на дані FlowSets. Однак в деяких випадках відправляються тільки шаблони. Коли маршрутизатор спочатку завантажується або перезавантажується, він намагається якомога швидше синхронізувати з колекторним пристроєм. Маршрутизатор може відправляти шаблони FlowSets з прискореної швидкістю, щоб колекційний пристрій мав достатню інформацію для інтерпретації будь – яких подальших наборів даних FlowSets. Крім того, записи шаблонів мають обмежений термін служби, і їх необхідно періодично оновлювати. Якщо інтервал оновлення для шаблону відбувається і немає відповідних даних FlowSet, які необхідно відправити в пристрій колектора, відправляється пакет експорту, що складається тільки з шаблону FlowSets.
Кожен пакет NetFlow (N байт) складається з:
- Packet Header– заголовок пакета (рис. 4.), заголовок пакета складається з таких полів (табл. 1).
![](https://the-purple.team/wp-content/uploads/2022/08/Формат-заголовка-пакета.png)
Таблиця 2.1
Опис полів заголовкаNetFlow
Ім’я поля | Пояснення |
Версія | Версія даних NetFlow, експортованих в цей пакет для версії 9 це значення дорівнює 0x0009. |
Кількість записів | Загальна кількість записів FlowSet |
Час роботи системи | Час в мілісекундах, коли пристрій був включений |
Сеанси UNIX | Час в секундах з 0000, при якому відправили пакет. |
Порядковий номер | Лічильник переданих пакетів, він постійно збільшується від пакета до пакету, тим самим можна перевірити чи загубилисяпакети між ними; |
Початковий ID | Номер потоку даних, через те , що з боку сенсора можуть йти кілька потоків даних. |
- Одним з ключових елементів нового формату NetFlow версії 9 є шаблон FlowSet. Шаблони значно підвищують гнучкість формату запису NetFlow, оскільки вони дозволяють збирачеві NetFlow або додатком відображенням обробляти дані NetFlow, не замислюючись заздалегідь про формат даних. Шаблони використовуються для опису типу і довжини окремих полів у записі даних NetFlow, відповідних ідентифікаторів шаблону (додаток A).
У FlowSet є два незмінні від типу переданих даних поля:
FlowSet ID – для шаблону це завжди 0, для опціонального шаблон 1, для даних він дорівнює Template ID і отже більше 255 (від 256 до 65535).
Length – розмір всього FlowSet разом з полями FlowSet ID і Length. Опис шаблону FlowSet:
- Формат набору Data FlowSet скадається з:Template ID, розмір, значення поля. Значення поля записуються зі значення Template FlowSet.Опис полів Data FlowSet.
- Записи Options Template (і відповідні записи Options Data) використовуються для передачі даних про конфігурацію процесу NetFlow або специфічних для процесу даних, а не інформації про потік IP.Наприклад, Options Template FlowSet може показувати частоту вибірки для конкретного інтерфейсу і використовуваний метод вибірки інформації.
Формат даних опцій, записи Options Data передаються в наборах Data FlowSets регулярно, але не з кожним записом Flow Data. Частота відправки записів Options Data задається в конфігурації(додаток Е).
Управління шаблонами, записи FlowData, відповідні Template Record, можуть з’являтися в тому ж або наступних пакетах. Записи Template не обов’язково передавати в кожному пакеті експорту. Тому колектор NetFlow повинен зберігати запис Template для інтерпретації відповідних записів Flow Data, які будуть отримані в наступних пакетах.
Колектор NetFlow, який одержує пакети експорту від одного експортера для декількох областей спостереження, повинен брати до уваги відсутність гарантії унікальності Template ID в різних областях спостереження.
Значення Template ID повинні зберігатися протягом всього терміну життя процесу NetFlow на стороні експортера. Якщо експортер або процес NetFlow по тій або іншій причині запускається заново (перезавантаження), вся інформація про шаблони втрачається і значення Template ID створюються заново. Таким чином, узгодженість ідентифікаторів Template ID після рестарту експортера або процесу NetFlow не гарантовано.
Новостворені записи Template експортером присвоюється невикористане значення Template ID. Якщо конфігурація шаблону змінюється, поточне значення Template ID закривається і його не слід використовувати до перезапуску експортера або процесу NetFlow. Якщо колектор отримує нове визначення для вже існуючого ідентифікатора Template ID, він повинен відкинути попереднє визначення шаблону і використовувати замість нього нове.
Якщо налаштований на експортері шаблон віддаляється і створюється знову з такими ж параметрами конфігурації, можна повторно використовувати той же ідентифікатор Template ID.
Експортер передає набори даних Template FlowSet і Options Template FlowSet в наступних випадках:
Після перезапуску процесу NetFlow експортеру неприпустимо передавати будь – які Data FlowSet без надсилання відповідного Template FlowSet і необхідного Options Template FlowSet в попередньому пакеті експорту або включення цих наборів в той же пакет. Можна передавати Template FlowSet і Options Template FlowSet заздалегідь, без будь-яких Data FlowSets для того, щоб забезпечити гарантію наявності у колектора коректного шаблону до отримання першого запису Flow або Options Data.
У разі зміни конфігурації експортеру слід в прискореному режимі передати нові визначення шаблону. У таких випадках експортер може передати змінені записи Template і Options Template без будь-яких даних заздалегідь, щоб забезпечити гарантію наявності у колектора коректного шаблону до отримання даних.
У регулярному режимі експортер повинен передати всі записи Template і Options Template для поновлення колектора. Термін життя ідентифікаторів Template ID на колекторі обмежений і ці ідентифікатори повинні підлягати періодичному оновленню.