Hier, j'ai été confronté à un problème de taille ! J'ai eu la mauvaise surprise de détecter une activité anormale sur l'un de mes serveurs Web sous Ubuntu. Un Malware était présent sur mon serveur et avait modifié le code javascript de certains sites présent dans mon dossier www.

Mais ce n'est pas tout, après avoir modifié les fichiers javascript dans le but de rediriger l'internaute sur des sites publicitaires et/ou infectés, le malware utilisait également mon serveur afin d'effectuer des attaques par déni de service.

 

Savoir si l'on est infecté

Avant de paniquer, il faut vérifier si il y a des activités suspectes. Dans mon cas, je l'ai vu de plusieurs manières :

  • Certains des sites hébergés avaient une redirection vers des sites publicitaires ou infectés par d'autres virus.
  • Google m'a informé que mon site avait peut-être été piraté.
  • Les statistiques de ma bande passante avait augmenté de façon significative.

Statistique de l'évolution de ma bande passante.

Trouver la source du problème

Je n'aime pas être infecté, cela veut dire qu'il y a une faille de sécurité sur mon serveur ou dans le code de l'un de mes sites internet.

Plusieurs moyens m'ont permis de remonter à la source de l'infection. Voici comment j'ai procédé :

  1. Regarder le jour ou le premier pic de la bande passante est apparu.
  2. Se rendre dans le dossier "www" et rechercher les fichiers ayant été créé ou modifié à cette date.

Et voilà ! j'ai trouvé la cause ! Il s'agit en faite d'un Wordpress pour une association que j'héberge gratuitement et qui n'est pas maintenu à jour (ma bonté me perdra rah ! :) ).

Résoudre le problème et supprimer les fichiers infectés

Pour ce faire, après plusieurs test logiciel, je vous propose le  plus efficace en la matière, à savoir Linux Malware Detect (LMD) plus communément appelé Maldet. Il s'agit d'un utilitaire Open-Source pour scanner le serveur et débusquer les Malwares.

Installer Maldet

Connecté vous en SSH avec l'utilisateur Root ou un autre compte ayant les permissions root.

Téléchargez le code source de la dernière version stable de Maldet avec la commande ci-après.

 sudo wget http://www.rfxn.com/downloads/maldetect-current.tar.gz

 

Décompressez l'archive.

  sudo tar -xvf maldetect-current.tar.gz

 

Maintenant, un dossier est créé, celui-ci porte le nom maldetect et sa version. Dans mon cas la version est 1.6.1.

 cd maldetect-1.6.1

 

Vérifiez si un fichier nommé install.sh est bien présent et exécutez-le avec cette commande.

sudo ./install.sh

Voilà ! l'installation est terminée ! On va pouvoir passer à la configuration.

Configuration de Maldetect

Afin d'effectuer le paramétrage, il va vous falloir éditer ce fichier :

sudo nano /usr/local/maldetect/conf.maldet

 

Voici les principaux paramètres à modifier (selon vos souhaits) :

  • email_alert : Si vous souhaitez être alerté par email dès qu'un fichier dangereux est détecté, vous devez le mettre à 1.
  • email_addr : L'adresse e-mail qui recevra les alertes. A changer uniquement si email_alert est à 1.
  • quarantine_hits : La valeur par défaut est 0. Je vous recommande grandement de la modifier à 1. Cela permettra à Maldetect de placer les fichiers infectés en quarantaine.
  • quarantine_clean : Dépend de quarantine_hits. Si celle-ci est activé (à 1) alors mettre ce paramètre également à 1 permettra de supprimer les fichiers en quarantaine. Laissez à 0 si vous souhaitez vérifier les fichiers avant de les supprimer (manuellement).
  • scan_ignore_root : défini à 1 par défaut. Je vous conseille grandement de le passer à 0 car en l'état actuelle, le scan va ignorer tous les fichiers créé par l'utilisateur root. Donc si vos identifiants SSH ont été compromis, le scan ne détectera pas les fichiers infectés.

Une fois les changements souhaités effectués, vous pouvez sauvegarder et fermer le fichier.

Lancement du scan et options

Le scan basique

sudo maldet --scan-all /var/www/

Cette commande va lancer un scan complet dans le chemin /var/www/ (changez-le avec celui que vous souhaitez analyser si différent).

Exclusion de fichier ou dossier

Le scan peut être particulièrement lent et décourager certain. Ce qui fut mon cas ! En excluant certain type de fichier j'ai pu diviser par 10 le temps de scan. Comment j'ai fait ? c'est simple, dans mon cas je savais que les principaux fichiers infectés étaient des fichiers PHP et JS. Alors j'ai exclu une bonne série d'extension.

Vous pouvez le faire en éditant le fichier /usr/local/maldetect/ignore_file_ext. Voici le mien :

.png
.jpg
.gif
.xml
.yml
.css
.html
.cache
.txt
.rb

Pour exclure des dossiers il faudra éditer le fichier /usr/local/maldetect/ignore_paths (ajouter un dossier par ligne).

La quarantaine

Quand quarantine_clean a comme valeur 1, en plus de déplacer les fichiers infectés en quarantaine, maldet essaie également de les supprimer. Si vous avez lancé le scan alors que la valeur n'est pas à 1 ou que quarantaine_hits est à 0, vous devrez faire le nécessaire vous-même.

Donc il vous faudra afficher le rapport afin d'avoir les chemins des fichiers infectés. Pour ce faire entrez cette commande :

sudo maldet –clean SCANID

Remplacez SCANID avec le numéro de scan que Maldet vous a retourné lorsque le scan c'est terminé.

 

Restaurer un fichier

Si vous souhaitez restaurer un fichier placé en quarantaine, vous pouvez le faire directement avec la ligne suivante :

  sudo maldet –restore FILENAME

 

Wildcard scan

Vous pouvez également effectuer un scan en mentionnant un Wildcard. Avec Maldet le Wildcard est le point d'interrogation. La ligne suivante va scanner tous les dossiers dans home ayant à l'intérieur le répertoire public_html (et uniquement ce répertoire sera scanné).

sudo maldet --scan-all /home/?/public_html/

 

Scan récent

Vous pouvez également voir tous les scan ayant été effectué récemment. Par exemple pour voir tous les scan des 7 derniers jours, il vous faudra rentrer cette commande :

 sudo maldet --scan-recent /var/www/ 7