В практике веб-разработчика нередко возникают ситуации, когда требуется отследить и проанализировать трафик приложений, общающихся с сервером по протоколу HTTP (в качестве примера можно привести тестирование приложений для мобильных устройств или HTTP API).
Инструменты, традиционно используемые для прослушивания трафика (tshark, о котором мы уже писали, а также ngrep и tcpdump) для этой цели подходят плохо: функциональность для работы с протоколом HTTP у них ограничена.
Для анализа HTTP-трафика существует более специализированное, простое и эффективное решение. Знакомьтесь: mitmproxy. На русском языке подробных публикаций о нем почти нет. В этой статье мы поделимся своим опытом работы с mitmproxy и надеемся, что и вам он окажется полезным.
Общая информация
Mitmproxy представляет собой целый набор программных инструментов, в который входят:
- собственно mitmproxy — интерактивная консольная программа, перехватывающая трафик «на лету»;
- mitmdump — утилита, которую можно описать как аналог tcpdump для протокола HTTP: она перехватывает трафик и сохраняет всю информацию о нем в текстовый файл;
- libmproxy — библиотека для Python, с помощью которой реализуется вся функциональность mitmproxy.
Само название mitmproxy происходит от аббревиатуры MITM, что означает man in the middle, или «человек посередине». Так называется метод компрометации канала связи, в котором взломщик подключается к каналу передачи между двумя контрагентами и вмешивается в протокол передачи, просматривая, удаляя и искажая информацию. mitmproxy работает похожим образом: он используется в качестве прокси-сервера, регистрируя весь HTTP-трафик. Как и любой прокси-сервер, в некоторых случаях mitmproxy может видоизменять как запросы пользователя, так и ответы на них.
Рассмотрим принципы и особенности mitmproxy более подробно.
Как это работает
В случае с незашифрованными HTTP-соединениями все просто: mitmproxy принимает соединение от клиента (например, от браузера на мобильном устройстве), отображает информацию о нем на консоли (или сохраняет в текстовый файл), а затем возвращает клиенту ответ от получателя запроса.
Mitmproxy можно использовать и для перехвата защищенного HTTPS-трафика. При запуске mitmproxy или mitmdump в директории ~/.mitmproxy создается набор файлов CA, на основе которых генерируются подменные сертификаты. Естественно, что браузер будет эти сертификаты определять как подозрительные, выдавая при каждой попытке установить SSL-соединение с помощью mitmproxy соответствующее предупреждение.
Чтобы этого предупреждения не было, можно добавить сертификат от mitmproxy в список сертификатов, используемых браузером (с подробными инструкциями можно ознакомиться здесь).
При выполнении этих двух условий клиент делает вывод о том, что устанавливаемое соединение является безопасным.
Mitmproxy может перехватывать и защищенный HTTPS-трафик. Процедура перехвата состоит из следующих шагов:
- Клиент устанавливает соединение с mitmproxy.
- Mitmproxy отправляет клиенту ответ с кодом 200 (соединение установлено).
- Клиент взаимодействует с mitmproxy так же, как и с удаленным сервером, и устанавливает SSL-соединение. Чтобы указать имя хоста, он использует SNI.
- Mitmproxy подключается к серверу и устанавливает SSL-соединение, используя указанное клиентом имя хоста.
- В ответе сервер передает SSL-сертификат, содержащий значения параметров CN и SAN, на основе которых затем будет создан подменный сертификат.
- Mitmproxy генерирует подменный сертификат и продолжает SSL-диалог с клиентом, приостановленный на этапе 3.
- Клиент отправляет запроc через установленное SSL-соединение.
- Mitmproxy передает запрос серверу через SSL-соединение, установленное на этапе 4.
Более наглядно процесс перехвата защищенного трафика можно представить в виде следующей графической схемы:
Зачем это нужно
Само название mitmproxy происходит от названия одного из самых распространенных видов атак. Даже официальная документация к продукту изобилует такими словами, как «атака», «перехват» и подобными. Все это наводит на мысли о том, что этот инструмент может выступать в качестве орудия взлома. Конечно, mitmproxy (как и все продукты с аналогичным набором функций — так называемые сниферы) вполне может быть использован для нелегальных целей, но мы по вполне понятным причинам обсуждать это не будем и сосредоточимся на легальных вариантах использования.
Mitmproxy можно использовать, во-первых, для тестирования и отладки веб-приложений. С его помощью можно получать подробную информацию о том, какие запросы делает приложение и какие ответы оно получает. Также mitproxy может помочь в изучении особенностей функционирования некоторых REST API, в особенности плохо документированнных и использующих закрытые (и зачастую- очень подозрительные) технологии.
Во-вторых, Mitmproxy может работать в режиме прозрачного прокси с перехватом трафика, а это значит, что его можно использовать для анализа сетевой активности подозрительных приложений.
Тестируем Mitmproxy
Установка
Сегодня mitmproxy включен в репозитории linux-систем и может быть установлен при помощи стандартного менеджера пакетов:
$ sudo aptitude install mitmproxy
Можно также установить его другими способами:
$ pip install mitmproxy
или
$ easy_install mitmproxy
Первый запуск
Посмотрим на конкретных примерах, как работает mitmproxy. Откроем браузер (в нашем случае это Firefox) и в настройках (меню «Настройки» → «Сеть» → «Соединение») и в разделе «Ручная настройка сервиса прокси» укажем в качестве прокси-сервера машину, на которой установлен mitmproxy.
Теперь подключимся к серверу, на которому установлен mitmproxy, по ssh и выполним следующую команду:
$ mitmproxy
Консоль после этого будет выглядеть так:
Чтобы выйти из этого режима, нужно нажать клавишу q. Получить справку можно, нажав комбинацию клавиш, обозначающую вопросительный знак (?).
Теперь откроем в браузере любой сайт — например, ya.ru. Все запросы к этому сайту будут выводиться на консоль:
Перемещаться по списку запросов можно, нажимая на клавиши со стрелками. Вернуться в основное окно можно, нажав на клавишу q. Чтобы просмотреть подробную информацию о некотором запросе, нужно подвести к нему курсор и нажать на клавишу Enter:
В поле Request отображается подробная информация о запросе (запрашиваемый хост, ПО, с помощью которого осуществлялся запрос, передаваемые заголовки), а в поле Response — информация о полученном ответе.
Переключаться между этими полями можно при помощи клавиши Tab. Вернуться к списку запросов можно, нажав на клавишу q.
Запросы и ответы на них можно изменять. Для этого нужно использовать так называемые фильтры перехвата (interception filters). Чтобы ввести фильтр, нужно нажать на клавишу i. Введем в качестве фильтра, например, ya.ru Все запросы, содержащие этот адрес, будут перехватываться. Перехваченные запросы в списке будут подсвечиваться оранжевым цветом:
Такие запросы не будут обрабатываться, если мы их не примем. Чтобы принять запрос, нужно подвести к нему курсор и нажать на клавишу а, а чтобы принять все перехваченные запросы — на клавишу A.
Более подробную информацию о запросе можно просмотреть, подведя к нему курсор и нажав на клавишу E (E- первая буква в английском слове event — «событие»). Будет открыт лог событий, который имели место при обработке этого запроса:
И запросы, и ответы можно редактировать. Функция редактирования может оказаться полезной при тестировании: можно, например, смоделировать определенную ситуацию и увидеть, как будет вести себя приложение, получив от сервера определенный ответ.
Подведём курсор к интересующему нас запросу, подведём к нему курсор и нажмём на клавишу Enter. Затем подведём курсор к полю Request и нажмём на клавишу E (первая буква в слове edit — редактировать). В нижней части консоли появится меню редактирования:
Изменить можно как запрос целиком (клавиша Q), так и его отдельные параметры: путь (клавиша P), URL (U), заголовок (H), форму (F), тело ® и метод (M).
Аналогичным образом осуществляется редактирование ответа. Отредактировать можно его код (клавиша C), сообщение (M), заголовки (H) и тело ®.
Дополнительные функции
Аутентификация на прокси-сервере
В mitmproxy можно активировать режим аутентификации пользователей перед использованием прокси. Заголовки аутентификации из запросов удаляются и на вышестоящие серверы на передаются. На сегодняшний день поддерживается только базовая HTTP-аутентификация. Настройка аутентификации осуществляется при помощи следующих опций:
#запретить анонимным пользователям пользоваться прокси $ mitmproxy --nonanonymous #разрешить пользоваться прокси только указанному пользователю $ mitmrpoxy --singleuser <имя пользователя> #разрешить пользоваться прокси только при вводе одного из указанных в файле паролей; $ mitmproxy —htpasswd <путь к файлу с паролями>
Привязка cookies
Функция привязки cookies (sticky cookies) полезна при работе с сервисами, требующими авторизации. Достаточно авторизоваться на таком сервисе один раз, и mitmproxy будет автоматически добавлять соответствующий cookie к каждому запросу. После этого все запросы будут передаваться на сервер без повторной авторизации.
Режим привязки cookies активируется так:
$ mitmproxy -t <фильтр>
Ко всем проксируемым запросам можно также добавлять заголовки авторизации. Для этого используется опция -u.
Режим reverse proxy
В этом режиме все запросы отсылаются к вышестоящему серверу. Mitmproxy в данном случае можно использовать в качестве временной прослойки, наблюдая и перехватывая запросы.
Режим reverse proxy активируется при помощи команды:
$ mitmproxy -P http[s]://hostname[:port]
Функция anticache
Mitmproxy может убирать из запроса заголовки if-modified-since и if-none-match. Благодаря этому всегда можно просмотреть полный ответ от сервера, даже если браузер сообщает, что запрашиваемый документ есть в кэше.
Активируется эта функция при помощи следующей команды:
$ mitmproxy --anticache
Воспроизведение клиентских запросов
Функция воспроизведения клиентских запросов (client side replay) позволяет воспроизводить запросы из сохраненных ранее HTTP-диалогов. Запросы исполняются один за другим: отправив один запрос, mitmproxy ждет ответа от сервера, и только потом приступает к следующему. Поэтому поведение клиента может отличаться от записанного в сохраненный диалог, в котором некоторые запросы могли выполняться одновременно.
Воспроизвести клиентские запросы можно при помощи команды:
$ mitmproxy -c <путь к сохраненному диалогу>
Mitmdump
Как уже было сказано выше, Mitmdump представляет собой утилиту, работающая точно так же, как и tcpdump, только для протокола HTTP. Она перехватывает весь HTTP-трафик и записывает информацию о нем в отдельный текстовый файл.
Чтобы начать работу с mitmdump, нужно запустить mitmproxy в режиме прокси-сервера, а затем выполнить следующую команду:
$ mitmdump -w <имя файла>
Сохраненную информацию можно отфильтровать при помощи регулярных выражений, а затем сохранить в новый файл:
$ mitmdump -nr <файл1> -w <файл2> "~m post"
В приведенном примере mitmdump отбирает из файла 1 запросы, соответствующие определенному критерию (в нашем случае — POST-запросы), и записывает их в файл 2.
Mitmdump может считать уже сохраненную информацию о клиентских запросах из файла, воспроизвести эти запросы повторно, а результаты сохранить в новый файл:
$ mitmdump -nc <файл 1> -w <файл 2>
Эта функция может оказаться полезной при тестировании некоторых веб-приложений.
Заключение
В этой статье мы дали краткий обзор возможностей mitmproxy. Для желающих узнать больше приводим несколько ссылок:
- официальная документация mitmproxy;
- статья об отслеживании трафика мобильных приложений;
- описание принципов работы Mitmproxy от разработчика — Альдо Кортези.
Читателей, которые по тем или иным причинам не имеют возможности оставлять комментарии здесь, приглашаем в наш блог.
Wireshark — это мощный сетевой анализатор, который может использоваться для анализа трафика, проходящего через сетевой интерфейс вашего компьютера. Он может понадобиться для обнаружения и решения проблем с сетью, отладки ваших веб-приложений, сетевых программ или сайтов. Wireshark позволяет полностью просматривать содержимое пакета на всех уровнях: так вы сможете лучше понять как работает сеть на низком уровне.
Все пакеты перехватываются в реальном времени и предоставляются в удобном для чтения формате. Программа поддерживает очень мощную систему фильтрации, подсветку цветом, и другие особенности, которые помогут найти нужные пакеты. В этой инструкции мы рассмотрим, как пользоваться Wireshark для анализа трафика. Недавно разработчики перешли к работе над второй веткой программы Wireshark 2.0, в неё было внесено множество изменений и улучшений, особенно для интерфейса. Именно её мы будем использовать в этой статье.
Перед тем, как переходить к рассмотрению способов анализа трафика, нужно рассмотреть, какие возможности поддерживает программа более подробно, с какими протоколами она может работать и что делать. Вот основные возможности программы:
- Захват пакетов в реальном времени из проводного или любого другого типа сетевых интерфейсов, а также чтение из файла;
- Поддерживаются такие интерфейсы захвата: Ethernet, IEEE 802.11, PPP и локальные виртуальные интерфейсы;
- Пакеты можно отсеивать по множеству параметров с помощью фильтров;
- Все известные протоколы подсвечиваются в списке разными цветами, например TCP, HTTP, FTP, DNS, ICMP и так далее;
- Поддержка захвата трафика VoIP-звонков;
- Поддерживается расшифровка HTTPS-трафика при наличии сертификата;
- Расшифровка WEP-, WPA-трафика беспроводных сетей при наличии ключа и handshake;
- Отображение статистики нагрузки на сеть;
- Просмотр содержимого пакетов для всех сетевых уровней;
- Отображение времени отправки и получения пакетов.
Программа имеет множество других функций, но это были те основные, которые могут вас заинтересовать.
Как пользоваться Wireshark
Я предполагаю, что программа у вас уже установлена, но если нет, то вы можете ее установить из официальных репозиториев. Для этого наберите команду в Ubuntu:
sudo apt install wireshark
После установки вы сможете найти программу в главном меню дистрибутива. Запускать Wireshark нужно с правами суперпользователя, потому что иначе она не сможет анализировать сетевые пакеты. Это можно сделать из главного меню или через терминал с помощью команды для KDE:
kdesu wireshark
А для Gnome / Unity:
gksu wireshark
Главное окно программы разделено на три части: первая колонка содержит список доступных для анализа сетевых интерфейсов, вторая — опции для открытия файлов, а третья — помощь.
Анализ сетевого трафика
Для начала анализа выберите сетевой интерфейс, например eth0, и нажмите кнопку Start.
После этого откроется следующее окно, уже с потоком пакетов, которые проходят через интерфейс. Это окно тоже разделено на несколько частей:
- Верхняя часть — это меню и панели с различными кнопками;
- Список пакетов — дальше отображается поток сетевых пакетов, которые вы будете анализировать;
- Содержимое пакета — чуть ниже расположено содержимое выбранного пакета, оно разбито по категориям в зависимости от транспортного уровня;
- Реальное представление — в самом низу отображается содержимое пакета в реальном виде, а также в виде HEX.
Вы можете кликнуть по любому пакету, чтобы проанализировать его содержимое:
Здесь мы видим пакет запроса к DNS, чтобы получить IP-адрес сайта, в самом запросе отправляется домен, а в пакете ответа мы получаем наш вопрос, а также ответ.
Для более удобного просмотра можно открыть пакет в новом окне, выполнив двойной клик по записи:
Фильтры Wireshark
Перебирать пакеты вручную, чтобы найти нужные, очень неудобно, особенно при активном потоке. Поэтому для такой задачи лучше использовать фильтры. Для ввода фильтров под меню есть специальная строка. Вы можете нажать Expression, чтобы открыть конструктор фильтров, но там их очень много, поэтому мы рассмотрим самые основные:
- ip.dst — целевой IP-адрес;
- ip.src — IP-адрес отправителя;
- ip.addr — IP отправителя или получателя;
- ip.proto — протокол;
- tcp.dstport — порт назначения;
- tcp.srcport — порт отправителя;
- ip.ttl — фильтр по ttl, определяет сетевое расстояние;
- http.request_uri — запрашиваемый адрес сайта.
Для указания отношения между полем и значением в фильтре можно использовать такие операторы:
- == — равно;
- != — не равно;
- < — меньше;
- > — больше;
- <= — меньше или равно;
- >= — больше или равно;
- matches — регулярное выражение;
- contains — содержит.
Для объединения нескольких выражений можно применять:
- && — оба выражения должны быть верными для пакета;
- || — может быть верным одно из выражений.
Теперь рассмотрим подробнее на примерах несколько фильтров и попытаемся понять все знаки отношений.
Сначала отфильтруем все пакеты, отправленные на 194.67.215.125 (losst.pro). Наберите строку в поле фильтра и нажмите Apply. Для удобства фильтры Wireshark можно сохранять с помощью кнопки Save:
ip.dst == 194.67.215.125
А чтобы получить не только отправленные пакеты, но и полученные в ответ от этого узла, можно объединить два условия:
ip.dst == 194.67.215.125 || ip.src == 194.67.215.125
Дальше отберём пакеты с ttl меньше 10:
ip.ttl < 10
Также мы можем отобрать переданные большие файлы:
http.content_length > 5000
Отфильтровав Content-Type, мы можем выбрать все картинки, которые были загружены; выполним анализ трафика Wireshark, пакеты, которого содержат слово image:
http.content_type contains image
Чтобы очистить фильтр, вы можете нажать кнопку Clear. Бывает, вы не всегда знаете всю необходимую для фильтрации информацию, а просто хотите изучить сеть. Вы можете добавить любое поле пакета в качестве колонки и посмотреть его содержимое в общем окне для каждого пакета.
Например, я хочу вывести в виде колонки ttl (время жизни) пакета. Для этого откройте информацию о пакете, найдите это поле в разделе IP. Затем вызовите контекстное меню и выберите опцию Apply As Column:
Далее вы увидите нужную колонку после обновления:
Таким же образом можно создать фильтр на основе любого нужного поля. Выберите его и вызовите контекстное меню, затем нажмите Apply as filter или Prepare as filter, затем выбираем Selected, чтобы вывести только выбранные значения, или Not selected, чтобы их убрать:
Указанное поле и его значение будет применено или во втором случае подставлено в поле фильтра:
Таким способом вы можете добавить в фильтр поле любого пакета или колонку. Там тоже есть эта опция в контекстном меню. Для фильтрации протоколов вы можете использовать и более простые условия. Например, выполним анализ трафика Wireshark для протоколов HTTP и DNS:
http || dns
Еще одна интересная возможность программы — использование Wireshark для отслеживания определённого сеанса между компьютером пользователя и сервером. Для этого откройте контекстное меню для пакета и выберите Follow TCP stream.
Затем откроется окно, в котором вы найдете все данные, переданные между сервером и клиентом:
Диагностика проблем Wireshark
Возможно, вам интересно, как пользоваться Wireshark 2.0 для обнаружения проблем в сети. Для этого в левом нижнем углу окна есть круглая кнопка, при нажатии на неё открывается окно Expet Tools. В нём Wireshark собирает все сообщения об ошибках и неполадках в сети:
Окно разделено на такие вкладки, как Errors, Warnings, Notices, Chats. Программа умеет фильтровать и находить множество проблем с сетью, и тут вы можете их очень быстро увидеть. Здесь тоже поддерживаются фильтры Wireshark.
Анализ трафика Wireshark
Вы можете очень просто понять, что именно скачивали пользователи и какие файлы они смотрели, если соединение не было зашифровано. Программа очень хорошо справляется с извлечением контента.
Для этого сначала нужно остановить захват трафика с помощью красного квадрата на панели. Затем откройте меню File -> Export Objects -> HTTP:
Далее в открывшемся окне вы увидите все доступные перехваченные объекты. Вам достаточно экспортировать их в файловую систему. Вы можете сохранять как картинки, так и музыку.
Дальше вы можете выполнить анализ сетевого трафика Wireshark или сразу открыть полученный файл другой программой, например плеером.
Выводы
В этой статье мы рассмотрели, как пользоваться Wireshark 2 для анализа сетевого трафика, а также примеры решения проблем с сетью. Это очень мощная утилита, которая имеет очень много функций. Всю её функциональность невозможно охватить в одной статье, но приведенной здесь базовой информации будет вполне достаточно, чтобы вы могли сами освоить всё необходимое.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Mitmproxy — это набор инструментов, предоставляющих интерактивный перехватывающий прокси-сервер с поддержкой SSL/TLS для HTTP/1, HTTP/2 и WebSockets. Он позволяет посмотреть, какие запросы отправляет служба или приложение на вашем компьютере и какие ответы получает.
Чаще всего MITM Proxy используют для проведения тестов. Например, он помогает:
- Убедиться, что приложение отправляет правильные данные на серверную часть.
- Проверить, отвечает ли серверная часть ожидаемой информации в приложении.
- Имитировать сценарии ошибки 400 при неверном запросе из приложения.
- Имитировать отправку неверных данных на сервер.
В основе этих операций лежит сниффинг трафика. Это простейший метод анализа, который позволяет осуществить перехват HTTPS-трафика, HTTP-трафика и Websockets.
Основные возможности:
- Перехват запросов и ответов HTTP и HTTPS.
- Изменение данных на лету.
- Сохранение сессий для анализа и воспроизведения.
- Воспроизведение запросов и ответов на стороне клиента.
- Обратное проксирование для перенаправления трафика.
- Автоматизация изменений HTTP-трафика через mitmproxy Python script.
- Генерирование SSL/TLS-сертификатов, необходимых для перехвата HTTPS-трафика.
Узнать больше о функциональности набора, в том числе об особенностях работы mitmproxy в Python, вы можете из документации.
Основные инструменты
Инструменты проекта mitmproxy представляют собой набор внешних интерфейсов, предоставляющих общую базовую функциональность. Когда мы говорим о mitmproxy, то имеем в виду любой из трех инструментов. Это просто разные интерфейсы для одного и того же основного прокси.
- mitmproxy — это сам перехватывающий прокси-сервер,
- mitmweb — веб-интерфейс для mitmproxy,
- mitmdump — инструмент для работы с прокси через командную строку.
mitmproxy — это консольный инструмент, который позволяет интерактивно проверять и изменять HTTP-трафик. Отличается от mitmdump тем, что все потоки хранятся в памяти. Это значит, что он предназначен для взятия и манипулирования небольшими выборками.
mitmweb — это веб-интерфейс пользователя mitmproxy, который позволяет интерактивно проверять и модифицировать HTTP-трафик. Как и mitmproxy, он отличается от mitmdump тем, что все потоки хранятся в памяти, а это значит, что он предназначен для взятия и обработки небольших выборок.
mitmdump — это расширение командной строки для mitmproxy. Он предоставляет функциональные возможности, подобные tcpdump, позволяющие просматривать, записывать и программно преобразовывать HTTP-трафик. С его помощью удобно обрабатывать большие выборки, в том числе с помощью скриптов.
Так, с помощью mitmdump можно сохранить информацию о трафике в файл:
mitmdump -w outfile
Запустите mitmdump в режиме прокси и запишите весь трафик в outfile командой выше.
Доступна также фильтрация сохраненного трафика:
mitmdump -nr infile -w outfile "~m post"
Запустите mitmdump без привязки к порту прокси (-n), прочитайте все потоки из infile, примените указанное выражение фильтра (соответствует только POST) и запишите в outfile.
Как работает mitmproxy
Mitmproxy — чрезвычайно гибкий инструмент для настройки прокси. Точное знание того, как работает процесс проксирования, поможет вам правильно применять его для HTTP-прокси и HTTPS-прокси, принимая во внимание основные трудности и способы их обхода.
HTTP
Настройка клиента для использования mitmproxy в качестве явного прокси — самый простой и надежный способ перехвата трафика. Протокол HTTP кодифицирован в HTTP RFC, поэтому поведение как клиента, так и сервера четко определено и, как правило, надежно. В простейшем возможном взаимодействии с mitmproxy клиент подключается напрямую к прокси и делает запрос, который выглядит следующим образом:
GET http://example.com/index.html HTTP/1.1
Это прокси-запрос GET — расширенная форма HTTP-запроса GET, включающая схему и спецификацию хоста, а также всю информацию, необходимую mitmproxy для работы.
В таком случае порядок работы будет следующий:
- Клиент подключается к прокси и делает запрос.
- Mitmproxy подключается к вышестоящему серверу и просто пересылает запрос.
HTTPS
Процесс для явно проксируемого HTTPS-соединения совершенно другой. Клиент подключается к прокси и делает запрос, который выглядит так:
CONNECT example.com:443 HTTP/1.1
Обычный прокси-сервер не может ни просматривать, ни манипулировать потоком данных, зашифрованным с помощью TLS. Поэтому запрос CONNECT просто просит прокси-сервер открыть канал между клиентом и сервером. Прокси здесь всего лишь посредник — он слепо пересылает данные в обе стороны, ничего не зная о содержимом. Согласование TLS-соединения происходит по этому каналу. Последующий поток запросов и ответов полностью непрозрачен для прокси-сервера.
Именно здесь вступает в игру фундаментальный трюк mitmproxy. Название MITM расшифровывается как Man-In-The-Middle — отсылка к процессу перехвата и вмешательства в потоки данных, которые должны быть непрозрачными.
Основная идея MITM состоит в том, чтобы притворяться сервером для клиента и клиентом для сервера. На самом деле, вы находитесь посередине. Такая позиция позволяет расшифровывать трафик, который идет с обеих сторон.
Но о MITM знаем не только мы, но и люди, которые занимаются информационной безопасностью. Чтобы бороться с такими атаками, они придумали использовать центр сертификации. Через него доверенная третья сторона подписывает сертификаты сервера. Все подписи проверяются. Если у клиента возникают вопросы к легальности сертификата, соединение разрывается.
Система сертификации работает неидеально, но затыкает большую часть дыр, через которые можно использовать атаку MITM. Однако противодействовать этому все-таки можно — конечно, исключительно в целях тестирования собственных продуктов, а не взлома чужих.
Наш ответ на эту головоломку — стать доверенным центром сертификации самостоятельно. Mitmproxy включает в себя полную реализацию центра сертификации, который умеет создавать сертификаты. Чтобы клиент доверял им, мы регистрируем mitmproxy как доверенный ЦС на устройстве вручную.
Использование mitmproxy
Допустим, у вас есть веб-проект на cloud.timeweb.com. Вы хотите проверить, как он взаимодействует с клиентами. Сделать это поможет сниффер HTTP и HTTPS.
Установка набора приложений
В этой инструкции для примера будет использована версия mitmproxy для Windows. Использовать MITM HTTPS можно также на macOS и Linux. Руководства по установке доступны на официальном сайте утилиты.
Чтобы установить mitmproxy в Windows, загрузите установщик с сайта mitmproxy.org. После установки mitmproxy, mitmdump и mitmweb также добавляются в ваш PATH и могут быть вызваны из командной строки. Разработчики mitmproxy HTTPS рекомендуют также установить Windows Terminal — это бесплатный инструмент, который предлагает больше возможностей, чем стандартная командная строка Windows.
Запуск mitmproxy
Чтобы запустить mitmproxy, откройте командную строку (или Windows Terminal) и выполните команду:
mitmproxy
Сниффер HTTP-запросов запустится с привязкой к порту 8080. Интерфейс командной строки (CLI) имеет сочетания клавиш, подобные редактору Vim на Linux:
- q — выйти из утилиты;
- клавиши со стрелками или h, j, k, l — перемещение вверх и вниз по списку запросов;
- ? — отображение справки;
- Enter — подробности о выбранном запросе.
Mitmproxy также предлагает веб-интерфейс (mitmweb) для тех, кто предпочитает мышь, а не сочетания клавиш Vim. Расширенные функции удобнее использовать в веб-интерфейсе, CLI больше подходит, когда нужно быстро захватить и проанализировать HTTP-трафик.
Настройка прокси
Чтобы выполнить анализ HTTP-трафика, нужно настроить прокси. Посмотрим, как это сделать на примере Windows:
- Откройте настройки Windows.
- Перейдите в раздел «Сеть и интернет».
- Выберите вкладку «Прокси».
- Включите опцию «Использовать прокси».
- Укажите адрес прокси-сервера и номер порта. В данном случае это локальный адрес 127.0.0.1 и порт 8080.
- Сохраните изменения.
Когда вы подключаетесь к любому адресу, Windows будет отправлять трафик через прокси-сервер. Это позволит перехватывать запросы и ответы.
Добавление доверенного сертификата
Теперь вы знаете, что такое HTTP-прокси и как настроить его на Windows. Следующий шаг — подмена SSL-сертификата. Без этого не получится перехватывать трафик защищенных сайтов — браузер будет выдавать ошибку, предупреждая об атаке MITM (Man-In-The-Middle).
Атака «человек посередине» (MITM) — это угроза безопасности, при которой злоумышленник может получить доступ между входящими и исходящими запросами. Вы думаете, что разговариваете с Twitter.com, но вы разговариваете с «человеком посередине», который разговаривает с Twitter вместо вас. Этот MITM может просматривать все, что вы отправляете, и даже изменять то, что вы получаете.
Протокол HTTPS предотвращает атаки MITM. Протокол HTTPS довольно сложен, но все, что нам нужно знать, так это то, что HTTPS использует доверенный центр сертификации (CA) для подписи сертификата. Наши браузеры предполагают, что если доверенный ЦС подписывает сертификат, мы обращаемся непосредственно к тому, кем себя считаем.
Mitmproxy сгенерировал сертификат при первом запуске. Все, что нам нужно — это заставить сервер доверять этому сертификату.
Добавить mitmproxy SSL на Windows можно с помощью руководства из документации Microsoft.
Мониторинг трафика
HTTPS MITM Proxy настроен, доверенный сертификат добавлен. Теперь можно мониторить трафик: перехватывать все запросы и ответы, просматривать их и редактировать.
Запустите mitmproxy через командную строку или в веб-интерфейсе. Затем перейдите в браузере на сайт, трафик которого вы хотите изучить. В mitmproxy отобразятся запросы и ответы. Вы можете посмотреть подробности или внести изменения — например, увеличить нагрузку.
Теперь вы можете перехватывать и проверять его сетевые запросы. Это может быть очень удобно для отладки проблем и понимания того, как что-то работает, не копаясь в исходном коде.
Дополнительные возможности mitmproxy
Мы рассмотрели только самый простой сценарий, при котором сниффер HTTPS-трафика может быть полезен. На практике кейсов очень много. Например, часто используют mitmproxy на Android, чтобы проверить работоспособность мобильных приложений. Для этого необходимо добавить mitmproxy SSL Certificate в системное хранилище сертификатов в файловой системе Android. Без этого выполнить перехват HTTPS-трафика на Android нельзя.
На официальном сайте есть руководство, которое помогает настроить HTTPS-сниффер с помощью виртуальной машины. HTTPS MITM Proxy также имеет подключаемый модуль kubectl. Он предназначен для простого развертывания mitmproxy и использования прокси-серверов Kubernetes Services.
Больше всего вопросов при работе с программой WireShark у пользователей вызывают фильтры для захвата трафика. Сегодня мы рассмотри их основные примеры, и покажем, как их правильно настраивать!
В процессе анализа проблем с производительностью сети или приложений, если в вашей компании не установлено централизованной системы мониторинга производительности приложений, то для анализа проблем с 4 по 7 уровень сетевой модели OSI необходимо будет воспользоваться анализатором протоколов (он же сниффер).
Если у вас нет коммерческого решения с встроенными средствами автоматического анализа или экспертной системы, то, пожалуй, самый правильный путь будет такой:
-
скачать и установить на ноутбук один из лучших бесплатных анализаторов протоколов WireShark (http://www.wireshark.org/download.html);
-
освоиться с его интерфейсом;
-
изучить стек протоколов и их структуру;
-
научиться работать с фильтрами для захвата трафика;
-
научится работать с фильтрами для анализа трафика.
В рамках этой статьи мы остановимся на предпоследнем пункте – как настроить фильтры для захвата трафика в WireShark.
Примеры настройки фильтров WireShark для захвата трафика
После выбора интерфейса мы можем приступить или к захвату трафика в режиме — всё подряд, но делать это не рекомендуется, так как, например, при 50% загрузке гигабитного интерфейса для передачи 100 000 пакетов требуется всего несколько миллисекунд. Поэтому важно понимать, какую проблему мы решаем. Тогда у нас как минимум будет уже или адрес (IP или MAC) пользователя или приложение, на которое он жалуется или сервер, к которому он обращается.
Таким образом, самый простой фильтр в Wireshark – это IP адрес устройства (хоста, host) и выглядит этот фильтр следующим образом:
-
host 10.10.10.1
В случае если проблема глобальнее и нам необходимо захватить трафик с отдельной подсети независимо от направления его передачи, то применяем фильтр:
-
net 192.168.0.0/24 или net 192.168.0.0 mask 255.255.255.0
При захвате трафика от подсети фильтр будет выглядеть вот так:
-
src net 192.168.0.0/24 или src net 192.168.0.0 mask 255.255.255.0
А если надо увидеть для анализа только приходящий трафик в нашу подсеть, то любой из фильтров:
-
dst net 192.168.0.0/24
-
dst net 192.168.0.0 mask 255.255.255.0
Если пользователь жалуется, что у него не открываются странице в браузере, проблема может быть с DNS сервером (порт 53) или с протоколом HTTP (порт 80), тогда захватываем трафик с использованием фильтра «порт»:
-
port 53
Если мы решили захватить весь трафик для конкретного сервера без учета HTTP и FTP, то фильтр настраивается по любому из этих двух примеров:
-
host 192.168.0.1 and not (port 21 or port 80)
-
host 192.168.0.1 and not port 21 and not port 80
Если мы хотим видеть весь трафик на порту, кроме трафика DNS, FTP, ARP, то логика будет аналогичной:
-
port not dns and not 21 and not arp
При захвате трафика приложений, которые используют динамические порты из определенного диапазона, то фильтр будет сложно выглядеть в случае, если версия Libcap ниже чем 0.9.1:
-
(tcp[0:2] > 1500 and tcp[0:2] < 1550) or (tcp[2:2] > 1500 and tcp[2:2] < 1550)
если версии более поздние, то фильтр будет менее угрожающим и понятным:
-
tcp portrange 1501-1549
Для захвата кадров Ethernet типа EAPOL (Протокол передачи EAP-сообщений в стандарте 802.1x называется EAPOL (EAP encapsulation over LAN) ):
-
ether proto 0x888e
Для справки приведу список типов Ethernet кадров специфичных протоколов:
Ethertype (Hexadecimal) |
Протокол |
0x0000 — 0x05DC |
IEEE 802.3 length |
0x0101 — 0x01FF |
Experimental |
0x0600 |
XEROX NS IDP |
0x0660 0x0661 |
DLOG |
0x0800 |
IP, Internet Protocol |
0x0801 |
X.75 Internet |
0x0802 |
NBS Internet |
0x0803 |
ECMA Internet |
0x0804 |
Chaosnet |
0x0805 |
X.25 Level 3 |
0x0806 |
ARP, Address Resolution Protocol. |
0x0808 |
Frame Relay ARP [RFC1701] |
0x6559 |
Raw Frame Relay [RFC1701] |
0x8035 |
DRARP, Dynamic RARP. RARP, Reverse Address Resolution Protocol. |
0x8037 |
Novell Netware IPX |
0x809B |
EtherTalk (AppleTalk over Ethernet) |
0x80D5 |
IBM SNA Services over Ethernet |
0x 80F3 |
AARP, AppleTalk Address Resolution Protocol. |
0x8100 |
EAPS, Ethernet Automatic Protection Switching. |
0x8137 |
IPX, Internet Packet Exchange. |
0x 814C |
SNMP, Simple Network Management Protocol. |
0x86DD |
IPv6, Internet Protocol version 6. |
0x880B |
PPP, Point-to-Point Protocol. |
0x 880C |
GSMP, General Switch Management Protocol. |
0x8847 |
MPLS, Multi-Protocol Label Switching (unicast). |
0x8848 |
MPLS, Multi-Protocol Label Switching (multicast). |
0x8863 |
PPPoE, PPP Over Ethernet (Discovery Stage). |
0x8864 |
PPPoE, PPP Over Ethernet (PPP Session Stage). |
0x88BB |
LWAPP, Light Weight Access Point Protocol. |
0x88CC |
LLDP, Link Layer Discovery Protocol. |
0x8E88 |
EAPOL, EAP over LAN. |
0x9000 |
Loopback (Configuration Test Protocol) |
0x9100 |
VLAN Tag Protocol Identifier |
0x9200 |
VLAN Tag Protocol Identifier |
0xFFFF |
reserved. |
Если необходимо захватить трафик определенного IP протокола, то можно использовать фильтр:
-
ip proto tcp – захват TCP трафика
-
ip proto udp – захват UDP трафика
Для захвата IP трафика применяется самый короткий фильтр:
-
ip
Для захвата только unicast трафика при анализе трафика исходящего и приходящего к сетевому устройству используется фильтр в таком формате:
-
not broadcast and not multicast
Простые фильтры, о которых мы поговорили, можно объединять с помощью не сложных символов:
-
Отрицание: ! Или not
-
Объединение: && или and
-
Чередование: II или or
Пример: для захвата трафика от или к устройству с адресом 10.10.10.10, но не из сети 192.168.0.0 фильтр получится объединением с отрицанием:
-
host 10.10.10.10 && !net 192.168
Фильтры на основе байтов смещения являются самыми мощными и существенно упрощают жизнь, но для их использования надо знать протокол и размещение искомых полей в пакете. Приведенные ниже примеры фильтров позволят захватить пакеты с определенным значением поля в заголовках или полезной нагрузке. Настроить их несложно:
-
ip[8] = 1
Смещаемся на восемь байт в IP пакете и захватываем трафик со значением TTL =1
-
tcp[0:2] = 80
Захватываем все пакеты TCP с адресом порта отправителя 80. Это эквивалент фильтру src port 80.
Для справки приведем байт смещения до наиболее интересных полей в пакете:
Поле в пакете |
Длина в байтах |
Фильтр |
IP Header Length |
4 |
ip[0] & 0x0f |
IP Packet Length |
16 |
ip[2:2] |
IP TTL |
8 |
ip[8] |
IP Protocol |
8 |
ip[9] |
IP Address Source |
32 |
ip[12:4] |
IP Address Destination |
32 |
ip[16:4] |
IP Fragmentation |
flag = 3 and Offset = 13 |
ip[6:2] & 0x2000 = 0x2000 or ip[6:2] & 0x1fff !=0x0000 |
TCP Source Port |
16 |
tcp[0:2] |
TCP Destination Port |
16 |
tcp[2:2] |
TCP Header Length |
4 |
tcp[12] & 0xf0 |
TCP Flags |
8 |
tcp[13] |
TCP Window Size |
16 |
tcp[14:2] |
ICMP Type |
8 |
icmp[0] |
ICMP Code |
8 |
icmp[1] |
Для закрепления полученной информации построим фильтр для захвата трафика с запросом HTTP GET. Протокол HTTP использует порт 80, транспортный протокол TCP. Значения в шестнадцатеричной системе исчисления слова GET будет выглядеть 0x47455420. Пример фильтра, который получится у нас:
-
port 80 and tcp[((tcp[12:1] & 0xf0 >>2):4]=0x47455420
В рамках данного материала мы разобрали, как настроить и использовать наиболее простые базовые фильтры для захвата трафика с помощью анализатора протоколов Wireshark.
Всегда на связи, Игорь Панов.
Делитесь нашими статьями в соцсетях и задавайте вопросы в комментариях!
См. также:
- 5 недостатков Wireshark: в чём бесплатный сниффер проигрывает коммерческим аналогам?
- Диагностика сети и приложений с помощью OptiView XG
- Dumpcap: как правильно настроить
Своим мини обзором хочу рассказать об одном программном продукте, который очень хорошо помогает при анализе трафика. Да, продукт коммерческий, но по моему он того стоит. Имя ему ManageEngine NetFlow Analyzer.
Это web приложение, написанное на Java, в качестве http сервера выступает Apache, для хранения данных используется MySQL.
Используя NetFlow Analyzer возможно собственноручно конструировать функциональные «приборные панели», пригодные для мониторинга наиболее важных участков сетевой инфраструктуры. Каждая такая панель создается с учетом специфической роли отдельного администратора и может состоять из многочисленных элементов (виджетов), отвечающих за извлечение информации из различных источников.
Благодаря наглядности приборных панелей NetFlow Analyzer можно с первого взгляда оценить сложившуюся ситуацию, получить представление о текущей нагрузке на различные участки сети и изучить показатели производительности, не тратя времени на поиски и просмотр разрозненных отчетов. В комплект поставки NetFlow Analyzer включено более полусотни «виджетов».
Начнем с самого начала, т.е. установки и начальной настройки.
Установка NetFlow Analyzer.
Скачиваем под интересующую нас платформу (Windows, Linux), в нашем случае это Windows.
Запускаем.
Все компоненты ставятся в одну папку, по этому при желании можно выбрать любую.
Так же при установки запрашиваются порты, по которым будут работать сервисы. Порт web интерфейса и порт, на который будут приходить NetFlow пакеты.
Указываем, что бы запускалось как служба.
Указываем регистрационные данные
В общем все как всегда, “Далее”, “Далее”, “Согласен”, “Опять Далее”, “Финиш!”.
По завершению установки запускается браузер, которые попадает на страницу авторизации, по умолчанию пользователь admin, пароль admin.
Настройка микротика.
Тут все готово, теперь идем в консоль управления микротиком и направляем поток с данными на наш сервер.
Ну или все тоже самое, только из консоли:
/ip traffic-flow set enabled=yes
/ip traffic-flow target add address=192.168.1.78:9996 version=9
Первой командой активируем сервис, второй указываем принимающую точку, порт и версию протокола.
Начальная настройка NetFlow Analyzer.
Теперь войдем в NetFlow Analyzer и посмотрим что же у нас получилось. Первое, куда попадаем, это список интерфейсов, за которыми ведется наблюдение, в данном примере интерфейсы с именами IfIndex* это входящие соединения по vpn, интерфейсы comgate* и vcraft* это провайдеры, local это интерфейс локальной сети.
Если что то не получилось, то имеет смысл проверить соответствие портов, по которым анализатор слушает и порт, который указали в микротике. Перейдем в раздел Admin Operations, Product Settings.
Server Settings — Настройки сервера.
NetFlow / sFlow Listener Port – порт, на который принимаются потоки с устройств. WebServer Port – порт веб интерфейса. Count Of Top Records to Store – максимальное количество строк, выводимое в таблицах с данными.
DNS Settings – Настройки определения dns имен.
Resolve only when “Resolve DNS” link is clicked – По умолчанию выбрано, Определять имена по клику на “Resolve DNS”.
Resolve DNS names automatically by default- Определять имена автоматически (замедляется работа)
Resolved DNS count in cache – Размер DNS кэша.
User defined DNS names – Здаесь можно задать статические dns записи.
Наверное вторым местом, куда стоит заглянуть в настройках, это настройки для отправки почты.
DashBoard.
Как говорилось в самом начале интересной фишкой является DashBoard, который существует в некотором начальном состоянии.
Но администратор может сделать панель с виджетами “под себя”. На пример сделать что то вроде этого (не надо сильно вникать в смысл 🙂 я просто вытащил максимально возможные виджеты)
Туда — сюда или кто куда ходит и что качает.
Вернемся на вкладку интерфейсов и посмотрим статистику по одному конкретному.
Вкладка Application выводит информацию по типу трафика.
Клик по конкретной строчке и мы получаем детальную информацию. На пример информацию по http трафику.
Можно сократить результаты вывода до (на пример) 10 и сделать преобразование ip в имена (помогает очень не всегда).
Так же можно запросить детальный график каждого соединения.
Во вкладке Source получаем отчет по источникам трафика, и так же выбрав конкретный элемент получаем детализацию по нему.
Группы адресов.
Иногда интересно рассматривать трафик нескольких пользователей одновременно, на пример серверов, выполняющих одну и туже роль. В разделе Admin Operations есть подраздел IP Grouups, где можно объединить несколько адресов в группу, создать группу из целых подсетей и т.д.
Дальше уже можно получать все те же самые отчеты, но в разрезе адресов, объединенных в эту группу.
Для ленивых – отчеты по почте.
Наверное самая приятная вещь, которая мне понравилась, это возможность формировать отчеты и получать из по почте, не надо было каждое утро лезть в этот интерфейс и заказывать их, они просто приходили с утренней почтой. Заходим в раздел Admin Operations, в подраздел Schedule Reports.
В результате утром придет письмо, приблизительно такого содержания.
Где будет лежать по pdf-у на каждый интерфейс приблизительно такого содержания.
Заключение.
За сим буду прощаться, тот кто что то искал, тот, я думаю нашел, и если начнет копаться все глубже, то познает тайную магию Alert-ов, которые буду тебя извещать о проблемах в сети, а кому то пригодятся мелочи в раздели Billing. Напоследок скажу, что на сайте производителя Вы найдете бесплатную версию этого продукта, бесплатность там странная, 30 дней работает без ограничений, потом работает только с двумя интерфейсами, для простых конфигураций, где один локальный, а другой провайдер этого решения должно хватить.
-
Крайне благодарю за данный пост. Давненько уже хотел подобрать что-нибудь для подсчета трафика в микротике, но все никак не мог найти подходящее ПО.
-
А какой NetFlow Collector может делать отчет по трафику по месяцам? Для тарифов с лимитом по трафику это актуально. (примерно так как это делает Tmeter)
-
Извините за вопрос, а если несколько сотен VPN соединений, как искать нужного мне юзера, если он все имена под IfIndex* зафигачит???
-
о да…. есть такое, этот момент не слишком удобно сделан, хотя работает правильно, ведь при подключении vpn-щика создается интерфейс. Если адрес подключившегося статический, то можно заказывать отчет на конкретный адрес.
-
-
IfIndex* можно поменять на IfDescr, IfName или IfAlias после настройки SNMP, причем уже доступен v3
-
Спасибо Сергей, это было мне нужно. Но мой мониторинг не работает как ваш. Входяшие траффики не ресует. И у меня много Ifindex интерфейсов (Около 3000 штуков), как мне знать какой интерфейс именно ether1. Остолные должны быть PPPoE sessions. Извините за мой плохой русский язык.
-
я только начинаю, так что извиняйте..
как собирать статистику по ip за период времени?
небольшая сетка с одним роутером и надо собирать статы кто сколько накачал. -
Кто нибудь знает, как(где?) менять шаблоны писем для рассылки?
-
Сергей подскажите, а можно настроить NetFlow так чтоб он сам преобразовывал сам IP в имена DNS. (пробовал использовать Resolve DNS все равно отображаются IP и только вручную занесенные имена через панель управления отображаются….)
-
Уважаемый Сергей или удачно использующие сию программу для сбора статистики подскажите, кто сталкивался с проблемой неправильного отображения времени. Дело в том, что пол года собирал статистику не мог нарадоваться и вдруг в нашем государстве решили не переходить на зимнее время. На следующий же день после перехода, график dashboards стал отставать не на 1час а на 6часов 0_o.
На mikrotik на винде (после мелкософтовского патча) время в норме а вот netflow в норму не пришел((. Чет нигде решения не нашел. Делал вот это http://forums.manageengine.com/forumHome.do?forumGroupId=496160002007&forumTopicId=496162656775
Тоже не помогло. На семерке воткнул для теста netflow даже не подключая к маршрутизатору он сразу врет. Причем уже на 10 часов. Куда хоть думать, может кто знает? Буду очень признателен за помощь. -
hi sergery
i am config mikrotik netflow but this error in
«total traffic value available upto the second and application data is loaded once in 3 minutes in the database. this different is listed as unaccounted. «
please help me?
thansk-
Таже самая проблема.
Подскажите как решить. -
Возникла идентичная проблема при использовании новой версии апаратного МикроТика. Конфиги были перенесены со старого, на котором все работало.
-
-
Здравствуйте, вы приветствуете индивидуальную помощь(не безвозмездно)разумеется.
Вопрос в настройке MikroTika-
В принципе можно договориться, но все зависит от текущей загрузки, пишите в почту slagovskiy@gmail.com
-
-
Он может выводить отчет по SMTP трафику, а то поиск завирусованного спамера при использовании MikroTik не тривиальная задача?
-
Может, настраиваешь фильтр и получаешь что хочешь, плюс там уже сразу есть разделение трафика по типу.
А поиск спамера в микротике, активного спамера, легко фиксируется в фаерволе, в активных соединениях, если на один ip сотня соединений с внешним 25 портом, то что то тут не так.
-
дело в том что там крайне редко спам кто то шлет по 25 порту, обычно это если на 1 IP много разных нестандартных портов. Она может определять SMTP трафик по нестандартным портам?
-
-
-
При установке на линуксе, он спрашивает кем его назначать (дословно не помню) но примерно что-то типа: сервер или коллектор, в данном случае, какой вариант надо выбирать.
-
Сорри, я похоже не ту версию поначалу выбрал, вместо (Professional & Professional Plus Editions) — (Distributed Edition)
-
-
Подскажите пожалуйста как расшифровать интерфейсы IfIndex** ?
У меня vpn нету, есть только ether и vlan, а все показываются как IfIndex** -
Включил Traffic Flow на Mikrotik, в Targets указал ip-адрес компьютера в локальной сети на который установлен NetFlow Analyzer. При заходе в Dashboard только такая информация:
No device is currently exporting NetFlow / sFlow packets to NetFlow Analyzer.
Listening for NetFlow / sFlow Packets at Port 9996
Click here for instructions to enable NetFlow / sFlow Exports on the router / switch.Чего еще не хватает, чтобы связка заработала?
-
тоже самое
No device is currently exporting NetFlow / sFlow packets to NetFlow Analyzer.
что делать?
-