GNU/Linux >> Znalost Linux >  >> Linux

Užitečné příklady tcpdump Linux pro správce sítě

Jako správce sítě je řešení problémů se sítí součástí vašeho každodenního života. Jedním z nepostradatelných nástrojů při práci na problémech souvisejících se sítí je linuxový příkaz tcpdump.

Tento tutoriál vás provede některými příklady z reálného světa, jak vám může tcpdump pomoci při diagnostice běžných problémů se sítí. Na konci tohoto tutoriálu budete lépe rozumět tomu, jak využít tcpdump k řešení vašich vlastních problémů se sítí.

Předpoklady

Tento tutoriál bude praktickou ukázkou. Pokud chcete pokračovat, ujistěte se, že máte počítač se systémem Linux. Tento tutoriál používá Ubuntu 20.04, ale bude fungovat jakákoli moderní distribuce Linuxu.

Instalace nástroje tcpdump Linux Tool

Většina moderních distribucí Linuxu, zejména servery, již má tcpdump. Ale pokud ne, nemějte obavy, protože instalace je bezproblémová a rychlá.

1. Přihlaste se k počítači se systémem Linux pomocí preferovaného klienta SSH.

2. Nejprve zkontrolujte, zda je tcpdump již nainstalován spuštěním níže uvedeného příkazu.

sudo apt list --installed tcpdump

Pokud na vašem počítači existuje tcpdump, uvidíte podobný výstup jako snímek obrazovky níže.

Pokud tcpdump neexistuje, získáte místo toho níže uvedený výsledek.

3. Jakmile se ujistíte, že tcpdump není nainstalován, spusťte jej pomocí níže uvedených příkazů.

# Update the package index
sudo apt update -y

# Install tcpdump
sudo apt install tcpdump -y

4. Nakonec zkontrolujte nainstalovanou verzi tcpdump spuštěním níže uvedeného příkazu.

tcpdump --version

V době psaní tohoto článku je nejnovější verze tcpdump z úložiště Ubuntu 4.9.3.

Zachycení paketového provozu na výchozím rozhraní

Primárním použitím tcpdump je zachycování paketů. Díky knihovně pcap může nástroj zachytit pakety z různých typů sítí, jako je Ethernet, Wi-Fi, PPP atd.

Syntaxe základní formy příkazu tcpdump je následující.

tcpdump [options] [expression]

Kde:

  • options :Nastavte různé možnosti tcpdump. Možnosti řídí, jak tcpdump zachycuje a zobrazuje pakety.
  • expression :Filtrujte nebo určete, jaký typ provozu se má zachytit. Výrazy jsou podrobněji popsány dále v tomto tutoriálu.

Nejzákladnějším případem použití tcpdump je zachytit veškerý provoz na vašem výchozím síťovém rozhraní a zobrazit data na standardní výstup.

Spusťte tcpdump příkaz bez možností nebo výrazů k zachycení veškerého provozu na vašem výchozím rozhraní.

sudo tcpdump

Tcpdump musíte spustit jako root nebo s předponou sudo, protože přístup k síťovým rozhraním je privilegovaná operace.

tcpdump nástroj zachycuje pakety a tiskne výstup na terminál, jak je znázorněno níže. Když se domníváte, že jste zachytili dostatek paketů, stiskněte CTRL+C zastavit zachycení.

Omezení počtu zachycených paketů

tcpdump Příkaz Linuxu může rychle zahltit váš terminál výstupem a je nejlepší zachytit pouze malé množství dat najednou.

Můžete zahrnout -c možnost zadat počet paketů tcpdump by měl zachytit, než opustí. Tato možnost je často použitelná, když chcete zachytit pouze malé množství dat pro analýzu.

Chcete-li tak učinit, spusťte níže uvedený příkaz a změňte číslo za -c volba. Tento příklad zachytí pouze 10 paketů a automaticky se ukončí.

sudo tcpdump -c 10

Zvýšení výřečnosti

Během zachycování paketů můžete zjistit, že výchozí výstup někdy nemusí obsahovat nebo zobrazovat podrobné informace. Naštěstí vám linuxový nástroj tcpdump poskytuje tři úrovně výřečnosti reprezentované příznaky -v, -vv a -vvv.

Při použití těchto možností tcpdump analyzuje a vytiskne mnohem více informací pro každý paket, jako je doba trvání (TTL), identifikace atd.

# Verbose
sudo tcpdump -v

# Even more verbose
sudo tcpdump -vv

# Most verbose
sudo tcpdump -vvv

Pro lepší perspektivu se podívejte na níže uvedené obrázky porovnávající rozdíl v detailech mezi -v a -vvv .

Zachytávání paketů na konkrétním nebo všech rozhraních

V předchozím příkladu tcpdump zachycoval pakety na výchozím síťovém rozhraní, což znamená, že máte na mysli pouze jedno rozhraní. Ale co když máte více rozhraní a chcete zachytit provoz na konkrétním rozhraní nebo na všech rozhraních?

Příkaz tcpdump Linux vám umožňuje určit, které síťové rozhraní se má zachytit pomocí parametru -i. Tento příznak přijímá jako hodnotu název rozhraní, což znamená, že nejprve musíte znát název rozhraní.

1. Spusťte příkaz tcpdump s volbou -D a vytiskněte seznam všech dostupných rozhraní na počítači.

sudo tcpdump -D

Jak můžete vidět níže, na tomto stroji je sedm rozhraní. Váš počítač může mít jinou sadu síťových rozhraní. Tento příklad se zaměřuje pouze na ethernetová síťová rozhraní, konkrétně eth0 a eth1.

2. Dále spusťte níže uvedený příkaz a začněte zachycovat pakety na konkrétním požadovaném rozhraní. Tento příklad zachycuje rozhraní eth1. Dále k omezení počtu zachycených paketů používá níže uvedený příkaz parametr -c následovaný počtem.

sudo tcpdump -i eth1 -c 5

3. Místo určení jednoho rozhraní můžete také zachytit pakety na všech rozhraních současně. Chcete-li tak učinit, nastavte hodnotu parametru any pro -i.

sudo tcpdump -i any -c 5

Proč byste chtěli zachycovat pakety na všech rozhraních? Zde jsou některé běžné důvody.

Za prvé, zachycování provozu na všech rozhraních vám umožňuje vidět veškerý provoz procházející vaším systémem, i když není určen pro váš systém.

Můžete také vidět, jaké služby a protokoly procházejí vaší sítí. Tyto informace mohou být užitečné při konfiguraci pravidel brány firewall nebo jiných bezpečnostních opatření, zejména při budování nových serverů.

Přidání filtrů do příkazu tcpdump Linux

Divoké zachycování paketů není vždy nejlepší přístup. Množství dat může být matoucí a může bránit při odstraňování problémů. Proč? Protože můžete zachycovat provoz, který není pro danou situaci relevantní.

Filtry se v těchto situacích hodí. Nástroj tcpdump má mnoho vestavěných filtrů pro zachycení konkrétních typů provozu. Tyto filtry můžete kombinovat, abyste zachytili pouze relevantní provoz. Níže jsou uvedeny některé příklady.

Filtrování podle čísla portu

Pokud například řešíte problém se serverem SSH, pravděpodobně vás ostatní typy provozu procházející vaší sítí nezajímají.

Spusťte níže uvedený příkaz a zachyťte veškerý provoz určený pro port 22 , výchozí port SSH.

sudo tcpdump -c 5 port 22

Jak můžete vidět, nástroj zachytil pouze provoz portu 22 jako zdroj nebo cíl.

A co když vás zajímá pouze provoz HTTP? Stačí pouze nahradit číslo portu vaším HTTP portem, což je ve výchozím nastavení port 80.

sudo tcpdump -c 1 port 80

Poznámka:Nástroj tcpdump je dostatečně chytrý, aby místo čísel portů rozpoznával názvy servisních protokolů. Například místo určení portu 22 pro filtrování provozu SSH můžete místo toho zadat port ssh. Totéž platí pro port 80 pro provoz HTTP, port http.

Filtrování podle protokolu

Nepoužívejte název tcpdump oklamat vás, abyste si mysleli, že to funguje pouze s provozem TCP. Tento nástroj může také zachytit provoz bez protokolu TCP, jako je ICMP nebo UDP.

Například níže uvedený příkaz zachycuje pakety z libovolného rozhraní, ale filtruje pouze provoz UDP.

sudo tcpdump -i any -c 5 udp

V důsledku toho níže uvedené výsledky zobrazují pouze provoz UDP, což se zdá být pakety o operacích NTP a DNS.

Co když potřebujete pouze zachytit provoz související s DNS? V takovém případě můžete filtry kombinovat udp a port 53 . Tímto způsobem by zamýšlený výstup měl zobrazovat pouze pakety související s DNS.

sudo tcpdump -i any -c 5 udp port 53

Tentokrát jste zachytili pouze provoz související s DNS (A, PTR, vyhledávání AAA a odpověď) omezený na přenosový protokol UDP.

Máte podezření, že ve vaší síti probíhá útok ping flood? Proč nezkusíte najít zdroj a cíl pomocí tcpdump ? Chcete-li to provést, spusťte níže uvedený příkaz a naslouchejte provozu ICMP na jakémkoli rozhraní.

-n flag zabraňuje tcpdump v pokusu o překlad názvů hostitelů a místo toho zobrazuje IP adresy. V tomto typu situace může vynechání překladu názvů zlepšit výkon.

sudo tcpdump -n -i any icmp

Možná jste si již uvědomili, že tcpdump filtry jsou výkonné a flexibilní. Kombinací různých filtrů můžete zachytit provoz relevantní pro váš požadovaný výsledek.

Další informace o filtrech tcpdump naleznete na manuálové stránce tcpdump.

Ukládání zachycených paketů do souboru na disku

Zobrazení zachycených paketů na obrazovce za běhu je vhodné pro krátké zachycení. Ale pokud generujete velké zachycení paketů, výstup na obrazovce již není praktický. Potřebujete způsob, jak exportovat zachycená data do souboru pro pozdější analýzu nebo sdílení.

Naštěstí tcpdump podporuje možnost uložit zachycené pakety do souboru na disku. Musíte zadat volbu -w následovanou cestou k souboru.

Spusťte níže uvedený příkaz a uložte veškerý provoz procházející vaším systémem do souboru s názvem /tmp/capture.pcap. Tento příkaz naslouchá na jakémkoli rozhraní a zachytí maximálně 20 paketů, než se automaticky ukončí.

sudo tcpdump -i any -w /tmp/capture.pcap -vv -c 20

Nyní máte soubor pro zachycení paketů, a když budete potřebovat, můžete soubor načíst zpět do terminálu. Chcete-li číst zachycení paketů ze souboru, přidejte -r možnost následovaná názvem souboru zachycení paketů.

sudo tcpdump -r /tmp/capture.pcap

Závěr

Tento výukový program vás naučil zachytit a analyzovat síťový provoz pomocí příkazu tcpdump Linux. Použili jste běžné možnosti a kombinované filtry, abyste vytvořili přesné zachycení paketů. Tento nástroj jste také použili k zachycení paketů do souboru pro pozdější analýzu a načtení souboru zpět do terminálu.

Linuxový nástroj tcpdump je nezbytný v sadě nástrojů každého správce sítě. Znalosti, které jste získali v tomto tutoriálu, vám pomohou být efektivní a efektivní při řešení problémů se sítí.


Linux
  1. 16 užitečných příkladů příkazů „cp“ pro začátečníky v systému Linux

  2. Jak používat příkaz id v Linuxu:5 užitečných příkladů

  3. 10 Užitečné příklady Sar (Sysstat) pro monitorování výkonu UNIX / Linux

  1. 9 Užitečné příklady příkazu Split v Linuxu

  2. Užitečné příklady Linux Dig pro správce sítě

  3. Příklady použití příkazu tcpdump pro řešení problémů se sítí

  1. 12 Užitečné příklady příkazů „dmidecode“ pro správce systému Linux

  2. 10 užitečných příkladů příkazů ncat (nc) pro systémy Linux

  3. 11 Užitečné příklady rozdělených příkazů pro systémy Linux