Home Linux Как использовать tcpdump в Linux

Как использовать tcpdump в Linux

by admin
78 views
linux 335x220 1

Хотите узнать больше о трафике в вашей сети? Научитесь использовать tcpdump в Linux на этих примерах.

Вы пытаетесь захватить пакеты данных для анализа трафика в вашей сети? Возможно, вы администратор сервера, который столкнулся с проблемой и хочет отслеживать данные, передаваемые по сети. Какой бы ни была ситуация, Linux-утилита tcpdump — то, что вам нужно.

В этой статье мы подробно обсудим команду tcpdump, а также несколько руководств по установке и использованию tcpdump в вашей системе Linux.

Программа tcpdump — это утилита командной строки, которую можно установить бесплатно.

Что такое команда tcpdump?

Tcpdump — это мощный инструмент мониторинга сети, который позволяет пользователю эффективно фильтровать пакеты и трафик в сети. Вы можете получить подробную информацию о TCP/IP и пакетах, передаваемых в вашей сети. Tcpdump — это утилита командной строки, что означает, что вы можете запускать ее на серверах Linux без дисплея.

Системные администраторы также могут интегрировать утилиту tcpdump с cron для автоматизации различных задач, таких как ведение журнала. Поскольку его многочисленные функции делают его довольно универсальным, tcpdump работает как средство устранения неполадок, а также как инструмент безопасности.

В чем разница между Wireshark и tcpdump?

И Wireshark, и tcpdump перехватывают пакеты. На этом уровне оба эти инструмента одинаковы. Однако у Wireshark есть интерфейс DUI, который включает в себя функции анализа пакетов. Tcpdump — это утилита командной строки. У него меньше функций, и его сложнее использовать.

Как установить tcpdump в Linux

Хотя в большинстве случаев вы обнаружите, что tcpdump предустановлен в вашей системе, некоторые дистрибутивы Linux не поставляются с пакетом. Поэтому вам, возможно, придется вручную установить утилиту в вашей системе.

Вы можете проверить, установлен ли tcpdump в вашей системе, используя команду which .

root@grafana:/home/administrator# which tcpdump
/usr/bin/tcpdump
root@grafana:/home/administrator#

Если в выводе отображается путь к каталогу ( /usr/bin/tcpdump ), значит, в вашей системе установлен пакет. Однако, если нет, вы можете легко установить TCPDUMP , используя менеджер пакетов по умолчанию в вашей системе.

Чтобы установить tcpdump в дистрибутивах на основе Debian, таких как Ubuntu:

sudo apt-get install tcpdump

Установить tcpdump на CentOS также просто.

sudo yum install tcpdump

В дистрибутивах на основе Arch:

sudo pacman -S tcpdump

Для установки в Fedora:

sudo dnf install tcpdump

Обратите внимание, что для пакета tcpdump требуется libcap в качестве зависимости, поэтому убедитесь, что вы также установили его в своей системе.

Примеры Tcpdump для захвата сетевых пакетов в Linux

Теперь, когда вы успешно установили tcpdump на свой компьютер с Linux, пришло время узнать как перехватывать пакеты. Поскольку tcpdump требует прав суперпользователя для выполнения большинства операций, вам придется добавить sudo в свои команды.

Список всех сетевых интерфейсов

Чтобы проверить, какие сетевые интерфейсы доступны для захвата, используйте флаг -D с командой tcpdump.

root@grafana:/home/administrator# tcpdump -D
1.eth0 [Up, Running, Connected]
2.eth1 [Up, Running, Connected]
3.any (Pseudo-device that captures on all interfaces) [Up, Running]
4.lo [Up, Running, Loopback]
5.bluetooth-monitor (Bluetooth Linux Monitor) [Wireless]
6.nflog (Linux netfilter log (NFLOG) interface) [none]
7.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
8.dbus-system (D-Bus system bus) [none]
9.dbus-session (D-Bus session bus) [none]
root@grafana:/home/administrator#

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

tcpdump --interface any

Система отобразит вывод со всех интерфейсов. Вы можете выбрать также свой сетевой интерфейс

tcpdump --interface eth1

Вы можете прервать захват, нажав Ctrl + C.

Как понять информацию о захваченном пакете

Чтобы узнать о различных полях захваченного пакета, давайте рассмотрим пример TCP-пакета:

tcpdumpadlukashin

Пакет может иметь различные поля, но общие показаны выше.
Первое поле « 09:48:18.960683 » представляет время получения пакета.
Поле IP в данном поле указывается протокол.
Далее идут IP-адреса; первый IP-адрес [ 216.58.209.130 ] является исходным IP-адресом, а второй IP-адрес [ 10.0.2.15.55812 ] является IP-адресом назначения. 
Затем вы получите флаг [ P. ]; список типичных флагов приведен ниже:

FlagTypeDescription
“.”ACKSignifies acknowledgment
SSYNFlag for starting a connection
FFINFlag for a closed connection
PPUSHIndicates the push of data from the sender
RRSTConnection Reset

Далее идет порядковый номер данных, содержащихся в пакете. Для первого захваченного пакета это абсолютное число. Последующие пакеты используют относительное число, чтобы упростить отслеживание. В этом примере последовательность seq 188:255, что означает, что этот пакет содержит байты с 188 по 255 этого потока.

За этим следует номер подтверждения: ack 1. В данном случае это 1, поскольку сторона отправляет данные. Для стороны, получающей данные, это поле представляет следующий ожидаемый байт (данные) в этом потоке. Например, номер Ack для следующего пакета в этом потоке будет 255.

Следующее поле — это размер окна win 65535, который представляет количество байтов, доступных в приемном буфере, за которыми следуют такие параметры TCP, как MSS (максимальный размер сегмента — Maximum Segment Size) или масштаб окна. nop — заполнение, используемое для того, чтобы сделать заголовок TCP кратным 4 байтам. TS val — это временная метка

Наконец, у нас есть длина пакета, length 70, которая представляет длину в байтах данных полезной нагрузки. Длина — это разница между последним и первым байтами « 185:255 » порядкового номера.

tcpdumpadlukashin2

Ограничить количество захваченных пакетов

При первом запуске команды tcpdump вы можете заметить, что система продолжает перехватывать сетевые пакеты до тех пор, пока вы не передадите сигнал прерывания. Вы можете переопределить это поведение по умолчанию, заранее указав количество пакетов, которые вы хотите захватить, с помощью флага -c .

tcpdump --interface any -c 10

Вышеупомянутая команда захватит десять пакетов с любого активного сетевого интерфейса.

Отобразить IP адрес вместо доменного имени

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

tcpdump --interface eth1 -c 5
alukashin tcpdump 4
tcpdump --interface eth1 -c 5 -n
alukashin tcpdump 5

Фильтрация пакетов

Когда вы устраняете проблему, получение большого блока текста на вашем терминале не облегчает задачу. Вот где в игру вступает функция фильтрации в tcpdump. Вы можете фильтровать пакеты по различным полям, включая хост, протокол, номер порта и многое другое.

TCP пакеты

tcpdump --interface any -c 5 tcp

Номер порта

tcpdump --interface any -c 5 port 50

Вышеупомянутая команда будет извлекать только пакеты, переданные через указанный порт.

определенный хост

tcpdump --interface any -c 5 host 112.123.13.145

src или dst

tcpdump --interface any -c 5 src 112.123.13.145
tcpdump --interface any -c 5 dst 112.123.13.145

и и или операторы

Вы также можете использовать логические операторы и и или для объединения двух или более выражений. Например, чтобы получить пакеты, принадлежащие исходному IP -адресу 112.123.13.145, и использовать порт 80 :

tcpdump --interface any -c 10 src 112.123.13.145 and port 80

Сохранение данных захвата в файл

Если вы хотите сохранить данные захвата для справочных целей, вам поможет tcpdump. Просто передайте флаг -w с командой по умолчанию, чтобы записать вывод в файл, а не отображать его на экране.

tcpdump --interface any -c 10 -w data.pcap

Расширение файла .pcap означает данные захвата пакетов . Вы также можете выполнить вышеупомянутую команду в подробном режиме, используя флаг -v .

tcpdump --interface any -c 10 -w data.pcap -v

Чтобы прочитать файл .pcap с помощью tcpdump, используйте флаг -r , за которым следует путь к файлу. -r означает чтение . 

tcpdump -r data.pcap

Вы также можете фильтровать сетевые пакеты из данных пакетов, сохраненных в файле.

tcpdump -r data.pcap port 80

Как убить процесс tcpdump?

Обычно нажатие Control-C останавливает процесс tcpdump. Если это не сработает, найдите идентификатор процесса tcpdump с помощью команды ps -aux , затем введите kill -9 , затем идентификатор процесса и нажмите клавишу возврата.

Где хранятся файлы tcpdump?

Если вы не укажете каталог и имя файла, в котором должны храниться записи tcpdump, файл будет записан в каталог, в котором вы находились при запуске tcpdump. Вы можете указать, где tcpdump должен хранить перехваченные пакеты, с помощью sudo tcpdump -i 1 -w , за которым следует путь и имя файла.

Статьи из этой категории

Leave a Comment