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

Основные назначения tcpdump:

1.Отладка сетевых приложений.
2.Отладка сети и сетевой конфигурации в целом.

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

 

Описание некоторых ключей tcpdump

Выйти после получения определенного количества пакетов.

Перед записью «сырого» пакета в файл, происходит проверка на превышение размером файла лимита, указанного в file_size. Если размер файла больше, то файл закрывается и открывается новый. Новый файл будет иметь имя определенное в ключе -w, со стоящим в конце числом 2, которое будет увеличиваться в следующих именах файлов. file_size определяет размер в миллионах байт (1,000,000), а не мегабайтах (1,048,576).

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

Собирать пакеты только на определенном интерфейсе. Если не указан — берется минимальный по номеру интерфейс (исключая loopback). Для Linux-ядер 2.2 и более новых, возможно указать ‘any’, тогда будет происходить сбор на всех интерфейсах, но они не будут переведены в режим promiscuous.

Не преобразовывать адрес хоста в имя. Может быть использовано, если необходимо избегать DNS-запросов.

Не преобразовывать протокол и номер порта в их имена.

Не выводить доменную часть имени хоста. Например, при данном ключе будет выводится «nic» вместо «nic.ddn.mil»

Не переводить интерфейс в режим promiscuous. Следует заметить, что интерфейс может быть в режиме promiscuous по другим причинам.

Читать пакеты из file (который, был создан с ключем -w). Если file указан как «-«, то используется стандартный ввод.

Не выводить временной штамп (timestamp) в каждой строке дампа (dump).

Выводит не форматированный временной штамп в каждой строке дампа.

Выводить разницу (в микросекундах) между текущей и предыдущей строками дампа.

Выводить временной штамп вместе с датой в формате по-умолчанию в каждой строке дампа.

(Чуть более) подробный вывод. Для еще более подробного вывода используются: -vv и -vvv.

Писать «сырые» пакеты в file перед тем как произвести их разбор и вывести. Они могут быть позднее выведены с ключем -r. Если file указан как «-«, то используется стандартный вывод.

Печатать каждый пакет (без заголовков уровня соединения) в шестнадцатиричном виде.

Помимо шестнадцатиричного вида выводить их ASCII-значения.

 

Описание фильтрующих выражений
Выражение выбирает какие пакеты будут выбираться из общего потока. Если оно не указано, то будут выбираться и выводится все пакеты идущие через интерфейс. Иначе, будут обработаны только те пакеты, для которых проверка с выражением выдаст значение «истина» (true).

Выражение состоит из одного или более примитивов. Примитивы обычно состоят из ID (имя или номер) следующего за одним или более классификаторами. Различают три вида классификаторов:

Говорят к какому виду относить ID. Возможный значения

Если классификатор type не указан, то подразумевается host.

Определяет конкретное направление передачи «к» и/или «от» ID. Возможны значения

Если не указан, то подразумевается src or dst. Для соединений нулевого (‘null’) уровня (к примеру, протокол точка-точка, такой как slip) указанием направления могут быть классификаторы inbound и outbound.

Ограничивает совпадение конкретным протоколом. Возможные протоколы:

.Если классификатор proto не указан, то подразумеваются все перечисленные типы протоколов. Например, ‘src foo означает ‘(ip or arp or rarp) src foo’, ‘net bar’ означает ‘(ip or arp or rarp) net bar’, а ‘port 53’ означает ‘(tcp or udp) port 53’.
В добавок, существует несколько специальных примитивов — ключевых слов:

Более сложные фильтрующие выражения могут быть построены с помощью слов

объединяющих примитивы.  Чтобы уменьшить количество вводимой информации, идентичные списки классификаторов могут быть опущены. Пример, ‘tcp dst port ftp or ftp-data or domain’ это тоже самое, что и ‘tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain’

 

Некоторые из допустимых примитивов (за более полным списком в man tcpdump):

Истина, если поле «назначение» пакета -это host, который может быть адресом или именем

Истина, если поле «источник» пакета — это host.

Истина, если или поле «назначение», или поле «источник» пакета — это host. Любое из описанный выше выражений может быть приписано к ключевому слову ip, arp, rarp, или ip6, как в ‘ip host host’, что эквивалентно ‘ether proto \ip and host host’. Если host — это имя с несколькими IP адресам, то проверяется совпадение по каждому адресу.

Истина, если IP адрес входит в сеть с указанной сетевой маской. Может быть классифицировано с dst или src.

Истина, если IP адрес входит в сеть с указанной сетевой маской, заданной количеством бит. Может быть классифицировано с dst или src.

Истина, если пакет протоколов ip/tcp, ip/udp, ip6/tcp или ip6/udp, и порт-назначения имеет значение указанное в port. Порт может быть числом или именем, используемым в /etc/services. Если используется число или неоднозначное имя, то проверяется только номер порта (пример, ‘dst port 513’ будет выводить трафик и для tcp/login и для udp/who, а ‘port domain’ будет выводить трафик и для tcp/domain и для udp/domain).

Истина, если пакет имеет порт-источник — port

Истина, если или порт-назначение, или порт-источник в пакете — port. Любое из описанных выше выражений может быть приписано к ключевому слову tcp или udp, как в ‘tcp src port port’, проверяющее совпадения только для TCP-пакетов.

Истина, если пакет имеет длину меньше или равную length. Это эквивалентно len <= length.

Истина, если пакет имеет длину больше или равную length. Это эквивалентно len >= length.

Истина, если пакет — это IP-пакет протокола, указанного в protocol. Протокол может быть числом или одним из имен icmp, icmp6, igmp, igrp, pim, ah, esp, vrrp, udp, или tcp. Заметим, что идентификаторы tcp, udp и icmp — ключевые слова и должны быть «заэкранированы» через обратный слэш (\).

 

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

Cписок интерфейсов, по которым tcpdump можете прослушивать пакеты

Обмен пакетами между двумя серверами и с назначением/источником порта 2223 без вывода временной метки(-t), без преобразовывания адресов хоста в имена(-n), без преобразовывания протокола и номера порта в их имена(-nn)

Аналогично,но с выводом максимольной информации(-vvv) и временного штампа вместе с датой в формате по-умолчанию в каждой строке дампа(-tttt)

Сокращенный вывод информации

Запись первых 10 пакетов(-с) для/с хоста 192.168.1.85 в файл tcpdump.txt (-w)

Чтение/ввод пакетов из файла(-r)

Захват любых пакетов , где хост назначения 192.168.1.85

Захват любых пакетов , где хост источника 192.168.1.85

Захват любых пакетов с хоста 192.168.1.85

Захват любых пакетов , где сеть источника 192.168.1.0/24

Захват любых пакетов , где сеть назначения 192.168.1.0/24

Захват любых пакетов с сети 192.168.1.0/24

Захват пакетов на/с порт/порта 80

Захват пакетов протокола UDP c назначением на порт/порты из диапазона портов 1-1024

Захват пакетов c назначением для хоста 192.168.1.85 и с порта/на порт 22

Захват пакетов c назначением для хоста 192.168.1.85 и c назначением на порт 22

Захват пакетов c назначением для хоста 192.168.1.85 и c назначением на порт 80 или на порт 443

Захват всех пакетов на интерфейсе eth0 c/для хоста 192.168.1.85 и НЕ c/для хоста 192.168.1.5 и порта 22

Захват всех UDP-пакетов на интерфейсе eth0, кроме тех, которые используют порты указанные в скобках.

Захват всех icmp пакетов

Захват всех arp пакетов

Захват всех arp или icmp пакетов

Захват всех пакетов, кроме arp и icmp пакетов

Захват всех широковещательных или многоадресных пакетов

Захват всех пакетов на интерфейсе eth0 и отбражение их в кодировке ASCII

Захват всех пакетов на интерфейсе eth0 и отбражение их в кодировке ASCII и в HEX-формате одновременно

Захват всех пакетов на интерфейсе eth0, длина которых больше 1024 байта

Захват всех пакетов на интерфейсе eth0, длина которых меньше 1024 байта

 

Фильтрация пакетов на основании установленных флагов

tcpdump-flags

Здесь выбирается только тринадцатый байт пакета и проверяется, если 32й бит не равен нулю, то пакет соответствует искомому.

Просмотр всех URGENT(URG)-пакетов

Просмотр всех ACKNOWLEDGE(ACK)-пакетов

Просмотр всех PUSH(PSH)-пакетов

Просмотр всех RESET(RST)-пакетов

Просмотр всех SYNCHRONIZE(SYN)-пакетов

Просмотр всех FINISH(FIN)-пакетов

Просмотр всех всех SYNCHRONIZE/ACKNOWLEDGE(SYN ACK)-пакетов

 

Источник
http://linuxshare.ru/docs/net/tcpdump.html
https://ru.wikipedia.org/wiki/Tcpdump
https://linux-notes.org/ustanovka-i-ispol-zovanie-tcpdump/

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика