Робота з TCPDump: основи та фільтри
Робота з TCPDump
Ця утиліта є корисним інструментом для перехоплення й збирання пакетів, що надходять на сервер, а також виходять із нього.
Встановлення TCPDump
Для Ubuntu/Debian:
Для Red Hat / CentOS:
Аргументи для команди
- -c — завершує збір пакетів після досягнення заданої кількості.
- -C — дає змогу встановити максимальний розмір файлу дампа, після досягнення якого буде створено новий файл.
- -e — виводить інформацію про канальний рівень для кожного обробленого пакета.
- -F — зчитує пакети із заданого файлу, а не з інтерфейсу.
- -f — відображає доменне ім'я для кожної IP-адреси.
- -G — створює новий файл дампа через вказаний проміжок часу.
- -H — накладає обмеження, за якого TCPDump обробляє лише заголовки 802.11s.
- -i — ім'я інтерфейсу, з якого будуть збиратися пакети. Для використання всіх інтерфейсів сервера вкажіть значення any.
- -I — вмикає режим моніторингу для зазначеного інтерфейсу (для виявлення всіх пакетів, що проходять).
- -E — використовується для розшифрування трафіку IPSEC (необхідно вказати ключ для розшифрування).
- -K — вимикає перевірку контрольних сум пакетів.
- -L — виводить підтримувані типи протоколів підключення для вказаного інтерфейсу.
- -n — пропускає перетворення IP-адрес у доменні імена в дампі.
- -nn — виводить адреси разом із їхніми портами.
- -q — мінімізує обсяг інформації про пакети у виводі.
- -tttt — показує для кожного пакета часові позначки у стандартному форматі.
- -v, -vv, -vvv — дедалі більш докладний вивід інформації про пакети.
- -Z — користувач системи, від імені якого буде створюватися файл дампа.
- -w — ім'я файлу, до якого буде збережено дамп (за замовчуванням без цього аргументу дамп виводиться в режимі реального часу без запису до файлу).
Використання
Щоб не засмічувати наш дамп зайвими пакетами, варто вибрати конкретний інтерфейс, з якого ми хочемо зібрати інформацію, а не всі. Переглянути список усіх інтерфейсів можна за допомогою такої команди:
На наших віртуальних серверах (VDS) основним мережевим інтерфейсом є ens3.
Для виведення логів нашого мережевого інтерфейсу в режимі реального часу використовуємо команду:
Не забувайте, що для TCPDump потрібні права суперкористувача, тому ці команди слід виконувати від імені root або з використанням sudo.
Після виконання команди ви побачите багато рядків, що швидко біжать; для зупинки дампа використовуйте комбінацію клавіш
Зібрані пакети даних мають приблизно такий вигляд:
Однак за використання різних протоколів вміст пакета може відрізнятися.
Спробуємо побачити докладнішу інформацію про пакети, використовуючи аргумент
Тепер наші пакети мають більш розгорнуту структуру, наприклад:
У цьому випадку видно докладнішу інформацію про протокол 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.