Linux je vybavený množstvom sieťových nástrojov, z ktorých si môžete vybrať. tcpdump je jeden taký výkonný sieťový nástroj, ktorý dokáže zachytiť a analyzovať sieťovú prevádzku, ak by ste potrebovali riešiť chyby siete v systéme Linux.
Poďme sa zoznámiť s príkazom tcpdump a preskúmať, ako ho použiť na zachytenie sieťovej prevádzky.
Inštalácia tcpdump v systéme Linux
tcpdump sa zvyčajne dodáva s predinštalovaným súborom všetky bežné distribúcie Linuxu a alternatívy založené na bezpečnosti. Mali by ste ho teda ihneď použiť zadaním tcpdump s sudo predpona.
V prípade, že nemôžete spustiť príkaz tcpdump a zaseknete sa na "tcpdump: príkaz nenájdený"chyba, poďme sa naučiť, ako nainštalovať tcpdump na váš počítač so systémom Linux.
Ak chcete nainštalovať tcpdump, spustite terminál a spustite príkaz zodpovedajúci distribúcii Linuxu, ktorú momentálne používate:
Na derivátoch Debian/Ubuntu spustite:
sudo apt-dostať nainštalovať tcpdump
Zapnuté Oblúkové systémy, spustiť:
sudo pacman -S tcpdump
Ak chcete nainštalovať pomôcku tcpdump na Fedore, CentOS a RHEL, zadajte nasledujúci príkaz:
sudo dnf Inštalácia tcpdump
Upozorňujeme, že ak sa zobrazí výzva na inštaláciu libcap, zadajte Áno alebo Y keďže ide o základnú závislosť, bez ktorej sa tcpdump odmietne spustiť. Toto by malo nainštalovať obslužný program tcpdump a vyriešiť chybu „príkaz nenájdený“.
Teraz, keď je tcpdump nainštalovaný vo vašom systéme, poďme preskúmať rôzne možnosti a funkcie, ktoré ponúka.
Zachytenie sieťovej prevádzky pomocou tcpdump
tcpdump ponúka veľa príznakov na úpravu jeho vykonávania, ale dá sa spustiť aj ako samostatný príkaz. Spustenie tcpdump bez akýchkoľvek príznakov alebo argumentov by však zanedbalo jeho plný potenciál. Vždy je lepšie použiť niekoľko príznakov na doladenie vykonávania a výstupu podľa potreby.
Zadajte tento príkaz na monitorovanie sieťových prenosov pomocou tcpdump:
sudo tcpdump
Teraz tcpdump začne automaticky zachytávať sieťové pakety do signál prerušenia sa odosiela s Ctrl + Z prerušiť proces manuálne. Ak chcete obmedziť celkový počet zachytených paketov, použite -c príznak a vedľa neho zadajte požadovaný limit paketov:
sudo tcpdump -c 5
Ak momentálne nemôžete pochopiť výstup, musíte to urobiť zoznámte sa s výstupným formátom tcpdump najprv.
Skontrolujte dostupné sieťové rozhrania pomocou tcpdump
V predvolenom nastavení tcpdump zachytáva prevádzku z ktoréhokoľvek z dostupných sieťových rozhraní. Ak používate viacero aktívnych sieťových rozhraní, možno budete chcieť definovať sieťové rozhranie, z ktorého má tcpdump zachytávať pakety. Ak chcete spustiť tcpdump na konkrétnom rozhraní, musíte sa najprv dozvedieť o názve rozhrania.
Tu je návod, ako zobraziť zoznam všetkých dostupných sieťových rozhraní pomocou tcpdump:
sudo tcpdump -D
Alebo môžete pridať --list-interfaces príznak príkazu:
sudo tcpdump --zoznam-rozhrania
Vrátený výstup obsahuje zoznam všetkých aktívnych sieťových rozhraní, ktoré môže tcpdump počúvať. Ak chcete nakonfigurovať tcpdump na zachytávanie prenosov z konkrétneho sieťového rozhrania, zadajte tento príkaz:
sudo tcpdump -i interface_id
Alebo môžete pridať --rozhranie príznak príkazu:
sudo tcpdump --rozhranieinterface_id
Teraz, keď sme zachytili niekoľko paketov, poďme si ich dôkladne preštudovať a zistiť, ako môžete vyladiť výstup, aby bol čitateľnejší.
Preskúmanie filtrov tcpdump
tcpdump je schopný zachytiť obrovské množstvo prevádzky v jednom spustení. Takéto preťaženie informáciami vás môže vyviesť z cesty pri vyšetrovaní alebo odstraňovaní problémov s konkrétnym hostiteľom alebo sieťovým protokolom.
Tu vstupujú do hry filtre tcpdump. Príkaz tcpdump môžete pridať s určitými príznakmi, aby ste odfiltrovali sieťovú prevádzku a zachytili konkrétne pakety. Potom môžete tieto pakety uložiť a neskôr analyzovať, aby ste sa dostali ku koreňu akýchkoľvek problémov súvisiacich so sieťou. Poďme sa naučiť, ako používať filtre v tcpdump.
Filtrovať pakety na základe používaného sieťového protokolu
Ak chcete filtrovať pakety prenášané prostredníctvom špecifického protokolu, zadajte názov protokolu pomocou príkazu tcpdump a zachytia sa iba pakety, ktoré prechádzajú cez definovaný sieťový protokol.
Napríklad, ak chcete zachytiť pakety založené na ICMP, jednoducho ich pripojíte icmp na konci príkazu tcpdump. Postup je rovnaký, ak chcete zachytiť iba pakety UDP alebo TCP.
sudo tcpdump -c 5 icmp
Tento príkaz vráti výstup iba vtedy, ak dôjde k výmene údajov prostredníctvom protokolu ICMP.
Filtrovať pakety na základe hostiteľa
Môžete nakonfigurovať tcpdump na zachytávanie paketov súvisiacich s jedným hostiteľom s hostiteľ parameter. Je to užitočné najmä vtedy, keď fungujú všetky systémy vašej siete okrem jedného. Tento filter vám umožňuje vykonávať cielené vyšetrovanie a urýchľuje celkový pracovný postup riešenia problémov, pretože vás nerozptyľujú nepotrebné údaje.
Ak chcete zachytiť pakety súvisiace s konkrétnym hostiteľom, definujte sieťovú adresu hostiteľa pomocou hostiteľ parameter:
sudotcpdump-c 5 hostiteľ 192.168.2.1
Podobne ako pri filtri sieťového protokolu, tento príkaz vráti výstup iba vtedy, ak akýkoľvek prebiehajúci prenos súvisí s definovaným hostiteľom.
Filtrovať pakety na základe aktívneho portu
tcpdump je vybavený parametrom, ktorý vám umožňuje filtrovať sieťovú prevádzku a zachytávať iba pakety, ktoré sa prenášajú na alebo z konkrétneho portu.
Ak chcete zachytiť pakety prichádzajúce z konkrétneho portu, pripojte prístav príznak príkazu tcpdump a vedľa neho definujte číslo portu. Napríklad, ak chcete zachytiť akýkoľvek prichádzajúci alebo odchádzajúce prenos HTTP, definujte port 80:
sudo tcpdump -c 5 port 80
tcpdump bude počúvať na porte 80 a bude čakať na prenosy HTTP. Akonáhle zistí HTTP pakety v sieti, zachytí ich.
Kombinujte filtre spolu pre pokročilé triedenie
Predchádzajúce časti diskutovali o tom, ako môžete filtrovať prenos na základe portu, protokolu alebo hostiteľa, ale čo ak chceli ste zachytiť prevádzku z jedného portu konkrétneho hostiteľa pomocou konkrétnej siete protokol? Máte šťastie, pretože je to možné vďaka schopnosti používať logické operátory s príkazom tcpdump.
Ak chcete zachytiť pakety z jednotlivého hostiteľa pomocou portu 443, použite tento príkaz:
sudotcpdump-c 5 hostiteľ 192.168.2.1aprístav 443
Skontrolujte obsah zachytených paketov
Štandardne tcpdump zobrazuje hlavičky paketu vo výstupe. Aj keď je to vo väčšine prípadov viac než dosť, niekedy sa možno budete chcieť alebo budete musieť pozrieť hlbšie do zachytených údajov. Pomocou príkazu tcpdump môžete zadať určité parametre, aby ste skontrolovali obsah zachyteného balíka.
Tu je postup, ako zobraziť obsah paketov:
sudo tcpdump -c 5 -x
Tento príkaz vráti hexadecimálnu verziu obsahu v zachytenom pakete. Ak chcete zobraziť ASCII formu údajov, môžete prejsť -A parameter s:
sudo tcpdump -A
Uložiť výstup tcpdump do súboru
Ako takmer každý iný nástroj príkazového riadka Linuxu môžete výstup vytvorený tcpdump uložiť do súboru, na ktorý sa budete neskôr odvolávať.
To možno vykonať pridaním -w príznak k príkazu. Po spustení tcpdump uloží zachytené údaje do a .pcap súbor, ktorý možno neskôr analyzovať pomocou tcpdump alebo iných nástrojov na monitorovanie siete, ako je Wireshark.
Ak chcete uložiť výstup príkazu tcpdump do súboru, zadajte tento príkaz:
sudotcpdump-wzachytiť.pcap
Na čítanie a .pcap súbor, môžete použiť tcpdump s -r parameter:
sudotcpdump-rzachytiť.pcap
Linux sa dodáva s množstvom sieťových nástrojov, ktoré dokážu vyriešiť každý problém so sieťou, pokiaľ ide o softvérovú stránku vecí. Vedieť, ako používať niekoľko najlepších sieťových nástrojov v Linuxe, vám určite príde vhod, či už ste systémový správca sietí, alebo len bežný používateľ Linuxu.
Keďže skutočný zoznam dostupných sieťových príkazov môže byť príliš veľa na pochopenie, tu je zoznam niektorých najdôležitejších sieťových nástrojov Linuxu, ktoré by ste mali poznať.