Проверка пакетов в службе наблюдения за сетями Azure

Функция записи пакетов в Наблюдателе за сетями позволяет инициировать и администрировать сеансы записи для виртуальных машин Azure с помощью портала, PowerShell и интерфейса командной строки, а также программно с использованием REST API и пакета SDK. Функция записи пакетов используется в ситуациях, когда для получения информации в удобной для использования форме вам нужны данные на уровне пакетов. Вы можете использовать доступные бесплатные средства для изучения потоков данных, отправляемых и получаемых виртуальными машинами, а также анализа сведений о сетевом трафике. Вот некоторые примеры использования данных о собранных пакетах: анализ проблем с сетью или приложениями, обнаружение попыток вторжения и нарушений в сети, поддержание соответствия нормативным требованиям. В этой статье мы покажем, как использовать популярное средство с открытым исходным кодом для работы с файлом записи пакетов, который создан службой наблюдения за сетями. Мы также приведем примеры, показывающие, как вычислить задержку подключения, выявить аномальный трафик и изучить статистику сети.

Перед началом

В этой статье рассматривается несколько предварительно настроенных сценариев на основе ранее выполненной операции записи пакетов. Эти сценарии демонстрируют возможности, связанные с использованием функции записи пакетов. В этом сценарии для работы с функцией записи пакетов используется средство WireShark.

Предполагается, что вы уже выполнили запись пакетов на виртуальной машине. Дополнительные сведения о выполнении записи пакетов см. в статьях Manage packet captures with the portal (Управление записью пакетов на портале Azure) и Managing Packet Captures with REST API (Управление записью пакетов с помощью интерфейса REST API).

Сценарий

В рамках этого сценария вы:

  • анализ записи пакетов;

расчет задержки в сети.

На примере этого сценария мы покажем, как определить время кругового пути (RTT) для начала сеанса TCP между двумя конечными точками.

Когда создается подключение TCP, первые три пакета обрабатываются в определенной последовательности, которая называется трехэтапным подтверждением. Проанализировав первые два пакета, отправленных в ходе подтверждения (исходный запрос от клиента и ответ от сервера), мы можем вычислить величину задержки для этого подключения. Такая задержка называется временем кругового пути. Дополнительные сведения о протоколе TCP и трехстороннем подтверждении см. в следующем ресурсе. https://support.microsoft.com/en-us/help/172983/explanation-of-the-three-way-handshake-via-tcp-ip

Шаг 1

Запустите WireShark

Шаг 2

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

Шаг 3

Чтобы просмотреть начальное время кругового пути (RTT) в беседах TCP, мы рассмотрим только первые два пакета, участвующих в подтверждении TCP. Мы будем использовать первые два пакета в трехстороннем подтверждении, которые являются пакетами [SYN], [SYN, ACK]. Они называются для флагов, заданных в заголовке TCP. Последний пакет в подтверждении, пакет [ACK], не будет использоваться в этом сценарии. Клиент отправляет пакет [SYN]. После получения сервер отправляет пакет [ACK] в качестве подтверждения получения SYN от клиента. Учитывая тот факт, что этот ответ почти не требует обработки на стороне сервера, мы можем считать, что разница во времени получения клиентом пакета [SYN, ACK] и отправки клиентом пакета [SYN] и составляет время кругового пути.

Это значение мы можем получить с помощью средства WireShark.

Чтобы упростить просмотр первых двух пакетов в трехстороннем подтверждении TCP, мы будем использовать функцию фильтрации, предоставляемую WireShark.

Чтобы применить фильтр, разверните в WireShark сегмент TCP для записанного пакета [SYN] и изучите флаги в соответствующем заголовке TCP.

Так как мы хотим выполнить фильтрацию по всем пакетам [SYN] и [SYN, ACK], под флагами убедитесь, что бит Syn имеет значение 1, а затем щелкните правой кнопкой мыши бит Syn —> Применить как фильтр —> Выбрано.

Рис. 7.

Шаг 4

Теперь, когда вы отфильтровали окно, чтобы увидеть только пакеты с битом [SYN], вы можете легко выбрать интересующие вас беседы, чтобы просмотреть начальный RTT. Простой способ просмотреть RTT в WireShark — просто выбрать раскрывающийся список с пометкой "SEQ/ACK". После этого отобразится rtt. В нашем примере это значение составляет 0,0022114 с или 2,211 мс.

Рис. 8.

Нежелательные протоколы

На экземпляре виртуальной машины, развернутом в Azure, может выполняться множество приложений. Некоторые из этих приложений обмениваются данными по сети, возможно, даже без явного разрешения. Используя запись пакетов для хранения сетевого взаимодействия, мы можем исследовать, как приложения общаются в сети, и искать любые проблемы.

В этом примере мы проанализируем уже выполненный захват пакетов, чтобы проверить наличие нежелательных протоколов, которые могут указывать на несанкционированное сетевое взаимодействие запущенных на компьютере приложений.

Шаг 1

Используя тот же захват в предыдущем сценарии, выберите Иерархия протоколов статистики>.

Пункт меню

Откроется окно иерархии протоколов. Это представление содержит список всех протоколов, которые использовались в записанных в этом сеансе пакетах, а также число пакетов, отправленных и полученных по каждому из протоколов. Это представление позволяет обнаруживать нежелательный трафик на виртуальных машинах или в сети.

Открытая иерархия протоколов

Как вы видите на представленном ниже снимке экрана, обнаружен трафик по протоколу BitTorrent (используется в одноранговых сетях обмена файлами). Как администратор вы не ожидаете видеть трафик BitTorrent на этой конкретной виртуальной машине. Теперь, когда вы знаете, что он существует, вы можете найти и удалить установленное программное обеспечение для одноранговых сетей или заблокировать этот трафик с помощью групп безопасности сети или брандмауэра. Кроме того, вы можете настроить расписание для регулярной записи пакетов, чтобы постоянно контролировать использование сетевых протоколов на виртуальных машинах. Пример автоматизации сетевых задач в Azure см. в статье Мониторинг сетевых ресурсов с помощью службы автоматизации Azure.

Поиск самых активных адресов назначения и портов

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

Шаг 1

Используя тот же захват в предыдущем сценарии, выберитеПункты назначения и портыстатистики>IPv4 статистики>.

Окно захвата пакетов

Шаг 2

При просмотре этих данных сразу бросается в глаза большое количество подключений через порт 111. Самым активным из портов здесь является порт 3389 (это порт удаленного рабочего стола), а все остальные — это динамически назначаемые порты RPC.

Хотя этот трафик может ничего не означать, это порт, который использовался для многих подключений и неизвестен администратору.

Рис. 5.

Шаг 3

Теперь, когда мы определили порт, неуместно, можно отфильтровать запись на основе порта.

В нашем примере фильтр будет выглядеть вот так:

tcp.port == 111

Введите текст фильтра в текстовое поле фильтра и нажмите клавишу ВВОД.

Рис. 6.

В полученных результатах мы видим, что весь этот трафик поступает от локальной виртуальной машины из той же подсети. Если мы по-прежнему не понимаем, почему происходит этот трафик, мы можем дополнительно проверить пакеты, чтобы определить, почему он выполняет эти вызовы через порт 111. Используя эти сведения, мы можем предпринять соответствующие действия.

Дальнейшие действия

Дополнительные сведения о других функциях диагностики Наблюдатель за сетями см. в статье Обзор мониторинга сети Azure.