Робота з TCPDump
Ця утиліта є корисним інструментом для перехоплення та збору пакетів, що приходять на сервер та йдуть з нього.
Установка TCPDump
Для Ubuntu/Debian:
Для Red Hat / CentOS:
Аргументи для команди
-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
— ім'я файлу, у якому буде збережено дамп (за замовчуванням без цього аргументу дамп відображається у реальному часі без запису у файл).
Використання
Щоб не засмічувати наш дамп зайвими пакетами, слід вибрати конкретний інтерфейс, з якого ми хочемо збирати інформацію, а не всі. Ви можете переглянути список усіх інтерфейсів, використовуючи цю команду:
На наших віртуальних серверах (VDS) основний мережевий інтерфейс — це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
:
Тепер наші пакети мають більш масивну структуру такого типу:
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
тощо. Ці аргументи також можна комбінувати.
Наприклад, ми можемо переглянути всі пакети, які йдуть з нашого сервера до кінцевої адреси:
Навпаки, всі пакети, що надсилаються на наш сервер із джерела підмережі (ви також можете використовувати конкретну IP-адресу, як у прикладі вище):
Ви можете використовувати аргументи для знаходження пакетів потрібного розміру:
Припустимо, у вас є кілька серверів Garry's Mod на різних портах, і ви хочете перевірити, чи не піддаються вони зараз атаці DDoS. Для цього підійде команда:
Зверніть увагу на зазначений діапазон портів.
Опція -w
дозволяє зберегти дамп у файл garrysmod.dump
.
Розширені оператори
Крім того, TCPDump має оператори для створення різних комбінацій аргументів.
AND
чи&&
(оператор «І»)OR
чи||
(оператор «АБО»)EXCEPT
чи!
(оператор «ВИКЛЮЧЕННЯ»)
Припустимо, ми хочемо вивести весь трафік запитів MySQL, які надсилає 192.168.1.1
на порт 3306
(до будь-яких адрес):
Завершення
Дякуємо за ознайомлення! Ми детально розглянули TCPDump, який є дуже корисним інструментом, що є невід'ємною частиною роботи мережевих інженерів, а також обов'язково стане в нагоді звичайним користувачам.
Ви можете використовувати програму для читання пакетів на Windows за допомогою WireShark.
Last updated