GNU/Linux >> Znalost Linux >  >> Linux

Jak sledovat a sledovat proces Linuxu

V tomto příspěvku vám ukážeme, jak sledovat a sledovat proces Linuxu v systému pomocí dvou nástrojů, nástrojů příkazového řádku ps a strace. Tyto systémové nástroje vám mohou pomoci identifikovat skutečné systémové procesy a jejich původ.

Na sdílených webhostingových serverech je velmi běžné čelit problémům se spamem a malwarem. K těmto problémům může dojít z mnoha důvodů a někdy jsou tyto odchozí spamy nebo útoky spouštěny ze systémových procesů, jako jsou skripty v jazyce Perl, které využívají spoustu zdrojů CPU.

Ve většině těchto případů se zjevně jedná „pouze“ o perlský proces, ale zde přichází několik zajímavých otázek:jak víte, odkud pochází? Jak by systémový proces Linux mohl maskovat své skutečné jméno? Jaký je nejsnadnější a nejspolehlivější způsob, jak zjistit, kde tento proces Linuxu začal?

Dnes se pokusíme na všechny tyto otázky odpovědět několika rychlými a snadnými praktickými příklady.

Sledujte proces Linuxu pomocí příkazu ps

Podívejme se na skutečný příklad, který se stal před dny na vyhrazeném serveru, který spravuji.

Na jednom konkrétním webu se vyskytl problém s odchozím spamem, který posílal spoustu e-mailů, ale ve složce public_html nebyl nalezen žádný malware, byla také změněna hesla všech e-mailových schránek, stejně jako heslo účtu FTP/cPanel. Přesto existoval způsob, jak útočník používal systém Linux k odesílání odchozích e-mailů.

Zdrojem e-mailů byl proces běžící pod uživatelem „johndoe“, který se zdál být škodlivý a nebyl tím, za co tvrdil:

[[email protected] ~] ps -U johndoe -u  johndoe u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
johndoe 59289 4.0 0.0 43568 9528 ? Ss Jun08 110:01 httpd

Jak vidíte, první věcí, kterou jste zjistili, bylo použití příkazu ps, jak vidíte níže:

ps -U user -u user u

Nahraďte „uživatel“ svým skutečným uživatelem systému.

Poté, jakmile budete mít uvedeny podezřelé procesy, použijte ll Chcete-li zjistit více informací pomocí jeho PID , jak bylo vidět dříve:

Jak vidíte, proces prohlašuje, že je „httpd“, aby se skryl (jakýkoli proces může změnit svůj vlastní název procesu), je to ve skutečnosti proces perl:

[[email protected] ~] ll /proc/59289/exe
lrwxrwxrwx 1 johndoe johndoe 0 Jun 10 10:05 /proc/59289/exe -> /usr/bin/perl*

Nebyl s tím však spojen žádný soubor skriptu. Skript byl s největší pravděpodobností vložen do procesu perl, aby se zabránilo umístění čehokoli na souborový systém, kde by zanechal stopu.

Nevím, jak se skript pod tímto uživatelem spustil, ale jednalo se o zranitelnou instalaci WordPressu s mnoha zastaralými pluginy a injektovaným malwarem, které by mohly snadno vést k tomuto druhu problémů.

Zabití procesu rouge bylo v tomto případě to nejlepší:

kill -9 59289

Nahraďte „59289“ skutečným ID procesu.

Strace:další snadný způsob sledování systémového procesu

strace je velmi praktický a užitečný nástroj používaný systémovými administrátory pro ladění a diagnostiku problémů souvisejících se systémem a procesy, kde zdroj není při rychlém a prvním pohledu skutečně jasný a dostupný.

Tento ladicí nástroj umožňuje programátorům a uživatelům systému rychle zjistit, jak program interaguje s OS. Dělá to monitorováním systémových volání a signálů.

Jak uvidíme v dalších příkladech, strace vypíše každý řádek trasování, který obsahuje jméno systémového volání, jeho argumenty a návratovou hodnotu (v závorkách).

příklad strace

Spusťte strace proti /bin/ls a uložte výstup do souboru s názvem ls.txt

strace -o ls.txt /bin/ls

Chcete-li přečíst výstup, stačí spustit:

more ls.txt

Ale to je jen základní ukázkový příklad. Zajímavá část přichází, když můžete sledovat proces webového serveru a zjistit, co přesně dělá. Vezměme si jako příklad proces php-fpm:

strace -p 18478 -s 80 -o /root/php-fpm.debug.txt
[[email protected]:~]strace -p 18478 -s 80 -o /root/php-fpm.debug.txt
Process 18478 attached
^CProcess 18478 detached
[[email protected]:~]

Stisknutím CTRL + C ukončíte trasování a bude odpojeno.

Můžete také určit, co potřebujete trasovat, například pokud potřebujete trasovat pouze otevřená a čtená systémová volání, měli byste to zadat v syntaxi strace, jak vidíte níže:

strace -e trace=open,read -p 18478 -s 80 -o /root/php-fpm.debug.txt

Tento příklad rychlého strace používal několik voleb příkazů, které jsou vysvětleny zde:

-o filename: used to write the strace output into a file name.
-p PID: here you must specify the system process ID.
-s SIZE: sets the maximum string size to print (32 is the default).

Chcete-li znovu přečíst výstup, stačí spustit:

more /root/php-fpm.debug.txt

Nyní víte, jak snadno sledovat linuxový proces pomocí dvou jednoduchých příkazů, s těmito informacemi můžete snadno sledovat linuxový proces a zjistit, co přesně dělá uvnitř vašeho serveru. strace zabere trochu více času, než pochopíte manuál, ale je to definitivní nástroj pro sledování linuxového procesu.

Další čtení:

  • man strace
  • strace ahoj světe
  • příkaz ps
Jak sledovat a sledovat proces Linuxu byl naposledy upraven:13. července 2017 Esteban Borges
Linux
  1. Jak zkontrolovat verzi OS a Linuxu

  2. Jak najít a zabít zombie proces v Linuxu

  3. Jak připojit a odpojit souborový systém v Linuxu

  1. Jak duální boot Kali Linux a Windows 10

  2. Jak zabít proces v Linuxu

  3. Jak pozastavit proces a obnovit jej později v Linuxu

  1. Jak nainstalovat a používat Git v systému Linux

  2. Jak zkontrolovat a opravit souborový systém v RHEL Linux

  3. Jak nainstalovat a nakonfigurovat server NFS v systému Linux