Ако трябва да анализирате или да прекъсвате мрежовите пакети в Linux, най-добре е да използвате конзолата tcpdump . Но проблемът възниква в доста сложното му управление. Един обикновен потребител ще открие, че работата с програмата е неудобна, но е само на пръв поглед. Статията ще ви разкаже как структурира tcpdump, какъв синтаксис има, как да го използва и също така дава многобройни примери за неговата употреба.

Прочетете също: Ръководства за създаване на интернет връзка в Ubuntu , Debian , Сървър на Ubuntu

монтаж

Повечето разработчици на базирани на Linux операционни системи включват помощната програма tcpdump в предварително инсталирания списък, но ако по някаква причина не е във вашата дистрибуция, винаги можете да го изтеглите и инсталирате през "Terminal" . Ако вашата операционна система е базирана на Debian, а това е Ubuntu, Linux Mint, Kali Linux и други подобни, трябва да изпълните тази команда:

sudo apt install tcpdump

Когато инсталирате, трябва да въведете парола. Имайте предвид, че при въвеждане не се показва и трябва да въведете знака "D" и да натиснете Enter, за да потвърдите инсталацията.

Ако имате Red Hat, Fedora или CentOS, тогава командата за инсталация ще изглежда така:

sudo yam install tcpdump

След като програмата е инсталирана, тя може да се използва веднага. За това и много други ще бъдат разгледани по-нататък в текста.

Прочетете още: Ръководство за инсталиране на PHP за Ubuntu Server

синтаксис

Както всяка друга команда, tcpdump има свой собствен синтаксис. Познавайки го, можете да зададете всички необходими параметри, които ще бъдат взети предвид при изпълнение на командата. Синтаксисът е както следва:

tcpdump опции -i интерфейс фильтры

Когато използвате командата, трябва да посочите интерфейса за проследяване. Филтрите и опциите не са задължителни променливи, но позволяват по-гъвкаво персонализиране.

опции

Въпреки че не е необходимо да посочвате опция, трябва да посочите наличните опции. Таблицата показва не всичките им списъци, но само най-популярните, но те са повече от достатъчно, за да разрешат повечето задачи.

опция дефиниция
Позволява ви да сортирате пакети с формат ASCII
-l Добавя функцията за превъртане
-i След като въведете, трябва да посочите мрежовия интерфейс, който ще бъде наблюдаван. За да започнете да проследявате всички интерфейси, въведете думата "any" след опцията
-C Прекратява процеса на проследяване след потвърждаване на зададения брой пакети
-w Генерира текстов файл с доклад за потвърждение
Показва нивото на интернет връзката на пакета данни
-L Извежда само онези протоколи, които поддържат посочения мрежов интерфейс
Създава друг файл, докато пакетът се записва, ако неговият размер е по-голям от посочения
-r Отваря прочетения файл, създаден с опцията -w
-j За да записвате пакети, ще бъде използван форматът TimeStamp
-J Позволява ви да видите всички налични формати за TimeStamp
-G Служи за създаване на файл с регистрационни файлове. Опцията също така изисква временна стойност, след което ще се създаде нов регистър
-v, -vv, -vvv В зависимост от броя на знаците в опцията, изходът на командата ще стане по-подробен (увеличението е директно пропорционално на броя знаци)
-f Изходът показва името на домейна на IP адреса
-F Позволява Ви да четете информация не от мрежовия интерфейс, а от определения файл
-D Демонстрира всички мрежови интерфейси, които можете да използвате
Деактивира показването на имена на домейни
-Z Определя потребителя, чийто профил ще създаде всички файлове
К Липсва анализ на Checksum
-q Демонстрация на кратка информация
Открива заглавията на 802.11s
-I Използва се при заснемане на пакети в режим на монитор

След разглобяването на опциите, точно долу ще отидем директно в техните приложения. Междувременно ще се вземат под внимание филтрите.

филтри

Както споменахме в самото начало на статията, можете да добавите филтри към синтаксиса tcpdump. Сега най-популярните от тях ще бъдат разгледани:

филтър дефиниция
домакин Задава името на хоста
нето Задава IP подмрежата и мрежата
IP Поддържа адреса на протокола
SRC Показва пакети, които са били изпратени от посочения адрес
DST Показва пакетите, получени от посочения адрес
arp, udp, tcp Филтриране по един от протоколите
порт Показва информация, свързана с конкретен порт
и, или Използва се за обединяване на няколко филтъра в команда
по-малко, по-голямо Резултат на пакети по-малки или по-големи от определения размер

Всички горепосочени филтри могат да се комбинират един с друг, така че при издаване на команда ще видите само информацията, която искате да видите. За да разберете по-подробно използването на горепосочените филтри, трябва да дадете примери.

Прочетете още: Често използвани команди в "Terminal" Linux

Примери за използване

Описани са най-често използваните опции за синтаксис за командата tcpdump. Всички те не могат да бъдат изброени, тъй като техните вариации могат да бъдат безкраен брой.

Преглед на списък с интерфейси

Препоръчва се всеки потребител да провери първоначално списъка на всичките си мрежови интерфейси, които могат да бъдат проследени. От горната таблица знаем, че трябва да използвате опцията -D , затова изпълнете следната команда в терминала:

sudo tcpdump -D

например:

Пускане на командата tcpdump с опцията d в ​​linux

Както можете да видите, в примера има осем интерфейса, които можете да видите с командата tcpdump. Статията ще даде примери с ppp0 , можете да използвате други.

Нормално заснемане на трафика

Ако трябва да проследите един мрежов интерфейс, можете да го направите с опцията -i . Не забравяйте да въведете името на интерфейса, след като го въведете. Ето пример за изпълняване на такава команда:

sudo tcpdump -i ppp0

Забележка: Преди самата команда, трябва да въведете "sudo", тъй като изисква право на суперпотребител.

например:

пример за картографиране на трафика на мрежовия интерфейс с помощта на командата tcpdump без използване на опции и филтри

Забележка: след натискане на "Enter" в "Терминал" задържаните пакети ще се показват непрекъснато. За да спрете потока им, трябва да натиснете клавишната комбинация Ctrl + C.

Ако изпълнявате командата без допълнителни опции и филтри, ще видите следния формат за показване на проследявани пакети:

22:18:52.597573 IP vrrp-topf2.p.mail.ru.https > 10.0.6.67.35482 : Flags [P.], seq 1:595, ack 1118, win 6494, options [nop,nop,TS val 257060077 ecr 697597623], length 594

Когато цветът е подчертан:

  • синьо - времето на получаване на пакета;
  • оранжево - протоколната версия;
  • зелено - адреса на подателя;
  • лилаво - адреса на получателя;
  • сиво - допълнителна информация за tcp;
  • червено - размерът на пакета (показан в байтове).

Този синтаксис има възможност да се извежда в прозореца "Терминал" без да се използват допълнителни опции.

Уловете трафика с опцията -v

Както знаете от таблицата, опцията -v ви позволява да увеличите количеството информация. Ще анализираме на пример. Нека да проверим същия интерфейс:

sudo tcpdump -v -i ppp0

например:

пример за картографиране на трафик на мрежов интерфейс чрез командата tcpdump, използвайки опцията -v в linux

Тук можете да видите, че в изхода е показан следният ред:

IP (tos 0x0, ttl 58 , id 30675, offset 0, flags [DF] , proto TCP (6) , length 52

Когато цветът е подчертан:

  • оранжево - протоколната версия;
  • синьо - очаквана продължителност на протокола;
  • зелено - дължината на полето на заглавката;
  • лилаво - версия на пакета tcp;
  • червен - размерът на опаковката.

Също така в синтаксиса на командата можете да посочите опцията -vv или -vvv , която допълнително ще увеличи количеството информация, показвана на екрана.

Опциите -w и -r

Таблицата с опции посочи възможността да се запазят всички изходни данни в отделен файл, така че да могат да бъдат прегледани по-късно. Опцията -w е отговорна за това. За да я използвате е съвсем просто, просто го насочете към командата, а след това въведете името на бъдещия файл с разширение ".pcap" . Нека разгледаме всичко на пример:

sudo tcpdump -i ppp0 -w file.pcap

например:

пример на опцията -w в командата tcpdump в linux

Моля, обърнете внимание: по време на записването на дневници в файла на екрана "Терминал" не се показва текст.

Когато искате да прегледате записания изход, трябва да използвате опцията -r , след което да напишете името на предварително записания файл. Използва се без други опции и филтри:

sudo tcpdump -r file.pcap

например:

Пример за преглеждане на предварително запазен команден файл tcpdump с опцията w

И двете опции са идеални, когато трябва да запазите големи количества текст за по-късен анализ.

IP филтриране

От таблицата за филтриране знаем, че dst ви позволява да показвате само онези пакети, получени от адреса на екрана на конзолата, както е посочено в командния синтаксис. По този начин е много удобно да видите пакетите, получени от вашия компютър. За да направите това, трябва само да зададете своя IP адрес в екипа:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

например:

пример за използване на филтъра dst и ipp в командата tcpdump в linux

Както можете да видите, в допълнение към dst , в екипа ние също написахме ip филтъра. С други думи, ние казахме на компютъра, че при избора на пакети ще обърне внимание на техния IP адрес, а не на други параметри.

По IP можете да филтрирате и изпращате пакети. В примера връщаме нашия IP. Сега ще проследим кои пакети се изпращат от нашия компютър на други адреси. За тази цел изпълнете следната команда:

sudo tcpdump -i ppp0 ip src 10.0.6.67

например:

пример за използването на src и ip филтъра в командата tcpdump в Linux

Както можете да видите, в синтаксиса на командата променим dst филтъра на src , като по този начин казваме на машината да търси подателя по IP.

Филтриране от HOST

По аналогия с IP в командата, можем да определим филтъра на хоста, за да премахнем пакетите с интересуващия ни хост. Това означава, че в синтаксиса, вместо IP адреса на изпращача / получателя, ще е необходимо да се посочи неговият хост. Това изглежда така:

sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com

например:

пример за използване на филтъра dst и хост в командата tcpdump в linux

На снимката можете да видите, че в "Терминал" се показват само тези пакети, които са били изпратени от нашия IP, за да хостваме google.com. Както можете да видите, вместо домакин на Google можете да въведете други.

Както при IP филтрирането, dst синтаксиса може да бъде заменен със src, за да видите пакетите, които се изпращат на вашия компютър:

sudo tcpdump -i ppp0 src host google-public-dns-a.google.com

Забележка: филтърът на хоста трябва да бъде зададен след dst или src, в противен случай командата ще генерира грешка. В случай на IP филтриране, напротив, dst и src са пред ip филтъра.

Нанесете и и филтъра

Ако трябва да използвате няколко филтъра едновременно в една и съща команда, тогава трябва да приложите филтъра и / или филтъра (в зависимост от случая). Като укажете филтрите в синтаксиса и ги отделяте от този оператор, вие ги "принуждавате" да работят като един. Например, тя изглежда така:

sudo tcpdump -i ppp0 ip dst 95.47.144.254 or ip src 95.47.144.254

например:

Пример за използване на и филтър в командата tcpdump в Linux

От синтаксиса на командата е ясно, че искаме да покажем на екрана "Terminal" всички пакети, които бяха изпратени на адрес 95.47.144.254, и пакетите, получени от същия адрес. Също така можете да промените някои променливи в този израз. Например, вместо IP, посочете HOST или заменете самите адреси.

Портът и филтърът по портрет

Порт филтърът е идеален, когато трябва да получите информация за пакети с конкретен порт. Така че, ако трябва да виждате само DNS отговори или заявки, трябва да посочите порт 53:

sudo tcpdump -vv -i ppp0 port 53

например:

пример за използване на порт филтъра в командата tcpdump в linux

Ако искате да видите http пакети, трябва да въведете порт 80:

sudo tcpdump -vv -i ppp0 port 80

например:

пример за прилагане на порт филтър в командата tcpdump в Linux

Наред с други неща, е възможно да проследявате обхвата на пристанищата наведнъж. За целта се използва филтър за портрет :

sudo tcpdump portrange 50-80

пример за използването на филтъра за портрет в синтаксиса на командата tcpdump в linux

Както можете да видите, не е необходимо да посочвате допълнителни опции във връзка с филтъра за портрет . Достатъчно е просто да зададете диапазона.

Филтриране по протоколи

Можете също така да показвате само трафика, който съответства на всеки протокол. За да направите това, трябва да използвате името на този протокол като филтър. Нека да разгледаме примера на udp :

sudo tcpdump -vvv -i ppp0 udp

например:

пример за филтриране на командата tcpdump по протокол в Linux

Както може да се види на изображението, след изпълнението на командата, в "Терминал" са показани само пакети с протокола udp . Съответно можете да извършвате филтриране на други, например arp :

sudo tcpdump -vvv -i ppp0 arp

или tcp :

sudo tcpdump -vvv -i ppp0 tcp

Филтърна мрежа

Операторът на мрежата помага да се филтрират пакетите, като се основава на обозначаването на тяхната мрежа. За да го използвате просто като останалото - трябва да посочите мрежовия атрибут в синтаксиса и след това да въведете мрежовия адрес. Ето един пример за такава команда:

sudo tcpdump -i ppp0 net 192.168.1.1

например:

Пример за филтриране на командата tcpdump от името на мрежата в Linux

Филтрирайте по размер на пакета

Не сме разгледали още два интересни филтъра: по-малки и по-големи . От таблицата с филтри знаем, че те служат за извеждане на пакети данни по-големи ( по-малко ) или по-малки ( по-големи ) от размера, определен след въвеждане на атрибута.

Да предположим, че искаме да наблюдаваме само пакети, които не надхвърлят знака от 50 бита, тогава командата ще изглежда така:

sudo tcpdump -i ppp0 less 50

например:

филтрирайте пакетите по техния филтър за размер по-малко в командата tcpdump в Linux

Сега нека да покажем в пакетите "Terminal" , които са по-големи от 50 бита:

sudo tcpdump -i ppp0 greater 50

например:

филтриране на пакети по размер по-голям филтър в командата tcpdump в linux

Както можете да видите, те се прилагат еднакво, разликата е само в името на филтъра.

заключение

В края на статията можете да заключите, че командата tcpdump е чудесен инструмент, с който можете да проследявате всеки пакет данни, изпратен по интернет. Но за това не е достатъчно само да влезете в отбора в "Терминал" . За да постигнете желания резултат, ще получите само ако използвате всички видове опции и филтри, както и техните комбинации.