- Команда tcpdump в Linux
- Установка tcpdump
- Установка tcpdump в Ubuntu и Debian
- Установка tcpdump на CentOS и Fedora
- Установка tcpdump в Arch Linux
- Захват пакетов с помощью tcpdump
- Понимание вывода tcpdump
- tcpdump фильтры
- Фильтрация по протоколу
- Фильтрация по хосту
- Фильтрация по порту
- Фильтрация по источнику и назначению
- Комплексные фильтры
- Инспекция пакетов
- Чтение и запись снимков в файл
- Выводы
- Astra linux tcpdump deb
- Welcome!
- Documentation
- Latest Releases
- Tcpdump
- Libpcap
- Current Development Versions
- Mailing List
- Patches, Bug Reports and Feature Requests
- How to Contribute
- Contents
Команда 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 .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Astra linux tcpdump deb
Welcome!
This is the official web site of tcpdump, a powerful command-line packet analyzer; and libpcap, a portable C/C++ library for network traffic capture.
In this page, you’ll find the latest stable version of tcpdump and libpcap, as well as current development snapshots, a complete documentation, and information about how to report bugs or contribute patches.
Documentation
Full documentation is provided with the source packages in man page format. People with Windows distributions are best to check the Windows PCAP page for references to WinDUMP. What follows are the man pages formatted in HTML (using man2html) and some tutorials written by external contributors.
Latest Releases
Tcpdump
Version: 4.99.1
Release Date: June 9, 2021
Download: tcpdump-4.99.1.tar.gz (changelog) (PGP signature and key)
This release contains initial work to redo how buffer overruns are handled. The next major release will be 5.0, and will have all the legacy ND_CHECK* macros removed, but this is taking longer than planned. No new code with ND_CHECK* will be accepted.
We maintain a list of public CVE information. This tcpdump release requires libpcap 1.10.1 in order to pass all test cases.
Libpcap
Version: 1.10.1
Release Date: June 9, 2021
Download: libpcap-1.10.1.tar.gz (changelog) (PGP signature and key)
Current Development Versions
The current development versions are freely accessible through the GitHub Git hosting site. tcpdump can be found at GitHub: tcpdump and libpcap can be found at GitHub: libpcap. You can clone these repositories with the following commands:
You can then configure and compile the source via the normal GNU autoconf method. The continuous integration systems below automatically build the current development versions of tcpdump and libpcap:
- Cirrus CI
- tcpdump
× - libpcap
× - tcpslice
×
- tcpdump
- OpenCSW Buildbot
- tcpdump
× - libpcap
×
- tcpdump
- AppVeyor CI
- tcpdump
× - libpcap
×
- tcpdump
- The Tcpdump Group Buildbot (infrastructure sponsored by sysmocom)
- tcpdump
× - tcpdump
× - tcpdump
× - libpcap
× - libpcap
× - libpcap
× - tcpslice
× - tcpslice
× - tcpslice
×
- tcpdump
- The Tcpdump Group Buildbot (infrastructure sponsored by OSU OSL)
- tcpdump
× - tcpdump
× - tcpdump
× - tcpdump
× - tcpdump
× - libpcap
× - libpcap
× - libpcap
× - libpcap
× - libpcap
× - tcpslice
× - tcpslice
× - tcpslice
× - tcpslice
× - tcpslice
×
- tcpdump
- The Tcpdump Group Buildbot (hardware sponsored by RISC-V International)
- tcpdump
× - libpcap
× - tcpslice
×
- tcpdump
- The Tcpdump Group Buildbot (own infrastructure)
- tcpdump
× - tcpdump
× - tcpdump
× - tcpdump
× - tcpdump
× - libpcap
× - libpcap
× - libpcap
× - libpcap
× - libpcap
× - tcpslice
× - tcpslice
× - tcpslice
× - tcpslice
× - tcpslice
×
- tcpdump
Mailing List
Patches, Bug Reports and Feature Requests
Bugs and patches are tracked through GitHub. Please submit them using the following resources:
- Submit bugs and feature requests on the issue tracker.
- Submit patches by forking the branch at GitHub: libpcap and issuing a pull request.
- Submit bugs and feature requests on the issue tracker.
- Submit patches by forking the branch at GitHub: tcpdump and issuing a pull request.
How to Contribute
Tcpdump and libpcap are open source software and anyone can make contributions. You can help by:
- downloading and testing libpcap and tcpdump on your platform
- contributing code
- proofreading the documentation and the man pages
- providing .pcap files for protocols or protocol features that tcpdump supports, but does not test yet
If you want to contribute, please subscribe to the tcpdump-workers mailing list. It’s a good idea to discuss bugfixes and new feature additions in advance, because the changes may have bigger implications than you think and your patch may not get accepted.
Contents
© 2010-2021 The Tcpdump Group. Designed by Luis MartinGarcia; based on a template by TEMPLATED. [Valid HTML 4.01] [Valid CSS]
Источник