Aller au contenu
Outils medium

rkhunter : détecter rootkits et backdoors sur Linux

12 min de lecture

rkhunter (Rootkit Hunter) est un scanner de sécurité Linux qui détecte les rootkits, les backdoors et les modifications suspectes de fichiers système. Un rootkit est un logiciel malveillant qui s'infiltre profondément dans le système pour échapper à la détection et donner un accès total à un attaquant. rkhunter vérifie l'intégrité des fichiers critiques et alerte au moindre changement anormal.

Ce guide s'adresse aux administrateurs de serveurs Linux. Vous allez installer rkhunter, créer une baseline de référence, lancer une analyse, puis interpréter les avertissements et écarter les faux positifs.

  • Installer rkhunter depuis le dépôt de votre distribution.
  • Générer une baseline des propriétés des fichiers système.
  • Lancer une analyse complète et n'afficher que les avertissements.
  • Interpréter les alertes (fichiers modifiés, rootkits, SSH).
  • Écarter les faux positifs via la liste blanche.

rkhunter renforce la sécurité d'un serveur en surveillant ce qui échappe aux outils classiques. Au-delà de la chasse aux rootkits, il analyse les permissions des fichiers sensibles, les configurations réseau et SSH, et les variables d'environnement. C'est une couche de détection d'intrusion simple à mettre en place, complémentaire d'un pare-feu et d'un outil comme Lynis.

Le plus sûr est d'installer rkhunter depuis le dépôt signé de votre distribution, qui fournit la version upstream (1.4.6) avec les correctifs de sécurité de l'éditeur.

Fenêtre de terminal
# Debian / Ubuntu
sudo apt update && sudo apt install rkhunter
# Fedora / RHEL / Rocky / Alma
sudo dnf install rkhunter

Vérifiez l'installation et l'existence d'une mise à jour éventuelle :

Fenêtre de terminal
sudo rkhunter --versioncheck

Mettez ensuite à jour les bases de signatures de rootkits et d'anomalies :

Fenêtre de terminal
sudo rkhunter --update

Pour permettre à RKHunter de détecter les modifications des fichiers système, vous devez générer un fichier de référence. Cela crée une base de données contenant les propriétés actuelles des fichiers critiques.

Fenêtre de terminal
sudo rkhunter --propupd

Le fichier principal de configuration, /etc/rkhunter.conf, contient des options qui permettent d’adapter le comportement de l’outil à vos besoins.

Voici quelques paramètres :

  • UPDATE_MIRRORS=1
    • Active les mises à jour automatiques des miroirs.
  • DB_UPDATE=1
    • Permet de mettre à jour la base de données utilisée pour les vérifications.
  • ALLOWHIDDENDIR=/chemin/vers/repertoire
    • Autorise un répertoire caché spécifique (exemple : /etc/.java).
  • ALLOWHIDDENFILE=/chemin/vers/fichier
    • Autorise un fichier caché spécifique (exemple : /etc/.myconfig).
  • SCRIPTWHITELIST=/chemin/vers/script
    • Ajoute un script à la liste blanche pour éviter les alertes (exemple : /usr/bin/which).
  • DISABLE_TESTS=<liste_de_tests>
    • Désactive certains tests spécifiques, comme suspscan (analyse des fichiers suspects).
  • PORT_WHITELIST="22 80 443"
    • Spécifie les ports réseau à autoriser, pour éviter des avertissements inutiles.
  • ALLOW_SSH_ROOT_USER=0
    • Signale si l’utilisateur root est autorisé à se connecter via SSH.
  • ALLOW_SSH_PROT_V1=0
    • Désactive les alertes si le protocole SSH v1 est utilisé.

Maintenant que rkhunter est installé et à jour, il est temps de le mettre au travail : lancer une analyse complète du système et interpréter ses résultats.

La commande la plus courante pour utiliser RKHunter est :

Fenêtre de terminal
sudo rkhunter --check

Cette commande effectue une vérification complète de votre système. Voici ce qui se passe :

  • Examen des fichiers système critiques, comme /etc/passwd et /etc/shadow.
  • Recherche de rootkits connus.
  • Vérification des permissions des fichiers importants.
  • Analyse des ports réseau ouverts pour détecter des comportements suspects.

Pendant l’analyse, vous verrez des messages détaillés apparaître à l’écran. Chaque vérification est marquée comme :

  • [OK] si tout est normal.
  • [Warning] si quelque chose semble suspect.

Lorsque RKHunter détecte un problème potentiel, il vous le signale avec un avertissement. Pour réduire le nombre d’avertissements non pertinents (faux positifs), utilisez l’option suivante lors de l’analyse :

Fenêtre de terminal
sudo rkhunter --report-warnings-only --check

Le flag --report-warnings-only permet de n’afficher que les avertissements importants.

Exemple de sortie de RKHunter :

Fenêtre de terminal
Warning: The command '/usr/sbin/adduser' has been replaced by a script: /usr/sbin/adduser: Perl script text executable
Warning: The command '/usr/bin/egrep' has been replaced by a script: /usr/bin/egrep: POSIX shell script, ASCII text executable
Warning: The command '/usr/bin/fgrep' has been replaced by a script: /usr/bin/fgrep: POSIX shell script, ASCII text executable
Warning: The command '/usr/bin/ldd' has been replaced by a script: /usr/bin/ldd: Bourne-Again shell script, ASCII text executable
Warning: The command '/usr/bin/lwp-request' has been replaced by a script: /usr/bin/lwp-request: Perl script text executable
Warning: The command '/usr/bin/which.debianutils' has been replaced by a script: /usr/bin/which.debianutils: POSIX shell script, ASCII text executable
Warning: The SSH configuration option 'PermitRootLogin' has not been set.
The default value may be 'yes', to allow root access.
Warning: The SSH configuration option 'Protocol' has not been set.
The default value may be '2,1', to allow the use of protocol version 1.
Warning: Hidden directory found: /etc/.java
Warning: Hidden file found: /etc/.resolv.conf.systemd-resolved.bak: ASCII text
Warning: Hidden file found: /etc/.updated: ASCII text

Ces avertissements générés par RKHunter montrent des points potentiellement préoccupants sur votre système. Analysons ensemble ce qu’ils signifient et comment y répondre.

Après avoir lancé une analyse avec RKHunter, vous obtenez un rapport détaillé qui met en lumière les éventuels problèmes détectés. Comprendre et interpréter ces résultats est une étape cruciale pour déterminer si votre système est en sécurité ou non.

Par défaut, le rapport d’analyse est enregistré dans ce fichier log :

/var/log/rkhunter.log

Pour consulter rapidement son contenu, utilisez une des commandes suivantes :

Fenêtre de terminal
sudo cat /var/log/rkhunter.log # Affiche tout le fichier
sudo less /var/log/rkhunter.log # Pour naviguer plus facilement
sudo grep Warning /var/log/rkhunter.log # Filtre les avertissements

Le rapport est organisé en sections. Voici un aperçu des éléments clés et ce qu’ils signifient :

Examine les fichiers essentiels comme /etc/passwd, /etc/shadow et autres. Exemple d’avertissement :

Warning: File properties have changed: /etc/passwd
  • Explication : Cela indique que les propriétés (permissions, taille, hash) du fichier ont été modifiées.

  • Action : Si vous n’avez pas effectué de mise à jour ou de modification intentionnelle, investiguez immédiatement :

    Fenêtre de terminal
    ls -l /etc/passwd

    Vérifiez également l’historique des modifications avec auditd ou des outils comme grep.

Cette section signale la présence potentielle de rootkits connus. Exemple :

Warning: Possible rootkit detected: X
  • Explication : Cela signifie que des traces ou comportements associés à un rootkit spécifique ont été détectés.

  • Action : Vérifiez manuellement les fichiers ou processus suspects. Par exemple, pour un fichier suspect :

    Fenêtre de terminal
    file /chemin/vers/fichier_suspect

    Supprimez-le uniquement si vous êtes sûr qu’il est malveillant.

Vérifie si des fichiers ou répertoires sensibles ont des permissions trop permissives. Exemple :

Warning: Suspicious file permissions: /usr/bin/sudo
  • Explication : Cela indique que des fichiers exécutables critiques sont mal configurés.

  • Action : Corrigez les permissions :

    Fenêtre de terminal
    sudo chmod 4755 /usr/bin/sudo

Certaines commandes standard peuvent être remplacées par des scripts ou des exécutables suspects. Exemple :

Warning: The command '/usr/bin/which' has been replaced by a script.
  • Explication : Les commandes remplacées peuvent être légitimes (dépendant de la distribution), mais cela nécessite une vérification.

  • Action : Identifiez le type du fichier :

    Fenêtre de terminal
    file /usr/bin/which

    Comparez-le avec une version saine ou réinstallez le paquet contenant cette commande :

    Fenêtre de terminal
    sudo apt reinstall debianutils # Exemple pour Ubuntu/Debian

Si vous ne maitrisez pas le gestionnaire de paquets apt, je vous recommande de lire mon guide sur apt pour mieux comprendre son fonctionnement.

Analyse les paramètres de sécurité dans /etc/ssh/sshd_config. Exemple :

Warning: The SSH configuration option 'PermitRootLogin' has not been set.
  • Explication : Si des paramètres sensibles comme PermitRootLogin ou Protocol ne sont pas explicitement définis, cela peut ouvrir des vulnérabilités.

  • Action : Configurez le fichier SSH :

    Fenêtre de terminal
    sudo nano /etc/ssh/sshd_config

    Ajoutez ou modifiez les lignes suivantes :

    PermitRootLogin no
    Protocol 2

Certains avertissements de RKHunter peuvent être des faux positifs, notamment sur des fichiers ou scripts modifiés par des mises à jour système ou des outils légitimes. Exemple :

Warning: Hidden directory found: /etc/.java
  • Explication : Les fichiers ou répertoires cachés ne sont pas toujours malveillants. Par exemple, /etc/.java est souvent créé par des environnements Java.

  • Action : Inspectez leur contenu pour confirmer leur légitimité :

    Fenêtre de terminal
    ls -la /etc/.java

Si vous êtes sûr qu’il s’agit d’un faux positif, ajoutez ces éléments à la liste blanche dans /etc/rkhunter.conf :

Fenêtre de terminal
ALLOWHIDDENDIR=/etc/.java

Une réinstallation devient nécessaire lorsqu’un système montre des signes clairs de compromission. Si RKHunter détecte un rootkit ou des altérations inexpliquées sur des fichiers critiques comme /etc/passwd ou /usr/bin/sudo, cela peut indiquer une attaque. Une activité réseau suspecte ou des modifications dans des configurations sensibles, comme SSH, sont également des signaux d’alerte. Avant de réinstaller, sauvegardez uniquement les données essentielles et les journaux pour enquête, sans inclure de binaires potentiellement compromis. Préparez une ISO officielle et réinstallez proprement. Après l’installation, effectuez une analyse initiale avec RKHunter, appliquez les mises à jour, configurez la sécurité, changez les mots de passe et installez des outils comme un pare-feu ou Fail2Ban. Une réinstallation est souvent la meilleure solution pour garantir la fiabilité et la sécurité d’un système compromis.

  1. rkhunter détecte rootkits, backdoors et modifications suspectes de fichiers système.
  2. Installez-le via le dépôt signé de la distribution (l'upstream est figé à la 1.4.6).
  3. --propupd crée la baseline, à lancer uniquement sur un système sain.
  4. --check --report-warnings-only lance l'analyse et n'affiche que les alertes.
  5. Beaucoup d'avertissements sont des faux positifs : vérifiez, puis mettez en liste blanche dans /etc/rkhunter.conf.
  6. En cas de compromission avérée, la réinstallation propre reste la solution la plus sûre.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn