Документация по ОС FreeBSD
Воскресенье, 23.11.2025, 17:17
Главная
Регистрация
Вход
Приветствую Вас
Гость
|
RSS
Меню сайта
Главная страница
Новости в мире Unix
NEW
Каталог файлов
NEW
Установка и настройка
Ports & Packages
cvs
Безопасность
Работа с железом
X Window
Multimedia
Man pages
Net
Apache
DNS
FTP
Mail
Samba
Squid
SSH
VPN
РРР
Shell
IPFW
Tips'n'tricks
RFC
Книги по FreeBSD
Темы экзамена BSDA
Гостевая книга
Форум на bsdportal.ru
Каталог сайтов
Самый свежий софт
Каталог ссылок
Категории каталога
Apache
[58]
DNS
[25]
FTP
[27]
Mail
[74]
Samba
[24]
Squid
[46]
SSH
[23]
VPN
[35]
РРР
[20]
Net
[173]
Главная
»
Статьи
»
Сеть
»
Net
Анализ сетевого трафика с помощью Tcpdump [2011]
Одной из самых распространенных программ для перехвата и анализа сетевого трафика является tcpdump [1]. Приведем примеры ее применения.
1. Опции захвата трафика.
В простейшем случае достаточно указать интерфейс для анализа трафика:
tcpdump -i INTERFACE
Можно отключить преобразования IP адресов в доменные имена:
tcpdump -n
Ограничение числа перехватываемых пакетов:
tcpdump -c PACKET_COUNT
Запись в файл:
tcpdump -w FILE_NAME
Чтение из файла:
tcpdump -r FILE_NAME
Отметим, что для воспроизведения записанного файла в сеть можно использовать отдельную утилиту tcpreplay (не входящую в комплект tcpdump):
tcpreplay FILE_NAME
Вывод данных канального уровня (например, mac адреса и прочее):
tcpdump -e
Вывод дополнительной информации (например, TTL, опции IP):
tcpdump -v
Увеличение размера захватываемых пакетов (больше 68 байт по умолчанию):
tcpdump -s SNAP_LEN
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
Просмотр фреймов 802.1Q можно осуществить следующими способами (на интерфейсе с виланами):
tcpdump -i INTERFACE vlan
Примеры:
# tcpdump -n -e -i fxp0 vlan
# tcpdump -n -e -i fxp0 vlan 100
# tcpdump -n -e -i fxp0 ether proto 0x8100
Фильтрация по 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
Фильтрация по размеру пакетов:
tcpdump { less | greater } PACKET_SIZE
Существуют расширенные возможности по фильтрации пакетов 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. И соответствующий фильтр будет выглядеть так:
# tcpdump -n -i em0 'tcp[13] == 2'
Для перехвата пакетов только с флагами SYN и ACK (значения битовых позиций 2 и 16) можно использовать следующую конструкцию:
# tcpdump -n -i em0 'tcp[13] == 18'
Кроме того, можно использовать опцию tcpflags.
Пакеты с любым флагом:
# tcpdump -n -i em0 'tcp[tcpflags] != 0'
Пакеты, включающие SYN:
# tcpdump -n -i em0 'tcp[tcpflags] & tcp-syn != 0'
Для того, чтобы анализировать передаваемые данные по протоколу TCP, можно использовать tcpflow:
# tcpflow -c -i ep0 host 195.12.69.199 and port 80
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}'`
RATIO=$(echo "scale=3; $SYN_ACK_TO_ISP/$SYN_ONLY_FROM_ISP" | bc)
Источник:
http://storm.in.ua/article/2/analiz-setevogo-trafika-s-pomoschyu-Tcpdump/
Категория:
Net
| Добавил:
oleg
(24.06.2011) | Автор:
Andriy Karashchuk
Просмотров:
1196
| Рейтинг:
0.0
/
0
|
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Всего комментариев:
0
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация
|
Вход
]
Форма входа
Друзья сайта
Google+
Copyright MyCorp © 2025