Установка
1 2 |
yum install tcpdump - установка в centos apt install tcpdump - установка в debian |
Опции утилиты tcpdump:
1 2 3 4 5 6 7 8 9 10 |
-i интерфейс # Задает интерфейс, с которого необходимо анализировать трафик (без указания интерфейса - анализ "первого попавшегося") -n # Отключает преобразование IP в доменные имена. Если указано -nn, то запрещается преобразование номеров портов в название протокола. -e # Включает вывод данных канального уровня (например, MAC-адреса). -v # Вывод дополнительной информации (TTL, опции IP). -s размер # Указание размера захватываемых пакетов. (по умолчанию - пакеты больше 68 байт) -w имя_файла # Задать имя файла, в который сохранять собранную информацию. -r имя_файла # Чтение дампа из заданного файла. -p # Захватывать только трафик, предназначенный данному узлу. (по умолчанию - захват всех пакетов, например в том числе широковещательных). -q # Переводит tcpdump в "бесшумный режим", пакет анализируется на транспортном уровне (протоколы TCP, UDP, ICMP), а не на сетевом (протокол IP). -t # Отключает вывод меток времени. |
Наиболее часто используемые фильтрующие параметры команды tcpdump:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
dst хост # Проверяет, совпадает ли адрес получателя IP-пакета с указанным значением. # Возможно задавать как IP, подсеть в формате 10.0.0.1/24, так и имя хоста. src хост # Проверяет, совпадает ли адрес отправителя IP пакета с указанным значением. # Возможно задавать как IP, подсеть в формате 10.0.0.1/24, так и имя хоста. host хост # Проверяет, совпадает ли адрес отправителя или получателя с заданным значением. # Возможно задавать как IP, подсеть в формате 10.0.0.1/24, так и имя хоста. net имя_сети # Проверяется, находится ли адрес отправителя/получателя в заданной сети. # Возможно указание сети в формате CIDR (например 10.0.0.1/22), либо указание имени сети, # заданной в файле /etc/networks. ip | arp | rarp | tcp | udp | icmp [хост] # Проверяет, принадлежит ли пакет одному из указанных протоколов и при указании адреса хоста проверяет, # совпадает ли адрес отправителя\получателя с заданным. # Возможно задавать как IP, подсеть в формате 10.0.0.1/24, так и имя хоста. [tcp | udp] dst port номер_порта # Проверяется, принадлежит ли пакет протоколу TCP/UDP и равен ли порт назначения заданному. # Можно указать номер порта, либо имя, заданное в файле /etc/services. [tcp | udp] src port номер_порта # Проверяется, принадлежит ли пакет протоколу TCP/UDP и равен ли порт источника заданному. # Можно указать номер порта, либо имя, заданное в файле /etc/services. [tcp | udp] port номер_порта # Проверяется, принадлежит ли пакет протоколу TCP/UDP и равен ли порт назначения или источника заданному. # Можно указать номер порта, либо имя, заданное в файле /etc/services. ether { src | dst | host } MAC_адрес # Проверяется, принадлежит ли сетевой пакет источнику, назначению, # источнику или назначению имеющему заданный MAC_адрес. ip broadcast # Проверяется, является ли IP пакет широковещательным. ether broadcast # Проверяется, является ли ARP-пакет широковещательным. |
Примеры использования tcpdump:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
tcpdump -i eth0 # слушаем интерфейс eth0 tcpdump port 80 # слушаем 80 порт tcpdump host google.com # слушаем трафик с хоста google.com tcpdump -n -i eth0 icmp # Ловим пакеты icmp (ping pong) tcpdump | grep -v ssh # поиск пакетов исключая пакеты ssh tcpdump -n -i eth0 net 192.168.1.15 # трафик с/на IP tcpdump -n -i eth0 net 192.168.1.0/24 # трафик с/в сеть tcpdump -l > dump && tail -f dump # Вывод с записью в файл tcpdump -i eth0 -w traffic.eth0 # Информация о трафике записывается в бинарный файл traffic.eth0 tcpdump -i eth0 -s 0 -w traffic.eth0 # Запись + загрузка в бинарный файл tcpdump -r traffic.eth0 # Читаем из файла tcpdump -i eth0 -X port \(110 or 143\) # Проверка pop и imap на безопасность tcpdump -i eth0 -s 0 -A port 80 | grep GET # (-s 0 весь пакет, -A для ASCII) tcpdump -npi iface_name ether src MAC-address # узнать MAC устройства iface_name -имя интерфейса MAC-address -мак адрес устройства tcpdump -vvv -s 0 -l -n port 53 # показываем DNS трафик tcpdump -nl -i bge0 not port ssh and src \(192.168.16.121 or 192.168.16.54\) tcpdump -n -i eth1 net 192.168.16.121 # Выборка входящий/исходящий по одному IP адресу tcpdump -n -i eth1 net 192.168.16.0/24 # Выборка входящий/исходящий по адресу сети tcpdump -l > dump && tail -f dump # Вывод через буфер tcpdump -i rl0 -w traffic.rl0 # Писать заголовки в бинарный файл tcpdump -i rl0 -s 0 -w traffic.rl0 # Писать в бинарный фйл полные пакеты tcpdump -r traffic.rl0 # Прочитать из файла (так-же для ethereal tcpdump -i eth0 -s 0 -A port 80 | grep GET # -s 0 для полных пакетов, -A для ASCII |