Примеры tcpdump в Linux - TurboComputer.ru
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд (пока оценок нет)
Загрузка...

Примеры tcpdump в Linux

Аудит сетевого трафика с помощью tcpdump

Утилита tcpdump является весьма мощным инструментом, предназначенным для перехвата и анализа различных сетевых пакетов. Такая команда весьма популярна среди пользователей операционной системы «Линукс».

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

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

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

Установка tcpdump

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

Чаще всего для установки используются репозитории Ubuntu/Debian или Fedora/Red Hat/CentOS. Для осуществления поставленной задачи потребуется ввести в команд.

# apt-get install tcpdump

# yum install tcpdump

Синтаксис

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

tcpdump [опции] [требуемый интерфейс] [фильтр/фильтры]

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

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

Основной перечень опций, поддерживаемых утилитой:

  • «-A» – для выведения всех пакетов (формат ASCII).
  • «-c» – для закрытия утилиты после перехвата определенного количества сетевых пакетов.
  • «-C» – для записи обнаруженных сетевых пакетов в единый файл, проверки его размера. Если он будет больше заданных пользователем параметров, появляется возможность создания нового файла.
  • «-D» – для выведения списка всех сетевых интерфейсов, которые доступны для пользователя.
  • «-e» – для выведения информации об уровне соединения для каждого отдельного пакета. Такая опция может оказаться полезной в том случае, когда пользователю нужно увидеть MAC-адрес.
  • «-f» – для выведения доменного имени для каждого отдельного IP-адреса.
  • «-F» – для прочтения и тщательного изучения пакетов именно из файла, а не из интерфейса.
  • «-G» – для создания нового файла спустя определенный временной промежуток.
  • «-H» – для обнаружения и изучения заголовков «802.11s».
  • «-i» – для указания имени интерфейса при последующей перехватке пакетов. У пользователя появляется возможность захватить пакет с различных интерфейсов после прописывания any.
  • «-I» – для переключения интерфейса в режим монитора. В последующем будут перехвачены все проходящие пакеты.
  • «-j» – для установки формата Timestamp, который предназначен для последующего сохранения пакетов.
  • «-J» – для просмотра Timestamp, которые доступны на данный момент времени.
  • «-K» – для исключения вероятности проверки контрольных сумм пакетов.
  • «-l» – для добавления поддержки прокрутки, используемой совместно с выводом.
  • «-L» – для выведения поддерживаемых протоколов, предназначенных для подключения интерфейса.
  • «-n» – для исключения вероятности отображения доменных имен.
  • «-r» – для прочтения специализированных пакетов из фалов, которые созданы с использованием «-w».
  • «-v», «-vv», « -vvv» – для более подробного вывода требуемой информации.
  • «-q» – для выведения минимального количества данных.
  • «-w» – для записи вывода в определенный файл.
  • «-Z» – для просмотра пользователя, от имени которого в последующем создаются файлы.

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

После указания определённых опций, рассмотрим фильтры. Пользователю доступно несколько параметров, позволяющих отсеивать ненужную информацию:

  • «host» – по названию хоста.
  • «ip» – по IP-адресу.
  • «proto» – по протоколу.
  • «net» – по адресу определенной сети или подсети.
  • «port» – по адресу требуемого порта.
  • «src» – по показателям, которые касаются только отправителя.
  • «dst» – по показателям, которые касаются только получателя.

Допускается комбинирование фильтров между собой. Это позволит получить именно тот результат, который ждет пользователь.

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

Примеры

Перед использованием утилиты необходимо в обязательном порядке проверить, какие именно интерфейсы доступны для вас. Для этой цели можно воспользоваться аргументом «-D».

Изучение примеров использования tcpdump стоит начать с возможности захвата трафика (к примеру, при наличии интерфейса eth0). У большинства пользователей такой интерфейс является основным. Именно он подключен к интернет-сети. Чтобы воспользоваться программой, потребуется иметь права «супер пользователя», поэтому нужно залогиниться от root (su-) или использовать sudo.

Для остановки команды можно воспользоваться быстрым набором, достаточно нажать 2 клавиши Ctrl+C. В вашем выводе будут показаны все перехваченные с помощью утилиты пакеты. Стоит отметить, что допускается контроль подробности вывода информации. Для этого используется аргумент «-v».

# tcpdump -v -i eth0

Чтобы посмотреть, что происходит можно взглянуть на все интерфейсы “any”.

У вас имеется возможность изучить данные о времени существования ttl-пакетов, версию применяемого протокола ТСР, а также длину поля, где присутствует заголовок. Если воспользоваться опцией «-vv», можно вывести данные о проверке контрольной суммы определенного пакета и его содержимое.

Стоит рассмотреть несколько примеров использования фильтров:

  • Фильтруем входящий трафик, который идет на наш персональный компьютер. Предположим, что локальный IP-адрес 192.168.20.7. # tcpdump -i eth0 ip dst 192.168.20.7
  • Найти трафик по айпи адресу. # tcpdump host 87.250.250.80
  • Отбор пакетов, которые отправляются на определенный узел. Для этого нужно ввести – # tcpdump -i eth0 dst host yandex.ru
  • Фильтрация трафика по порту. tcpdump port 3389
  • Отбор ответных пакетов, которые распространяются на определенный хост. # tcpdump -i eth0 src host yandex.ru. Если потребуется дополнительное полное изучение содержимого, необходимо воспользоваться функционалом «-v» или «-vv».

При использовании tcpdump весьма полезен оператор and. С его помощью появляется возможность объединения нескольких фильтров в один. Нужно ввести, к примеру:

# tcpdump dst host ya.ru and src host vseprolinux.ru

В определенных случаях требуется сохранение предварительно захваченного трафика. Для этих целей используется аргумент «-w». Потребуется ввести в терминале:

# tcpdump -i eth0 -w savetrafik.pcap

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

Как видно из всего вышесказанного, утилита tcpdump – это хороший сетевой анализатор, имеющий большой функционал. Программа работает только через командную строку.

tcpdump — полезное руководство с примерами

Tcpdump — главный инструмент сетевого анализа для специалистов по информационной безопасности. Для тех, кто хочет получить полное представление о TCP / IP обязательно нужно обладать достаточным пониманием этого важного приложения. Многие предпочитают использовать инструменты более высокого уровня, такие как Wireshark, но я считаю это ошибкой.

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

ОСНОВЫ

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

ОПЦИИ

  • -i any: прослушивать все интерфейсы, чтобы увидеть, видите ли вы какой-либо трафик.
  • -i eth0: прослушивать интерфейс eth0.
  • -D: Показывать список доступных интерфейсов
  • -n: отображать IP адреса вместо имени хостов.
  • -nn: отображать IP адреса и номера портов вместо имени хостов и названия протоколов.
  • -q: показывает минимальное количество информации о пакете.
  • -t: не отображать метку времени в каждой строке.
  • -tttt: задает вывод временных меток в принятом по умолчанию формате для каждой строки.
  • -X: Показывать содержимое пакета как в шестнадцатеричной кодировке, так и в ASCII.
  • -XX: То же, что и -X, но также показывает ethernet header.
  • -v, -vv, -vvv: увеличить количество возвращаемой информации о пакетах.
  • -c: только получить x количество пакетов, а затем остановить.
  • -s: определить длину snaplength (размер) захвата в байтах. Используйте -s0, чтобы получить все, если только вы намеренно не захватили меньше.
  • -S: Печатать абсолютные порядковые номера.
  • -e: Получить ethernet header.
  • -q: Показать минимальную информацию о пакете.
  • -E: Расшифровать трафик IPSEC, предоставив ключ шифрования.

[Значение snaplength, по умолчанию для tcpdump 4.0, изменилось с 68 до 96 байтов. Хотя это даст вам увидеть больше информации о пакете, но это будет не вся информация. Используйте -s1514 или -s0, чтобы получить полный охват]

ВЫРАЖЕНИЯ

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

Существует три основных типа выражений: type, dir и proto.

Типы опций: хост, сеть и порт.

Директории позволяют вам выполнять src, dst и их комбинации.

Протокол позволяет вам определять: tcp, udp, icmp, ah и многие другие.

ПРИМЕРЫ

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

ОСНОВНОЕ СООБЩЕНИЕ

Просто посмотрите, что происходит, посмотрев на все интерфейсы.

КОНКРЕТНЫЙ ИНТЕРФЕЙС

Основное представление о том, что происходит на конкретном интерфейсе.

ПРЕДСТАВЛЕНИЕ НЕОБРАБОТАНОГО ВЫВОДА

Подробный вывод без разрешения имен хостов или номеров портов, абсолютных порядковых номеров и удобочитаемых временных меток.

НАЙДИТЕ ТРАФИК ПО IP

Один из самых распространенных запросов, это покажет вам трафик из 1.2.3.4, будь то источник или место назначения.

ПОСМОТРЕТЬ БОЛЬШЕ ИНФОРМАЦИИ О ПАКЕТЕ С ВЫВОДОМ НА ШЕСТНАДЦАТЕРИЧНУЮ СИСТЕМУ

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

ФИЛЬТРАЦИЯ ПО ИСТОЧНИКАМ И НАЗНАЧЕНИЮ

Выделить трафик на основе источника или назначения очень просто, используя src и dst.

ПОИСКОВЫЕ ПАКЕТЫ ПО СЕТИ

Чтобы найти пакеты, идущие в или из определенной сети, используйте опцию net. Вы можете комбинировать это с опциями src или dst.

ПОКАЗАТЬ ТРАФИК СВЯЗАНЫЙ СО СПЕЦИАЛЬНЫМ ПОРТОМ

Вы можете найти определенный порт трафика, используя опцию port, за которой следует номер порта.

ПОКАЗАТЬ ТРАФИК ОДНОГО ПРОТОКОЛА

Если вы ищете определенный тип трафика, вы можете использовать tcp, udp, icmp и многие другие.

ПОКАЗАТЬ ТОЛЬКО ТРАФИК IP6

Вы также можете найти весь трафик IP6, используя опцию протокола.

НАЙДИТЕ ТРАФИК С ИСПОЛЬЗОВАНИЕМ ПОРТОВЫХ ДИАПАЗОНОВ

Вы также можете использовать диапазон портов, чтобы найти трафик.

НАЙДИТЕ ТРАФИК НА ОСНОВЕ РАЗМЕРА ПАКЕТА

Если вы ищете пакеты определенного размера, вы можете использовать эти параметры. Вы можете использовать маленький, большой или их соответствующие символы, которые вы ожидаете от математики.

ПИСЬМЕННЫЕ ЗАПИСИ В ФАЙЛ

Часто полезно сохранять результат пакетов в файл для анализа в будущем. Эти файлы известны как файлы PCAP (PEE-cap), и их можно обрабатывать сотнями различных приложений, включая сетевые анализаторы, системы обнаружения вторжений и, конечно же, самим tcpdump. Здесь мы пишем файл с именем capture_file, используя ключ -w.

ЧТЕНИЕ ФАЙЛОВ PCAP

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

Читайте также:  Ноутбук стал подвисать что делать

РАСШИРЕННЫЙ

Теперь, когда мы увидели, что мы можем сделать с основами с помощью некоторых примеров, давайте рассмотрим некоторые более сложные вещи.

ЭТО ВСЕ О КОМБИНАЦИЯХ

Делать эти различные вещи индивидуальными – мощная способность, но настоящая магия tcpdump исходит из способности сочетать варианты креативными способами, чтобы изолировать именно то, что вы ищете. Есть три способа сделать комбинации, и если вы вообще изучали программирование, они вам будут очень знакомы.

AND
and or &&

OR
or or ||

EXCEPT
not or !

Вот несколько примеров комбинированных команд.

ИЗ СПЕЦИФИЧЕСКОГО IP И НАЗНАЧАЕТСЯ ДЛЯ ОПРЕДЕЛЕННОГО ПОРТА

Давайте найдем весь трафик с 10.5.2.3 к любому хосту на порте 3389.

ОТ ОДНОЙ СЕТИ К ДРУГОЙ

Давайте посмотрим на весь трафик, идущий от 192.168.x.x, и двигающийся к сетям 10.x или 172.16.x.x, и мы покажем шестнадцатиричный вывод без имени хоста и один уровень дополнительной детализации.

НЕ ICMP ТРАФИК, ПЕРЕХОДЯЩИЙ В СПЕЦИФИЧЕСКИЙ IP

Это покажет нам весь трафик, идущий к 192.168.0.2, который не является ICMP.

ТРАФИК ОТ ХОСТА, КОТОРЫЙ НЕ В КОНКРЕТНОМ ПОРТУ

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

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

Сложная группировка и специальные символы

Также имейте в виду, что при создании сложных запросов вам, возможно, придется группировать свои параметры, используя одинарные кавычки. Одиночные кавычки используются для того, чтобы указать tcpdump, что нужно игнорировать некоторые специальные символы — в этом случае то, что в скобках «()». Этот же метод можна использоваться для группировки с использованием других выражений, таких как хост, порт, сеть и т.д. Посмотрите на приведенную ниже команду.

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

Изолирование специфических TCP-флагов

Вы также можете захватывать трафик на основе определенных флагов (-ов) TCP.

[ПРИМЕЧАНИЕ: Фильтры ниже находят эти различные пакеты, потому что tcp [13] замечает смещение 13 в заголовке TCP, число представляет местоположение в байте, а ! = 0 означает, что данный флаг установлен в 1, т.е. он включен. ]

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

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

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

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

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

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

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

[Примечание: только флаг PSH, RST, SYN и FIN отображаются в выводе поля tcpdump. Отображаются URG и ACK, но они показаны в другом месте на выходе, а не в поле flags. ]

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

Снять флаги RST с помощью параметра tcpflags …

Снять флаги FIN с помощью параметра tcpflags…

[Примечание: тот же метод может быть использован и для других флагов; они были опущены в интересах экономии места. ]

Определение заслуживающего внимания трафика

Наконец, есть несколько быстрых рецептов, которые вы захотите запомнить, чтобы поймать специфический и специализированный трафик, например, неправильные / вероятно-вредоносные пакеты.

ПАКЕТЫ С ОБЫЧНЫМИ КОМПЛЕКТАМИ RST И SYN (ЭТОГО НЕ ДОЛЖНО БЫТЬ)

НАЙТИ ОТКРЫТЫЙ ТЕКСТ HTTP И ПОЛУЧИТЬ ЗАПРОС

НАЙДИТЕ SSH-СОЕДИНЕНИЯ НА ЛЮБОЙ ПОРТ (ЧЕРЕЗ БАННЕР)

ПАКЕТЫ С TTL МЕНЬШЕ 10 (КАК ПРАВИЛО ПОКАЗЫВАЕТ ПРОБЛЕМУ ИЛИ ИСПОЛЬЗУЕТ TRACEROUTE)

ПАКЕТЫ С УСТАНОВКОЙ EVIL BIT

Заключение

tcpdump — это ценный инструмент для всех, кто хочет вступить в сетевую или информационную безопасность.
Необычный способ взаимодействия с трафиком в сочетании с точностью, которую он предоставляет при проверке пакетов, делает его наилучшим инструментом для изучения TCP / IP.
Анализаторы протоколов, такие как Wireshark, великолепны, но если вы хотите действительно овладеть пакетами, вы должны сначала овладеть tcpdump.
В общем, этот учебник должен помочь вам стать сильным, но страница руководства всегда должна быть удобной для самых продвинутых и одноразовых сценариев использования. Я искренне надеюсь, что это было полезно вам, и не стесняйтесь обращаться ко мне, если у вас есть какие-либо вопросы.

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.

Как пользоваться tcpdump

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

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

Установка tcpdump

Во многих дистрибутивах команда tcpdump поставляется по умолчанию, но если в вашем дистрибутиве ее нет, то вы можете очень просто ее установить из официальных репозиториев. Например, в Ubuntu/Debian:

sudo apt install tcpdum p

В Fedora/Red Hat/CentOS:

sudo yum install tcpdump

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

Команда tcpdump

Перед тем как перейти к примерам работы с утилитой, давайте рассмотрим ее синтаксис и основные опции. Команда имеет такой синтаксис:

$ tcpdump опции -i интерфейс фильтры

При вызове обязательно нужно передать интерфейс, который будете отслеживать. Если интерфейс не указать, то будет использован первый в списке. Опции настраивают отображение и основные возможности утилиты, а фильтры позволяют отсеять ненужные пакеты. А теперь рассмотрим основные опции:

  • -A – выводить все пакеты в формате ASCII;
  • -c – закрыть программу после перехвата n-ого количества пакетов;
  • -C – при записи пакетов в файл, проверять размер файла, и если он больше заданного – создать новый файл;
  • -D – вывести список доступных сетевых интерфейсов;
  • -e – выводить информацию уровня соединения для каждого пакета, это может быть полезно, например, для отображения MAC адреса;
  • -f – выводить доменное имя для ip адресов;
  • -F – читать пакеты из файла, а не интерфейса;
  • -G – создавать новый файл лога через указанный промежуток времени;
  • -H – обнаруживать заголовки 802.11s;
  • -i – имя интерфейса для перехвата пакетов. Вы можете захватывать пакеты со всех интерфейсов, для этого укажите any;
  • -I – переключить интерфейс в режим монитора для захвата всех проходящих пакетов;
  • -j – установить формат Timestamp для записи пакетов;
  • -J – посмотреть доступные Timestamp;
  • -K – не проверять контрольные суммы пакетов;
  • -l – добавить поддержку прокрутки к выводу;
  • -L – вывести поддерживаемые протоколы подключения для интерфейса;
  • -n – не отображать доменные имена;
  • -r – прочитать пакеты из файла, созданного с помощью -w;
  • -v, -vv, -vvv – более подробный вывод;
  • -q – выводить минимум информации;
  • -w – записать вывод в файл;
  • -Z – пользователь, от имени которого будут создаваться файлы.

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

Как пользоваться tcpdump

Перед тем как перейти к использованию tcpdump нужно посмотреть какие сетевые интерфейсы вы можете использовать. Для этого запустите команду с опцией -D:

Начнем рассматривать примеры tcpdump с захвата трафика на интерфейсе eth0, у меня это основной интерфейс, который подключен к интернету. Для работы программе необходимы права суперпользователя, поэтому не забудьте указать sudo:

sudo tcpdump -i eth0

Чтобы остановить работу команды нажмите Ctrl+C. В выводе вы сразу же увидите все перехваченные пакеты. Формат записи для каждого пакета будет выглядеть следующим образом:

13:03:41.795599 IP udp032919uds.hawaiiantel.net.6881 > 192.168.1.2.52055 : Flags [.], seq 640160396:640161844, ack 436677393, win 2050, options [nop,nop,TS val 3805626438 ecr 4677385], length 1448

Такой формат характерен для пакетов данных, в зависимости от протокола выделенный черным текст будет отличаться. Сначала идет временная метка, затем протокол, далее зеленым отмечен ip адрес отправителя, а синим адрес адресата, в данном случае, нашего компьютера. Дальше идут дополнительные параметры tcp и в конце размер пакета в байтах. Подробность вывода информации можно контролировать с помощью опций -v, Например:

sudo tcpdump -v -i eth0

Здесь уже появляется информация о протоколе IP:

IP (tos 0x0, ttl 64 , >flags [DF], proto TCP (6) , length 64)

Мы можем узнать информацию о времени жизни пакета ttl, версию протокола TCP и длину поля заголовка. Опция -vv будет выводить проверку контрольных сумм пакета и содержимое в некоторых случаях.

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

  • host – имя хоста;
  • ip – ip адрес;
  • proto – протокол;
  • net – адрес сети или подсети;
  • port – адрес порта;
  • src – параметр, касающийся отправителя;
  • dst – параметр, касающейся получателя;
  • Доступны такие протоколы: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp и udp.

Вы можете все это комбинировать между собой, чтобы получить желаемый результат. Рассмотрим более детально на примерах. Отсеем только пакеты, адресованные нашему компьютеру:

sudo tcpdump -i eth0 ip dst 192.168.1.2

Также мы можем отобрать пакеты, отправляемые на определенный узел:

sudo tcpdump -i eth0 dst host google-public-dns-a.google.com

Как видите, это DNS пакеты и здесь вместо флагов TCP содержится полезная информация, запрос ip адреса хоста. Также вы можете выбрать ответные пакеты от определенного хоста:

sudo tcpdump -i eth0 src host google-public-dns-a.google.com

Здесь нет полного содержимого пакета, если вы хотите его получить нужно использовать опцию -v или -vv:

sudo tcpdump -vv -i eth0 host dst google-public-dns-a.google.com

С помощью оператора and вы можете объединить несколько фильтров в один:

sudo tcpdump -i eth0 dst host google-public-dns-a.google.com and src host google-public-dns-a.google.com

Из операций объедения доступны and и or, также можно применять скобки для обозначения приоритета. Вам необязательно указывать host, во многих случаях достаточно src или dst, утилита сама поймет что имелось в виду. Точно такую же конструкцию можно использовать для портов. Например, мы можем отсеять все запросы или ответы к DNS (на порт 53):

sudo tcpdump -vv -i eth0 port 53

Точно такое же можно провернуть для http (порт 80):

sudo tcpdump -vv -i eth0 port 80

Естественно, тут тоже можно применять dst и src для более конкретных результатов. Вы можете фильтровать не один порт, а целый диапазон портов:

sudo tcpdump portrange 21-23

Если указать один из протоколов, вы отфильтруете только пакеты этого протокола, например tcp, udp или arp:

sudo tcpdump -vv arp

Точно также можно выбрать все udp пакеты:

sudo tcpdump -vv udp

Также доступен фильтр по обозначению сети:

sudo tcpdump net 129.168.1.1/24

Кроме того, вы можете фильтровать пакеты по их размеру, например, меньше 32 байт:

sudo tcpdump less 32

tcpdump greater 128

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

Читайте также:  Устанавливаем новые стили в Фотошоп

sudo tcpdump -i eth0 -w file.pcap

Этот файл можно открыть с помощью любой программы для чтения таких файлов, например, Wireshark. Чтобы открыть сохраненные в файл пакеты используйте опцию -r:

sudo tcpdump -r file.pcap

Остался еще один момент, на который стоит обратить внимание. Это формат отображения содержимого пакетов. Вы можете вывести содержимое пакета в формате ASCII используйте опцию -A:

sudo tcpdump -A -i eth0

Также вы можете отобразить содержимое в формате HEX и ASCII для этого используйте -XX:

sudo tcpdump -XX -i eth0

Выводы

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

На завершение видео с лекцией о tcpdump:

Системное администрирование Linux

Пн

Вт

Ср

Чт

Пт

Сб

Вс

    Популярные статьи:
  • Установка и настройка Dnsmasq
  • Установка и настройка FTP сервера Proftpd на Debian 9
  • Настройка сервера Syslog-ng для сбора логов
  • Настройка Rsyslog сервера
  • Отказоустойчивый кластер на Linux с помощью VRRP

2018-07-10 11:32:17 1830 0

Использование Tcpdump для анализа трафика

tcpdump – очень мощный и широкоиспользуемый инструмент для снифинга и анализа, кторый используется для перехвата TCP/IP пакетов, получаемых или отправляемых по сети. Утилита доступна практически во всех операционных системах Линукс. Tcpdump так же дает возможность сохранять перехваченные пакеты в файл, для их дальнейшего анализа в будующем. А если сохранить файлы в формате pcap, то их можно будет анализировать с помощью такого инструмента как Wireshark.

Redhat подобные системы:

sudo yum install tcpdump

sudo apt-get install tcpdump

Tcpdump имеет формат записи:

При использовании tcpdump, требует права root.

Разберем опции tcpdump:

  • -i – указывает на каком интерфейсе выполнять перехват пакетов (по-умолчанию используется первый интерфейс);
  • -D – вывести список всех досиупных в системе интерфейсов;
  • -c – указывает количество пакетов для перехвата;
  • -n – указывает не выполнять преобразование ip-адреса в доменное имя;
  • -nn – указывает не преобразовывать номер порта в имя демона;
  • -A – выводит содержание пакета в формате ASCII;
  • -X – выводит содержимое пакета в формате HEX и ASCII;
  • -w – запись перехваченных пакетов в файл;
  • -r – чтение из файла;
  • -q – выводить мало данных;
  • -s – указывать сколько байт пакета необходимо захватить (по-умолчанию s0 или захват польностью);
  • -e – добавить в вывод содержание ethernet заговолков (2-й уровень OSI);
  • -v – более информативный вывод (например добавляется TTL и TOS);
  • -vv – еще более информативный вывод;
  • -ee -vvv – добавить в вывод теги Vlan.

Приведен список наиболее часто используемых опций, полный перечень смотрите в официальной документации и в man

Теперь разберем какие могут быть выражения для перехвата пакетов, по-большому счету это фильтры на основании, которых будет проводится перехват пакетов.

  • host – указвание адреса или имени хоста;
  • net – указвание сети;
  • src – указание источника пакета;
  • dst – указание назначения пакета;
  • port – указание порта демона;
  • tcp,udp,icmp – указание протокола (tcp,udp,icmp и т.д.)
  • less длина – указывает перехватывать пакеты, длина которых меньше указанной;
  • greater длина – указывает перехватывать пакеты,длина которых больше указанной;
  • ether – указание MAC-адреса;
  • broadcast – указание что пакет должен быть Broadcast;

И конечно же все эти вырадения можно сочитать между собой с помощью логческих выражений:

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

Перехват пакетов с источником 192.168.10.1 идущих к сети 192.168.20.0/24 на порт 22

sudo tcpdump src host 192.168.0.1 and dst net 192.168.20.0/24

Перехват icmp пакетов с выводм MAC-адресов без преобразования ip-адресов и номеров портов:

sudo tcpdump -evnn icmp

Перехват пакетов идущих к адресу назначения yandex.ru на порт 80 или 443 :

sudo tcpdump “host yandex.ru and (tcp dst port 80

Перехват трафика с отображением номеров Vlan (их можно потом искать с помощью grep):

sudo tcpdump -ee -vvv -i eth0

Как видно можно видеть в строке с указанием стандарта 802.1Q и номер vlan в нашем случае 7

LinuxShare

Навигация

Вход для пользователей

Кто на сайте

Мониторинг сети с помощью tcpdump

Отправлено admin Ср, 12/11/2008 – 23:41

  • Администрирование
  • Без лицензии

Мониторинг сети с помощью tcpdump

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

Итак, tcpdump.

$ man tcpdump, нам гласит

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

Tcpdump будет, если не запущен с ключем -c, продолжать собирать пакеты до тех пор, пока не будет прерван сигналом SIGINT (генерируемым, для примера, вводом Вашего символа прерывания, обычно CTRL+C) или сигналом SIGTERM (обычно генерируемого командой kill). Если запуск был с ключем -c, то сбор пакетов будет продолжаться до тех пор, пока не произойдет прерывание сигналом SIGINT или SIGTERM или пока не будет обработано определенное количество пакетов.

Когда tcpdump закончит сбор пакетов, то будет сообщено об количестве:

  • пакетов “полученных фильтром” (received by filter) (значение зависит от той ОС, на какой Вы запускаете tcpdump, и, возможно, от способа, котрым ОС была сконфигурирована – если фильтр был определен в командной строке, на некоторых ОС будут сосчитаны пакеты независимо от фильтрующего выражения, а в других ОС будут сосчитаны только те пакеты, которые попадают под фильтрующее и выражение, и были обработаны tcpdump);
  • пакетов “отброшенных ядром” (dropped by kernel) (это число пакетов, которые были отброшены, в зависимости от механизма сбора пакетов (недостаточного объема буферов) на той ОС, где запускается tcpdump, ОС предоставит эту инофрмацию приложению или нет, и тогда будет выведено число 0)

Это был перевод – исправления приветствуются.

Дальше идет описание ключей. Вот некоторые из них:

  • -c count Выйти после получения определенного количества пакетов.
  • -C file_size Перед записью “сырого” пакета в файл, происходит проверка на превышение размером файла лимита, указанного в file_size. Если размер файла больше, то файл закрывается и открывается новый. Новый файл будет иметь имя определенное в ключе -w, со стоящим в конце числом 2, которое будет увеличиваться в следующих именах файлов. file_size определяет размер в миллионах байт (1,000,000), а не мегабайтах (1,048,576).
  • -F file Использовать file для ввода фильтрующего выражения. Выражение, указанное в командной строке, будет игнорироваться.
  • -i interface Собирать пакеты только на определенном интерфейсе. Если не указан – берется минимальный по номеру интерфейс (исключая loopback). Для Linux-ядер 2.2 и более новых, возможно указать ‘any‘, тогда будет происходить сбор на всех интерфейсах, но они не будут переведены в режим promiscuous.
  • -n Не преобразовывать адрес хоста в имя. Может быть использовано, если необходимо избегать DNS-запросов .
  • -nn Не преобразовывать протокол и номер порта в их имена.
  • -N Не выводить доменную часть имени хоста. Например, при данном ключе будет выводится “nic” вместо “nic.ddn.mil
  • -p Не переводить интерфейс в режим promiscuous. Следует заметить, что интерфейс может быть в режиме promiscuous по другим причинам.
  • -r file Читать пакеты из file (который, был создан с ключем -w). Если file указан как “-“, то используется стандартный ввод.
  • -t Не выводить временной штамп (timestamp) в каждой строке дампа (dump).
  • -tt Выводит не форматированный временной штамп в каждой строке дампа.
  • -ttt Выводить разницу (в микросекундах) между текущей и предыдущей строками дампа.
  • -tttt Выводить временной штамп вместе с датой в формате по-умолчанию в каждой строке дампа.
  • -v (Чуть более) подробный вывод. Для еще более подробного вывода используются: -vv и -vvv.
  • -w file Писать “сырые” пакеты в file перед тем как произвести их разбор и вывести. Они могут быть позднее выведены с ключем -r. Если file указан как “-“, то используется стандартный вывод.
  • -x Печатать каждый пакет (без заголовков уровня соединения) в шестнадцатиричном виде.
  • -X Помимо шестнадцатиричного вида выводить их ASCII-значения .

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

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

  • type Говорят к какому виду относить >ftp-data ‘. Если не указан, то подразумевается src or dst. Для соединений нулевого (‘null‘) уровня (к примеру, протокол точка-точка , такой как slip) указанием направления могут быть классификаторы inbound и outbound.
  • proto Ограничивает совпадение конкретным протоколом. Возможные протоколы: ether, fddi, tr, ip, ip6, arp, rarp, decnet, tcp и udp. Пример, ‘ether src foo‘, ‘arp net 128.3‘, ‘tcp port 21‘. Если классификатор 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‘.

В добавок, существует несколько специальных примитивов – ключевых слов: gateway, broadcast, less, greater и арифметические выражения.

Более сложные фильтрующие выражения могут быть построены с помощью слов and, or и not, объединяющих примитивы. Пример, ‘host foo and not port ftp and not port ftp-data ‘. Чтобы уменьшить количество вводимой информации, идентичные списки классификаторов могут быть опущены. Пример, ‘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):

dst host host

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

src host host

  • Истина, если поле “источник” пакета – это host.

host host

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

net net mask netmask

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

net net/len

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

dst port port

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

src port port

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

port port

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

less length

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

ip proto protocol

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

Прежде чем переходит к примерам рассмотрим, что может нам выдать tcpdump при выполнении.
Типичные результаты работы tcpdump -ttt:

Первое поле – поле времени, т. к. запуск осуществлялся с ключом “-ttt“, то это разница в микросекундах между этим пакетом и предыдущим.
Потом идет IP-адрес (или имя) отправителя пакета, через точку может указываться порт. После знака “>”, указывается получатель пакета (или его имя) и также порт. Затем будет идти либо сразу служебная информация идущая в пакете, либо протокол (у нас это icmp). В служебной информации может быть указано либо состояние флагов в пакете, либо расшифрованная информация (“192.168.2.13 udp port 3631 unreachable” или DNS-запрос об хосте “Tatyana.karavay-shops.ru “).

Ну а теперь пора взяться за конкретные примеры.

1. Ловим весь входящий трафик из локальной сети на сервер. Здесь все просто.

# /usr/sbin/tcpdump -i eth0 -n -nn -ttt dst host 192.168.2.254

Если вы запускаете его в SSH сессии, то подготовьтесь – польется очень много и очень быстро.

2. Ловим весь входящий трафик, исключая трафик генерируемый нашей SSH-сессией .

# /usr/sbin/tcpdump -i eth0 -n -nn -ttt 'dst host 192.168.2.254 and not ( src host 192.168.2.100 and dst port 22 )'

Вот теперь в потоке пакетов можно разобраться.

3. Нужна информация об DNS-общении между сервером и каким-нибудь узлом сети.

# /usr/sbin/tcpdump -i eth0 -n -nn -ttt 'host 192.168.2.13 and ip proto udp'

Здесь, кстати будет бегать не только DNS-трафик . А вообще весь, который идет по UDP. Исправить это можно следующим:

# /usr/sbin/tcpdump -i eth0 -n -nn -ttt 'host 192.168.2.13 and port 53'

4. Отлавливаем исключительно icmp пакеты.

# /usr/sbin/tcpdump -i eth0 -n -nn -ttt 'ip proto icmp'

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

tcpdump — мониторим сеть

Довольно часто возникает необходимость узнать работоспособность сети. Или просто в общеобразовательных целях — узнать как взаимодействуют между собой объекты сети. Или с целью исследовать где сидит страшный bug :). И вот именно для этих целей в unix-ы рулят. Потому что все толковое написано для никсов и уже потом портировано под винду.
Вот об одной такой утилите мы сегодня и поговорим — tcpdump.

tcpdump (от TCP и англ. dump — свалка, сбрасывать) — утилита UNIX, позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа.

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

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

Как работает Tcpdump

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

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

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

  • -c count Выйти после получения определенного количества пакетов.
  • -C file_size Перед записью «сырого» пакета в файл, происходит проверка на превышение размером файла лимита, указанного в file_size. Если размер файла больше, то файл закрывается и открывается новый. Новый файл будет иметь имя определенное в ключе -w, со стоящим в конце числом 2, которое будет увеличиваться в следующих именах файлов. file_size определяет размер в миллионах байт (1,000,000), а не мегабайтах (1,048,576).
  • -F file Использовать file для ввода фильтрующего выражения. Выражение, указанное в командной строке, будет игнорироваться.
  • -i interface Собирать пакеты только на определенном интерфейсе. Если не указан — берется минимальный по номеру интерфейс (исключая loopback). Для Linux-ядер 2.2 и более новых, возможно указать ‘any’, тогда будет происходить сбор на всех интерфейсах, но они не будут переведены в режим promiscuous.
  • -n Не преобразовывать адрес хоста в имя. Может быть использовано, если необходимо избегать DNS-запросов.
  • -nn Не преобразовывать протокол и номер порта в их имена.
  • -N Не выводить доменную часть имени хоста. Например, при данном ключе будет выводится «nic» вместо «nic.ddn.mil»
  • -p Не переводить интерфейс в режим promiscuous. Следует заметить, что интерфейс может быть в режиме promiscuous по другим причинам.
  • -r file Читать пакеты из file (который, был создан с ключем -w). Если file указан как «-«, то используется стандартный ввод.
  • -t Не выводить временной штамп (timestamp) в каждой строке дампа (dump).
  • -tt Выводит не форматированный временной штамп в каждой строке дампа.
  • -ttt Выводить разницу (в микросекундах) между текущей и предыдущей строками дампа.
  • -tttt Выводить временной штамп вместе с датой в формате по-умолчанию в каждой строке дампа.
  • -v (Чуть более) подробный вывод. Для еще более подробного вывода используются: -vv и -vvv.
  • -w file Писать «сырые» пакеты в file перед тем как произвести их разбор и вывести. Они могут быть позднее выведены с ключем -r. Если file указан как «-«, то используется стандартный вывод.
  • -x Печатать каждый пакет (без заголовков уровня соединения) в шестнадцатиричном виде.
  • -X Помимо шестнадцатиричного вида выводить их ASCII-значения.

Фильтрующее выражение

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

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

Три вида классификаторов:

  • type Говорят к какому виду относить ID. Возможный значения host, net или port.
    Пример: ‘host foo‘, ‘net 128.3‘, ‘port 20‘. Если классификатор type не указан, то подразумевается host.
  • dir Определяет конкретное направление передачи «к» и/или «от» ID. Возможны значения src, dst, src or dst and src and dst.
    Пример, ‘src foo‘, ‘dst net 128.3‘, ‘src or dst port ftp-data‘. Если не указан, то подразумевается src or dst. Для соединений нулевого (‘null’) уровня (к примеру, протокол точка-точка, такой как slip) указанием направления могут быть классификаторы inbound и outbound.
  • proto Ограничивает совпадение конкретным протоколом. Возможные протоколы: ether, fddi, tr, ip, ip6, arp, rarp, decnet, tcp и udp.
    Пример, ‘ether src foo‘, ‘arp net 128.3‘, ‘tcp port 21‘. Если классификатор 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’.

В добавок, существует несколько специальных примитивов — ключевых слов: gateway, broadcast, less, greater и арифметические выражения.

Более сложные фильтрующие выражения могут быть построены с помощью слов and, or и not, объединяющих примитивы. Пример, ‘host foo and not port ftp and not port ftp-data’. Чтобы уменьшить количество вводимой информации, идентичные списки классификаторов могут быть опущены. Пример, ‘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):

  • dst host host
    Истина, если поле «назначение» пакета -это host, который может быть адресом или именем
  • src host host
    Истина, если поле «источник» пакета — это host.
  • host host
    Истина, если или поле «назначение», или поле «источник» пакета — это host. Любое из описанный выше выражений может быть приписано к ключевому слову ip, arp, rarp, или ip6, как в ‘ip host host’, что эквивалентно ‘ether proto ip and host host’. Если host — это имя с несколькими IP адресам, то проверяется совпадение по каждому адресу.
  • net net mask netmask
    Истина, если IP адрес входит в сеть с указанной сетевой маской. Может быть классифицировано с dst или src.
  • net net/len
    Истина, если IP адрес входит в сеть с указанной сетевой маской, заданной количеством бит. Может быть классифицировано с dst или src.
  • dst port port
    Истина, если пакет протоколов ip/tcp, ip/udp, ip6/tcp или ip6/udp, и порт-назначения имеет значение указанное в port. Порт может быть числом или именем, используемым в /etc/services. Если используется число или неоднозначное имя, то проверяется только номер порта (пример, ‘dst port 513’ будет выводить трафик и для tcp/login и для udp/who, а ‘port domain’ будет выводить трафик и для tcp/domain и для udp/domain).
  • src port port
    Истина, если пакет имеет порт-источник — port
  • port port
    Истина, если или порт-назначение, или порт-источник в пакете — port. Любое из описанных выше выражений может быть приписано к ключевому слову tcp или udp, как в ‘tcp src port port’, проверяющее совпадения только для TCP-пакетов.
  • less length
    Истина, если пакет имеет длину меньше или равную length. Это эквивалентно len = length.
  • ip proto protocol
    Истина, если пакет — это IP-пакет протокола, указанного в protocol. Протокол может быть числом или одним из имен icmp, icmp6, igmp, igrp, pim, ah, esp, vrrp, udp, или tcp. Заметим, что идентификаторы tcp, udp и icmp — ключевые слова и должны быть «заэкскейпены» через обратный слэш ().

Прежде чем переходит к примерам рассмотрим, что может нам выдать tcpdump при выполнении.
Типичные результаты работы tcpdump -ttt:

Первое поле — поле времени, т. к. запуск осуществлялся с ключом «-ttt«, то это разница в микросекундах между этим пакетом и предыдущим.
Потом идет IP-адрес (или имя) отправителя пакета, через точку может указываться порт. После знака «>», указывается получатель пакета (или его имя) и также порт. Затем будет идти либо сразу служебная информация идущая в пакете, либо протокол (у нас это icmp). В служебной информации может быть указано либо состояние флагов в пакете, либо расшифрованная информация («192.168.2.13 udp port 3631 unreachable» или DNS-запрос об хосте).

Конкретные примеры

  • 1. Ловим весь входящий трафик из локальной сети на сервер. Здесь все просто.

Если вы запускаете его в SSH сессии, то подготовьтесь — польется очень много и очень быстро…
2. Ловим весь входящий трафик, исключая трафик генерируемый нашей SSH-сессией.

Вот теперь в потоке пакетов можно разобраться.
3. Нужна информация об DNS-общении между сервером и каким-нибудь узлом сети.

Здесь, кстати будет бегать не только DNS-трафик. А вообще весь, который идет по UDP. Исправить это можно следующим:

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