Installing tcpdump on linux

Команда tcpdump в Linux

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

Несмотря на название, с помощью tcpdump вы также можете захватывать не-TCP трафик, такой как UDP, ARP или ICMP. Перехваченные пакеты можно записать в файл или на стандартный вывод. Одной из самых мощных функций команды tcpdump является ее способность использовать фильтры и собирать только те данные, которые вы хотите анализировать.

В этой статье мы рассмотрим основы использования команды tcpdump в Linux.

Установка tcpdump

tcpdump установлен по умолчанию в большинстве дистрибутивов Linux и macOS. Чтобы проверить, доступна ли команда tcpdump в вашей системе, введите:

Результат должен выглядеть примерно так:

Если tcpdump отсутствует в вашей системе, приведенная выше команда напечатает «tcpdump: команда не найдена». Вы можете легко установить tcpdump с помощью диспетчера пакетов вашего дистрибутива.

Установка tcpdump в Ubuntu и Debian

Установка tcpdump на CentOS и Fedora

Установка tcpdump в Arch Linux

Захват пакетов с помощью tcpdump

Общий синтаксис команды tcpdump следующий:

  • Команда options позволяет управлять поведением команды.
  • expression фильтра определяет, какие пакеты будут захвачены.

Только root или пользователь с привилегиями sudo может запускать tcpdump . Если вы попытаетесь запустить команду от имени непривилегированного пользователя, вы получите сообщение об ошибке: «У вас нет разрешения на захват на этом устройстве».

Самый простой вариант использования — вызвать tcpdump без каких-либо опций и фильтров:

tcpdump будет продолжать захватывать пакеты и записывать их на стандартный вывод, пока не получит сигнал прерывания. Используйте Ctrl+C чтобы отправить сигнал прерывания и остановить команду.

Для более подробного вывода передайте параметр -v или -vv для более подробного вывода:

Вы можете указать количество пакетов для захвата с помощью опции -c . Например, чтобы захватить только десять пакетов, введите:

После захвата пакетов tcpdump остановится.

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

Используйте параметр -D чтобы распечатать список всех доступных сетевых интерфейсов, с которых tcpdump может собирать пакеты:

Для каждого интерфейса команда выводит имя интерфейса, краткое описание и соответствующий индекс (номер):

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

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

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

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

Вместо отображения вывода на экране вы можете перенаправить его в файл с помощью операторов перенаправления > и >> :

Вы также можете просматривать данные при сохранении в файл с помощью команды tee :

Параметр -l в приведенной выше команде сообщает tcpdump о необходимости буферизации выходной строки. Если этот параметр не используется, вывод не будет записан на экране при создании новой строки.

Читайте также:  Windows startup repair log

Понимание вывода tcpdump

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

Типичный формат строки протокола TCP выглядит следующим образом:

Пойдем по полю и объясним следующую строку:

15:47:24.248737 — 15:47:24.248737 метка захваченного пакета 15:47:24.248737 по местному времени и использует следующий формат: hours:minutes:seconds.frac , где frac — доли секунды с полуночи.

IP — пакетный протокол. В данном случае IP означает Интернет-протокол версии 4 (IPv4).

192.168.1.185.22 — IP-адрес и порт источника, разделенные точкой ( . ).

192.168.1.150.37445 — IP-адрес и порт назначения, разделенные точкой ( . ).

Flags [P.] — поле TCP Flags. В этом примере [P.] означает пакет подтверждения push, который используется для подтверждения предыдущего пакета и отправки данных. Другие типичные значения поля флага следующие:

  • [.] — ACK (подтверждение)
  • [S] — SYN (Начать соединение)
  • [P] — PSH (Push-данные)
  • [F] — FIN (Завершить соединение)
  • [R] — RST (сбросить соединение)
  • [S.] — SYN-ACK (пакет SynAcK)

seq 201747193:201747301 — Порядковый номер находится в seq 201747193:201747301 first:last . Он показывает количество данных, содержащихся в пакете. За исключением первого пакета в потоке данных, где эти числа являются абсолютными, все последующие пакеты используются как относительные позиции байтов. В этом примере номер 201747193:201747301 , что означает, что этот пакет содержит байты от 201747193 до 201747301 потока данных. Используйте параметр -S для вывода абсолютных порядковых номеров.

ack 1226568763 Номер подтверждения — это порядковый номер следующих данных, ожидаемых на другом конце этого соединения.

win 402 — Номер окна — это количество доступных байтов в приемном буфере.

options [nop,nop,TS val 1051794587 ecr 2679218230] — параметры TCP. nop , или «нет операции» — это заполнение, используемое для того, чтобы сделать заголовок TCP кратным 4 байтам. TS val — это временная метка TCP, а ecr — эхо-ответ. Посетите документацию IANA для получения дополнительной информации о параметрах TCP.

length 108 — длина данных полезной нагрузки

tcpdump фильтры

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

Фильтры — одна из самых мощных функций команды tcpdump . Они позволяют захватывать только те пакеты, которые соответствуют выражению. Например, при устранении проблем, связанных с веб-сервером, вы можете использовать фильтры для получения только HTTP-трафика.

tcpdump использует синтаксис Berkeley Packet Filter (BPF) для фильтрации перехваченных пакетов с использованием различных параметров обработки, таких как протоколы, IP-адреса и порты источника и назначения и т. д.

В этой статье мы рассмотрим некоторые из наиболее распространенных фильтров. Список всех доступных фильтров можно найти на странице руководства pcap-filter .

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

Чтобы ограничить захват определенным протоколом, укажите этот протокол как фильтр. Например, чтобы захватить только трафик UDP, вы должны запустить:

Другой способ определить протокол — использовать квалификатор proto , за которым следует номер протокола. Следующая команда отфильтрует протокол номер 17 и выдаст тот же результат, что и приведенный выше:

Для получения дополнительной информации о числах проверьте список номеров IP-протоколов .

Фильтрация по хосту

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

Хостом может быть IP-адрес или имя.

Вы также можете фильтровать вывод по заданному диапазону IP-адресов, используя квалификатор net . Например, чтобы выгрузить только пакеты, относящиеся к 10.10.0.0/16 вы должны использовать:

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

Чтобы ограничить захват только пакетами от или к определенному порту, используйте квалификатор port . Приведенная ниже команда захватывает пакеты, связанные со службой SSH (порт 22), с помощью этой команды:

portrange позволяет захватывать трафик в диапазоне портов:

Фильтрация по источнику и назначению

Вы также можете фильтровать пакеты на основе порта или хоста источника или назначения, используя квалификаторы are src , dst , src and dst , а также src or dst .

Читайте также:  Файловый сервер windows настройка прав

Следующая команда захватывает приходящие пакеты от хоста с IP 192.168.1.185:

Чтобы найти трафик, поступающий из любого источника на порт 80, вы должны использовать:

Комплексные фильтры

Фильтры можно комбинировать с помощью операторов and ( && ), or ( || ), но not ( ! ).

Например, чтобы захватить весь HTTP-трафик, поступающий с исходного IP-адреса 192.168.1.185, вы должны использовать эту команду:

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

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

Вот еще один пример команды для захвата всего трафика, кроме SSH, с исходного IP-адреса 192.168.1.185:

Инспекция пакетов

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

tcpdump позволяет печатать содержимое пакетов в ASCII и HEX.

Параметр -A указывает tcpdump печатать каждый пакет в ASCII и -x в HEX:

Чтобы показать содержимое пакета как в HEX, так и в ASCII, используйте параметр -X :

Чтение и запись снимков в файл

Еще одна полезная функция tcpdump — записывать пакеты в файл. Это удобно, когда вы захватываете большое количество пакетов или захватываете пакеты для последующего анализа.

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

Эта команда выше сохранит захват в файл с именем data.pcap . Вы можете назвать файл по .pcap , но обычно используется расширение .pcap (захват пакетов).

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

Чтобы проверить содержимое файла, вызовите tcpdump с параметром -r :

Если вы хотите запустить tcpdump в фоновом режиме , добавьте символ амперсанда ( & ) в конце команды.

Файл захвата также можно проверить с помощью других инструментов анализатора пакетов, таких как Wireshark.

При захвате пакетов в течение длительного периода времени вы можете включить ротацию файлов. tcpdump позволяет создавать новые файлы и вращать файл дампа через указанный интервал времени или фиксированного размера. Следующая команда создаст до десяти файлов размером 200 file.pcap0 именами file.pcap0 , file.pcap1 и т. Д. Перед перезаписью старых файлов.

После создания десяти файлов старые файлы будут перезаписаны.

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

Если вы хотите запустить tcpdump в определенное время, вы можете использовать cronjob . tcpdump не имеет возможности выйти через заданное время. Вы можете использовать команду timeout чтобы остановить tcpdump через некоторое время. Например, чтобы выйти через 5 минут, вы должны использовать:

Выводы

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

Эта статья познакомила вас с основами использования и синтаксиса tcpdump . Для получения более подробной документации посетите веб-сайт tcpdump .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

linux-notes.org

Установка и использование tcpdump

tcpdump — мощный анализатор командной строки и Libpcap, портативная библиотека для захвата сетевого трафика. Tcpdump выводит описание содержимого пакетов на сетевом интерфейсе, которые соответствуют логическое выражение. Он также может быть запущен с ключом -w, который вызывает его, чтобы сохранить пакетные данные в файл для последующего анализа, и / или с -r флагом, который вызывает его для чтения из сохраненного файла пакета. С помощью этой утилиты можно перехватывать и так же анализировать сетевой трафик который проходит через ПК на котором запущенна данная программа.

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

С помощью tcpdump можно:

  • Можно делать отладку сетевых приложений.
  • Можно производить отладку сети или сетевого оборудования в целом.

Чтобы установить tcpdump на debian/ubuntu/linux mint нужно выполнить:

Для того чтобы установить tcpdump на RedHat/CentOS/Fedora используйте:

Для того чтобы установить tcpdump на MacOS используйте.

Читайте также:  Как записать загрузочный диск с помощью windows

Использование tcpdump.

Чтобы проверить работает ли у нас tcpdump можно выполнить команду:

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

основные ключи для использования tcpdump

Если нужно узнать какими пакетами обменивается 21 сервера ( например your_server_1 и your_server_2), то для этого служит команда:

Если нужно отслеживать только исходящие пакеты из хоста, то выполните:

Если нужно отслеживать только входящие пакеты из хоста, то выполните:

Так же можно прослушивать исходящие или входящие пакеты с сервера и по определенному порту для этого просто добавьте порт который нужно прослушивать ( в основном используется 80, 8080).

См. список интерфейсов, по которым tcpdumt можете слушать:

Слушать интерфейс eth0:

Слушать на любом доступном интерфейсе (Требуется ядро Linux версии 2.2 или выше):

Вывод всего на экран (все что выполняется программой):

Вывод много чего на экран (все что выполняется программой):

Вывод очень много всего на экран (все что выполняется программой):

Выводить не сильно много информации когда идет захват пакетов (не как стандартный):

Ограничить захват пакетов до 100:

Записать все данные (перехваченные пакеты) в файл с именем capture.cap:

Записать все данные (перехваченные пакеты) в файл с именем capture.cap и вывести на экран в режиме реального времени:

Вывод пакетов с файла capture.cap:

Вывод пакетов с файла capture.cap используя максимально много информации:

Вывод IP и порты вместо доменов идет захват пакетов:

Захват любых пакетов , где хост назначения — 192.138.1.1. Вывод ИП и порты на экран:

Захват любых пакетов c хоста 192.138.1.1. Вывод ИП и порты на экран:

Захват любых пакетов c хоста 192.138.1.1. Вывод ИП и порты на экран:

Захват пакетов где сеть 192.138.1.0/24. Вывод ИП и порты на экран:

Захват пакетов с сети 192.138.1.0/24. Вывод ИП и порты на экран:

Захват пакетов с сети 192.138.1.0/24. Вывод ИП и порты на экран:

Захват пакетов с порта 23. Вывод ИП и порты на экран:

Захват пакетов с портов 1 по 1023. Вывод ИП и порты на экран:

Захватывать только TCP пакеты где destination на портах 1 по 1023. Вывод ИП и порты на экран:

Захватывать только UDP пакеты где destination на портах 1 по 1023. Вывод ИП и порты на экран:

Захват пакетов с destination где ИП 192.138.1.1 и destination порт которого 23. Вывод на экран:

Захват пакетов с destination где ИП 192.138.1.1 и destination по портам 80 или 443. Выводим на экран:

Захват любых ICMP пакетов:

Захват любых ARP пакетов:

Захват любых ICMP или ARP пакетов:

Захват любых пакетов которые broadcast или multicast:

Захват больших пакетов (500 байт) а не стандартных 68б:

Захват всех байт данных в пакете:

Просмотр «тяжелых пакетов»:

Захват пакетов ICMP с ping и pong:

Вывод без многих вариантов:

Основные коммуникации (очень подробный режим), можно увидеть хороший объем трафика, с многословием:

Глубокий взгляд на трафик, добавляет -X для полезной нагрузки:

Просмотр тяжелого пакета и увеличивает snaplength, захватывая весь пакет:

Вы можете также фильтровать на основе определенных частей пакета, а также объединить несколько условий в группы. Это полезно при поиске только SYNs или РСТ, например, и последний для еще более расширенный изоляцией трафика.

Показать мне все URGENT (URG) пакеты:

Показать мне всеACKNOWLEDGE (ACK) пакеты:

Показать мне все PUSH (PSH) пакеты:

Показать мне все RESET (RST) пакеты:

Показать мне все SYNCHRONIZE (SYN) пакеты:

Показать мне все FINISH (FIN) пакеты:

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

Захват TCP Flags используя tcpflags:

Пакеты с RST и SYN флагами (проверка):

Траффик с ‘Evil Bit'(проверка):

На этом я завершу свою статью «установка и использование tcpdump», надеюсь все ясно и понятно. Спасибо за использование моего интернет ресурса http://linux-notes.org

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Источник

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