FreeBSD

Tcpdump примеры

Tcpdump (от TCP и англ. dump — свалка, сбрасывать) — утилита UNIX (есть клон для Windows), позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа.

Для выполнения программы требуется наличие прав суперпользователя и прямой доступ к устройству (так, например, запуск из Jail во FreeBSD невозможен). 

1. Опции захвата трафика. В простейшем случае достаточно указать интерфейс для анализа трафика:

tcpdump –i INTERFACE

Можно отключить преобразования IP адресов в доменные имена:

tcpdump -n

Ограничение числа перехватываемых пакетов:

tcpdump –c PACKET_COUNT

Запись в файл:

tcpdump -w FILE_NAME

Чтение из файла:

tcpdump -r FILE_NAME

Вывод дополнительной информации (например, TTL, опции IP):

tcpdump -v

2. Опции фильтрации трафика. Можно осуществлять фильтрацию на канальном уровне. Для выделения Ethernet фреймов используются следующие конструкции:

tcpdump ether { src | dst | host } MAC_ADDRESS

tcpdump ether { broadcast | multicast } Примеры:

# tcpdump -n -i vlan0 ether src 0:2:b3:d8:d8:2c
# tcpdump -n -e -i vlan0 ether broadcast

Фильтрация по IP протоколу:

tcpdump { arp | rarp | ip | tcp | udp | icmp | wlan | multicast | broadcast }

Примеры:

# tcpdump -n -i fxp0 ip
# tcpdump -n -i fxp0 tcp
# tcpdump -n -i fxp0 udp

Фильтрация по IP адресам:

tcpdump { src | dst } { net | host | port }

Примеры:

# tcpdump -n -i fxp0 src 195.12.66.1
# tcpdump -n -i fxp0 dst 195.12.66.65
# tcpdump -n -i fxp0 host 195.12.66.1
# tcpdump -n -i fxp0 port 25
# tcpdump -n -i fxp0 dst 195.12.66.1 and port 53

3. Получение рейтинга наиболее активных участников сетевого взаимодействия (top talkers):

# tcpdump -tn -c 10000 -i fxp0 tcp or udp | awk -F "." '{print $1"."$2"."$3"."$4}' |  sort | uniq -c | sort -nr | awk '$1 > 100'

Выявление аномалий TCP путем вычисления отношения числа исходящих пакетов с SYN флагом к числу входящих с SYN+ACK:

SYN_ONLY_FROM_ISP=`tcpdump -n -l -r $1 'src net 192.168.0.0/24' and  'dst net not 192.168.0.0/24' and 'tcp[13] == 2' | wc | awk '{print $1}'`
SYN_ACK_TO_ISP=`tcpdump -n -l -r $1 'src net not 192.168.0.0/24' and  'dst net 192.168.0.0/24' and 'tcp[13] == 18' | wc | awk '{print $1}'`

Полная запись трафика:

tcpdump -i nfe0 -p -A -s 0 dst port 110 and src host 1.2.3.4

Оставить комментарий