Одной из самых распространенных программ для перехвата и анализа сетевого трафика является tcpdump [1]. Приведем примеры ее применения.
1. Опции захвата трафика.
В простейшем случае достаточно указать интерфейс для анализа трафика:
Можно отключить преобразования IP адресов в доменные имена:
Ограничение числа перехватываемых пакетов:
Запись в файл:
Чтение из файла:
Отметим, что для воспроизведения записанного файла в сеть можно использовать отдельную утилиту tcpreplay (не входящую в комплект tcpdump):
Вывод данных канального уровня (например, mac адреса и прочее):
Вывод дополнительной информации (например, TTL, опции IP):
Увеличение размера захватываемых пакетов (больше 68 байт по умолчанию):
2. Опции фильтрации трафика.
Можно осуществлять фильтрацию на канальном уровне. Для выделения Ethernet фреймов используются следующие конструкции:
tcpdump ether { broadcast | multicast }
Примеры:
# tcpdump -n -e -i vlan0 ether broadcast
Просмотр фреймов 802.1Q можно осуществить следующими способами (на интерфейсе с виланами):
Примеры:
# tcpdump -n -e -i fxp0 vlan 100
# tcpdump -n -e -i fxp0 ether proto 0x8100
Фильтрация по IP протоколу:
Примеры:
# tcpdump -n -i fxp0 tcp
# tcpdump -n -i fxp0 udp
Фильтрация по IP адресам:
Примеры:
# 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
Фильтрация по размеру пакетов:
Существуют расширенные возможности по фильтрации пакетов TCP с флагами. Заголовок TCP пакета состоит из 20 октетов. Поле битов управления (флагов) TCP содержится в октете номер 13. Соответственно под флаги отводятся следующие битовые позиции в 13 байте (по возрастанию степени 2): FIN (1), SYN(2), RST(4), PSH(8), ACK(16), URG(32), ECE(64), CWR(128).
Таким образом, например, для пакетов только с флагом SYN октет номер 13 заголовка TCP должен содержать значение 2. И соответствующий фильтр будет выглядеть так:
Для перехвата пакетов только с флагами SYN и ACK (значения битовых позиций 2 и 16) можно использовать следующую конструкцию:
Кроме того, можно использовать опцию tcpflags.
Пакеты с любым флагом:
Пакеты, включающие SYN:
Для того, чтобы анализировать передаваемые данные по протоколу TCP, можно использовать tcpflow:
3. Полезные рецепты.
Получение рейтинга наиболее активных участников сетевого взаимодействия (top talkers):
Выявление аномалий TCP путем вычисления отношения числа исходящих пакетов с SYN флагом к числу входящих с SYN+ACK:
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}'`
RATIO=$(echo "scale=3; $SYN_ACK_TO_ISP/$SYN_ONLY_FROM_ISP" | bc)
возможно у Вас отключен javascript, если включен - просто обновите страницу