tcpdump – это команда устранения неполадок сети, которая также известна как пакетный сниффер, используемый для захвата и отображения пакетов из сети.
tcpdump позволяет пользователям захватывать и отображать TCP / IP и другие пакеты, которые передаются или принимаются по сети, к которой подключен компьютер.
Он позволяет выполнять поиск в режиме реального времени путем перенаправления захваченных данных на grep или данные могут быть записаны в файл для последующего поиска. Вы можете применять фильтры к пакетам и избегать трафика, который вы не хотите видеть.
Для запуска команды tcpdump требуется root-доступ.
Вы можете захватить все данные, проходящие через вашу локальную сеть, и поместить эти данные в файл.
Он не отображает вывод в реальном времени на экран, но фиксирует пакеты в сети в указанном файле.
Вы можете сохранить все пакеты или часть пакетов (заголовок).
Вы можете выбрать захват и анализ трафика через один сетевой интерфейс или весь сетевой интерфейс. В
этой статье мы узнаем, как использовать команду tcpdump для анализа трафика, идущего на машину Linux.
- 1) Анализ трафика по всему интерфейсу
- 2) Список доступных интерфейсов
- 3) Анализ конкретного интерфейса и ограничение пакетов
- 4) Захват данных с использованием IP-адреса и порта
- 5) Перехватить пакет из определенного порта
- 6) Перехватить пакет, игнорируя определенный порт
- 7) Перехватывать пакеты из определенного протокола
- 8) Запись журнала в определенный файл
- 9) Чтение файла записи tcpdump
- 10) Захват пакетов с дополнительной информацией
- 11) Захват пакетов, поступающих с удаленного хоста
- 12) Захват пакетов на получателе удаленным хостом
- 13) Захват как входящих, так и исходящих пакетов определенного хоста
- 14) Захват пакета с использованием диапазона портов
1) Анализ трафика по всему интерфейсу
tcpdump по умолчанию не установлен, поэтому вам нужно установить его
На Ubuntu 16.04
# apt install tcpdump
Формат источника – source.port, где источником может быть имя хоста или IP-адрес.
Вы можете видеть в первой строке, пакет, захваченный в timestamp 07: 41: 25.886307, является IP-протоколом, который создается с именем хоста li339-47.members.linode.com и port ssh, поэтому вы видите li339-47. members.linode.com.ssh.
Пакет предназначен для флага 169.255.7.5.44284.
Вам нужно нажать кнопку отмены, чтобы остановить ее.
Если вам нужна дополнительная информация, tcpdump предоставляет несколько опций, которые улучшают или изменяют его вывод:
- -i интерфейс: прослушивание указанного интерфейса.
2) Список доступных интерфейсов
# tcpdump -D 1.eth0 2.nflog (Linux netfilter log (NFLOG) interface) 3.nfqueue (Linux netfilter queue (NFQUEUE) interface) 4.any (Pseudo-device that captures on all interfaces) 5.lo [Loopback]
3) Анализ конкретного интерфейса и ограничение пакетов
Теперь вы можете решить проанализировать трафик на указанном интерфейсе с параметром -i и ограничить количество пакетов для захвата с помощью -c
# tcpdump -i eth0 -c 5 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 08:57:09.186418 IP li339-47.members.linode.com.ssh > 169.255.7.5.44284: Flags [P.], seq 1435431156:1435431272, ack 4135945080, win 419, options [nop,nop,TS val 3392110805 ecr 19471515], length 116 08:57:09.186855 IP li339-47.members.linode.com.33326 > resolver08.dallas.linode.com.domain: 9787+ PTR? 5.7.255.169.in-addr.arpa. (42) 08:57:09.335228 IP 134.119.220.87.45873 > li339-47.members.linode.com.60342: Flags [S], seq 3684168813, win 1024, length 0 08:57:09.335264 IP li339-47.members.linode.com.60342 > 134.119.220.87.45873: Flags [R.], seq 0, ack 3684168814, win 0, length 0 08:57:09.378999 IP 134.119.220.87.45873 > li339-47.members.linode.com.25070: Flags [S], seq 3509221600, win 1024, length 0 5 packets captured 13 packets received by filter 0 packets dropped by kernel
4) Захват данных с использованием IP-адреса и порта
# tcpdump -i eth0 -c 5 -nn tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 09:17:09.572425 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], seq 1435457792:1435457908, ack 4135947356, win 419, options [nop,nop,TS val 3393311191 ecr 19771613], length 116 09:17:09.605048 IP 96.126.114.47.32887 > 204.11.201.10.123: NTPv4, Client, length 48 09:17:09.663754 IP 204.11.201.10.123 > 96.126.114.47.32887: NTPv4, Server, length 48 09:17:09.785600 IP 169.255.7.5.44284 > 96.126.114.47.22: Flags [.], ack 0, win 722, options [nop,nop,TS val 19771669 ecr 3393311183], length 0 09:17:09.785646 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], seq 116:700, ack 1, win 419, options [nop,nop,TS val 3393311404 ecr 19771669], length 584 5 packets captured 5 packets received by filter 0 packets dropped by kernel
5) Перехватить пакет из определенного порта
Вы можете перехватить пакеты с указанным номером порта с параметром port
# tcpdump -i eth0 -c 5 -nn port 22 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 09:27:27.773270 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], seq 1435459900:1435460016, ack 4135948192, win 419, options [nop,nop,TS val 3393929392 ecr 19926162], length 116 09:27:27.773357 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], seq 116:232, ack 1, win 419, options [nop,nop,TS val 3393929392 ecr 19926162], length 116 09:27:28.032620 IP 169.255.7.5.44284 > 96.126.114.47.22: Flags [.], ack 0, win 722, options [nop,nop,TS val 19926230 ecr 3393929384], length 0 09:27:28.032655 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], seq 232:648, ack 1, win 419, options [nop,nop,TS val 3393929652 ecr 19926230], length 416 09:27:28.032668 IP 169.255.7.5.44284 > 96.126.114.47.22: Flags [.], ack 116, win 722, options [nop,nop,TS val 19926230 ecr 3393929392], length 0 5 packets captured 6 packets received by filter 0 packets dropped by kernel
6) Перехватить пакет, игнорируя определенный порт
Вы можете игнорировать порт при перехвате пакетов.
Это возможно при параметре not port
# tcpdump -i eth0 -c 5 -nn not port 22 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 11:15:53.784094 IP 134.119.220.87.45873 > 96.126.114.47.32724: Flags [S], seq 1210911834, win 1024, length 0 11:15:53.784139 IP 96.126.114.47.32724 > 134.119.220.87.45873: Flags [R.], seq 0, ack 1210911835, win 0, length 0 11:15:53.910633 IP 134.119.220.87.45873 > 96.126.114.47.32724: Flags [R], seq 1210911835, win 1200, length 0 11:15:53.911319 IP 134.119.220.87 > 96.126.114.47: ICMP host 134.119.220.87 unreachable - admin prohibited, length 48 11:15:56.327699 IP 134.119.220.87.45873 > 96.126.114.47.18566: Flags [S], seq 3213454109, win 1024, length 0 5 packets captured 6 packets received by filter 0 packets dropped by kernel
7) Перехватывать пакеты из определенного протокола
Вы можете только захватить пакеты icmp или tcp
# tcpdump -i eth0 -c 5 -nn tcp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 09:49:33.371487 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], seq 1435550388:1435550504, ack 4135954104, win 438, options [nop,nop,TS val 3395254990 ecr 20257561], length 116 09:49:33.371612 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], seq 116:232, ack 1, win 438, options [nop,nop,TS val 3395254990 ecr 20257561], length 116 09:49:33.371788 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], seq 232:452, ack 1, win 438, options [nop,nop,TS val 3395254991 ecr 20257561], length 220 09:49:33.371956 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], seq 452:648, ack 1, win 438, options [nop,nop,TS val 3395254991 ecr 20257561], length 196 09:49:33.631626 IP 169.255.7.5.44284 > 96.126.114.47.22: Flags [.], ack 116, win 722, options [nop,nop,TS val 20257629 ecr 3395254981], length 0 5 packets captured 7 packets received by filter 0 packets dropped by kernel
Вы можете просто заменить tcp на icmp для этого
8) Запись журнала в определенный файл
Можно сохранить захваченные пакеты в файле.
По умолчанию при захвате пакетов в файл он сохраняет только 68 байтов данных из каждого пакета.
Остальная часть информации игнорируется.
Вы можете использовать -s, чтобы сообщить tcpdump, сколько байтов для каждого пакета сохранить и указать 0, поскольку длина моментального снимка пакетов указывает tcpdump на сохранение целого пакета.
# tcpdump -i eth0 -c 5 -nn tcp -w packets-record.cap -s 0 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 5 packets captured 5 packets received by filter 0 packets dropped by kernel
9) Чтение файла записи tcpdump
Вы не можете прочитать содержимое файла, который сохраняет пакеты tcpdump с помощью общих команд, таких как cat или less, то вам нужно использовать параметр -r команды tcpdump
# tcpdump -r packets-record.cap reading from file packets-record.cap, link-type EN10MB (Ethernet) 10:06:25.310077 IP li339-47.members.linode.com.ssh > 169.255.7.5.44284: Flags [P.], seq 1435573932:1435573976, ack 4135958592, win 457, options [nop,nop,TS val 3396266929 ecr 20510549], length 44 10:06:25.565590 IP 169.255.7.5.44284 > li339-47.members.linode.com.ssh: Flags [.], ack 0, win 722, options [nop,nop,TS val 20510616 ecr 3396266919], length 0 10:06:25.565633 IP li339-47.members.linode.com.ssh > 169.255.7.5.44284: Flags [P.], seq 44:160, ack 1, win 457, options [nop,nop,TS val 3396267184 ecr 20510616], length 116 10:06:25.570384 IP 169.255.7.5.44284 > li339-47.members.linode.com.ssh: Flags [.], ack 44, win 722, options [nop,nop,TS val 20510617 ecr 3396266929], length 0 10:06:25.827438 IP 169.255.7.5.44284 > li339-47.members.linode.com.ssh: Flags [.], ack 160, win 722, options [nop,nop,TS val 20510681 ecr 3396267184], length 0
10) Захват пакетов с дополнительной информацией
Вы можете сканировать сеть более глубоко.
Вы можете использовать комбинации команд для фильтрации того, что вам нужно:
# tcpdump -i eth0 -c 5 -ttttnnvvS tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 2018-04-10 10:32:36.073756 IP (tos 0x10, ttl 64, id 14601, offset 0, flags [DF], proto TCP (6), length 96) 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], cksum 0x8404 (incorrect -> 0x570b), seq 1435611412:1435611456, ack 4135969472, win 495, options [nop,nop,TS val 3397837693 ecr 20903238], length 44 2018-04-10 10:32:36.073896 IP (tos 0x10, ttl 64, id 14602, offset 0, flags [DF], proto TCP (6), length 168) 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], cksum 0x844c (incorrect -> 0x14ec), seq 1435611456:1435611572, ack 4135969472, win 495, options [nop,nop,TS val 3397837693 ecr 20903238], length 116 2018-04-10 10:32:36.074118 IP (tos 0x10, ttl 64, id 14603, offset 0, flags [DF], proto TCP (6), length 200) 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], cksum 0x846c (incorrect -> 0x52d8), seq 1435611572:1435611720, ack 4135969472, win 495, options [nop,nop,TS val 3397837693 ecr 20903238], length 148 2018-04-10 10:32:36.083469 IP (tos 0x8, ttl 53, id 26190, offset 0, flags [none], proto ICMP (1), length 68) 134.119.220.87 > 96.126.114.47: ICMP host 134.119.220.87 unreachable - admin prohibited, length 48 IP (tos 0x28, ttl 48, id 23212, offset 0, flags [DF], proto TCP (6), length 40) 96.126.114.47.47317 > 134.119.220.87.45873: Flags [R.], cksum 0x5362 (correct), seq 0, ack 96384300, win 0, length 0 2018-04-10 10:32:36.084338 IP (tos 0x0, ttl 244, id 32726, offset 0, flags [none], proto TCP (6), length 40) 134.119.220.87.45873 > 96.126.114.47.47317: Flags [R], cksum 0x4ec2 (correct), seq 96384300, win 1200, length 0 5 packets captured 5 packets received by filter 0 packets dropped by kernel
11) Захват пакетов, поступающих с удаленного хоста
Чтобы показывать только пакеты, поступающие с определенного IP-адреса, используйте параметр src
# tcpdump -i eth0 -c 5 -ttttnnvvS src host 96.126.114.1 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 2018-04-10 11:27:28.498964 ARP, Ethernet (len 6), IPv4 (len 4), Reply 96.126.114.1 is-at 00:00:0c:9f:f0:06, length 46 2018-04-10 11:28:08.614258 ARP, Ethernet (len 6), IPv4 (len 4), Reply 96.126.114.1 is-at 00:00:0c:9f:f0:06, length 46 2018-04-10 11:28:53.621982 ARP, Ethernet (len 6), IPv4 (len 4), Reply 96.126.114.1 is-at 00:00:0c:9f:f0:06, length 46 2018-04-10 11:29:33.511165 ARP, Ethernet (len 6), IPv4 (len 4), Reply 96.126.114.1 is-at 00:00:0c:9f:f0:06, length 46 2018-04-10 11:30:13.837251 ARP, Ethernet (len 6), IPv4 (len 4), Reply 96.126.114.1 is-at 00:00:0c:9f:f0:06, length 46 5 packets captured 5 packets received by filter 0 packets dropped by kernel
Вы можете видеть пакеты запросов
12) Захват пакетов на получателе удаленным хостом
Можно отображать только пакеты с определенным назначением.
Например, вы можете показывать пакеты в пункте назначения маршрутизатору
# tcpdump -i eth0 -c 5 -ttttnnvvS dst host 96.126.114.1 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 2018-04-10 11:34:15.107495 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 96.126.114.1 tell 96.126.114.47, length 28 2018-04-10 11:35:00.547492 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 96.126.114.1 tell 96.126.114.47, length 28 2018-04-10 11:35:47.907837 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 96.126.114.1 tell 96.126.114.47, length 28 2018-04-10 11:36:12.867576 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 96.126.114.1 tell 96.126.114.47, length 28 2018-04-10 11:36:39.534063 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 96.126.114.1 tell 96.126.114.47, length 28 5 packets captured 5 packets received by filter 0 packets dropped by kernel
Здесь вы можете увидеть пакеты replies
13) Захват как входящих, так и исходящих пакетов определенного хоста
В двух приведенных выше командах мы использовали src и dst для захвата входящих и исходящих пакетов с определенного хоста в два разных раза.
Но это можно сделать непосредственно в одной команде только с параметром хоста.
# tcpdump -i eth0 -c 5 -ttttnnvvS host 96.126.114.1 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 2018-04-10 11:37:49.720992 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 96.126.114.1 tell 96.126.114.47, length 28 2018-04-10 11:37:49.725683 ARP, Ethernet (len 6), IPv4 (len 4), Reply 96.126.114.1 is-at 00:00:0c:9f:f0:06, length 46 2018-04-10 11:38:14.894130 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 96.126.114.1 tell 96.126.114.47, length 28 2018-04-10 11:38:14.900008 ARP, Ethernet (len 6), IPv4 (len 4), Reply 96.126.114.1 is-at 00:00:0c:9f:f0:06, length 46 2018-04-10 11:38:39.854051 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 96.126.114.1 tell 96.126.114.47, length 28 5 packets captured 5 packets received by filter 0 packets dropped by kernel
14) Захват пакета с использованием диапазона портов
Для захвата сетевого трафика можно использовать ряд портов
# tcpdump -i eth0 -c 3 -nns 0 portrange 20-23 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 11:59:45.996312 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], seq 1435738516:1435738632, ack 4136021820, win 875, options [nop,nop,TS val 3403067615 ecr 22210718], length 116 11:59:45.996512 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], seq 116:232, ack 1, win 875, options [nop,nop,TS val 3403067615 ecr 22210718], length 116 11:59:45.996728 IP 96.126.114.47.22 > 169.255.7.5.44284: Flags [P.], seq 232:452, ack 1, win 875, options [nop,nop,TS val 3403067616 ecr 22210718], length 220 3 packets captured 5 packets received by filter 0 packets dropped by kernel