Comment stopper les attaques malveillantes de votre serveur piraté ?
Cela commence par la réception d'un e-mail :
Vos serveurs essaient de pirater mes serveurs.
S'il te plaît, arrête.
Voici les journaux:
Jul 19 01:32:53 kp-fmt1-01 sshd[10745]: Invalid user uploader from 163.172.X.X
Jul 19 01:32:53 kp-fmt1-01 sshd[10745]: Connection closed by 163.172.X.X port 33740 [preauth]
Jul 19 02:05:36 kp-fmt1-01 sshd[11335]: Invalid user qa from 163.172.X.X
Jul 19 02:05:37 kp-fmt1-01 sshd[11335]: Connection closed by 163.172.X.X port 51410 [preauth]
Jul 19 02:38:08 kp-fmt1-01 sshd[11407]: Invalid user minecraft from 163.172.X.X
Jul 19 02:38:08 kp-fmt1-01 sshd[11407]: Connection closed by 163.172.X.X port 41064 [preauth]
Dans un premier temps, il ne faut pas paniquer, vous n'êtes sûrement pas un hacker :)
Votre serveur a pu être piraté à votre insu pour être utilisé comme nouvelle source d'attaques.
Vous avez peut être récemment effectué une mise à jour ou installé un nouveau logiciel ? Quoiqu'il en soit vous devez investiguer et décontaminer rapidement votre serveur.
Un bon moyen de connaitre l'étendu des attaques lancées par votre serveur est de vérifier si il est blacklisté (ajouté à une liste noire) sur Internet.
Certaines plateformes sont automatiquement informées lorsqu'un serveur a un comportement anormal envers d'autres serveurs : scan de tous les ports, multiples tentatives de connexions, ...
L'adresse IP du serveur en question est alors blacklistée.
Pour vérifier si votre serveur est blacklisté, il suffit de rechercher son nom de domaine ou son IP sur mxtoolbox ou abuseipdb.
Un processus présent sur votre serveur est forcément à l'origine de ces tentatives de connexions. Il faut le "tuer" et supprimer le fichier qui l'exécute sans quoi il se relancera lors du redémarrage du serveur ou lors d'un évènement planifié.
Dans un premier temps, vérifiez si il existe une activité étrange au niveau du réseau de votre serveur, avec la commande netstat -an
. Cette commande affiche toutes les connexions TCP actives et les ports TCP et UDP utilisés.
Dans la capture ci-dessous, nous constatons de multiples connexions depuis le serveur 10.16.31.7:[port utilisé] vers 8.8.8.8:53 ou 8.8.4.4:53.
Ensuite, avec la commande lsof -RPni :[numero de port]
, vous pouvez récupérer l'identifiant du processus à l'origine de cette communication.
Dans notre cas, en utilisant le port source d'une tentative de connexion, la commande lsof -RPni :59819
affiche :
Le processus avec l'identifiant 3854 est donc à l'origine de cette communication.
À ce stade, avec le numéro d'identifiant du processus, il est possible d'afficher tous les fichiers, ports, ... utilisés par ce processus avec la commande lsof –Pnp <pid>
.
Ici, en tapant la commande lsof -Pnp 3854
, cela affiche :
Il faut alors étudier la liste des fichiers et rechercher tout ce qui peut être exécutés : scripts, exécutables, fichier cron, ...
Si le chemin complet n'est pas indiqué, la commande find . -name <nom du fichier>
à la racine du serveur permet de trouver l'emplacement du fichier à supprimer.
La commande rm -rf <nom du fichier>
permet alors de supprimer le ou les fichiers liés au processus.
Enfin, il faut arrêter le processus en cours d'exécution avec la commande kill -9 <pid>
, ici : kill -9 3854
.
Vous pouvez installer un superviseur qui détectera et vous informera de toute activité anormale sur votre serveur, comme OSSEC.
Et également, être automatiquement informé si votre serveur est blacklisté sur Internet en vous inscrivant sur des plateformes telles que mxtoolbox ou abuseipdb.
Vous pouvez installer un outil qui bannira les IP réalisant trop de tentatives de connexions. Ce logiciel rajoutera automatiquement une règle au pare-feu pour interdire à certaines IP de se connecter.
L'un des plus connus sous Linux est fail2ban.
Pour tester son bon fonctionnement, utilisez la commande fail2ban-client status sshd
pour lister les IP bannis sur les connexions ssh
.
Si votre serveur a été blacklisté et une fois que vous avez éliminé l'origine du problème puis mis en place les solutions préventives, vous pouvez demander d'être déblacklisté. Si pendant un certain temps, vous n'êtes plus signalé comme un serveur suspect par les autres serveurs, vous serez automatiquement déblacklisté.
Vous pouvez revérifier sur une des plateformes et vous devriez obtenir uniquement des points verts :)