Depuis hier 20h, mon serveur Debian (vps chez Digital Ocean) crash. Je n'ai rien fait dessus samedi pourtant mais mes sites ne sont plus accessibles et je ne peux plus me connecter en ssh.
Une activité anormale y est corrélée car depuis (enfin j'imagine, je me suis rendu compte du problème plus tard), il y a une écriture en boucle mais je ne sais pas du tout à quoi ça peut correspondre et je n'arrive pas à établir un diagnostic.
Digital océan me donne accès à un boot recovery from ISO et un terminal en ligne, donc je peux toujours accéder au serveur pour taper des commandes :
df -h
m'indique que j'ai 8.8 Go d'occupé et 9.8 Go de libre donc pas un problème de mémoire a priori
top
ps -o pid,user,%mem,command ax | sort -b -k3 -r
Je m'y connais pas en administration de serveur, j'ai toujours bricolé dessus sans avoir de problème... donc toute aide sera la bienvenue.
Pour les options de démarrage que j'évoquais :
Les problèmes de perf plus haut sont sur le hard drive et je n'arrive pas à reproduire sur le ISO (voir entre 19h et 20h, puis j'ai reboot sur le hard drive). Ça s'annonce coton cette affaire.
Si tu es en mode recovery alors tu as boot sur un linux en mode non persistent qui te permet de mount ta partition root afin de procéder au debug. C'est donc normal que tu n'ai pas accès à tes sites quand tu es dans ce mode. Normalement tu devrais avoir un truc dans /mnt
Suggestion :
Pour connaitre quel process utilise l'IO de ton disque y'a plusieurs outils, comme pidstat, iotop ... Par contre il faut lancer cette commande quand tu as boot sur ton system et pas le recovery.
Si tu n'as pas accès à ton system alors il faut que tu planifie l'execution de la commande via crontab par exemple.
D'acc, j'ai vu passer des mentions de iotop mais je me demandais comment faire. Donc la technique c'est un cron et je mets en sortie de commande un fichier ?
Et dans le même temps, c'est possible d'installer iotop sur une partition montée ?
Il n'y a pas des logs d'activité sur Linux ? Une sorte d'observateur d'évènements ?
Merci. Je vais regarder ça !
En lançant mon serveur sur le hard disk et en lançant la console de Digital Océan, j'ai eu droit à une nouveauté : une succession de out of memory du process php-fpm.
Je mets ce screen ici pour m'en souvenir, peut-être que ça vient de là et que je dois configurer le process pour ne pas qu'il excède un certain nombre d'instances / consommation de ram.
Extrait les logs présents dans le /var/log de ton serveur. Ensuite il faut les analyser.
Merci, j'ai peut-être raté des choses mais l'analyse des logs ne m'a pas éclairé.
Bon, c'est une tragédie.
Je vais essayer de programmer un cron qui se chargera d'uploader un fichier tar.gz sur un autre serveur. Si je peux récupérer mes sources, ce sera déjà pas mal. Faudrait que je récupère mes tables SQL ensuite mais je suis moins serein pour cette partie.
On dirait que l'un de tes sites bouffes tout le CPU/Ram de ton serveur
Je pense pas que ce soit un site car j'ai renommé tous leurs dossiers, genre www en www2, monsite en monsite2 etc pour ne plus qu'ils soient traités par Apache et que d'éventuels cron que j'aurais loupé soient désactivés par la force des choses.
En fait le cron ne se lance même pas, je pense pas pouvoir récupérer mes sources. Faut que je règle le problème ou je perds tout. u_U
Si quelqu'un voit quelque chose d'étrange dans ces logs...
La seule chose qui m'intrigue c'est les 500Mo de RAM à 99%. Je peux resize mon VPS à 1Go ou 2Go mais c'est con de payer plus cher si ça ne corrige rien au bout du compte.
Tu sais que tu as xmrig qui tourne?
C'est un crypto miner a ce que je sache.
Non, je ne connaissais même pas de nom.
Bon ben voilà ça doit être ça, merci pour ton observation. Putain comment ce truc a pu s'installer. Je suis pas expert en sécurité mais j'ai normalement que des pages statiques, pas de formulaires et de XSS potentielles. En tout cas c'est pas moi, pas volontairement du moins.
Je vais regarder ça de plus près...
Avec find, j'ai cherché xmrig et monero dans tous mes dossiers à la racine.
J'ai retrouvé dans mon dossier /home ce qui correspond à ce tuto, le fichier de conf, un miner.sh, un fichier xmrig :
https://goopensource.fr/miner-du-monero-sur-debian-via-xmrig/
J'ai supprimé. Mais c'est toujours là au lancement du serveur.
Maintenant je remarque bien au démarrage du serveur durant la fenêtre de 300ms où ces logs apparaissent un « Started Monero miner service ».
Quelqu'un a une idée de comment mettre la main dessus ? Les programmes au démarrage sont configurés soit dans /etc/init.d (j'ai pas de Monero ou de Xmrig dedans), soit dans un cron non ? Y'a une troisième voie ?
Ca veut dire que la machine a ete corrompu. Donc personnellement, ej ne ferais confiance a aucune donnee qui soit sur la machine.
Apres des vecteurs d'attaque il y en a plein:
-ssh mal configure
-cle ssh qui a leake
-l'hote de la VM a ete compromis
-une faille dans apache ou nginx
-lors de l'installation de la machine tu as peut etre copie un script qui etait verole
-une des sources de paquet a ete compromise
Le 20 janvier 2022 à 15:38:43 :
Réinstalle tout ce sera infiniment plus simple
J'ai ce vps depuis 2014 donc j'ai plusieurs sites personnels dessus, des BDDs avec du contenu important, j'aimerais bien au moins réussir mon dump avant de tout bazarder. J'ai pas fait de sauvegarde récente con de moi.
Bon c'est une catastrophe. Merci pour ces éclaircissements déjà, au moins je sais ce que je combats.
J'ai finalement trouvé, il restait un /etc/systemd/system/moneroocean_miner.service. Le monero miner ne semble plus se lancer - je n'en trouve plus de trace dans les logs - mais le problème d'I/O sur mon serveur est toujours là donc fausse joie.
Apache et ssh ne se lancent pas à cause d'une erreur 127 sinon. Si ça se trouve ça n'a même pas de rapport direct avec cette suractivité. Bref c'est un bordel complet, c'est sûrement au delà de mes compétences.
En fait le cron ne se lance même pas, je pense pas pouvoir récupérer mes sources. Faut que je règle le problème ou je perds tout. u_U
Bon bonne nouvelle, j'ai trouvé une option pour que ma partition recovery puisse avoir accès à internet et faire des requêtes (avant ça aucun ping ne marchait). Du coup j'ai pu sauver toutes mes sources en me connectant à un sftp distant, fabuleux. ♡
Reste mes données sql (MariaDb). Quelqu'un sait si je reprends un fichier quelconque et que je le remets sur un autre serveur, je retrouverai mes databases ? Ou c'est plus compliqué ?
Bon j'imagine que je dois récupérer l'ensemble de /var/lib/mysql, je retrouve mes db dedans
Et peut-être les fichiers de configuration de /etc/mysql/mariadb
Je croise les doigts
C'est bon, on peut copier le dossier sur le nouveau serveur.
https://serverfault.com/questions/659048/can-i-copy-the-entire-var-lib-mysql-folder-to-a-different-server-mysql-vs-mar
J'ai tout récupéré, merci à chacun.