GNU/Linux >> Tutoriels Linux >  >> Linux

Comment suivre et tracer un processus Linux

Dans cet article, nous vous montrerons comment suivre et tracer un processus Linux sur le système avec deux outils, ps et les outils de ligne de commande strace. Ces outils système peuvent vous aider à identifier les processus système réels et leur origine.

Sur les serveurs d'hébergement Web mutualisé, il est très courant de rencontrer des problèmes de spam et de logiciels malveillants. Ces problèmes peuvent survenir pour de nombreuses raisons, et parfois ces spams ou attaques sortants sont lancés à partir de processus système tels que des scripts perl utilisant beaucoup de ressources CPU.

Dans la plupart de ces cas, il s'agit apparemment "seulement" d'un processus perl, mais voici quelques questions intéressantes :comment savez-vous d'où il vient ? Comment un processus système Linux pourrait masquer son vrai nom ? Quel est le moyen le plus simple et le plus fiable de savoir où ce processus Linux a été lancé ?

Aujourd'hui, nous allons essayer de répondre à toutes ces questions avec quelques exemples pratiques rapides et faciles.

Tracer un processus Linux à l'aide de la commande ps

Voyons un exemple concret qui s'est produit il y a quelques jours sur un serveur dédié que je gère.

Sur un site Web particulier, il y avait un problème de spam sortant qui envoyait beaucoup d'e-mails, mais aucun logiciel malveillant n'a été trouvé dans le dossier public_html. De plus, tous les mots de passe des boîtes de messagerie ont été modifiés, de même que le mot de passe du compte FTP/cPanel. Pourtant, l'attaquant utilisait le système Linux pour envoyer des e-mails sortants.

La source des e-mails était un processus s'exécutant sous l'utilisateur "johndoe" qui semblait être malveillant, et n'était pas ce qu'il prétendait être :

[[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

Comme vous le voyez, la première chose à faire pour connaître le processus a été d'utiliser la commande ps, comme vous le voyez ci-dessous :

ps -U user -u user u

Remplacez "utilisateur" par votre véritable utilisateur système.

Après cela, une fois que vous avez répertorié les processus suspects, utilisez ll commande pour obtenir plus d'informations à l'aide de son PID , comme vu précédemment :

Comme vous le voyez, le processus prétend être "httpd" pour se cacher (tout processus peut changer son propre titre de processus), c'est en fait un processus perl :

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

Cependant, aucun fichier de script n'y était associé. Le script a très probablement été canalisé dans le processus perl pour éviter de mettre quoi que ce soit sur le système de fichiers où il laisserait une trace.

Je ne sais pas comment le script a été exécuté sous cet utilisateur, mais il s'agissait d'une installation WordPress vulnérable avec de nombreux plugins obsolètes et des logiciels malveillants injectés qui pourraient facilement conduire à ce type de problèmes.

Tuer le processus de rouge était la meilleure chose à faire dans ce cas :

kill -9 59289

Remplacez "59289" par le véritable ID de processus.

Strace :un autre moyen simple de tracer un processus système

trace est un outil très pratique et utile utilisé par les administrateurs système pour le débogage et le diagnostic des problèmes liés au système et au processus lorsque la source n'est pas vraiment claire et disponible lors d'un premier coup d'œil rapide.

Cet outil de débogage permet aux programmeurs et aux utilisateurs du système de découvrir rapidement comment un programme interagit avec le système d'exploitation. Pour ce faire, il surveille les appels et les signaux du système.

Comme nous le verrons dans les exemples suivants, strace affiche chaque ligne de la trace qui inclut le nom de l'appel système, ses arguments et la valeur de retour (entre parenthèses).

exemple de suivi

Exécutons strace sur /bin/ls et enregistrons la sortie dans un fichier appelé ls.txt

strace -o ls.txt /bin/ls

Pour lire la sortie, exécutez simplement :

more ls.txt

Mais ce n'est qu'un exemple basique de strace. La partie intéressante survient lorsque vous pouvez suivre le processus du serveur Web et découvrir ce qu'il fait exactement. Prenons un processus php-fpm comme exemple :

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]:~]

En appuyant sur CTRL + C, vous terminerez la trace et elle sera détachée.

Vous pouvez également spécifier ce que vous devez tracer, par exemple, si vous n'avez besoin de tracer que les appels système open et read, vous devez le spécifier dans la syntaxe strace, comme vous le voyez ci-dessous :

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

Cet exemple de strace rapide utilise quelques options de commande, expliquées ici :

-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).

Encore une fois, pour lire la sortie, exécutez simplement :

more /root/php-fpm.debug.txt

Vous savez maintenant comment tracer facilement un processus Linux avec deux commandes simples. Avec ces informations, vous pouvez facilement suivre un processus Linux pour savoir ce qui se passe exactement à l'intérieur de votre serveur. strace prend un peu plus de temps à comprendre à partir du manuel, mais c'est l'outil définitif pour tracer un processus Linux.

Autres lectures :

  • homme strace
  • tracer bonjour le monde
  • commande ps
How to track and trace a Linux process was last modified:July 13th, 2017 by Esteban Borges
Linux
  1. Comment double-booter Kali Linux et Windows 10

  2. Comment tuer un processus sous Linux

  3. Comment vérifier la version du système d'exploitation et de Linux

  4. Comment trouver et tuer le processus Zombie sous Linux

  5. Comment monter et démonter un système de fichiers sous Linux

Comment installer et utiliser YouTube-DL sur le système Linux

Comment changer le nom d'utilisateur et le nom d'hôte sur le système Linux

Comment installer et configurer AnyDesk sur le système Linux

Comment installer et configurer Django sur le système Linux

Comment installer et configurer PrestaShop sur le système Linux

Comment installer et configurer Elasticsearch sur le système Linux