Робота з TCPDump

Ця утиліта є корисним інструментом для перехоплення та збору пакетів, що приходять на сервер та йдуть з нього.

Установка TCPDump

Для Ubuntu/Debian:

apt install tcpdump

Для Red Hat / CentOS:

sudo yum install tcpdump

Аргументи для команди

  • -c — завершує збір пакетів після досягнення встановленої кількості.

  • -C — дозволяє встановити максимальний розмір файлу дампа, після досягнення якого буде створено новий файл.

  • -e — відображає інформацію рівня з'єднання для кожного обробленого пакета.

  • -F — виведення пакетів із зазначеного файлу, а не з інтерфейсу.

  • -f — відображає доменне ім'я для кожної IP-адреси.

  • -G — створює новий файл дампа після вказаного часу.

  • -H — створює обмеження, що тільки заголовки 802.11s будуть оброблятися TCPDump.

  • -i — ім'я інтерфейсу, з якого будуть збиратися пакети. Щоб використовувати всі інтерфейси сервера, вкажіть значення any.

  • -I — увімкнення режиму моніторингу для вказаного інтерфейсу (для виявлення всіх проходячих пакетів).

  • -E — використовується для дешифрування IPSEC трафіку (потрібно вказати ключ для дешифрування).

  • -K — вимикає перевірку контрольних сум пакетів.

  • -L — відображає підтримувані протоколи з'єднання для вказаного інтерфейсу.

  • -n — вивід дампа без перетворення IP-адрес у доменні імена.

  • -nn — вивід адрес разом із їх портами.

  • -q — мінімізація інформації про пакети у виводі.

  • -tttt — відображає часові мітки для кожного пакета у стандартному форматі.

  • -v, -vv, -vvv — більш детальне відображення інформації про пакети.

  • -w — ім'я файлу, у якому буде збережено дамп (за замовчуванням без цього аргументу дамп відображається у реальному часі без запису у файл).

Використання

Щоб не засмічувати наш дамп зайвими пакетами, слід вибрати конкретний інтерфейс, з якого ми хочемо збирати інформацію, а не всі. Ви можете переглянути список усіх інтерфейсів, використовуючи цю команду:

tcpdump -D

На наших віртуальних серверах (VDS) основний мережевий інтерфейс — цеens3

Щоб відобразити журнали нашого мережевого інтерфейсу в режимі реального часу, використовуйте команду:

tcpdump -i ens3

Не забувайте, що TCPDump вимагає прав root, тому слід виконувати ці команди від імені root або використовуючи sudo.

Після використання команди ми побачимо багато рядків, що біжать, для зупинки дампа використовуйте комбінацію клавіш Ctrl + C.

Зібрані пакети даних мають приблизно такий вигляд:

22:31:56.330185 IP fsn.spacecore.network.65383 > fsn.spacecore.network.ssh: Flags [P.], seq 7841:7905, ack 10730080, win 6145, length 64

Але при використанні різних протоколів пакет може мати різні особливості всередині.

Спробуйте побачити більше інформації про пакети, використовуючи аргумент -v:

tcpdump -i ens3 -v

Тепер наші пакети мають більш масивну структуру такого типу:

22:36:42.254306 IP (tos 0x0, ttl 122, id 61139, offset 0, flags [DF], proto TCP (6), length 104) fsn.spacecore.network.65383 > fsn.spacecore.network.ssh: Flags [P.], cksum 0x2699 (correct), seq 321:385, ack 1027616, win 6141, length 64

У цьому випадку ви можете побачити більше інформації про протокол IP-адреси:

P (tos 0x0, ttl 122, id 61139, offset 0, flags [DF], proto TCP (6)

Аргументи для фільтрації

Не менш потужною особливістю є додатковий аргумент, який дозволяє фільтрувати різні типи пакетів за такими параметрами:

  • host — ім'я хоста.

  • ip — IP-адреса.

  • port — порт.

  • proto — протокол.

  • net — адреса мережі або підмережі.

  • src — джерело.

  • dst — одержувач.

Доступні протоколи: tcp, udp, icmp, arp, rarp, decnet тощо. Ці аргументи також можна комбінувати.

Наприклад, ми можемо переглянути всі пакети, які йдуть з нашого сервера до кінцевої адреси:

tcpdump dst 192.168.1.1

Навпаки, всі пакети, що надсилаються на наш сервер із джерела підмережі (ви також можете використовувати конкретну IP-адресу, як у прикладі вище):

tcpdump src net 192.168.1.1/24

Ви можете використовувати аргументи для знаходження пакетів потрібного розміру:

tcpdump less 48 // пакеты меньше 48 бит
tcpdump greater 128 // пакеты больше 128 бит

Припустимо, у вас є кілька серверів Garry's Mod на різних портах, і ви хочете перевірити, чи не піддаються вони зараз атаці DDoS. Для цього підійде команда:

tcpdump -nnv udp src portrange 27015-27025 -w garrysmod.dump

Зверніть увагу на зазначений діапазон портів.

Опція -w дозволяє зберегти дамп у файл garrysmod.dump.

Розширені оператори

Крім того, TCPDump має оператори для створення різних комбінацій аргументів.

  • AND чи && (оператор «І»)

  • OR чи || (оператор «АБО»)

  • EXCEPT чи ! (оператор «ВИКЛЮЧЕННЯ»)

Припустимо, ми хочемо вивести весь трафік запитів MySQL, які надсилає 192.168.1.1 на порт 3306 (до будь-яких адрес):

tcpdump -nnv src 192.168.1.1 and tcp dst port 3306

Завершення

Дякуємо за ознайомлення! Ми детально розглянули TCPDump, який є дуже корисним інструментом, що є невід'ємною частиною роботи мережевих інженерів, а також обов'язково стане в нагоді звичайним користувачам.

Ви можете використовувати програму для читання пакетів на Windows за допомогою WireShark.

Last updated