При работе со множеством различных устройств в инфраструктуре необходимо обеспечить их корректное и безопасное функционирование. Одним из источников потенциальных угроз является сетевой трафик, как внешний, так и внутренний. Без должных систем анализа и его мониторинга многие атаки или же проблемы в работе системы могут остаться незамеченными или нанести существенный ущерб, при работе!
В данном материале, мы рассмотрим, как собрать и более эффективно проанализировать сетевой трафик на машине с использованием связки инструментов tcpdump + wireshark на Linux и Windows.
Как происходит перехват трафика?
Для сниффинга или перехвата сетевых соединений на устройстве tcpdump использует технику сниффинга. При которой, библиотека pcap обращается к драйверу сетевых адаптеров для сбора информации о соединениях. Ведь именно в буфере, который использует драйвер попадают первоначальные и не измененные сетевые пакеты!

А Wireshark в данной связке может дополнительно их проанализировать и выдать аналитику по каждому из, а также предоставит удобную панель для поиска и фильтрации необходимых соединений!
Сбор и аналитика сетевого трафика
Определимся со схемой нашей инфраструктуры и машинами, с которых будем перехватывать соединение:
- Для сетей, в которых необходим сбор с серверов будем tcpdump, он позволит сформировать файл формата pcap и передать его на рабочую машину, где установлен Wireshark для аналитики;
- Если мы собираем трафик с рабочей машины пользователя, то можем сразу провести аналитику на ней с использованием только Wireshark.
Нам понадобится, только стандартный набор пакетов дистрибутива и дополнительно установленные tcpdump, Wireshark.
В большинстве случаев он уже есть, однако, установить можно командой Linux для deb-подобных систем:
apt update && apt install tcpdump wireshark -y Для rpm-подобных решений, команда будет выглядеть так:
dnf install tcpdump wireshark -y Рассмотрим основные возможности и примеры использования tcpdump : фильтры, опции и режимы работы. Определим пул интерфейсов:
ip a 
Для того, чтобы перехватывать трафик с конкретного интерфейса укажем опцию -i:
sudo tcpdump -i enp0s5 
Трафика много и вывод на экране будет так же объемным, поэтому в таком виде проанализировать почти ничего не возможно. Укажем опцией -w файл, в который будем производить запись, а так же фильтры для поиска конкретного соединения:
- port — Фильтрация по порту (например, port 80);
- host — Фильтрация по IP-адресу или имени хоста (например, host 192.168.1.1);
- src — Фильтрация по исходному адресу (например, src 192.168.1.1);
- dst — Фильтрация по целевому адресу (например, dst 192.168.1.2);
- tcp — Фильтрация пакетов по протоколу TCP;
- udp — Фильтрация пакетов по протоколу UDP;
- icmp — Фильтрация пакетов по протоколу ICMP.
Все эти фильтры должны быть связаны операторами:
- AND;
- OR;
- NOT.
К примеру, мне интересно мое соединение по SSH, следовательно, команда будет выглядеть так:
tcpdump -i enp0s5 host <my-ip> tcp port 22 
Вместо тысячи пакетов уже несколько! Но иногда для анализа картины нужен весь трафик поэтому пишем его со всех интерфейсов командой с опцией -i any, где any это псевдоинтерфейс, который слушает трафик со всех источников. Чтобы на этой же машине просмотреть записанный трафик откроем через команду:
tcpdump -r /путь-к-файлу
Затем можем его открыть через WireShark, передав файл на основное устройство:

Фильтры на Wireshark имеют такую же логику фильтрации, где мы указываем:
((!(ip.addr == 46.191.184.42)) && !(ip.addr == 172.23.0.2)) && !(ip.addr == 172.23.0.3)Важно, чтобы каждое из выражений было в отдельных скобках! Чтобы просмотреть полезную нагрузку в Wireshark выберите нужный пакет, а для tcpdump, при его чтении добавьте опцию -A:
tcpdump -A -r /путь-к-файлу
Подобным образом можно проверять наличие соединения с разными устройствами, а так же передаваемой ими информацией. Нарушители зачастую модифицируют пакеты или алгоритм работы протоколов, подобная формализация позволяет это сразу идентифицировать!
При нехватке собственных мощностей можно воспользоваться облачными серверами от Serverspace, для этого перейдем к созданию сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать:
Скриншот №8 — Создание сервера