Tcpdump ���������� astra linux

Содержание
  1. Команда tcpdump для начинающих
  2. Команда tcpdump
  3. Q1. Как использовать tcpdump?
  4. Q2. Как заставить tcpdump завершить работу после получения заданного количества пакетов?
  5. Q3. Как сделать так, чтобы tcpdump отображал заголовок уровня ссылки в выводе?
  6. Q4. Как сделать так, чтобы tcpdump отображал иностранные IP-адреса численно?
  7. Q5. Как заставить tcpdump выдавать номера пакетов в выводе?
  8. Q6. Как сделать вывод tcpdump более коротким?
  9. Q7. Как убрать информацию о временных метках из вывода tcpdump?
  10. Q8. Как заставить tcpdump производить детальный вывод?
  11. Заключение
  12. Примеры tcpdump в Linux
  13. Установка
  14. Синтаксис
  15. Опции
  16. Фильтры
  17. Примеры использования
  18. Просмотр списка интерфейсов
  19. Обычный захват трафика
  20. Захват трафика с опцией -v
  21. Опция -w и -r
  22. Фильтрация по IP
  23. Фильтрация по HOST
  24. Применение фильтра and и or
  25. Фильтр port и portrange
  26. Фильтрация по протоколам
  27. Фильтр net
  28. Фильтрация по размеру пакета
  29. Заключение

Команда tcpdump для начинающих

Оригинал: Linux tcpdump Command Tutorial for Beginners (8 Examples)
Автор: Himanshu Arora
Дата публикации: 17 октября 2018 года
Перевод: А. Кривошей
Дата перевода: август 2019 г.

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

В этой статье мы обсудим основы использования рассматриваемой утилиты — tcpdump. Необходимо отметить, что все приведенные здесь примеры были протестированы на машине с Ubuntu 18.04 LTS.

Команда tcpdump

Команда tcpdump в Linux позволяет вам выводить сетевой трафик. Ниже приводится ее краткий синтаксис:

А вот детальный синтаксис:

И вот как справочная страница утилиты описывает ее:

Tcpdump выводит описание содержимого пакетов на сетевом интерфейсе, которые соответствуют логическому выражению; описанию предшествует отметка времени, отображаемая по умолчанию в виде часов, минут, секунд и долей секунды с полуночи.
Его также можно запустить с флагом -w, который заставляет ее сохранять данные в файл для последующего анализа, и/или с флагом -r, который заставляет ее читать из сохраненного файла прежде, чем читать пакеты с сетевого интерфейса. Его также можно запустить с флагом -V, который заставляет ее читать список сохраненных файлов.
Во всех случаях tcpdump будет обрабатывать только пакеты, которые соответствуют логическому выражению.

Ниже приведены примеры в стиле вопросов и ответов, которые должны дать вам лучшее представление о том, как работает команда tcpdump.

Q1. Как использовать tcpdump?

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

Вот как справочная страница описывает эту опцию:

Выводит список сетевых интерфейсов, доступных в системе и для которых tcpdump может захватывать пакеты. Для каждого сетевого интерфейса выводятся номер и имя интерфейса, за которым, возможно, следует текстовое описание интерфейса. Имя или номер интерфейса можно указать после флага -i, чтобы задать интерфейс для захвата.
Это может быть полезно в системах, в которых нет команды для их перечисления (например, в системах Windows или системах UNIX, в которых отсутствует ifconfig -a); число может быть полезно в Windows 2000 и более поздних системах, где имя интерфейса представляет собой довольно сложную строку.
Флаг -D не будет поддерживаться, если tcpdump был собран с более старой версией libpcap, в которой нет функции pcap_findalldevs ().

Например, в моем случае был получен следующий вывод:

Теперь, когда у вас есть список интерфейсов, вы можете выбрать один из них и передать его имя в качестве входных данных параметру командной строки -i команды tcpdump. Например:

Далее часть вывода, произведенного этой командой в моем случае:

Q2. Как заставить tcpdump завершить работу после получения заданного количества пакетов?

Это может быть достигнуто с помощью параметра командной строки -c. Например, если вы хотите, чтобы tcpdump отображал только информацию, связанную с 10 пакетами, вы можете сделать это следующим образом:

Например, в моем случае я выполнил следующую команду:

Ниже приводится ее вывод:

Таким образом, вы можете увидеть, что были захвачены 10 пакетов.

Q3. Как сделать так, чтобы tcpdump отображал заголовок уровня ссылки в выводе?

Это можно сделать с помощью параметра командной строки -e. Например:

И вот результат:

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

Q4. Как сделать так, чтобы tcpdump отображал иностранные IP-адреса численно?

Это может быть достигнуто с помощью параметра командной строки -f.

Отображение в tcpdump «чужих» IPv4-адресов в числовом, а не в символьном смысле имеет свои преимущества в определенных ситуациях. Один такой пример упоминается в справочной странице утилиты:

Читайте также:  Передача данных windows android

Эта опция предназначена для того, чтобы обойти серьезные неполадки на сервере NIS от Sun — обычно он зависает навсегда при попытке трансляции нелокальных численные IP-адреса.

Q5. Как заставить tcpdump выдавать номера пакетов в выводе?

Чтобы заставить tcpdump выдавать номера пакетов в выводе, используйте параметр командной строки —number.

Например, я выполнил следующую команду:

И вот часть вывода:

Итак, теперь вы можете видеть, что каждая строка начинается с номера.

Q6. Как сделать вывод tcpdump более коротким?

Это можно сделать с помощью параметра командной строки -q. Вот как это объясняется на справочной странице утилиты:

Быстрый (тихий?) вывод. Выводите меньше протокольной информации, чтобы строки были короче.

Ниже приведен пример этой опции:

Таким образом, вы можете видеть, что на этот раз в выводе было меньше информации.

Q7. Как убрать информацию о временных метках из вывода tcpdump?

Для этого используйте параметр командной строки -t. Вот пример команды:

Таким образом, вы можете видеть, что информация о временной метке (которая обычно находится в начале каждой строки) сейчас отсутствует.

Q8. Как заставить tcpdump производить детальный вывод?

В этом случае вы можете использовать параметр командной строки -v. Ниже описано, как справочная страница утилиты объясняет эту опцию:

Производится более подробный вывод. Например, выводятся время жизни, идентификатор, общая длина и опции IP-пакета. Также команда включает дополнительные проверки целостности пакета, такие как проверка контрольной суммы заголовка IP и ICMP.

Заключение

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

Источник

Примеры tcpdump в Linux

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

Читайте также: Руководства по настройке интернет-соединения в Ubuntu, Debian, Ubuntu Server

Установка

Большинство разработчиков операционных систем на базе Linux включают утилиту tcpdump в список предустановленных, но если по какой-то причине она в вашем дистрибутиве отсутствует, ее можно всегда скачать и установить через «Терминал». Если у вас ОС основана на Debian, а это Ubuntu, Linux Mint, Kali Linux и им подобные, нужно выполнить эту команду:

sudo apt install tcpdump

При установке вам нужно ввести пароль. Обратите внимание, что при наборе он не отображается, также для подтверждения установки нужно ввести символ «Д» и нажать Enter.

Если у вас Red Hat, Fedora или CentOS, то команда для установки будет иметь следующий вид:

sudo yam install tcpdump

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

Синтаксис

Как и любая другая команда, tcpdump имеет свой синтаксис. Зная его, вы сможете задавать все необходимые параметры, которые будут учитываться при выполнении команды. Синтаксис имеет следующий вид:

tcpdump опции -i интерфейс фильтры

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

Опции

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

Опция Определение
-A Позволяет отсортировать пакеты с форматом ASCII
-l Добавляет функцию прокрутки
-i После ввода нужно указать сетевой интерфейс, который будет отслеживаться. Чтобы начать отслеживать все интерфейсы, впишите после опции слово «any»
-c Завершает процесс отслеживания после проверки указанного количества пакетов
-w Генерирует текстовый файл с отчетом проверки
-e Показывает уровень интернет-соединения пакета данных
-L Выводит только те протоколы, которые поддерживает указанный сетевой интерфейс
-C Создает другой файл во время записи пакета, если его размер больше заданного
-r Открывает файл для чтения, который был создан с помощью опции -w
-j Для записи пакетов будет использоваться формат TimeStamp
-J Позволяет просмотреть все доступные форматы TimeStamp
-G Служит для создания файла с логами. Опция требует также указания временного значения, по истечении которого будет создаваться новый лог
-v, -vv, -vvv В зависимости от количества символов в опции, вывод команды будет становиться подробнее (увеличение прямо пропорционально количеству символов)
-f В выводе показывает имя домена адресов IP
-F Позволяет считывать информацию не из сетевого интерфейса, а из указанного файла
-D Демонстрирует все сетевые интерфейсы, которые можно использовать
-n Деактивирует отображение доменных имен
-Z Задает пользователя, под учетной записью которого будут созданы все файлы
-K Пропуск анализа контрольных сумм
-q Демонстрация краткой информации
-H Позволяет обнаружить заголовки 802.11s
-I Используется при захвате пакетов в режиме монитора
Читайте также:  Можно ли активировать windows 10 домашняя ключом от windows 10 pro

Разобрав опции, чуть ниже мы перейдем непосредственно к их применениям. А пока что будут рассмотрены фильтры.

Фильтры

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

Фильтр Определение
host Служит для указания имени хоста
net Указывает IP подсети и сети
ip Служит для указания адреса протокола
src Выводит пакеты, которые были отправлены с указанного адреса
dst Выводит пакеты, которые были получены указанным адресом
arp, udp, tcp Фильтрация по одному из протоколов
port Отображает информацию, относящуюся к определенному порту
and, or Служит для объединения нескольких фильтров в команде
less, greater Вывод пакетов меньше или больше указанного размера

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

Примеры использования

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

Просмотр списка интерфейсов

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

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

Обычный захват трафика

Если нужно отследить один сетевой интерфейс, то сделать это вы можете с помощью опции -i. Не забудьте после ее ввода указать наименование интерфейса. Вот пример выполнения такой команды:

sudo tcpdump -i ppp0

Обратите внимание: перед самой командой нужно вписать «sudo», так как она требует права суперпользователя.

Примечание: после нажатия Enter в «Терминале» беспрерывно будут отображаться перехваченные пакеты. Чтобы остановить их поток, нужно нажать комбинацию клавиш Ctrl+C.

Если вы выполняете команду без дополнительных опций и фильтров, то увидите следующий формат отображения отслеженных пакетов:

22:18:52.597573 IP vrrp-topf2.p.mail.ru.https > 10.0.6.67.35482 : Flags [P.], seq 1:595, ack 1118, win 6494, options [nop,nop,TS val 257060077 ecr 697597623], length 594

Где цветом выделено:

  • синим — время получения пакета;
  • оранжевым — версия протокола;
  • зеленым — адрес отправителя;
  • фиолетовым — адрес получателя;
  • серым — дополнительная информация о tcp;
  • красным — размер пакета (отображается в байтах).

Этот синтаксис имеет возможность вывода в окне «Терминала» без использования дополнительных опций.

Захват трафика с опцией -v

Как известно из таблицы, опция -v позволяет увеличить количество информации. Разберем на примере. Проверим тот же интерфейс:

sudo tcpdump -v -i ppp0

Здесь можно заметить, что появилась следующая строка в выводе:

IP (tos 0x0, ttl 58 , id 30675, offset 0, flags [DF] , proto TCP (6) , length 52

Где цветом выделено:

  • оранжевым — версия протокола;
  • синим — продолжительность жизни протокола;
  • зеленым — длина заголовка поля;
  • фиолетовым — версия пакета tcp;
  • красным — размер пакета.

Также в синтаксис команды вы можете прописать опцию -vv или -vvv, что позволит еще больше увеличить объем выводимой информации на экран.

Опция -w и -r

В таблице опций упоминалось о возможности сохранять все выводимые данные в отдельный файл, чтобы позже их можно было просмотреть. За это отвечает опция -w. Пользоваться ей довольно просто, всего-навсего укажите ее в команде, а затем впишите название будущего файла с расширением «.pcap». Рассмотрим все на примере:

sudo tcpdump -i ppp0 -w file.pcap

Обратите внимание: во время записи логов в файл на экране «Терминала» не отображается никакой текст.

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

sudo tcpdump -r file.pcap

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

Фильтрация по IP

Из таблицы фильтров мы знаем, что dst позволяет вывести на экран консоли только те пакеты, которые были получены адресом, что указан в синтаксисе команды. Таким образом очень удобно просматривать пакеты, полученные вашим компьютером. Для этого в команде нужно всего лишь указать свой IP-адрес:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

Как можно заметить, помимо dst, в команде мы прописали также фильтр ip. Другими словами, мы сказали компьютеру, чтобы при отборе пакетов он обращал внимание на их IP адрес, а не на другие параметры.

Читайте также:  Mac os записать вебинар

По IP можно отфильтровать и отправляемые пакеты. В примере приведем снова наш IP. То есть сейчас мы отследим, какие пакеты отправляются с нашего компьютера на другие адреса. Для этого нужно выполнить следующую команду:

sudo tcpdump -i ppp0 ip src 10.0.6.67

Как можно заметить, в синтаксисе команды мы изменили фильтр dst на src, тем самым сказав машине, чтобы она искала отправителя по IP.

Фильтрация по HOST

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

sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com

На изображении можно увидеть, что в «Терминале» отображаются только те пакеты, которые были отправлены с нашего IP на хост google.com. Как можно понять, вместо хоста google, можно вписать любой другой.

Как и в случае с фильтрацией по IP, в синтаксисе dst можно заменить на src, чтобы увидеть пакеты, которые отправляются на ваш компьютер:

sudo tcpdump -i ppp0 src host google-public-dns-a.google.com

Обратите внимание: фильтр host должен стоять после dst или src, иначе команда выдаст ошибку. В случае с фильтрацией по IP, наоборот, dst и src стоят перед фильтром ip.

Применение фильтра and и or

Если у вас появляется необходимость использовать сразу несколько фильтров в одной команде, то для этого нужно применять фильтр and или or (зависит от случая). Указывая фильтры в синтаксисе и разделяя их этими оператором, вы «заставите» работать их как один. На примере это выглядит следующим образом:

sudo tcpdump -i ppp0 ip dst 95.47.144.254 or ip src 95.47.144.254

Из синтаксиса команды видно, что мы хотим вывести на экран «Терминала» все пакеты, которые были отправлены на адрес 95.47.144.254 и пакеты, полученные этим же адресом. Также вы можете изменять некоторые переменные в этом выражении. Например, вместо IP указать HOST или заменить непосредственно сами адреса.

Фильтр port и portrange

Фильтр port отлично подойдет в тех случаях, когда нужно получить информацию о пакетах с определенным портом. Так, если вам нужно увидеть лишь ответы или запросы DNS, нужно указать порт 53:

sudo tcpdump -vv -i ppp0 port 53

Если вы хотите просмотреть пакеты http, нужно ввести порт 80:

sudo tcpdump -vv -i ppp0 port 80

Помимо прочего, есть возможность отследить сразу диапазон портов. Для этого применяется фильтр portrange:

sudo tcpdump portrange 50-80

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

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

Вы также можете вывести на экран только тот трафик, который соответствует какому-либо протоколу. Для этого нужно использовать в качестве фильтра наименование этого самого протокола. Разберем на примере udp:

sudo tcpdump -vvv -i ppp0 udp

Как можно увидеть на изображении, после выполнения команды в «Терминале» отобразились лишь пакеты с протоколом udp. Соответственно, вы можете осуществить фильтрацию и по другим, например, arp:

sudo tcpdump -vvv -i ppp0 arp

sudo tcpdump -vvv -i ppp0 tcp

Фильтр net

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

sudo tcpdump -i ppp0 net 192.168.1.1

Фильтрация по размеру пакета

Мы не рассмотрели еще два интересных фильтра: less и greater. Из таблицы с фильтрами мы знаем, что они служат для вывода пакетов данных больше (less) или меньше (greater) размера, указанного после ввода атрибута.

Допустим мы хотим следить лишь за пакетами, которые не превышают отметку в 50 бит, тогда команда будет иметь следующий вид:

sudo tcpdump -i ppp0 less 50

Теперь давайте отобразим в «Терминале» пакеты, размер которых больше 50 бит:

sudo tcpdump -i ppp0 greater 50

Как можно заметить, применяются они одинаково, разница лишь в названии фильтра.

Заключение

По окончании статьи можно сделать вывод, что команда tcpdump — это отличный инструмент, с помощью которого можно отследить любой передаваемый по интернету пакет данных. Но для этого недостаточно просто ввести саму команду в «Терминал». Добиться желаемого результата получится только в случае, если использовать всевозможные опции и фильтры, а также их комбинации.

Помимо этой статьи, на сайте еще 12315 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Источник

Оцените статью