Tshark на Linux: Полный гайд по захвату и анализу трафика в терминале | SecureFlow

Tshark на Linux: Полный гайд по захвату и анализу трафика в терминале

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

Содержание

Введение

Нужно быстро проанализировать сетевой трафик без графического интерфейса? Или автоматизировать захват и фильтрацию пакетов в скриптах и CI/CD? Тогда тебе пригодится Tshark — консольный аналог популярного инструмента Wireshark. Этот инструмент позволяет проводить захват пакетов, сетевой анализ и диагностику прямо из терминала на Linux-системах.

Tshark подходит как для новичков, так и для опытных специалистов в области сетевого администрирования, DevOps, пентестинга и информационной безопасности.

Установка Tshark на Linux

Ubuntu / Debian

sudo apt update && sudo apt install -y tshark

CentOS / RedOS

sudo dnf update && sudo dnf install -y wireshark-cli

ALT Linux

sudo apt-get update && sudo apt-get install -y tshark

Проверка установки

tshark -v

Базовое использование Tshark

Получение списка интерфейсов

Для захвата трафика нам сначала нужно выбрать интерфейс. Посмотреть список интерфейсов можно командой:

sudo tshark -D

Захват трафика с интерфейса

Пример простой команды для захвата всего трафика с интерфейса:

sudo tshark -i eth0

По умолчанию вывод будет текстовый в реальном времени — идеально для быстрой диагностики и изучения сетевого взаимодействия.

Фильтрация пакетов в Tshark

В Tshark можно использовать два типа фильтров:

  • -f — фильтры захвата (как в tcpdump)
  • -Ydisplay filters (как в Wireshark) — рекомендуется

Пример фильтра Tcpdump-совместимого (не рекомендуется):

sudo tshark -i eth0 -f "src 192.168.1.196"

Пример Wireshark Display Filter (рекомендуется):

sudo tshark -i eth0 -Y "ip.src == 192.168.1.196"

Полезные фильтры для анализа трафика

Фильтр Описание
ip.src == 192.168.1.196 Исходящий трафик с IP-адреса
ip.dst == 192.168.1.196 Входящий трафик на IP-адрес
tcp.port == 443 Трафик по TCP-порту 443 (HTTPS)
udp.port == 53 DNS-запросы по UDP
dns Только DNS-запросы и ответы
http HTTP-запросы и ответы
tls.handshake.version Показывает TLS handshakes
icmp Трафик ICMP (ping и ошибки сети)
frame.len > 1000 Пакеты размером более 1000 байт
tcp.flags.syn == 1 && tcp.flags.ack == 0 Начало TCP-соединений (SYN без ACK)
eth.addr == aa:bb:cc:dd:ee:ff Трафик с/на MAC-адрес

Условия в фильтрах Tshark (логика и примеры)

Чтобы точнее фильтровать сетевые пакеты, используйте логические операторы. Это позволяет комбинировать условия, исключать ненужное и строить сложные правила фильтрации прямо в терминале.

Поддерживаемые логические операторы

Оператор Альтернативный вариант Что делает Пример
&& and Логическое И — все условия должны быть true ip.src == 192.168.1.1 && tcp.port == 80
|| or Логическое ИЛИ — одно из условий должно быть true ip.src == 192.168.1.1 || ip.src == 192.168.1.2
! not Логическое НЕ — исключение из фильтра !dns — показывает всё, кроме DNS-запросов
() Группировка условий (ip.src == 192.168.1.1 && tcp.port == 80) && not dns

Примеры сложных фильтров

HTTP и HTTPS с конкретным IP

sudo tshark -i eth0 -Y "(ip.src == 192.168.1.100 || ip.dst == 192.168.1.100) && (tcp.port == 80 || tcp.port == 443)"

Исключить DNS и ICMP

sudo tshark -i eth0 -Y "!(dns || icmp)"

Все TCP-пакеты больше 1000 байт

sudo tshark -i eth0 -Y "tcp && frame.len > 1000"

Советы

  • Используй скобки при комбинировании условий — это избавит от логических ошибок.
  • Для отладки фильтров сначала используй Wireshark с теми же условиями — так проще проверить корректность.
  • Если фильтр не работает — проверь пробелы, кавычки и порядок операторов.

Сохранение трафика в файл

Записать захваченный трафик в .pcap-файл:

sudo tshark -i eth0 -w capture.pcap

Этот файл можно потом открыть в Wireshark или передать на анализ в SIEM, скрипты и т.д.

Чтение сохранённых файлов

sudo tshark -r capture.pcap

Можно использовать фильтры -Y и -T, чтобы извлечь только нужные поля.

Форматы вывода

JSON

Удобно для парсинга в Python, логировании, отправке в API:

sudo tshark -i eth0 -T json

CSV / поля

Полезно для логирования и отчётов:

sudo tshark -i eth0 -T fields -e frame.number -e ip.src -e ip.dst

Пример вывода:

1       192.168.1.178   192.168.1.196
2       192.168.1.196   192.168.1.178

Можно добавлять больше полей: -e tcp.port -e udp.port -e dns.qry.name

Советы по использованию

  • Используйте -c чтобы ограничить количество пакетов:
    sudo tshark -i eth0 -c 100
    
  • Уточняйте интерфейс при нескольких сетевых адаптерах.
  • Запускайте от sudo для полного доступа к сетевому стеку.
  • Для фонового анализа добавьте nohup или screen.

Заключение

Tshark — это мощный инструмент для захвата и анализа сетевого трафика в терминале. Он особенно полезен:

  • На серверах без GUI.
  • Для автоматизации.
  • При написании скриптов для DevOps/NetOps.
  • В пентестах и аудитах.

Освоив Tshark, ты получишь инструмент, способный заменить графический Wireshark во многих ситуациях — быстро, эффективно и удобно.