Замовляйте VPS-сервер зі скидкою 20%
Акція завершиться через
00Днів
:
00Годин
:
00Хвилин
:
00Секунд

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

Встановлення TCPDump

Для Ubuntu/Debian

sudo apt install tcpdump


Для Red Hat/CentOS

sudo yum install tcpdump


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

-c: Завершує збір пакетів після досягнення заданої кількості.
-C: Встановлює максимальний розмір файлу дампу; новий файл створюється при досягненні цього обмеження.
-e: Відображає інформацію на рівні з'єднання для кожного обробленого пакета.
-F: Зчитує пакети із вказаного файлу, а не інтерфейсу.
-f: Відображає доменне ім'я для кожної IP-адреси.
-G: Створює новий файл дампу через певний проміжок часу.
-H: Встановлює обмеження, за яким TCPDump буде обробляти лише заголовки 802.11s.
-i: Вказує інтерфейс, з якого збиратимуться пакети. Щоб використовувати всі інтерфейси сервера, вкажіть any.
-I: Увімкнути режим моніторингу для вказаного інтерфейсу (для виявлення всіх проходячих пакетів).
-E: Використовується для розшифрування IPSEC-трафіку (потрібно вказати ключ розшифрування).
-K: Вимикає перевірку контрольних сум пакетів.
-L: Відображає підтримувані протоколи підключення для вказаного інтерфейсу.
-n: Пропускає доменні імена в дампі.
-nn: Відображає адреси разом з їхніми портами.
-q: Мінімізує вивід інформації про пакети.
-tttt: Відображає для кожного пакета часові позначки в стандартному форматі.
-v, -vv, -vvv: Детальніший вивід інформації про пакети.
-Z: Користувач системи, від імені якого буде створюватися файл дампу.
-w: Ім'я файлу, в який буде збережений дамп (за відсутності цього аргумента дамп виводиться в реальному часі без запису в файл).


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

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

tcpdump -D


На наших віртуальних серверах (VDS) основним мережевим інтерфейсом є ens3.
Для виводу журналів нашого мережевого інтерфейсу в реальному часі використовуйте команду:

tcpdump -i ens3


Не забувайте, що для TCPDump потрібні права суперкористувача, тому ці команди слід виконувати від імені кореня або з використанням 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


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