0
1102
Используем tcpdump для анализа и перехвата сетевого трафика
Используем tcpdump для анализа и перехвата сетевого трафика

Используем tcpdump для анализа и перехвата сетевого трафика

Утилита tcpdump — отличный инструмент командной, который способен перехватывать и анализировать сетевой трафик. Может оказаться большим подспорьем при решении сетевых проблем. Пакеты можно сохранить в файл и анализировать позже. Рекомендуется время от времени запускать эту утилиту, чтобы следить за своей сетью.

Вывод tcpdump

Утилита tcpdump позволяет проверять заголовки пакетов TCP/IP и выводить одну строку для каждого из пакетов. Она будет делать это до тех пор, пока не нажать Ctrl + C.

Давайте рассмотрим одну строку из примера вывода:

 

 

Каждая строка включает:

  • Метка времени Unix (20: 58: 26.765637)
  • протокол (IP)
  • имя или IP-адрес исходного хоста и номер порта (10.0.0.50.80)
  • имя хоста или IP-адрес назначения и номер порта (10.0.0.1.53181)
  • Флаги TCP (Flags [F.]). Указывают на состояние соединения и могут содержать более одного значения:
    • o S — SYN. Первый шаг в установлении соединения
    • F — FIN. Прекращение соединения
    • — ACK. Пакет подтверждения принят успешно
    • P — PUSH. Указывает получателю обрабатывать пакеты вместо их буферизации
    • R — RST. Связь прервалась
  • Порядковый номер данных в пакете. (seq 1)
  • Номер подтверждения. (ack 2)
  • Размер окна (win 453). Количество байтов, доступных в приемном буфере. Далее следуют параметры TCP
  • Длина полезной нагрузки данных. (length 0)

Установка tcpdump

В дистрибутивах на основе Debian tcpdump можно установить с помощью команды APT:

В дистрибутивах на основе RPM tcpdump можно установить с помощью YUM:

В RHEL 8 с использование DNF:

 

Опции tcpdump

Запускать tcpdump нужно с правами root. Tcpdump включает в себя множество опций и фильтров. При запуске tcpdump без каких-либо параметров произойдет перехват всех пакетов, проходящих через интерфейс по умолчанию.

Вывести список доступных системе сетевых интерфейсов, в которых tcpdump может захватывать пакеты:

или

Очень полезно для систем, в которых нет команды для вывода списка интерфейсов.

Для захвата пакетов, проходящих через определенный интерфейс, используйте -i с именем интерфейса. Если не указать имя, тогда tcpdump подберет первый обнаруженный сетевой интерфейс.

  • -v увеличивает количество отображаемой информации о пакетах
  • -vv дает еще более подробную информацию

По умолчанию tcpdump преобразует IP-адреса в имена хостов, а также использует имена служб вместо номеров портов.

  • -n Если DNS не работает или вы не хотите, чтобы tcpdump выполнял поиск имени.
 
  • -c захватывает только набор строк, например, 5:
 
  • -tttt для использования более удобных временных меток (по умолчанию используются временные метки Unix)
 
 

Фильтры tcpdump

Фильтр выражений

Фильтр выражений выбирает, какие заголовки пакетов будут отображаться. Если фильтры не применяются, отображаются все заголовки пакетов.

Самые распространенные фильтры :

  • port
  • host
  • src
  • dst
  • tcp
  • udp
  • icmp

 

Фильтр портов

Фильт портов используется для просмотра пакетов, поступающих на определенный порт:

 

Фильтр хостов

Для перехвата пакетов, приходящих или исходящих от определенного хоста. Например, IP-адрес 10.0.2.15:

Для перехвата пакетов определенных типов протоколов. Например, icmp, на интерфейсе eth1:

 

 

Комбинирование фильтров

Фильтры можно комбинировать с помощью операторов:

  • AND
  • OR
  • NOT

Это позволит писать команды, которые могут более точно изолировать пакеты. Например, пакеты с определенного IP-адреса и для определенного порта:

 

Если нужно перехватить все пакеты кроме ICMP, используем оператор NOT:

 

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

Вывод tcpdump может довольно быстро перемещаться по экрану. В таких случаях можно сохранить заголовки пакетов в файле с опцией -w. Вывод сохраняется в файлы с расширением .pcap.

Следующая команда сохраняет 10 строк вывода интерфейса eth1 в icmp.pcap.

Прочитать этот файл можно с помощью опции -r

Просмотр сведений о пакете

Пока мы видели только заголовки пакетов, а для просмотра содержимого нужно использовать параметр -A. Вывод содержимого будет в формате ASCII.

С помощью опции -X можно отобразить вывод в шестнадцатеричном формате, правда, это не сильно помогает в тех случаях, когда соединение зашифровано.

 

Вывод

Утилита tcpdump проста в настройке и освоении. Необходимо лишь немного разобраться с:

  • выводом
  • фильтрами
  • опциями

После чего tcpdump станет отличным помощником в вопросах обеспечения безопасности вашей сети.

источник