Ak potrebujete analyzovať alebo zachytiť sieťové pakety v systéme Linux, potom je najlepšie použiť konzolu utilitu tcpdump . Problém nastáva v jeho pomerne zložitom riadení. Bežný používateľ zistí, že práca s nástrojom je nepríjemná, ale je to len na prvý pohľad. Článok vám povie, ako je tcpdump štruktúrovaný, akú syntax má, ako ho používať a tiež uvádza množstvo príkladov jeho použitia.

Prečítajte si tiež: Príručky pre nastavenie pripojenia na Internet v systéme Windows ubuntu , Debian , Ubuntu Server

inštalácia

Väčšina vývojárov operačných systémov na báze Linuxu obsahuje nástroj tcpdump v predinštalovanom zozname, ale ak z nejakého dôvodu nie je vo vašej distribúcii, môžete ho vždy stiahnuť a nainštalovať cez "Terminal" . Ak je váš operačný systém založený na Debiane, a to je Ubuntu, Linux Mint, Kali Linux a podobne, musíte spustiť tento príkaz:

sudo apt install tcpdump

Pri inštalácii musíte zadať heslo. Upozorňujeme, že pri písaní sa nezobrazuje a musíte zadať znak "D" a stlačením klávesu Enter potvrdíte inštaláciu.

Ak máte Red Hat, Fedora alebo CentOS, príkaz na inštaláciu bude vyzerať nasledovne:

sudo yam install tcpdump

Po nainštalovaní pomôcky sa môže ihneď použiť. O tomto a oveľa viac sa bude diskutovať ďalej v texte.

Prečítajte si tiež: Príručka inštalácie PHP pre Ubuntu Server

syntax

Rovnako ako akýkoľvek iný príkaz má tcpdump svoju vlastnú syntax. Poznáte to, môžete nastaviť všetky potrebné parametre, ktoré sa zohľadnia pri vykonávaní príkazu. Syntax je nasledujúci:

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

Pri používaní príkazu musíte zadať rozhranie na sledovanie. Filtre a možnosti nie sú povinné premenné, ale umožňujú flexibilnejšie prispôsobenie.

možnosti

Aj keď nemusíte určovať žiadnu možnosť, musíte zadať dostupné možnosti. Tabuľka zobrazuje nie celý ich zoznam, ale iba tie najpopulárnejšie, ale sú viac než dosť na vyriešenie väčšiny úloh.

voľba definícia
-A Umožňuje triediť pakety vo formáte ASCII
-l Pridá funkciu posúvania
-i Po zadaní musíte zadať sieťové rozhranie, ktoré bude monitorované. Ak chcete začať sledovať všetky rozhrania, zadajte po voľbe slovo "žiadne"
-c Ukončí proces sledovania po overení zadaného počtu paketov
-w Generuje textový súbor s overovacou správou
-e Označuje úroveň pripojenia k dátovému paketu na internete
-L Vystupuje iba tie protokoly, ktoré podporujú špecifikované sieťové rozhranie
-C Vytvorí ďalší súbor počas písania balíka, ak jeho veľkosť je väčšia ako zadaná
-r Otvorí čítací súbor, ktorý bol vytvorený pomocou možnosti -w
-j Na zaznamenávanie paketov sa použije formát TimeStamp
-J Umožňuje zobraziť všetky dostupné formáty TimeStamp
-G Slúži na vytvorenie súboru s protokolmi. Možnosť tiež vyžaduje dočasnú hodnotu, po ktorej bude vytvorený nový protokol
-v, -vv, -vvv V závislosti od počtu znakov vo voľbe bude výstup príkazu podrobnejší (zvýšenie je priamo úmerné počtu znakov)
-f Výstup zobrazuje názov domény IP adresy
-F Umožňuje čítať informácie nie zo sieťového rozhrania, ale z určeného súboru
-D Demonštruje všetky sieťové rozhrania, ktoré môžete použiť
-n Deaktivuje zobrazenie názvov domén
-Z Určuje používateľa, ktorého účet vytvorí všetky súbory
-K Chýba analýza kontrolného súčtu
-q Preukázanie stručných informácií
-H Deteguje hlavičky 802.11s
-I Používa sa pri snímaní paketov v režime monitora

Po rozobraní možností, tesne pod našimi aplikáciami prejdeme priamo. Medzitým budú filtre zohľadnené.

filtre

Ako bolo uvedené na samom začiatku článku, môžete pridať filtre do syntaxe tcpdump. Teraz najpopulárnejší z nich bude brať do úvahy:

filter definícia
hostiteľ Určuje názov hostiteľa
netto Určuje podsieť IP a sieť
ip Slúži na adresu protokolu
src Zobrazuje pakety, ktoré boli odoslané z určenej adresy
dst Zobrazuje pakety, ktoré boli prijaté zadanou adresou
arp, udp, tcp Filtrovanie pomocou jedného z protokolov
prístav Zobrazuje informácie týkajúce sa konkrétneho portu
a, alebo Používa sa na zlúčenie viacerých filtrov do príkazu
menej, väčší Výstup paketov menších alebo väčších ako je určená veľkosť

Všetky vyššie uvedené filtre sa môžu navzájom kombinovať, takže pri príkazovom riadku uvidíte iba informácie, ktoré chcete vidieť. Aby sme lepšie pochopili použitie vyššie uvedených filtrov, je vhodné uviesť príklady.

Prečítajte si tiež: Často používané príkazy v "Terminal" Linux

Príklady použitia

Boli teraz uvedené bežne používané možnosti syntaxe pre príkaz tcpdump. Všetky z nich nemôžu byť uvedené, pretože ich variácie môžu byť nekonečné číslo.

Zobrazenie zoznamu rozhraní

Odporúča sa, aby každý používateľ najprv skontroloval zoznam všetkých jeho sieťových rozhraní, ktoré je možné sledovať. Z vyššie uvedenej tabuľky vieme, že musíte použiť voľbu -D , takže spustite nasledujúci príkaz v termináli:

sudo tcpdump -D

príklad:

Spúšťanie príkazu tcpdump s voľbou d v linux

Ako vidíte, v príklade je osem rozhraní, ktoré môžete zobraziť pomocou príkazu tcpdump. V článku sa uvádzajú príklady s ppp0 , môžete použiť iné.

Normálne zachytenie dopravy

Ak potrebujete vysledovať jedno sieťové rozhranie, môžete to urobiť voľbou -i . Nezabudnite zadať názov rozhrania po jeho zadaní. Tu je príklad vykonania takéhoto príkazu:

sudo tcpdump -i ppp0

Poznámka: pred samotným príkazom musíte zadať "sudo", pretože to vyžaduje superuserovo právo.

príklad:

príklad mapovania prevádzky sieťového rozhrania pomocou príkazu tcpdump bez použitia možností a filtrov

Poznámka: po stlačení klávesu Enter v "Terminal" budú zachytené pakety nepretržite zobrazované. Ak chcete zastaviť ich tok, musíte stlačiť klávesovú kombináciu Ctrl + C.

Ak spustíte príkaz bez ďalších možností a filtrov, uvidíte nasledujúci formát pre zobrazenie sledovaných paketov:

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

Ak je zvýraznená farba:

  • modrá - čas prijatia balíka;
  • oranžová - protokolová verzia;
  • zelená - adresa odosielateľa;
  • purpur - adresa príjemcu;
  • šedá - ďalšie informácie o tcp;
  • červená - veľkosť paketu (zobrazená v bajtoch).

Táto syntax má schopnosť výstupu v okne "Terminal" bez použitia ďalších možností.

Zachyťte prevádzku pomocou možnosti -v

Ako viete z tabuľky, voľba -v vám umožňuje zvýšiť množstvo informácií. Budeme analyzovať na príklade. Pozrime sa na to isté rozhranie:

sudo tcpdump -v -i ppp0

príklad:

príklad mapovania prevádzky sieťového rozhrania pomocou príkazu tcpdump pomocou voľby -v v linux

Tu vidíte, že na výstupe sa objavil nasledujúci riadok:

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

Ak je zvýraznená farba:

  • oranžová - protokolová verzia;
  • modrá - očakávaná dĺžka života v protokole;
  • zelená - dĺžka poľa hlavičky;
  • fialová - verzia balíka tcp;
  • červená - veľkosť balenia.

Aj v syntaxe príkazu môžete špecifikovať voľbu -vv alebo -vvv , čo ešte viac zvýši množstvo informácií zobrazených na obrazovke.

Možnosť -w a -r

Tabuľka možností spomenula možnosť uložiť všetky výstupné dáta do samostatného súboru, aby ich bolo možné pozrieť neskôr. Voľba -w je za to zodpovedná. Ak ho chcete použiť, je to jednoduché, stačí ho umiestniť na príkaz a potom zadajte názov budúceho súboru s príponou ".pcap" . Pozrime sa na príklad:

sudo tcpdump -i ppp0 -w file.pcap

príklad:

Príklad príkazu -w v príkaze tcpdump v linux

Upozorňujeme, že: počas nahrávania záznamov sa v súbore na obrazovke "Terminál" nezobrazuje žiadny text.

Ak si chcete pozrieť nahratý výstup, musíte použiť voľbu -r , po ktorej napíšete názov nahraného súboru. Používa sa bez ďalších možností a filtrov:

sudo tcpdump -r file.pcap

príklad:

príklad zobrazenia predtým uloženého príkazového súboru tcpdump s voľbou w

Obe tieto možnosti sú dokonalé, keď potrebujete ušetriť veľké množstvo textu na neskoršie spracovanie.

Filtrovanie IP

Z tabuľky filtrov vieme, že dst umožňuje zobraziť iba tie balíky, ktoré boli prijaté adresou na obrazovke konzoly, ako je uvedené v syntaxe príkazu. Preto je veľmi výhodné zobraziť pakety prijaté počítačom. Ak to chcete urobiť, stačí uviesť svoju IP adresu v tíme:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

príklad:

príklad použitia filtra dst a ip v príkaze tcpdump v linux

Ako vidíte, okrem tímu dst sme v tíme napísali aj filter ip . Inými slovami, povedali sme počítaču, že pri výbere balíkov by venoval pozornosť svojej IP adrese, nie iným parametrom.

Pomocou protokolu IP môžete filtrovať a odosielať pakety. V tomto príklade vrátime našu IP. Teraz budeme sledovať, ktoré pakety sa posielajú z nášho počítača na iné adresy. Ak to chcete urobiť, spustite nasledujúci príkaz:

sudo tcpdump -i ppp0 ip src 10.0.6.67

príklad:

príklad použitia filtra src a ip v príkaze tcpdump v linux

Ako môžete vidieť, v syntaxe príkazu sme zmenili dst filter na src , čím chceme, aby stroj vyhľadal odosielateľa podľa IP.

Filtrovanie podľa hostiteľa HOST

Analogicky s IP v príkaze môžeme špecifikovať hostiteľský filter na odstránenie paketov s hostiteľom záujmu. To znamená, že v syntaxe namiesto IP adresy odosielateľa / prijímača bude potrebné určiť jeho hostiteľa. Vyzerá to takto:

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

príklad:

Príklad použitia filtra dst a hostiteľa v príkaze tcpdump v linux

Na obrázku môžete vidieť, že v "Termináli" sa zobrazia iba tie pakety, ktoré boli odoslané z našej IP do hostiteľa google.com. Ako vidíte, namiesto hostiteľa google môžete zadať iné.

Rovnako ako pri filtrovaní IP, syntax dst môže byť nahradená src, aby ste videli balíky odoslané do vášho počítača:

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

Poznámka: hostiteľský filter musí byť nastavený po dst alebo src, inak príkaz generuje chybu. V prípade filtrovania IP, naopak dst a src sú v prednej časti filtra ip.

Použite a a filter

Ak potrebujete použiť viac filtrov naraz v tom istom príkaze, musíte použiť filter a a alebo filter (v závislosti od prípadu). Tým, že špecifikujete filtre v syntaxe a oddeľujete ich od tohto operátora, budete "nútiť" ich, aby fungovali ako jeden. Napríklad to vyzerá takto:

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

príklad:

príklad použitia a filtru v príkaze tcpdump v linux

Zo syntaxe príkazu je jasné, že chceme na obrazovke "Terminal" zobraziť všetky pakety, ktoré boli odoslané na adresu 95.47.144.254 a pakety prijaté rovnakou adresou. Môžete tiež zmeniť niektoré premenné v tomto výraze. Napríklad namiesto IP zadať HOST alebo nahradiť samotné adresy.

Port a portrange filter

Port filter je dokonalý, keď potrebujete získať informácie o paketoch s určitým portom. Ak potrebujete iba odpovede alebo DNS dopyty, musíte zadať port 53:

sudo tcpdump -vv -i ppp0 port 53

príklad:

Príklad použitia port filter v príkaze tcpdump v linux

Ak chcete zobraziť http pakety, musíte zadať port 80:

sudo tcpdump -vv -i ppp0 port 80

príklad:

príklad použitia port filter v príkaze tcpdump v linux

Okrem iného je možné sledovať rozsah portov naraz. Pre tento účel sa používa portranový filter:

sudo tcpdump portrange 50-80

príklad použitia filter portrange v syntaxe príkazu tcpdump v linux

Ako vidíte, nie je potrebné špecifikovať ďalšie možnosti v spojení s filtrom portrany . Stačí nastaviť rozsah.

Filtrovanie podľa protokolov

Môžete tiež zobraziť iba návštevnosť, ktorá zodpovedá akémukoľvek protokolu. Aby ste to urobili, musíte použiť názov tohto protokolu ako filter. Poďme sa pozrieť na príklad udp :

sudo tcpdump -vvv -i ppp0 udp

príklad:

príklad filtrovania príkazu tcpdump protokolom v linux

Ako je vidieť na obrázku, po vykonaní príkazu sa v "Terminal" zobrazili iba pakety s protokolom udp . Preto môžete vykonávať filtrovanie na iných, napríklad arp :

sudo tcpdump -vvv -i ppp0 arp

alebo tcp :

sudo tcpdump -vvv -i ppp0 tcp

Filtrová sieť

Operátor siete pomáha filtrovať pakety, pričom berie na vedomie označenie ich siete. Aby ste ju mohli jednoducho použiť ako ostatné - musíte v syntaxe špecifikovať sieťový atribút a potom zadať sieťovú adresu. Tu je príklad takéhoto príkazu:

sudo tcpdump -i ppp0 net 192.168.1.1

príklad:

príklad filtrovania príkazu tcpdump označením siete v linux

Filtrovať podľa veľkosti paketu

Nepovažovali sme za dva ďalšie zaujímavé filtre: menej a viac . Z tabuľky s filtrami vieme, že slúžia na výstup dátových paketov väčších ( menších ) alebo menších ( väčších ) veľkostí určených po zadaní atribútu.

Predpokladajme, že chceme sledovať len pakety, ktoré nepresahujú 50-bitovú značku, potom príkaz bude vyzerať takto:

sudo tcpdump -i ppp0 less 50

príklad:

filtrujte pakety podľa ich filtrovania veľkosti menej v príkaze tcpdump v linux

Teraz sa zobrazí v balíkoch "Terminal", ktoré sú väčšie ako 50 bitov:

sudo tcpdump -i ppp0 greater 50

príklad:

filtrovanie paketov podľa filtrovania veľkosti v príkaze tcpdump v linuxu

Ako vidíte, používajú sa rovnako, rozdiel je iba v názve filtra.

záver

Na konci článku môžete povedať, že príkaz tcpdump je skvelý nástroj, pomocou ktorého môžete sledovať akýkoľvek dátový paket odoslaný cez internet. Ale za to nestačí len vstúpiť do tímu v "Termináli" . Dosiahnutie požadovaného výsledku sa dosiahne len vtedy, ak použijete všetky možnosti a filtre, ako aj ich kombinácie.