Полное руководство по tcpdump на Linux: установка, опции и практические примеры | SecureFlow

Полное руководство по tcpdump на Linux: установка, опции и практические примеры

Постер статьи

Содержание

Краткое вступление

tcpdump — это мощный сетевой сниффер и анализатор пакетов для UNIX‑подобных систем. С его помощью можно:

  • Перехватывать и сохранять сетевой трафик
  • Отлаживать проблемы с сетью
  • Анализировать пакеты в режиме реального времени или из заранее записанных файлов

Применение tcpdump помогает системным администраторам и инженерам по безопасности быстро выявлять узкие места в сети и диагностировать сбои.

Что такое tcpdump и зачем он нужен

tcpdump основан на библиотеке libpcap и позволяет:

  • Сниффинг (перехват) пакетов на сетевом интерфейсе
  • Отладку приложений, взаимодействующих по сети
  • Мониторинг атак и аномалий
  • Сохранение трафика в формате pcap для последующего анализа в Wireshark или аналогах

Установка и зависимости

Для корректной работы нужен пакет tcpdump и библиотека libpcap. На большинстве дистрибутивов они устанавливаются вместе:

  • Ubuntu / Debian
    sudo apt update
    sudo apt install tcpdump
    
  • CentOS / RedOS
    sudo dnf update
    sudo dnf install tcpdump
    
  • ALT Linux
    su -c "apt-get update"
    su -c "apt-get install tcpdump"
    

Как запустить tcpdump: базовая команда

tcpdump [опции] [фильтр]
  1. Опции — настройки, что и как выводить
  2. Фильтр — правило, какие пакеты показывать

Пример «самого простого» захвата без фильтра:

  • Ubuntu / Debian / CentOS / RedOS
    sudo tcpdump
    
  • ALT Linux
    su -c "tcpdump"
    

Нажмите Ctrl+C, чтобы остановить.

Основные опции для новичка

  • -i eth0 — Выбирает сетевой интерфейс (например, eth0)
  • -c 10 — Собирает ровно 10 пакетов и останавливается
  • -n — Показывает IP‑адреса, не имена сайтов
  • -nn — Не разрешает IP и порты — только цифры
  • -w file.pcap — Сохраняет трафик в файл для анализа позже
  • -r file.pcap — Читает трафик из ранее сохранённого файла
  • -s 0 — Захватывает полные пакеты (максимум данных)
  • -X — Показывает содержимое каждого пакета

Совет: почти всегда полезно добавить -n или -nn, чтобы tcpdump не тратил время на перевод адресов в имена.

Простая фильтрация пакетов (BPF)

Фильтр указывается после опций. Вот самые понятные:

По IP‑адресу

  • host 192.168.1.10 — все пакеты с участием этого адреса
  • src host 192.168.1.10 — только пакеты от него
  • dst host 192.168.1.10 — только пакеты к нему

По порту

  • port 80 — HTTP-трафик
  • src port 53 — DNS‑запросы от порта 53

По протоколу

  • tcp, udp, icmp

Несколько условий

  • Объединяйте через and (И), or (Или), например
    tcpdump -i eth0 tcp and port 80 and src host 10.0.0.5
    

Как работает Tcpdump:

[ eth0 ] — tcpdump → [ stdout ]
                   └— tcpdump -w → [ file.pcap ]

Понятные примеры

Поймать 5 пакетов на eth0 без перевода имён:

  • Ubuntu / Debian / CentOS / RedOS
    sudo tcpdump -i eth0 -c 5 -nn
    
  • ALT Linux
    su -c "tcpdump -i eth0 -c 5 -nn"
    

Смотреть только HTTP‑трафик с дампом содержимого:

  • Ubuntu / Debian / CentOS / RedOS
    sudo tcpdump -i eth0 tcp port 80 -nn -X
    
  • ALT Linux
    su -c "tcpdump -i eth0 tcp port 80 -nn -X"
    

Захват DNS‑запросов от конкретного устройства:

  • Ubuntu / Debian / CentOS / RedOS
    sudo tcpdump -i wlan0 udp dst port 53 and src host 10.0.0.5 -nn
    
  • ALT Linux
    su -c "tcpdump -i wlan0 udp dst port 53 and src host 10.0.0.5 -nn"
    

Полезные советы для новичков

Полный пакет:

Добавьте -s 0, чтобы видеть всю информацию.

Сохранить, а потом смотреть:

  • Ubuntu / Debian / CentOS / RedOS
    sudo tcpdump -i eth0 -w mydump.pcap
    
  • ALT Linux
    su -c "tcpdump -i eth0 -w mydump.pcap"
    

А потом:

tcpdump -r mydump.pcap -nn -X

Долго и много: используйте ротацию файлов:

  • Ubuntu / Debian / CentOS / RedOS
    sudo tcpdump -i eth0 -C 10 -W 5 -w dump-%Y%m%d_%H%M%S.pcap
    
  • ALT Linux
    su -c "tcpdump -i eth0 -C 10 -W 5 -w dump-%Y%m%d_%H%M%S.pcap"
    

Это создаст файлы по 10 МБ и будет держать только 5 последних.

Удалённая машина:

  • Ubuntu / Debian / CentOS / RedOS
    ssh user@remote 'sudo tcpdump -w - -i eth0' | sudo tcpdump -r - -nn
    
  • ALT Linux
    ssh user@remote 'sudo tcpdump -w - -i eth0' | su -c "tcpdump -r - -nn"
    

Благодаря этому вы видите трафик с другого сервера прямо на своём компьютере.

Часто задаваемые вопросы

  1. Как захватить трафик по MAC‑адресу?
    tcpdump -i eth0 ether host AA:BB:CC:DD:EE:FF -nn
    
  2. Можно ли фильтровать сразу по нескольким интерфейсам?
    Нет — tcpdump захватывает только на одном интерфейсе;
    используйте -i any или запустите несколько экземпляров.
  3. Как сохранить только заголовки пакетов?
    tcpdump -s 64 -w file.pcap
    

Заключение

Теперь вы знаете, как:

  • Установить tcpdump на разные дистрибутивы
  • Запускать захват с нужными опциями
  • Фильтровать трафик с помощью BPF
  • Сохранять дампы и просматривать их

Практикуйтесь — и вскоре tcpdump станет вашим незаменимым инструментом для анализа сетевого трафика даже без графических программ!