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
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
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.
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é.
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
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.
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:
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é.
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:
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:
Táto syntax má schopnosť výstupu v okne "Terminal" bez použitia ďalších možností.
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:
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:
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.
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:
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:
Obe tieto možnosti sú dokonalé, keď potrebujete ušetriť veľké množstvo textu na neskoršie spracovanie.
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:
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:
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.
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:
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.
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:
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 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:
Ak chcete zobraziť http pakety, musíte zadať port 80:
sudo tcpdump -vv -i ppp0 port 80
príklad:
Okrem iného je možné sledovať rozsah portov naraz. Pre tento účel sa používa portranový filter:
sudo tcpdump portrange 50-80
Ako vidíte, nie je potrebné špecifikovať ďalšie možnosti v spojení s filtrom portrany . Stačí nastaviť rozsah.
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:
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
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:
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:
Teraz sa zobrazí v balíkoch "Terminal", ktoré sú väčšie ako 50 bitov:
sudo tcpdump -i ppp0 greater 50
príklad:
Ako vidíte, používajú sa rovnako, rozdiel je iba v názve filtra.
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.