Ако трябва да анализирате или да прекъсвате мрежовите пакети в 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. Статията ще даде примери с ppp0 , можете да използвате други.
Ако трябва да проследите един мрежов интерфейс, можете да го направите с опцията -i . Не забравяйте да въведете името на интерфейса, след като го въведете. Ето пример за изпълняване на такава команда:
sudo tcpdump -i ppp0
Забележка: Преди самата команда, трябва да въведете "sudo", тъй като изисква право на суперпотребител.
например:
Забележка: след натискане на "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
Когато цветът е подчертан:
Този синтаксис има възможност да се извежда в прозореца "Терминал" без да се използват допълнителни опции.
Както знаете от таблицата, опцията -v ви позволява да увеличите количеството информация. Ще анализираме на пример. Нека да проверим същия интерфейс:
sudo tcpdump -v -i ppp0
например:
Тук можете да видите, че в изхода е показан следният ред:
IP (tos 0x0, ttl 58 , id 30675, offset 0, flags [DF] , proto TCP (6) , length 52
Когато цветът е подчертан:
Също така в синтаксиса на командата можете да посочите опцията -vv или -vvv , която допълнително ще увеличи количеството информация, показвана на екрана.
Таблицата с опции посочи възможността да се запазят всички изходни данни в отделен файл, така че да могат да бъдат прегледани по-късно. Опцията -w е отговорна за това. За да я използвате е съвсем просто, просто го насочете към командата, а след това въведете името на бъдещия файл с разширение ".pcap" . Нека разгледаме всичко на пример:
sudo tcpdump -i ppp0 -w file.pcap
например:
Моля, обърнете внимание: по време на записването на дневници в файла на екрана "Терминал" не се показва текст.
Когато искате да прегледате записания изход, трябва да използвате опцията -r , след което да напишете името на предварително записания файл. Използва се без други опции и филтри:
sudo tcpdump -r file.pcap
например:
И двете опции са идеални, когато трябва да запазите големи количества текст за по-късен анализ.
От таблицата за филтриране знаем, че dst ви позволява да показвате само онези пакети, получени от адреса на екрана на конзолата, както е посочено в командния синтаксис. По този начин е много удобно да видите пакетите, получени от вашия компютър. За да направите това, трябва само да зададете своя IP адрес в екипа:
sudo tcpdump -i ppp0 ip dst 10.0.6.67
например:
Както можете да видите, в допълнение към dst , в екипа ние също написахме ip филтъра. С други думи, ние казахме на компютъра, че при избора на пакети ще обърне внимание на техния IP адрес, а не на други параметри.
По IP можете да филтрирате и изпращате пакети. В примера връщаме нашия IP. Сега ще проследим кои пакети се изпращат от нашия компютър на други адреси. За тази цел изпълнете следната команда:
sudo tcpdump -i ppp0 ip src 10.0.6.67
например:
Както можете да видите, в синтаксиса на командата променим dst филтъра на src , като по този начин казваме на машината да търси подателя по IP.
По аналогия с IP в командата, можем да определим филтъра на хоста, за да премахнем пакетите с интересуващия ни хост. Това означава, че в синтаксиса, вместо IP адреса на изпращача / получателя, ще е необходимо да се посочи неговият хост. Това изглежда така:
sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com
например:
На снимката можете да видите, че в "Терминал" се показват само тези пакети, които са били изпратени от нашия 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
например:
От синтаксиса на командата е ясно, че искаме да покажем на екрана "Terminal" всички пакети, които бяха изпратени на адрес 95.47.144.254, и пакетите, получени от същия адрес. Също така можете да промените някои променливи в този израз. Например, вместо IP, посочете HOST или заменете самите адреси.
Порт филтърът е идеален, когато трябва да получите информация за пакети с конкретен порт. Така че, ако трябва да виждате само DNS отговори или заявки, трябва да посочите порт 53:
sudo tcpdump -vv -i ppp0 port 53
например:
Ако искате да видите http пакети, трябва да въведете порт 80:
sudo tcpdump -vv -i ppp0 port 80
например:
Наред с други неща, е възможно да проследявате обхвата на пристанищата наведнъж. За целта се използва филтър за портрет :
sudo tcpdump portrange 50-80
Както можете да видите, не е необходимо да посочвате допълнителни опции във връзка с филтъра за портрет . Достатъчно е просто да зададете диапазона.
Можете също така да показвате само трафика, който съответства на всеки протокол. За да направите това, трябва да използвате името на този протокол като филтър. Нека да разгледаме примера на udp :
sudo tcpdump -vvv -i ppp0 udp
например:
Както може да се види на изображението, след изпълнението на командата, в "Терминал" са показани само пакети с протокола udp . Съответно можете да извършвате филтриране на други, например arp :
sudo tcpdump -vvv -i ppp0 arp
или tcp :
sudo tcpdump -vvv -i ppp0 tcp
Операторът на мрежата помага да се филтрират пакетите, като се основава на обозначаването на тяхната мрежа. За да го използвате просто като останалото - трябва да посочите мрежовия атрибут в синтаксиса и след това да въведете мрежовия адрес. Ето един пример за такава команда:
sudo tcpdump -i ppp0 net 192.168.1.1
например:
Не сме разгледали още два интересни филтъра: по-малки и по-големи . От таблицата с филтри знаем, че те служат за извеждане на пакети данни по-големи ( по-малко ) или по-малки ( по-големи ) от размера, определен след въвеждане на атрибута.
Да предположим, че искаме да наблюдаваме само пакети, които не надхвърлят знака от 50 бита, тогава командата ще изглежда така:
sudo tcpdump -i ppp0 less 50
например:
Сега нека да покажем в пакетите "Terminal" , които са по-големи от 50 бита:
sudo tcpdump -i ppp0 greater 50
например:
Както можете да видите, те се прилагат еднакво, разликата е само в името на филтъра.
В края на статията можете да заключите, че командата tcpdump е чудесен инструмент, с който можете да проследявате всеки пакет данни, изпратен по интернет. Но за това не е достатъчно само да влезете в отбора в "Терминал" . За да постигнете желания резултат, ще получите само ако използвате всички видове опции и филтри, както и техните комбинации.