Tcpdump Linux Command

Tcpdump - це команда, яка використовується в різних операційних системах Linux (ОС), яка збирає пакети TCP/IP, які проходять через мережевий адаптер. Так само, як інструмент перехоплення пакетів, tcpdump може не тільки аналізувати мережевий трафік, але й зберігати його у файл.

На відміну від деяких команд, які надаються операційною системою за замовчуванням, ви можете виявити, що ви не можете використовувати tcpdump, тому що він не встановлений. Щоб встановити tcpdump, виконайте apt-get install tcpdump або yum install tcpdump, залежно від вашої ОС.

Як працює Tcpdump

Tcpdump друкує заголовки пакунків на інтерфейсі мережі, які відповідають логічному виразу. Його також можна запустити з прапором -w, який змушує його зберігати дані пакета в файл для подальшого аналізу, і/або з прапором -r, який змушує його читати зі збереженого файла пакета, а не читати пакети з мережевого інтерфейсу. У всіх випадках tcpdump буде обробляти тільки пакунки, які відповідають виразу.

Tcpdump, якщо не запускається з прапором -c, продовжить захоплення пакунків, поки не перервається сигналом SIGINT (створеним, наприклад, шляхом введення символу переривання, зазвичай Ctrl + C) або сигналом SIGTERM (зазвичай створеним за допомогою kill (1) команда); якщо він запускається з прапором -c, він буде захоплювати пакети до тих пір, поки його не перерве сигнал SIGINT або SIGTERM або поки не буде оброблено зазначену кількість пакетів.

Згадані вище перемикачі описано нижче у цій статті.

Коли tcpdump закінчує захоплення пакетів, він повідомить про кількість:

  • Пакунки «отримані фільтром».
    • Сенс цього залежить від ОС, на якій ви запускаєте tcpdump, і, можливо, від того, як була сконфігурована ОС. Якщо в командному рядку було вказано фільтр, у деяких ОС він вважає пакунки незалежно від того, чи були вони зіставлені виразом фільтра, а в інших - тільки пакети, які були зіставлені виразом фільтра і оброблені tcp
  • Пакети «відкинуто ядром».
    • Це кількість пакетів, які були відкинуті через нестачу місця в буфері механізмом захоплення пакетів в ОС, в якій працює tcpdump, якщо ОС повідомляє цю інформацію додаткам. Якщо ні, його буде вказано як 0.

На платформах, які підтримують сигнал SIGINFO, таких як більшість BSD (дистрибутиви програмного забезпечення Берклі), він буде повідомляти ці підрахунки при отриманні сигналу SIGINFO (що генерується, наприклад, шляхом введення символу «status»), зазвичай Ctrl + T) і продовжить захоплення пакетів.

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

Tcpdump - це універсальний інструмент. Таким чином, існує безліч способів використовувати його для моніторингу трафіку у вашій системі Linux або Unix. Тим не менш, є загальні варіанти, з яких ви можете почати знайомство з інструментом.

Почніть з запуску tcpdump, щоб подивитися, як він працює. Якщо нічого не відбувається відразу, ви можете спробувати відкрити свій веб-браузер і перейти на сторінку.

sudo tcpdump

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

Тепер ви можете спробувати обмежити вивід за допомогою прапора -c. Число, яке ви вказуєте команді, буде таким же, як і кількість перехоплених пакетів.

sudo tcpdump -c 25

Можливо, ви помітили іншу проблему на цьому шляху. Що якщо tcpdump використовує неправильний інтерфейс мережі? Ви можете вказати той, на якому ви хочете захоплювати трафік, з прапором -i. Отже, якщо ви хочете захопити двадцять п'ять пакетів на інтерфейсі eth0, ви повинні використовувати:

sudo tcpdump -c 25 -i eth0

Якщо вам потрібно більше подробиць у своєму звіті, ви можете використовувати прапор -v для більш докладного висновку.

sudo tcpdump -c 25 -i eth0 -v

Як зазначалося раніше, tcpdump має можливість зберегти ваш висновок, що дозволить вам переглянути його пізніше. -W прапор буде написати свій висновок у вказаний файл.

sudo tcpdump -c 25 -i eth0 -w tcpdump.log

Потім прочитайте це з:

sudo tcpdump -r tcpdump.log

Нарешті, якщо ви хочете подати наш журнал у режимі реального часу, ви можете надіслати висновок до команди «grep». Це дуже корисно, якщо ви шукаєте з'єднання з певним вузлом або згадування певного ключового слова або помилки.

sudo tcpdump -c 25 -i eth0 | grep -i назва вузла

Це тільки основи. Якщо ви хочете дізнатися більше, продовжуйте читати для більш технічної розбивки tcpdump і його численних опцій.

Сумісність з Tcpdump

Для читання пакетів з мережевого інтерфейсу за допомогою команди tcpdump можуть знадобитися спеціальні привілеї (для читання збереженого файлу пакета такі привілеї не потрібні):

  • SunOS 3.x або 4.x з NIT або BPF: ви повинні мати доступ до читання/dev/nit або dev/bpf *.
  • Solaris с DLPI: ви маєте мати доступ до читання/запису до псевдоустрою, наприклад ,/dev/le. Однак, принаймні, в деяких версіях Solaris цього недостатньо, щоб tcpdump міг захоплювати в випадковому режимі; у цих версіях Solaris ви повинні бути користувачем root, або tcpdump повинен бути встановлений з встановленим значенням root для запису у випадковому режимі. Зауважте, що на багатьох (можливо, на всіх) інтерфейсах, якщо ви не захоплюєте у випадковому режимі, ви не побачите жодних вихідних пакетів, тому захоплення, не виконане у випадковому режимі, може бути не дуже корисним.
  • HP-UX с DLPI: Ви повинні бути користувачем root або tcpdump, слід встановити setuid для користувача root.
  • IRIX с snoop: Ви повинні бути користувачем root або tcpdump, слід встановити setuid для root.
  • Linux: Ви повинні бути користувачем root або tcpdump, слід встановити setuid для користувача root.
  • Ultrix и Digital UNIX / Tru64 UNIX: будь-який користувач може перехоплювати мережевий трафік за допомогою