Примеры tcpdump в Linux

Команды и примеры использования tcpdump

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

Установка приложения tcpdump

В Debian/Ubuntu/Linux Mint системах необходимо сделать следующее:

В системе RedHat/CentOS/Fedora необходимо сделать следующее:

Описание ключей приложения tcpdump

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

Tcpdump, по умолчанию, принимает только первые 68 96 байт данных из пакета. Если вы хотите, посмотреть более подробные пакеты, то добавьте опцию -s , где число обозначает количество байтов, которые вы хотите захватить. Если установить -s 0 (ноль)- это означает захватывать все пакеты. Вот краткий список опций, которые используются больше всего:

  • -i any – прослушивать трафик со всех имеющихся интерфейсов
  • -n – отображать IP адреса вместо имени хостов
  • -nn – отображать IP адреса и номера портов вместо имени хостов и названия протоколов
  • -X – показывать пакет в hex и ASCII формате
  • -XX – показывать пакет в hex и ASCII формате и выводить заголовок ethernet
  • -v, -vv, -vvv – уровни отображаемой информации о пакете, которую вы получаете
  • -c – получение определенного N количества пакетов, далее запись останавливается
  • -s – количество байтов в пакете, которые обрабатывает tcpdump
  • -S – позволяет не обрабатывать абсолютные порядковые номера в относительные
  • -e – получение ethernet заголовка
  • -q – показывает минимальное количество информации о пакете
  • -E – расшифровать трафик IPSec, предоставляя ключ шифрования
  • -r – позволяет приложению tcpdump прочитать данные из файла
  • -t – не отображать метку времени в каждой строке
  • -tt – отображать неформатированную метку времени в каждой строке
  • -ttt – показывать дату и время
  • -w – записывать данные в файл

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

Различные выражения позволяют вам легко найти необходимый трафик. Tcpdump позволяет гибко настроить фильтры. В приложении tcpdump есть три типа выражений: type, dir и proto.

Под выражениями type понимается следующее host, net и port. Выражения типа dir – это src, dst, src или dst и src и dst. Ниже представлены примеры использования различных выражений:

host – просматривает трафик на основе IP адреса или имени хоста, если вы не используете ключ -n

src, dst – ищет от определенного источника или по определенному назначению (выбирает трафик только с одной стороны)

net – захватывает весь трафик в сети, необходимо установить маску подсети

proto – работает с протоколами tcp, udp и icmp. (Не надо писать proto)

port – захватывает трафик по определенному порту

src, dst port – захватывает трафик по определенному порту от источника или к IP адресу назанчения

src/dst, port, protocol – сочетание всех трех выражений

Также есть возможность фильтрации по диапазону портов.

portrange – захват трафика по диапазону портов

less, greater – захват трафика определенного размера в байтах

Так же в этом случае вы можете использовать символы (>, =)

Tcpdump позволяет сохранять захваченный трафик в файл. Для этого необходимо использовать ключ -w. Если вы хотите считать трафик из файла, то необходимо использовать ключ -r.

При сохранении файла желательно использовать расширение файла *.cap или *.pcap. В дальнейшем, полученный файл, можно будет открыть в WireShark.

Запись всего трафика по порту 5060 в файл.

При необходимости файл можно загрузить заново в tcpdump.

Использование выражений И, ИЛИ и ИЛИ НЕ

Tcpdump позволяет комбинировать выражения при помощи логических выражений

TCP трафик от 192.168.2.113 и порт назначения 5060

Трафик из сети 192.168.0.0 в сети 10.0.0.0 или 172.16.0.0

Исключение ICMP пакетов, пункт назначения 192.168.0.2, источник подсеть 172.16.0.0

Трафик от хоста office и не по порту SSH

Можно группировать фильтры, для этого необходимо использовать скобки (). При сложных выражениях необходимо использовать кавычки ”.

Трафик от 192.168.2.114 и порты назначения 5060 или 22

Расширенные настройки фильтра

Можно отфильтровать трафик на основе конкретных частей пакета. Бывает полезно при поиске отображать пакеты, которые содержат ACK или SYN.

Показывать пакеты URGENT (URG)

Показывать пакеты ACKNOWLEDGE (ACK)

Показывать пакеты PUSH (PSH)

Показывать пакеты RESET (RST)

Показывать пакеты SYNCHRONIZE (SYN)

Показывать пакеты FINISH (FIN)

Показывать пакеты SYNCHRONIZE/ACKNOWLEDGE (SYNACK)

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

Здесь мы покажем фильтры, которые мы сами используем для захвата SIP трафика.

– Захват всего трафика по порту 5060 и сохранение в файл

– Захват трафика по порту 5060 с определенного IP адреса и сохранение в файл

– Захват трафика по порту 5060 на определенный IP адрес и сохранение в файл

– Захват трафика по порту 5060 на определенный IP адрес и сохранение в файл, с указанием каталога

– Захват трафика со всех интерфейсов, по хосту 10.81.25.201 и записывать в файл(в файл включается название хоста машины и дата, очень удобно для дальнейшего хранения)

Если вы в статье нашли ошибки или несоответствия, мы будем благодарны, если вы напишите нам о них в комментариях.

АйТи бубен

Инструменты пользователя

Инструменты сайта

Содержание

tcpdump

Утилита tcpdump относится к числу так называемых «снифферов» — программ предназначенных для перехвата сетевого трафика. Одним словом, tcpdump предназначен для подслушивания. Разрабо­тан Группой сетевых исследований (Network Reseach Group, NRG) Отдела инфор­мационных и вычислительных технологий (Information and Computing Sciences Division, ICSD) в Национальной лаборатории Лоренс Беркли (Lawrence Berkeley National Laboratory, LBNL).

Читать еще:  Создаем комикс из фотографии в Фотошопе

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

tcpdump работает при помощи интерфейса bpf (Berkeley Packet Filter). Если поддержку этого устройства отключить, сниффинг в BSD-UNIX окажется невозможен. Права на запуск программы tcpdump определяются правами доступа к устройсву bpf (/dev/bpf0). Эти права можно регулировать через devfs. Если вы предоставляете, например, группе operator права на чтение из этого устройства, то это значит, что все члены этой группы смогут перехватывать любой трафик, в том числе трафик суперпользователя.

Если программа tcpdump вызвана для прослушивания некоторого интерфейса, она переводит его в «promiscuous mode» — «неразборчивый режим». В этом режиме интерфейс ловит вообще все пакеты, которые до него добрались, а не только пакеты адресованные непосредственно ему. Таким образом, если сеть собрана не на коммураторах (switch), а на репитерах (hub), то tcpdump позволит перехватить трафик между посторонними машинами, т.е. подслушать разговор двух сторонних машин. Сказанное не означает, что перехват трафика невозможен в сети собранной на коммутаторах. Впрочем, интерфейс можно и не переводить в promiscous mode, если передать программе аргумент -p.

tcpdump для VoIP SIP H.323

Анализирует траффик удаленно через SSH с помощью Wireshark

UDP трафик с и на IP xxx.xxx.xxx.251 destined for port 5060:

Записать в файл mbill251 весь трафик с хоста xxx.xxx.xxx.251 за исключением трафика ssh

Прослушать порт 5060 с ip xxx.xxx.xxx.251

H.323 сигналинг ловим с двух IP. В таком виде с двух IP отказалось снимать, может быть OR нужно было поставить.

tcpdump Packet Filter Firewall (PF)

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

перечислить доступные интерфейсы (которые можно прослушивать при помощи опции -i)

посмотреть трафик одного хоста:

посмотреть трафик на порте:

посмотреть IP трафик на хост:

посмотреть ARP трафик на хост:

посмотреть RARP трафик на хост:

посмотреть трафик, кроме хоста unixserver:

посмотреть трафик на server1 и server2

посмотреть содержимое пакетов на интерфейсе tun0 на хост ya.ru

подсмотреть номера и пароли к icq

посмотреть содержимое пакетов на интерфейсе tun0 на хост ya.ru, при этом прочитать из каждого пакета по 1500 байт и не преобразовывать IP в имя хоста

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

TCP traffic from 10.5.2.3 destined for port 3389:

Traffic originating from the 192.168 network headed for the 10 or 172.16 networks:

Non-ICMP traffic destined for 192.168.0.2 from the 172.16 network:

Проблема +arplookup 0.0.0.0 failed: host is not on local network

Лечение: запускаем команду и ищем MAC c ошибкой

arpdig – dig an interface for arp responses. Выводит соответствие между IP и MAC. Пример использования:

gratuitous arp – самообращенные запросы. При таком запросе инициатор формирует пакет, где в качестве IP используется его собственный адрес.

arping – текст level “ping” utility Пример использования:

Wireshark: Packet size limited during capture

Файлы tcpdump совместимы с Wireshark. Запуская ее с параметром -w filename, мы получаем файл, содержащий нужный нам сетевой трафик. К сожалению, по умолчанию в tcpdump каждый пакет ограничивается 96ю байтами (которых, как правило, достаточно для анализа любых пакетов). Однако если нужно залезть глубже и смотреть всё содержимое пакетов, нужно использовать команду -s size (где size – размер пакетов, которые нужно ловить). Для обычного ethernet’а размер пакетов равен 1500, для “разогнанного” гигабитного etherneta – порой до 65к.

Итого, имеем следующую команду:

И используем ее для того, чтобы можно было создать полный дамп сетевого трафика, который можно смотреть в Wireshark без сообщений вида Packet size limited during capture

tcpdump использование в Windows 10

Утилиту tcpdump можно использовать не только в Linux, но Windows.

Команда 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-адресов в числовом, а не в символьном смысле имеет свои преимущества в определенных ситуациях. Один такой пример упоминается в справочной странице утилиты:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

Одминский блог

Блог о технологиях, технократии и методиках борьбы с граблями

Использование утилиты tcpdump

Tcpdump чрезвычайно удобный сетевой анализатор, очень помогающий в работе как сетевым администраторам, так и безопасникам. Естественно что для получения максимальной информации при работе с tcpdump, просто необходимо иметь представления о стеке протоколов TCP/IP. Для удобства можно использовать более удобные и интеллектуальные программы, например Wareshark, но часто возникают ситуации когда на тестируемую машину не представляется возможным установить дополнительные сервисы, и тогда tcpdump просто незаменим, не будит же админ, ради анализа пакетов, ставить на unix’овый сервак X-Windows тем более что в большинстве unix’овых систем, утилита tcpdump идет по умолчанию.

Понимание протокола TCP/IP дает широкое пространство для использование анализатора и устранения неисправностей и неполадок в работе сети, за счет разбора пакетов. Поскольку оптимальное использование данной утилиты требует хорошего понимания сетевых протоколов и их работы, то получается забавная ситуация, в которой инженеру в любом случае необходимо знать и понимать механизмы передачи данных в сети. т.ч. tcpdump полезна во все отношениях: как устранения неисправностей, так и самообразования.

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

Первый используемый ключик -n который запрещает попытки преобразования адресов в доменные имена, тем самым выдавая нам чистые IP адреса с портами.

Читать еще:  Сохраняем переписку из Viber в среде Android, iOS и Windows

Второй это -X который задает для каждого пакета вывод как hex (шестнадцатеричная система) так и ASCII содержимого пакета.
И последняя опция это -S которая заменяет вывод относительной TCP нумерации, на абсолютную. Смысл в том, что при относительной нумерации некоторые проблемы могут скрыться от вашего внимания.

Нужно понимать, что основное преимущество tcpdump перед другими утилитами заключается в том, что в ней возможен подробный и ручной разбор пакетов. Также нужно помнить что по умолчанию tcpdump использует только первые 68 байт пакета, т.ч. если необходимо видеть больше, то следует использовать ключ -s number , где number количество байт которые следует захватить. В случае задания number 0 , произойдет полный захват пакета, поэтому лучше использовать значение 1514, что даст полный захват стандартного, для сетей Ethernet, пакета.

Список наиболее часто используемых ключей:
-c : задается проверка размера файла захвата перед каждой очередной записью захваченного пакета, если размер больше, то файл сохраняется и запись идет в новый файл
-e : выводится ethernet заголовок (канальный уровень) в каждой строке дампа
-i any : прослушивание всех интерфейсов, на случай если вам необходим весь трафик.
-n : запрещает преобразование адресов в доменные или символьные имена
-nn : запрещает преобразование адресов и портов в доменные или символьные имена
-q : Красткий вывод информации, за счет уменьшения вывода информации о протоколе.
-X : выводит как hex так и ASCII содержимое пакета
-v, -vv, -vvv : задает вывод дополнительной информации о захваченных пакетах, что дает возможность более широкого анализа.
Несколько примеров для использования:

# Стандартный вывод пакетов
tcpdump -nS
# Расширенный стандартный вывод
tcpdump -nnvvS
# Глубокий разбор пакета
tcpdump -nnvvXS
# Наиболее подробная информация о трафике
tcpdump -nnvvXSs 1514

Выражения позволяют производить более целевое сканирование и задавать типы трафика. Умение использовать выражения делает tcpdump весьма продуктивным инструментом, в рукам сисадмина. Существует три основных типа выражений: type, dir, and proto.
Опции выражжения type бывают host, net и port.
Для выражения направления задаваемого dir существующие опции src, dst, src or dst, и src and dst.
Несколько стандартных выражений:

host // анализ трафика на основе IP адреса ( также работает с символьными именами, если не задано -n)
tcpdump host 1.2.3.4

src, dst // анализ трафика только для определенного назначения или передатчика
tcpdump src 2.3.4.5
tcpdump dst 3.4.5.6

net // захват трафика принадлежащего определенной сети
tcpdump net 1.2.3.0/24

proto // работает с tcp, udp, и icmp. Нужно помнить что proto не упоминается
tcpdump icmp

port // анализ трафика с определенного порта (входящего или исходящего)
tcpdump port 3389

src, dst port // фильтр базируется на входящем или исходящем порту
tcpdump src port 1025
tcpdump dst port 3389

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

AND
and or &&
OR
or or ||
EXCEPT
not or !

TCP трафик с ресурса 10.15.123.33 с портом назвачения 3379:

# tcpdump -nnvvS tcp and src 10.15.123.33 and dst port 3379

Трафик переходящий из сети 192.168 с назначением на сети 10 или 172.16:

# tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16

Non-ICMP трафик с точкой назначения 192.168.0.2 и из сети 172.16:

# tcpdump -nvvXSs 1514 dst 192.168.0.2 and src net 172.16.0.0/16 and not icmp

Трафик с хостов Eros or Ares , но не идущий на стандартный SSH порт (для данного выражения требуется разрешение имен):

# tcpdump -vv src eros or ares and not dst port 22

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

Также следует помнить о том, что мы можем строить запросы, включающие группы и пулы опций, заданных в одном запросе. Но для того чтобы утилита tcpdump обращала на них внимание их нужно помещать в скобки, беря выражение в одиночные кавычки:
Трафик идущий с хоста 10.0.2.4 на порты назначения 3379 или 22:
# tcpdump ‘src 10.0.2.4 and (dst port 3379 or 22)’

Также возможно производить фильтрацию на основе TCP флагов, например для вычленения SYN или RST пакетов:

Анализировать все URG пакеты:
# tcpdump ‘tcp[13] & 32 != 0′

Анализировать все ACK пакеты:
# tcpdump ‘tcp[13] & 16 != 0′

Анализировать все PSH пакеты:
# tcpdump ‘tcp[13] & 8 != 0′

Анализировать все RST пакеты:
# tcpdump ‘tcp[13] & 4 != 0′

Анализировать все SYN пакеты:
# tcpdump ‘tcp[13] & 2 != 0′

Анализировать все FIN пакеты:
# tcpdump ‘tcp[13] & 1 != 0′

Анализировать все SYN-ACK пакеты:
# tcpdump ‘tcp[13] = 18′

Нужно помнить что фильтр обрабатывает данный запрос следующим образом, проверяет 13 байт заголовка TCP пакета и заданный байт флага, на соответствие условию, например:
tcpdump ‘tcp[13] & 2 != 0′ – просмотр и сравнение 13 и 2 байтов заголовка, на условие что данные не равны 0, т.е. заданы 1.

Анализ специализированного трафика:

Анализировать весь IPv6 трафик:
# tcpdump ip6

Анализировать весь трафик с имеющимися флагами SYN и RST:
# tcpdump ‘tcp[13] = 6′

Анализировать весь трафик с имеющимся “evil bit”:
# tcpdump ‘ip[6] & 128 != 0′

Естественно что приведенные примеры не могут охватить всю полноту использования столь мощного инструмента как tcpdump, поэтому как обычно, лучшим другом сисадмина был и остается:
# man man
надеюсь что данная статья сможет несколько облегчить непростой опыт общения с этой замечательной программой

Ссылка на основную публикацию
Adblock
detector