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

person access_time31-10-2019, 09:41 visibility1 316 chat_bubble_outline0

Операционная система Linux отличается большим набором различных инструментов для системных администраторов и разработчиков. Один из таких инструментов – tcpdump, который вовсе не предназначается для чайников. Эта утилита известна своей сложностью, огромным количеством опций и фильтров. Сегодня я расскажу о том, для чего она вообще нужна и как ей пользоваться, приводя примеры в Linux Ubuntu 19.04.

Что за утилита tcpdump

tcpdump – это мощная и популярная консольная утилита, с помощью которой можно проанализировать или перехватить сетевые пакеты в Linux. Вне зависимости от того, входящие они или исходящие, она перехватит любой пакет из определенного интерфейса. Работает она через командную строку «Терминал», и поэтому порой кажется трудной для новичков. 

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

Во многих дистрибутивах операционной системы Linux утилита tcpdump поставляется в комплекте со стандартным набором программ. Если же по каким-либо причинам ее в компьютере нет (ну, не найдена она), тогда можно провести установку с помощью специальной команды. Открываю командную строку «Терминал» нажатием на комбинацию клавиш Ctrl + Alt + T, затем ввожу вот такой запрос:
sudo apt install tcpdump
В том случае, если у меня установлен репозиторий Fedora, Red Hat или CentOS, команда будет выглядеть несколько иначе. 
sudo yum install tcpdump

Установка инструмента tcpdump в операционной системе Linux

Вот тут прям черным по белому… Нет, белым по черному (не совсем это и черный) написано, что утилита «уже установлена».
Если же утилита все же установлена, тогда после ввода команды «Терминал» выдаст уведомление о том, что все компоненты уже есть. Теперь можно приступать к изучению опций и началу работы с утилитой. 

Синтаксис команды

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

Основные опции

Использовать все опции необязательно, но их знание значительно может облегчить работу с инструментом. Далее в форме списка я перечислю некоторые из них, наиболее востребованные:
  • -A – сортирует все пакеты формата ASCII.
  • -c – завершает процедуру отслеживания после перехвата определенного установленного количества пакетов.
  • -C – создает новый файл в процессе записи пакета в том случае, если его размер больше заданного показателя.
  • -D – выводит список доступных сетевых интерфейсов.
  • -e – предоставляет информацию по уровню соединения для каждого пакета данных. Это особенно полезно во время отображения MAC адреса.
  • -f – отображает доменное имя для IP-адресов.
  • -F — считывает пакеты из указанного файла, а не сетевого интерфейса.
  • -G – создает новый файл лога спустя установленный промежуток времени.
  • -H – обнаруживает заголовки 802.11s.
  • -i – представляет наименование интерфейса, используемого для перехвата пакетов. Можно, конечно, использовать для этого все возможные интерфейсы, но для этого стоит указать any.
  • -I – переключает интерфейс в режим монитора для захвата всех обрабатываемых пакетов.
  • -j – устанавливает формат Timestamp для отслеживания пакетов.
  • -J – предоставляет доступные варианты формата Timestamp.
  • -K – отключает проверку контрольных сумм пакетов.
  • -l (маленькая L) – добавляет поддержку прокрутки к выводу.
  • -L – воспроизводит на экране поддерживаемые протоколы подключения для указанного интерфейса.
  • -n – отключает отображение доменных имен.
  • -r – считывает пакеты из файла, созданного с помощью опции -w.
  • -v, -vv, -vvv – производит более подробный вывод по проведенной операции.
  • -q – предоставляет минимум информации по сканированию.
  • -w – записывает вывод по проведенной операции в файл.
  • -Z – указывает на пользователя, от имени которого создаются файлы.

Фильтры

Утилита tcpdump отличается возможностью использования различного вида фильтров. Их можно комбинировать между собой, чтобы в результате на экране отображалась только самая необходимая информация. Вот некоторые наиболее популярные:
  • host – указывает наименование хоста.
  • net – выводит IP-адрес подсети и сети.
  • ip – выводит адреса протокола.
  • src – предоставляет список пакетов, отправленных с указанного адреса.
  • dst – отображает пакеты, которые были получены указанным адресом.
  • arp, udp, tcp – фильтруют по одному из протоколов.
  • port – выводят информацию, относящуюся к определенному порту.
  • and, or – объединяют нескольких фильтров в команде.
  • less, greater — выводят меньше или больше пакетов от указанного ранее размера.

Как пользоваться утилитой

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

Просмотр списка доступных интерфейсов

Прежде чем приступать к работе с инструментом tcpdump, для начала необходимо посмотреть список всех доступных на данный момент сетевых интерфейсов. Судя по указанной выше инструкции, для этого мне понадобится использовать опцию -D. Открываю командную строку «Терминал» и даю вот такую команду:
sudo tcpdump -D

Вывод списка интерфейсов с помощью утилиты tcpdump

Вот так в моем случае выглядит список доступных интерфейсов после выдачи соответствующей команды с утилитой tcpdump.
В моем случае выходит 6 доступных интерфейсов, но не факт, что у всех они выйдут – у кого-то их может быть и побольше. Для примера возьму enp0s3. 

Захват трафика

Для отслеживания одного сетевого интерфейса необходимо использовать опцию -i. Самое главное, после нее указать наименование интерфейса, который необходимо отследить. В моем примере команда выглядит вот так:
sudo tcpdump -i enp0s3
После нажатия на кнопку Enter и принятия введенной команды «Терминал» начнет непрерывно отображать перехваченные интернет-пакеты. Для остановки потока мне потребуется просто нажать на комбинацию Ctrl + C.

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

Ввожу команду для начала отслеживания, после чего в «Терминале» начнут отображаться пакеты и подробные данные об их использовании.
В данном случае поочередно выводятся {время получения пакета} {версия протокола} {адрес отправителя} {адрес получателя} {дополнительная информация} {размер пакета в байтах}.

Захват трафика с подробным выводом информации

В том случае, если понадобится выводить больше информации об интернет пакетах, я введу запрос следующего вида:
sudo tcpdump -v -i enp0s3

Отображение информации после введения команды на отслеживание пакета

В данном случае информация отображается уже более подробно.
Если обратить внимание, можно заметить, что в каждой строчке стало куда больше информации. Так вдобавок к стандартной вышеуказанной форме добавляется еще несколько данных: {версия протокола} {продолжительность действия протокола} {длина заголовка поля} {версия пакета} {размер пакета}.
А если вписать в строку двойную или тройную v, тогда в окне отобразится еще больше информации. 

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

Чтобы сохранить данные об отслеживаемом трафике в отдельный файл, можно использовать опции -w и -r. Отличный вариант, когда пользователю необходимо сохранить большой объем текста для возможности его дальнейшего разбора. Причем первая именно записывает информацию, а вторая позволяет посмотреть сохраненный файл. В первом случае команда выглядит следующим образом:
sudo tcpdump -i enp0s3-w file.pcap
Обязательно при этом указываем будущее наименование файла и определяем его расширение как «.pcap». А вот команда для открытия файла выглядит немного иначе:
sudo tcpdump -r file.pcap

Заключение

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

httрs://tеhnichка.рro/use-tcpdump-linux/ 
tagsКлючевые слова

Другие статьи

Исправляем ошибку установки обновлений Windows 10

Исправляем ошибку установки обновлений Windows 10

persons_moryachok access_time01-мар-2024

Windows 10 — это уже не самая новая операционная система от Microsoft, но иногда пользователи

Сброс сетевых настроек Windows - командная строка

Сброс сетевых настроек Windows - командная строка

persons_moryachok access_time01-мар-2024

Сетевые проблемы могут быть очень раздражающими и влиять на нашу работу и повседневную жизнь. В

Добавить комментарий

Комментарии (0)