Linux tcpdump not port

Шпаргалка по использованию tcpdump

Обновлено

Обновлено: 22.03.2023 Опубликовано: 12.03.2022

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

Установка приложения

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

а) Для Rocky Linux / CentOS:

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

Приложение обладает большими возможностями. Мы рассмотрим те, которые чаще всего применяются.

1. Сетевой интерфейс.

Мы можем ограничить вывод для конкретного сетевого интерфейса с помощью опции i:

* в данном примере мы ограничиваем вывод для интерфейса eth0.

2. Указать источник запроса.

С помощью опции src мы можем учитывать запросы, которые пришли с определенного IP-адреса, например:

* в данном примере мы увидим запросы только с адреса 94.19.179.142.

3. Указать назначение.

По аналогии с опцией src, опция dst позволяет ограничить запросы, которые отправляются нашим сервером на конкретный адрес:

* тут мы увидим только те обращения, которые идут в сторону 94.19.179.142.

4. Указать порт.

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

* в нашем примере мы увидим только те, которые используют порт 80.

б) Также можно ограничить запросы на входящий порт или исходящий:

* где dst port — все запросы на компьютер по указанному порту; src port — все исходящие запросы на указанный порт.

в) Диапазон портов может быть указан с помощью параметра portrange:

tcpdump portrange 60000-65000

* будут сканироваться все запросы по портам от 60000 до 65000.

5. Исключающее правило.

С помощью not мы можем создавать исключающие фильтры. Например:

. позволит сканировать все порты, кроме 22.

6. Несколько правил.

Мы можем применить несколько фильтром. Для этого мы используем логические операторы and или or, например:

tcpdump src 94.19.179.142 and port not 22

* в данном случае мы увидим все запросы с адреса 94.19.179.142, которые приходят на порт 22.

7. Сохранить результаты в файл.

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

Чтобы сохранить результаты анализа, используем опцию -w, например:

tcpdump src 192.168.0.20 -w /tmp/tcpdump.cap

* после того, как мы прервем работу tcpdump мы можем использовать файл /tmp/tcpdump.cap.

Возможные ошибки

tcpdump: NFLOG link-layer type filtering not implemented.

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

Источник

tcpdump: Мониторим весь трафик кроме некоторых портов

tcpdump: Мониторим весь трафик кроме некоторых портов

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

Читайте также:  Sublime text аналоги linux

Описание

Утилита tcpdump понимает регулярные выражения, поэтому мы можем задавать условия именно в таком виде, используя следующий синтаксис (мониторим весь трафик, кроме 22 порта):

tcpdump -i eth0 port not 22

Можно задать сразу несколько портов, информацию о которых мы не хотим видеть в tcpdump (мониторим весь трафик, кроме 22 и 53 порта):

tcpdump -i eth0 port not 22 and port not 53

Также можно использовать ip-адрес или имя хоста (данный пример позволит нам увидеть весь трафик для адреса 1.2.3.4, кроме соединений через 22 порт.):

tcpdump -i eth0 port not 22 and host 1.2.3.4

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

tcpdump -i eth0 port not 22 and host host_name

Источник

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

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

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

Установка tcpdump

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

sudo apt install tcpdum p

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

Команда 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 — пользователь, от имени которого будут создаваться файлы.
Читайте также:  Linux для малого бизнеса

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

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

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

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

Чтобы остановить работу команды нажмите 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, Например:

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

IP (tos 0x0, ttl 64 , id 50309, offset 0, 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.
Читайте также:  Редактирование php файлов linux

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

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:

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

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

sudo tcpdump net 129.168.1.1/24

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

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

sudo tcpdump -i eth0 -w file.pcap

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

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

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

Выводы

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

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

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