Jak sledovat síťovou aktivitu v systému Linux

Existuje mnoho důvodů, proč chcete sledovat síťovou aktivitu v systému Linux. Můžete řešit problém se sítí, můžete chtít zkontrolovat, zda žádné škodlivé aplikace nevytvářejí podezřelou síťovou aktivitu, nebo můžete jednoduše chtít vědět, zda některé procesy telefonují domů. Ať už je důvod jakýkoli, zde je několik metod, jak zjistit, které procesy ve vašem systému provádějí síťovou aktivitu a s kým komunikují.

V tomto kurzu se naučíte:

  • Jak sledovat síťová připojení a naslouchající služby pomocí nástroje netstat
  • Jak sledovat síťová připojení a naslouchající služby pomocí nástroje lsof
  • Jak sledovat síťová připojení a naslouchající služby pomocí nástroje ifconfig
  • Jaké nástroje můžete použít ke zkoumání dat, která jsou odesílána po síti

Jak sledovat síťovou aktivitu v systému Linux

Požadavky na software a používané konvence

Požadavky na software a konvence příkazového řádku systému Linux
Kategorie Požadavky, Konvence nebo použité verze softwaru
Systém Nezávislý na distribuci
Software netstat, lsof, ifconfig, wireshark, tcpdump
Ostatní Privilegovaný přístup k systému Linux jako root nebo prostřednictvím příkazu sudo.
Příkazy # – vyžaduje, aby dané linuxové příkazy byly spuštěny s právy roota buď přímo jako uživatel root, nebo pomocí příkazu sudo
$ – vyžaduje, aby dané linuxové příkazy byly spuštěny jako běžný neprivilegovaný uživatel

Netstat

Netstat je výkonný nástroj, který dokáže vypisovat síťová připojení, směrovací tabulky, statistiky rozhraní, maškarní připojení a členství ve vícesměrovém vysílání. My jej budeme používat k provedení prvního z nich.

Instalace Netstatu

V Debianu a systémech založených na Debianu, jako je Ubuntu, použijte apt.

# apt install net-tools

V Red Hat Enterprise Linuxu a systémech založených na Red Hatu použijte yum,

# yum install net-tools

V systémech založených na Archu použijte pacman.

# pacman -S net-tools
Hledá se analytik systémů Linux !
Geofyzikální ústav UAF, hledá do svého týmu analytiků a inženýrů výzkumné kybernetické infrastruktury zkušeného analytika systémů Linux. MÍSTO VÝKONU: Fairbanks, Aljaška, USA
PŘIHLÁSIT SE HNED
POZNÁMKA
V následujících příkladech používáme čerstvou instalaci systému RHEL 8 spuštěnou ve VirtualBoxu s nainstalovanými doplňky pro hosty

Zobrazit naslouchající procesy

Nejprve si zobrazíme procesy, které naslouchají připojení. Za tím účelem zadejte následující příkaz.

$ sudo netstat -tulpen

V tomto příkazu t zobrazí TCP připojení, u zobrazí UDP připojení, l zobrazí pouze naslouchající sokety, p zobrazí program, kterému připojení patří,e zobrazí rozšířené informace a n číselně reprezentuje adresy, uživatele a porty.

netstat -tulpen výstup

Při uvažování modelu klient-server, na kterém je založena většina síťového softwaru, lze naslouchající procesy považovat za software, který je v režimu „server“. Vzhledem k našemu nastavení není na výstupu nic překvapivého. Jedná se o všechny procesy, u kterých byste očekávali, že budou naslouchat síťovým připojením v čerstvé instalaci systému RHEL 8 spuštěné v režimuVirtualBox.
U každého naslouchajícího procesu můžete vidět používaný protokol, místní adresu a port, na kterém naslouchá, uživatele, pod kterým běží, a PID/název programu. Zde je třeba upozornit na jeden důležitý rozdíl. U připojenítcp4/udp4(jednoduše uvedených jakotcpaudp), kde jeLocal Addressuveden jako0.0.0.0, proces naslouchá pro připojení z jakéhokoli počítače, který je schopen se k němu připojit přes síť, zatímco když je uveden jako127.0.0.1, naslouchá pouze pro připojení na localhost (počítač, na kterém běží, nebo on sám) a nemohou se k němu připojit jiné počítače v síti. Stejný rozdíl platí protcp6/udp6při porovnáníLocal Addresss::(čelící síti) a::1(pouze localhost).

Zobrazit všechna síťová připojení

Nyní se podíváme na všechna aktuální síťová připojení. Za tímto účelem zadejte následující příkaz, který je podobný předchozímu příkazu s tím rozdílem, že pro zobrazení všech soketů použijeme -a namísto -l pro zobrazení pouze naslouchajících soketů.

$ sudo netstat -atupen

Kromě toho, že nám tento příkaz ukáže, jaký software naslouchá připojení jako „servery“, zobrazí nám také aktuálně navázaná připojení k tomuto softwaru a všechna navázaná síťová připojení, která máme pomocí softwaru fungujícího jako „klient“, například webový prohlížeč.

netstat -atupen output

Na obrázku si můžete všimnout 2 spojení ve stavuESTABLISHED. Opět zde není žádné překvapení. Jedno z nich patří NetworkManageru a funguje jako klient DHCP, který umožňuje připojení k síti ze serveru brány(V tomto případě hostitelského počítače). Druhý je připojení SSH k počítači, které jsme vytvořili po přesměrování portu služby ssh pomocí VirtualBoxu. Pokud bychom zde viděli něco neočekávaného, pak to může být důvod k dalšímu zkoumání.

Zobrazit navázaná spojení

Můžete se dostat do situace, kdy budete chtít zobrazit pouze spojení ESTABLISHED. To lze snadno provést tak, že výstup z příkazu netstat přepíšete do příkazu grep takto:

$ sudo netstat -atupen | grep ESTABLISHED

sudo netstat -atupen | grep ESTABLISHED output

Výše uvedený příkaz jsme zadali po přechodu na stránku wikipedia.com v prohlížeči firefox a snímek obrazovky zachycuje spojení navázaná prohlížečem firefox při dosažení této stránky. Jak můžete vidět, jsou zde čtyři servery, ke kterým se firefox připojil: 91.198.174.192, 172.217.23.100, 216.58.215.67 a 104.111.215.142. Abychom zjistili, komu tyto servery patří, můžeme se na jejich ip adresy zeptat pomocí whois takto:

$ whois 91.198.174.192| less

Provedeme-li to u každého z nich, zjistíme, že patří společnostem Wikimedia, Google, Google, respektive Akamai. To dává smysl vzhledem k tomu, že Wikimedia vlastní a hostuje Wikipedii a je velmi běžné, že stránky načítají zdroje, které jsou hostovány na serverech vlastněných společnostmi Google a Akamai. Ve skutečnosti zkoumání zdrojového kódu domovské stránky wikipedie ukazuje, že načítá odznak aplikace Google Play Store ze serveru google.com a odznak aplikace Apple AppStore ze serveru apple.com.
Přechod na adresy těchto dvou odznaků aplikací jednotlivě a zadání výše uvedeného příkazu netstat skutečně ověřuje, že jsou hostovány na serverech vlastněných společnostmi Google a Akamai.

Pokud to ve vás vzbudilo zájem o příkaz netstat, pak pro vás máme článek, ve kterém se dozvíte více o používání příkazu netstat

ss

Příkaz netstat byl dlouho oblíbeným příkazem sysadminů, nicméně nedávno byl nahrazen příkazem ss, který se chlubí tím, že je rychlejší, jednodušší a lidsky čitelnější než netstat. Podívejme se, jak provést stejné akce jako výše pomocí příkazu ss. Příkaz Ss má také možnost -e pro zobrazení rozšířených informací, ale tato možnost byla v následujících příkladech vynechána, protože vytváří další informace, které mohou mít za následek méně čitelný výstup.

Zobrazit naslouchající procesy

Pro zobrazení všech naslouchajících procesů zadejte následující příkaz.

$ sudo ss -tlunp

V tomto příkazu t zobrazí TCP spojení, l zobrazí pouze naslouchající sokety, u zobrazí UDP spojení, n číselně reprezentuje adresy, uživatele a porty a p zobrazí program, kterému spojení patří.

Zobrazit všechna síťová připojení

Chcete-li zobrazit všechna síťová připojení, zadejte následující příkaz, kde a nahrazuje l a zobrazuje všechny síťové zásuvky, nejen naslouchající.

$ sudo ss -taunp

Zobrazit navázaná připojení

Pokud nejsou zahrnuty -a nebo -l, pak ss zobrazí pouze navázaná připojení. Chcete-li zobrazit pouze navázaná spojení, zadejte následující:

$ sudo ss -tunp

lsof

Pokud by vám netstat a ss nestačily, uvádíme lsof. Lsof slouží k výpisu otevřených souborů. GNU/Linux zdědil princip návrhu UNIXu, že vše je soubor; to se týká i síťových připojení. V důsledku toho lze lsof použít k zobrazení síťové aktivity podobně jako výše uvedené příkazy.

Zobrazit všechna síťová připojení

Pro zobrazení všech síťových připojení zadejte následující příkaz.

$ sudo lsof -nP -i

V tomto příkazu n reprezentuje adresy číselně, P reprezentuje porty číselně a i potlačuje výpis všech otevřených souborů, které nejsou považovány za síťové soubory.

Zobrazit navázaná spojení

Pro zobrazení pouze navázaných spojení zadejte následující příkaz, kde další přepínače vypisují všechna navázaná spojení TCP.

$ sudo lsof -nP -iTCP -sTCP:ESTABLISHED

Zobrazit naslouchající procesy

Chcete-li zobrazit naslouchající procesy pomocí lsof, zadejte následující:

$ sudo lsof -nP -iTCP -sTCP:LISTEN

Přijdete tak o všechny procesy naslouchající přes UDP, proto může být žádoucí zadat místo toho následující, abyste zahrnuli i tyto procesy.

$ sudo lsof -nP -i | grep 'LISTEN\|UDP'

Sledování dat odesílaných po síti

Viděli jsme, jak lze pomocí netstat, ss a ifconfig sledovat, jaká síťová spojení jsou navazována a komu, ale často je žádoucí vidět, jaká data jsou po síti přesně odesílána. K dosažení tohoto cíle potřebujeme aplikace, které jsou schopné sniffovat pakety. Dva programy, které se na tuto oblast specializují, jsou tcpdump a wireshark.
Dříve jsme napsali návody, jak nainstalovat wireshark v systému RHEL 8, Základy analyzátoru síťových protokolů Wireshark v Linuxu, Filtrování paketů ve Wiresharku v systému Kali Linux a sekce Network Monitoring zefektivnění monitorování systému a hardwaru v Linuxu obsahuje pěkný úvod do programu tcpdump.

Závěr

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.