Использование tcpdump для анализа трафика
Tcpdump — сетевая утилита, используемая для захвата входящего и исходящего трафика. Вот все, что вам нужно знать об использовании tcpdump в Linux.
Linux поставляется с широким выбором сетевых утилит. Tcpdump — мощный сетевой инструмент, который может захватывать и анализировать сетевой трафик, если вам нужно устранить проблемы с сетью в Linux.
Давайте попрактикуемся с командой tcpdump и узнаем, как использовать ее для захвата сетевого трафика.
Установите tcpdump в Linux
Tcpdump предустановлен во всех основных дистрибутивах Linux и альтернативах, основанных на безопасности, поэтому вы сможете сразу же использовать его, набрав tcpdump с префиксом sudo.
Если вы не можете запустить команду tcpdump и застряли в ошибке «tcpdump: команда не найдена» давайте узнаем, как установить tcpdump на машину с Linux.
Чтобы установить tcpdump, запустите терминал и выполните команду, соответствующую дистрибутиву Linux, который вы используете в данный момент:
В производных Debian/Ubuntu запустите:
sudo pacman -S tcpdump
В системах на базе Arch запустите:
sudo pacman -S tcpdump
Чтобы установить утилиту tcpdump в Fedora, CentOS и RHEL, введите следующую команду:
sudo dnf установить tcpdump
Обратите внимание: если вас попросят установить libcap, введите «Да» или «Y», поскольку это основная зависимость, иначе tcpdump откажется запускаться. Это установит утилиту tcpdump и устранит проблему. «команда не найдена» ошибка .
Теперь, когда tcpdump установлен в вашей системе, давайте рассмотрим различные варианты и функции, которые он предлагает.
Захват сетевого трафика с помощью tcpdump
Tcpdump предоставляет множество флагов для изменения его выполнения, но его также можно запускать как отдельную команду. Однако запуск tcpdump без каких-либо флагов или аргументов упустит весь его потенциал. Лучше использовать несколько флагов для настройки выполнения и вывода по мере необходимости.
Введите эту команду для мониторинга сетевых передач с помощью tcpdump:
sudo tcpdump
Теперь tcpdump начнет автоматически захватывать сетевые пакеты до тех пор, пока не будет отправлен сигнал прерывания с помощью сочетания клавиш Ctrl + Z, прерывая процесс вручную. Чтобы ограничить общее количество перехваченных пакетов, используйте флаг -c и введите рядом с ним желаемый лимит пакетов:
судо tcpdump -c 5
Использование tcpdump для анализа трафика Рисунок 1
Если вы сейчас не можете понять вывод, сначала вам необходимо ознакомиться с форматом вывода tcpdump.
Проверьте доступные сетевые интерфейсы с помощью tcpdump
По умолчанию tcpdump захватывает трафик с любого доступного сетевого интерфейса. Если активно несколько сетевых интерфейсов, вы можете указать сетевой интерфейс, с которого tcpdump будет захватывать пакеты. Чтобы запустить tcpdump на определенном интерфейсе, вам сначала нужно узнать имя интерфейса.
Вот как вывести список всех доступных сетевых интерфейсов с помощью tcpdump:
судо tcpdump -D
Альтернативно вы можете добавить к команде флаг –list-interface:
sudo tcpdump –list-интерфейсы
Использование tcpdump для анализа трафика. Рисунок 2.
Возвращенный вывод содержит список всех активных сетевых интерфейсов, которые tcpdump может прослушивать. Чтобы настроить tcpdump для захвата передач с определенного сетевого интерфейса, введите следующую команду:
sudo tcpdump -i идентификатор_интерфейса
Альтернативно вы можете добавить к команде флаг –interface:
sudo tcpdump –interface Interface_id
Теперь, когда вы захватили несколько пакетов, давайте взглянем на них поближе и посмотрим, как можно настроить выходные данные, чтобы сделать их более читабельными.
Изучите фильтры tcpdump
Tcpdump может перехватить большой объем трафика за один запуск. Такая информационная перегрузка может сбить вас с толку при исследовании или устранении неполадок с конкретным хостом или сетевым протоколом.
Здесь на помощь приходят фильтры tcpdump. Вы можете связать команду tcpdump с определенными флагами, чтобы фильтровать сетевой трафик и перехватывать определенные пакеты. Затем вы можете сохранить эти пакеты и проанализировать их позже, чтобы найти причину любых проблем, связанных с сетью. Давайте посмотрим, как использовать фильтры в tcpdump.
Фильтрация пакетов на основе используемого сетевого протокола
Чтобы фильтровать пакеты, передаваемые по определенному протоколу, введите имя протокола с помощью команды tcpdump, и она будет захватывать только пакеты, передаваемые по указанному сетевому протоколу.
Например, чтобы перехватить пакеты ICMP, вы просто добавляете icmp в конец команды tcpdump. Процесс тот же, если вы хотите перехватывать только пакеты UDP или TCP.
sudo tcpdump -c 5 ICMP
Эта команда вернет вывод только в том случае, если происходит обмен данными по протоколу ICMP.
Использование tcpdump для анализа трафика. Рисунок 3.
Фильтрация пакетов на основе хоста
Вы можете настроить tcpdump для захвата пакетов, относящихся к одному хосту, с помощью параметра хоста. Это особенно полезно, когда все системы в вашей сети запущены и работают, кроме одной. Этот фильтр позволяет проводить целевые исследования и ускоряет общий процесс устранения неполадок, поскольку вы не отвлекаетесь на ненужные данные.
Чтобы перехватывать пакеты, относящиеся к конкретному хосту, укажите сетевой адрес хоста с помощью параметра хоста:
sudo tcpdump -c 5 хост 192.168.2.1
Подобно фильтру сетевых протоколов, эта команда вернет выходные данные только в том случае, если какие-либо текущие передачи относятся к указанному хосту.
Использование tcpdump для анализа трафика. Рисунок 4.
Активная фильтрация пакетов на основе портов
Tcpdump оснащен параметром, который позволяет фильтровать сетевой трафик и захватывать только пакеты, передаваемые на определенный порт или с него.
Чтобы перехватывать пакеты, поступающие с определенного порта, добавьте флаг порта к команде tcpdump и укажите рядом с ним номер порта. Например, чтобы перехватить весь входящий или исходящий HTTP-трафик, укажите порт 80:
sudo tcpdump -c 5 порт 80
Tcpdump будет прослушивать порт 80, ожидая передачи HTTP. Когда он обнаруживает HTTP-пакеты в сети, он перехватывает их.
Использование tcpdump для анализа трафика Рисунок 5
Объедините фильтры для расширенной сортировки.
В предыдущих разделах обсуждалось, как можно фильтровать трафик по порту, протоколу или хосту, но что, если вы хотите перехватывать трафик с порта определенного хоста, используя определенный сетевой протокол? Что ж, вам повезло, потому что это возможно благодаря возможности использовать логические операторы с командой tcpdump.
Чтобы перехватывать пакеты с отдельного хоста через порт 443, используйте следующую команду:
sudo tcpdump -c 5 хост 192.168.2.1 и порт 443
Использование tcpdump для анализа трафика Рисунок 6
Проверьте содержимое перехваченных пакетов
По умолчанию tcpdump отображает заголовки пакетов в своих выходных данных. Хотя в большинстве случаев этого более чем достаточно, иногда вам может потребоваться более глубокий анализ собранных данных. Вы можете передать определенные параметры команде tcpdump, чтобы проверить содержимое захваченного пакета.
Вот как просмотреть содержимое пакетов:
судо tcpdump -c 5 -x
Использование tcpdump для анализа трафика Рисунок 7
Эта команда возвращает шестнадцатеричную версию содержимого захваченного пакета. Если вы хотите просмотреть данные в формате ASCII, вы можете передать параметр -A с помощью:
sudo tcpdump -A
Использование tcpdump для анализа трафика Рисунок 8
Сохраните вывод tcpdump в файл
Как и большинство других инструментов командной строки Linux, вы можете сохранить выходные данные, созданные tcpdump, в файл для дальнейшего использования.
Это можно сделать, добавив к команде флаг -w. После выполнения tcpdump сохранит собранные данные в файле .pcap для последующего анализа с помощью tcpdump или других инструментов сетевого мониторинга, таких как Wireshark.
Введите эту команду, чтобы сохранить вывод команды tcpdump в файл:
sudo tcpdump -w capture.pcap
Чтобы прочитать файл .pcap, вы можете использовать tcpdump с параметром -r:
sudo tcpdump -r capture.pcap
Linux предлагает множество сетевых инструментов, которые могут решить любую сетевую проблему, если она связана с программным обеспечением. Знание того, как использовать некоторые из лучших сетевых инструментов в Linux, безусловно, пригодится независимо от того, являетесь ли вы системным администратором, который зарабатывает на жизнь управлением сетями, или просто ежедневным пользователем Linux.
Поскольку фактический список доступных сетевых команд может быть огромным, вот список некоторых наиболее важных сетевых инструментов Linux, которые вам следует знать.
Сэмюэл Дэниел
Обновление от 11 декабря 2024 г.