Для начала давайте определимся что такое захват трафика? Этот термин обычно ассоциируется с понятием «прослушка» (sniffing).

И действительно, при захвате трафика мы получаем доступ ко всему, что проходит через сетевой адаптер, то есть «прослушиваем» интерфейс. В зависимости от типа интерфейса и способа сбора, мы можем видеть трафик на различных уровнях модели OSI: от первого до седьмого.
Так давайте же рассмотрим способы захвата и анализа!
1. Host Based
Сбор трафика который происходит непосредственно на узлах, обычно это L3 устройства, такие как:
- Межсетевые экраны
- Маршрутизаторы или L3-коммутаторы
- Оконечные серверы или АРМ пользователей

В случаях сбора на межсетевых экранах и роутерах мы можем использовать встроенные утилиты сбора трафика, такие как packet capture (Cisco/Usergate/Maipu), tcpdump (.nix системы, VyOS, s-terra, CheckPoint), fw monitor (CheckPoint) и др.\
На рабочих станциях и серверах чаще всего используют tcpdump и wireshark, мы рассмотрим их подробней в следующих статьях.
Плюсы данного способа сбора трафика:
- Это быстро и не требует дополнительных манипуляций на сети, подключаемся по SSH/WEB/Application и начинаем собирать трафик.
- Это бесплатно, утилиты сбора трафика идут «из коробки» или бесплатно распространяются.
Минусы данного способа сбора трафика:
- Нагрузка на процессор: если запустить tcpdump или другую утилиту для сбора трафика с широким фильтром, который будет захватывать все пакеты, на высоконагруженном межсетевом экране или роутере, это может привести к снижению производительности или даже полному отказу устройства вплоть до необходимости перезагрузки. Поэтому при использовании этого инструмента следует проявлять осторожность.
- Сбор данных ограничен только тем трафиком, который прошёл через устройство. В некоторых случаях этого может быть недостаточно для понимания происходящего в сети и решения возникших проблем. Иногда для всестороннего анализа требуется гораздо больше информации.
Этот способ используется в 90% случаев и позволяет быстро найти симптомы или саму причину проблемы. В последующих публикациях мы подробно рассмотрим данный подход и его применение.
2. Network Based
Зеркалирование трафика в основном выполняется на системы защиты и анализа сетевой безопасности, такие как: — IDS (Intrusion Detection System) и IPS (Intrusion Prevention System) — это специализированные системы для мониторинга сетевого трафика и обнаружения подозрительных действий, указывающих на попытки взлома или кибератаки. — SIEM (Security Information and Event Management) — это комплексное решение для обеспечения безопасности, которое объединяет функции управления информационной безопасностью (SIM) и управления событиями безопасности (SEM) в единую систему. — DLP (Data Leak Prevention) — это программно-аппаратный комплекс, предназначенный для обнаружения и предотвращения несанкционированной передачи конфиденциальной информации за пределы корпоративной сети. — и др

Давайте более подробно рассмотрим способы зеркалирования.
2.1. SPAN
SPAN-порт (Switched Port Analyzer) — это специальная функция сетевых коммутаторов и маршрутизаторов, которая позволяет копировать и перенаправлять сетевой трафик с определенных портов-источников или определённых VLAN на порт назначения для мониторинга. Причём SPAN можно настроить только если трафик копируется в рамках одного L2-устройства.

Настройка SPAN не требует больших усилий:
Switch(config)#monitor session 1 source interface fa0/3
Switch(config)#monitor session 1 destination interface fa0/2
Проверить настройку мы можем командой:
Switch#show monitor session 1
Session 1
---------
Type : Local Session
Source Ports :
Both : Fa0/3
Destination Ports : Fa0/2
Encapsulation : Native
Ingress : Disabled
Как вы можете видеть, по умолчанию monitor session копирует передаваемый и принимаемый трафик в порт назначения. Если вы хотите перехватывать трафик, идущий только в одну сторону, то это можно настроить:
Switch(config)#monitor session 1 source interface fa0/3 ?
, Specify another range of interfaces
- Specify a range of interfaces
both Monitor received and transmitted traffic
rx Monitor received traffic only
tx Monitor transmitted traffic only
Просто добавь rx или tx, и всё! Теперь мы сможем перенаправлять только односторонний трафик. Если бы у нас был trunk-интерфейс FastEthernet 0/3, мы могли бы добавить фильтр, чтобы выбрать сети VLAN, которые хотим зеркалировать.
Switch(config)#monitor session 1 filter vlan 1 - 100
Фильтр, описанный выше, перенаправит трафик только VLAN 1–100 который проходит через trunk в destination-порт. Если мы хотим использовать в качестве источника не интерфейс, а VLAN, то тоже можем это сделать следующим образом:
Switch(config)#monitor session 2 source vlan 1
Switch(config)#monitor session 2 destination interface fa0/1
Мы не можем использовать для перенаправления ранее созданный 1 сеанс, потому что мы уже используем физический source-интерфейс для этого сеанса. Также невозможно использовать один и тот же destination-интерфейс для нескольких сеансов. Тут я создал новый номер сеанса и выбрал FastEthernet 0/3 в качестве назначения.
Подведём неблоьшой итог по SPAN. Зеркалирование трафика позволяет анализировать трафик например для:
- Если вы хотите использовать wireshark для перехвата трафика с интерфейса, подключенного к рабочей станции, серверу, телефону или чему-либо еще, что вы хотите перехватить.
- Перенаправить весь трафик из определённого VLAN на IDS/IPS
- Перенаправить все VoIP пакеты из телефонного VLAN для записи звонков.
А что нам делать если нужно передавать трафик с удалённого L2-устройства? Нам что к каждому коммутатору подключать отдельную систему IDS/IPS для анализа? Для решения этой проблемы был придуман RSPAN.
2.2. RSPAN
RSPAN (Remote Switch Port Analyzer) — это технология зеркалирования трафика, которая позволяет осуществлять мониторинг сетевого трафика на физически удаленных портах через сеть коммутаторов.
При использовании RSPAN вам необходимо создать отдельный VLAN для RSPAN-трафика и использовать его, чтобы передать зеркалируемый трафик от исходного к оборудованию сбора и анализа.

Для демонстрации RSPAN я буду использовать топологию выше:
Идея заключается в том, чтобы перенаправить трафик с FastEthernet 0/3 на SW1 на FastEthernet 0/2 на SW2. Здесь нам нужно настроить несколько параметров:
SW1(config)#vlan 100
SW1(config-vlan)#remote-span
SW2(config)#vlan 100
SW2(config-vlan)#remote-span
SW3(config)#vlan 100
SW3(config-vlan)#remote-span
Во-первых, нам нужно создать VLAN и сообщить коммутаторам, что это RSPAN vlan. Об этом легко забыть. Во-вторых, мы настроим trunk между коммутаторами:
SW1(config)#interface fastEthernet 0/24
SW1(config-if)#switchport trunk encapsulation dot1q
SW1(config-if)#switchport mode trunk
SW2(config)#interface fastEthernet 0/24
SW2(config-if)#switchport trunk encapsulation dot1q
SW2(config-if)#switchport mode trunk
SW3(config)#interface fastEthernet 0/23
SW3(config-if)#switchport trunk encapsulation dot1q
SW3(config-if)#switchport mode trunk
SW3(config)#interface fastEthernet 0/24
SW3(config-if)#switchport trunk encapsulation dot1q
SW3(config-if)#switchport mode trunk
Теперь настроим сам RSPAN:
SW1(config)#monitor session 1 source interface fastEthernet 0/3
SW1(config)#monitor session 1 destination remote vlan 100
Источником выбираем порт fastEthernet 0/3 а назначением RSPAN-VLAN. А на SW2 мы выбираем VLAN 100 в качестве источника и FastEthernet 0/2 в качестве назначения:
SW2(config)#monitor session 1 source remote vlan 100
SW2(config)#monitor session 1 destination interface fastEthernet 0/2
Теперь проверим, с помощью команды show monitor session:
SW1#show monitor session 1
Session 1
---------
Type : Remote Source Session
Source Ports :
Both : Fa0/3
Dest RSPAN VLAN : 100
Вот и вся настройка, теперь давайте поговорим о некоторых особенностях. SPAN и RSPAN имеют свои ограничения. Я хотел бы поделиться с вами наиболее важными из них:
- Источником может быть любой порт коммутатора… switchport, routed port, access port, trunk port, etherchannel и т. д.
- Когда вы настраиваете trunk-порт в качестве SPAN source-interface, он начинает копировать трафик из всех VLAN. Однако существует возможность фильтровать этот трафик.
- Можно использовать несколько физических интерфейсов-источников или несколько VLAN, но нельзя смешивать физические интерфейсы и VLAN.
- Очень просто «загрузить в полку» интерфейс. Если выбрать всю VLAN в качестве источника и использовать 100-мегабитный интерфейс назначения…
- Когда вы настраиваете destination-порт, вы «теряете» его конфигурацию. Т. е. по умолчанию интерфейс будет использоваться только для приёмо-передачи SPAN-трафика.
- Фреймы L2, такие как CDP, VTP, DTP и STP BPDU, по умолчанию не копируются, но вы можете указать SPAN/RSPAN копировать их в любом случае.
2.3. TAP Device
Сетевой TAP (Test Access Point) — это устройство, которое напрямую подключается к кабельной инфраструктуре сети. Оно устанавливается между двумя сетевыми устройствами и служит для мониторинга сетевого трафика.
С помощью внутреннего делителя TAP создаёт копию данных, которая отправляется на порт мониторинга, в то время как исходные данные продолжают передаваться по сети. Большинство TAP копируют потоки передачи от устройств A и B, отправляя их в отдельные порты мониторинга (TxA и TxB).

TAP обеспечивает полное зеркалирование в независимости от размера и типа пакета, с ошибкой он или без, весь трафик между устройствами А и В, будет на 100% зеркалирован. Как только трафик попадает в TAP, он сразу же отражается и может быть использован для различных целей, таких как мониторинг, обеспечение безопасности или анализ. TAP является важным элементом любой системы, обеспечивающей видимость сети. Важно отметить, что для подключения TAP к существующему сетевому соединению необходимо временно отключить кабель. Поэтому TAP обычно устанавливаются во время технического обслуживания сети.

TAP может быть очень полезен в ситуациях, когда оборудование не поддерживает зеркалирование трафика или когда у нас нет доступа к управлению устройством (например, заказчик не предоставляет такой доступ). В таких случаях мы можем использовать TAP для прослушивания 10-гигабитного линка.
2.4. Плюсы и минусы Network Based способа.
Этот метод сбора трафика очень эффективен, и по факту мы упираемся только в пропускную способность.
Плюсы:
- Процессор работает с минимальной нагрузкой, а обычное зеркалирование осуществляется с помощью ASIC-микросхем. Это не требует от сетевого устройства больших усилий. Система сбора и анализа обрабатывает данные, распаковывает их и проводит глубокий анализ.
- Нет необходимости вносить изменения в топологию и логику работы сети.
Минусы:
- Слишком много трафика. Обычно трафик мониторят на магистральных коммутаторах или на коммутаторах ядра, чтобы видеть как можно больше информации. Это огромный вызов для систем которые слушают и анализируют этот трафик, нужны большие вычислительные мощности, огромное дисковое пространство чтобы хранить дамп этого трафика.
- Нет видимости всех сетевых взаимодействий. Из-за того что трафик снимают на «избранных» центральных узлах, далеко не всё идёт через них. Если два сервера или пользователя находятся в одном VLAN, то есть большой шанс, что они взаимодействуют на уровне L2, не доходя до ядра сети, а настроить SPAN-порт на каждом коммутаторе — практически нереализуемая задача.
Так как же снимать трафик проходящий через все устройства? Для это цели был разработан третий способ…
3. Flow Based
Метод Flow Based позволяет собирать данные о трафике с помощью специальных протоколов, таких как Netflow и Sflow. Эта информация включает в себя следующие параметры: source-адрес, destination-адрес, протокол, source- и destination-порты, а также TCP-флаги. По сути, это заголовки пакетов без их содержимого.

Данные телеметрии собираются со всего оборудования, где настроен экспорт, и передаются на Flow Analyzer. Этот инструмент обеспечивает возможность проведения различной аналитики, создания отчетов по трафику и оказания помощи в решении различных задач. Есть множество как коммерческих решений анализа, так и бесплатных.
Давайте подробнее рассмотрим процесс настройки экспорта NetFlow на Cisco IOS, взяв в качестве примера следующую топологию:

С левой стороны у нас расположен хост, который будет подключаться к интернету через R1. В нижней части находится сервер ntop. Это программное обеспечение для анализа трафика с открытым исходным кодом, поддерживающее NetFlow.
Давайте пока сосредоточимся на том как настроить маршрутизатор. Сначала указываем сервер:
R1(config)#ip flow-export destination 10.10.10.100 2055
Маршрутизатор экспортирует все потоки в 10.10.10.100 с целевым UDP-портом 2055. NetFlow поддерживает несколько версий, поэтому, если вы хотите использовать определенную версию, вот как это сделать:
R1(config)#ip flow-export version 9
Мы настроили маршрутизатор на использование версии 9. При желании мы можем настроить интерфейс, который маршрутизатор должен использовать как источник экспорта:
R1(config)#ip flow-export source GigabitEthernet 0/0
Последнее, что нам нужно сделать, это указать маршрутизатору, на каких интерфейсах отслеживать потоки:
R1(config)#interface gigabitEthernet 0/1
R1(config-if)#ip route-cache flow
Для этого я использую команду ip route-cache flow. Когда вы используете эту команду, она будет отслеживать все входящие потоки на физическом и всех сабинтерфейсах. Вы также можете использовать команды ip flow egress или ip flow ingress, если хотите включить ее только на одном подинтерфейсе или в одном направлении.
Теперь давайте приступим к проверке:
R1#show ip flow export
Flow export v9 is enabled for main cache
Export source and destination details :
VRF ID : Default
Source(1) 192.168.18.21 (GigabitEthernet0/0)
Destination(1) 10.10.10.100 (2055)
Version 9 flow records
357 flows exported in 27 udp datagrams
0 flows failed due to lack of export packet
0 export packets were sent up to process level
0 export packets were dropped due to no fib
0 export packets were dropped due to adjacency issues
0 export packets were dropped due to fragmentation failures
0 export packets were dropped due to encapsulation fixup failures
Выше вы можете увидеть версию NetFlow, источник, назначение и количество экспортированных потоков. С помощью следующей команды вы можете просмотреть информацию о потоках:
R1# show ip cache flow
IP packet size distribution (5312 total packets):
1-32 64 96 128 160 192 224 256 288 320 352 384 416 448 480
.000 .574 .305 .019 .020 .013 .010 .005 .003 .002 .004 .001 .000 .007 .000
512 544 576 1024 1536 2048 2560 3072 3584 4096 4608
.000 .000 .022 .002 .002 .000 .000 .000 .000 .000 .000
IP Flow Switching Cache, 278544 bytes
0 active, 4096 inactive, 383 added
9467 ager polls, 0 flow alloc failures
Active flows timeout in 30 minutes
Inactive flows timeout in 15 seconds
IP Sub Flow Cache, 34056 bytes
0 active, 1024 inactive, 383 added, 383 added to flow
0 alloc failures, 0 force free
1 chunk, 1 chunk added
last clearing of statistics never
Protocol Total Flows Packets Bytes Packets Active(Sec) Idle(Sec)
-------- Flows /Sec /Flow /Pkt /Sec /Flow /Flow
TCP-WWW 14 0.0 25 111 0.0 137.4 1.6
TCP-other 185 0.0 25 90 0.2 2.1 9.9
UDP-DNS 164 0.0 1 62 0.0 1.4 15.5
ICMP 20 0.0 2 322 0.0 12.7 15.6
Total: 383 0.0 13 93 0.3 7.3 12.3
SrcIf SrcIPaddress DstIf DstIPaddress Pr SrcP DstP Pkts
Настройка ntop выходит за рамки данной статьи, но он вполне себе хорошо работает «из коробки» просто скачиваем с помощью пакетного менеджера и заходим по http://<аддресс-сервера>:3000. Проверим что трафик от клиента виден на сервере:

Отлично, мы видим куда ходит клиент с адресом 10.10.10.10!