- Команда tcpdump в Linux
- Установка tcpdump
- Установка tcpdump в Ubuntu и Debian
- Установка tcpdump на CentOS и Fedora
- Установка tcpdump в Arch Linux
- Захват пакетов с помощью tcpdump
- Понимание вывода tcpdump
- tcpdump фильтры
- Фильтрация по протоколу
- Фильтрация по хосту
- Фильтрация по порту
- Фильтрация по источнику и назначению
- Комплексные фильтры
- Инспекция пакетов
- Чтение и запись снимков в файл
- Выводы
- Как пользоваться TCPDUMP
- Как пользоваться TCPDUMP
- Как установить tcpdump в Linux
- Команды для TCPDUMP
- 1. Захват пакетов с определенного интерфейса
- 2. Захватить только N Количество пакетов
- 3. Печать захваченных пакетов в ASCII
- 4. Отображение доступных интерфейсов
- 5. Отображение захваченных пакетов в HEX и ASCII
- 7. Прочтите файл с захваченными пакетами
- 8. Захват пакетов IP-адресов.
- 9. Захват только TCP-пакетов.
- 10. Захват пакета из определенного порта
- 11. Захват пакетов с исходного IP-адреса
- 12. Захват пакетов с IP-адреса назначения
- Выводы
Команда 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 о необходимости буферизации выходной строки. Если этот параметр не используется, вывод не будет записан на экране при создании новой строки.
Понимание вывода 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 .
Следующая команда захватывает приходящие пакеты от хоста с 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 .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Как пользоваться TCPDUMP
В нашей предыдущей статье мы рассказывали о том, как можно восстановить удаленные файлы в Linux. Здесь мы покажем вам, как установить tcpdump, а затем мы обсудим и рассмотрим некоторые полезные команды с их практическими примерами. Вы увидите, что пользоваться этой функцией очень просто.
Как пользоваться TCPDUMP
tcpdump — это самый мощный и широко используемый анализатор пакетов или анализатор пакетов, который используется для захвата или фильтрации пакетов TCP / IP, которые были получены или переданы по сети на определенном интерфейсе. Он доступен в большинстве операционных систем на базе Linux / Unix. tcpdump также дает нам возможность сохранять захваченные пакеты в файле для последующего анализа.
Он сохраняет файл в формате pcap, который можно просмотреть командой tcpdump или инструментом с открытым исходным кодом на основе GUI, называемым Wireshark (Network Protocol Analyzier), который считывает файлы формата tcappump pcap. Прежде чем разобрать основные команды и понять как пользоваться TCPDUMP, нам нужно установить эту функцию.
Как установить tcpdump в Linux
Многие дистрибутивы Linux уже поставляются с инструментом tcpdump, если в случае, если у вас его нет в системах, вы можете установить его с помощью следующей команды Yum.
# yum install tcpdump
Как только инструмент tcpdump установлен в системах, вы можете продолжить просмотр следующих команд с помощью своих примеров.
Команды для TCPDUMP
После установки давайте поговорим непосредственно про команды. Мы разберем только основные, которых должно хватить практически для любых операций с командной строкой. Если у вас возникнут какие-то вопросы по поводу некоторых команд, мы с радостью объясним вам более детально в комментариях.
Теперь давайте перейдем к основам того, как пользоваться TCPDUMP.
1. Захват пакетов с определенного интерфейса
Экран команды будет прокручиваться до тех пор, пока вы не остановите его, и когда мы выполним команду tcpdump, он будет захватываться со всех интерфейсов, однако с -i переключить только из определенного программного интерфейса.
2. Захватить только N Количество пакетов
Когда вы запустите команду tcpdump, она будет захватывать все пакеты для указанного интерфейса, пока вы не нажмете кнопку отмены. Но с использованием опции -c вы можете захватить определенное количество пакетов. В приведенном ниже примере будут отображены только 6 пакетов.
3. Печать захваченных пакетов в ASCII
Следующая команда tcpdump с параметром -A отображает пакет в формате ASCII. Это формат схемы кодирования символов.
4. Отображение доступных интерфейсов
Чтобы просмотреть список доступных интерфейсов в системе, выполните следующую команду с опцией -D.
5. Отображение захваченных пакетов в HEX и ASCII
Следующая команда с опцией -XX захватывает данные каждого пакета, включая заголовок уровня канала в формате HEX и ASCII.
6. Захват и сохранение пакетов в файле
Как мы уже говорили, у tcpdump есть функция для записи и сохранения файла в формате .pcap, для этого просто выполните команду с параметром -w.
7. Прочтите файл с захваченными пакетами
Для чтения и анализа файла захваченного пакета 0001.pcap используйте команду с параметром -r, как показано ниже.
8. Захват пакетов IP-адресов.
Чтобы захватить пакеты для определенного интерфейса, выполните следующую команду с опцией -n.
9. Захват только TCP-пакетов.
Чтобы захватить пакеты на основе TCP-порта, запустите следующую команду с параметром tcp.
10. Захват пакета из определенного порта
Предположим, вы хотите захватить пакеты для определенного порта 22, выполните следующую команду, указав номер порта 22, как показано ниже.
11. Захват пакетов с исходного IP-адреса
Чтобы захватить пакеты с исходного IP-адреса, скажем, вы хотите захватить пакеты для 192.168.0.2, используйте следующую команду.
12. Захват пакетов с IP-адреса назначения
Чтобы захватить пакеты с IP-адреса назначения, скажите, что вы хотите захватить пакеты для 50.116.66.139, используйте следующую команду.
Эта статья может помочь вам глубже изучить команду tcpdump, а также собрать и проанализировать пакеты в будущем. Существует множество доступных опций, вы можете использовать параметры в соответствии с вашими требованиями. Пожалуйста, поделитесь мнением, если вы найдете эту статью полезной через наш блок комментариев. Вот мы и разобрали основные команды, как пользоваться TCPDUMP.
Выводы
Надеемся вы поняли, как пользоваться TCPDUMP. Мы постарались разобрать все основные функции, которые могут пригодится не только новичку но и уверенному пользователю любой операционной системы.
Также, если статья была полезной для вас, то обязательно поделитесь на в социальных сетях Google+, Facebook, Twitter, Одноклассники или ВКонтакте. Давайте развивать наше сообщество вместе!
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник