PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Sécurisez vos systèmes Linux avec RKhunter

mardi 9 février 2016 à 11:20

I. Présentation de RKhunter

Dans ce tutoriel, nous allons étudier et prendre en main un outil de sécurisation des systèmes UNIX nommé RKhunter. RKhunter est basiquement un chasseur de rootkit mais remplit également des missions complémentaires.

Pour définir brièvement ce qu’est un rootkit, il s’agit d’un petit programme voire d’une portion de code dans un programme qui va permettre la dissimulation d’un malware. Un rootkit désigne initialement la partie d’un malware qui permet de le dissimuler, de cacher sa présence aux yeux d’un système ou d’un antivirus. Dans leur fonctionnement initial, les rootkits s’implantaient dans les programmes existant afin de modifier leur exécution habituelle, mais sans perturber leur fonctionnement global.

Le résultat final de l’intégration d’un rootkit est donc que le binaire/exécutable du programme est modifié, ce qui peut se voir lorsque l’on compare son hash avant/après infection, mais que son exécution et son comportement global ne changent quasiment pas, ce qui le rend très discret.

Pour plus d’informations à propos des rootkit et leur fonctionnement, je vous oriente vers cet article que j’ai écrit sur mon blog : Mais c’est quoi un rootkit ?

Bref, RKhunter va donc nous aider à scanner le système pour trouver les rootkits présents sur celui-ci, mais comment ?

Leur rôle est par définition de se cacher à la perfection.  J’ai indiqué plus haut que lorsqu’un binaire/programme est modifié, son hash change également. Le hash étant, entre autres, conçu pour vérifier l’empreinte exacte d’une chaîne de caractères/ d’un fichier, un seul changement, même mineur, produit un hash complètement différent. RKhunter va donc comparer les empreintes (chaîne de caractères produite lors d’une opération de hashage) des exécutables connus (exemple “cd“, “ls“, “bash“, etc..) de notre système avec une base de hash en ligne. Ainsi, si l’empreinte de notre binaire “bash” , par exemple, diffère de celui stocké dans la base de données en ligne, alors il a probablement été infecté par un rootkit.

Outre ce fonctionnement, RKhunter va également partir en chasse de tout comportement suspect, des comportements susceptibles d’être le fruit d’une infection, par exemple :

Voici une liste avec des explications détaillées de tous les scans effectués par RKhunter : https://www.rootkit.nl/articles/rootkit_scanning_techniques.html

Note : RKhunter se base sur unhide, outil d’investigation sous Linux/Windows qui permet de détecter les processus infectés et les flux TCP/UDP cachés (en écoute, mais non visible par les processus de diagnostique habituels).

Passons à l’action ! Ce tutoriel se déroule sur une Debian 8.3 avec la version 1.4.2 de RKhunter

II. Installation  et prise en main de RKHunter

Pour installer RKhunter, rien de plus simple :

apt-get update
apt-get install rkhunter

Par défaut, la configuration se situe dans le fichier /etc/hunter.conf

Lorsque RKhunter est installé, il contient donc une base de données des signatures de malware, des ports suspects, des versions de programmes obsolètes et vulnérables, etc.

Toutes ces informations sont dans des fichiers .dat qui sont positionnés dans /var/lib/rkhunter/db, voyez plutôt :

rkhunter-linux-securisation-01

Fichiers de base de données .dat utilisés par RKhunter

Par exemple dans le fichier /var/lib/rkhunter/db/backdoorports.dat, nous trouverons un ensemble de ports souvent utilisés par des backdoors connues :

rkhunter-linux-securisation-02

Contenu de la liste des ports backdoors vérifiés par RKhunter

Également dans le fichier /var/lib/rkhunter/db/programes_bad.dat, nous trouverons toutes les versions obsolètes de différents programmes tel que apache, php ou encore openssl :

rkhunter-linux-securisation-03
Pour que RKhunter soit à jour et se mette en phase avec les dernières informations, il peut être utile de fréquemment exécuter un update de ces différentes bases d’informations. Comme précisé plus haut, cette mise à jour s’effectue en se basant sur des informations de la communauté. Pour effectuer cette mise à jour, il faut utiliser la commande suivante :

rkhunter --update

RKhunter va donc chercher à savoir s’il est à jour pour chacun de ces fichiers et le mettre à jour si ce n’est pas le cas.

Note : Pour une utilisation optimale et sécurisée, il est recommandé de mettre à jour RKhunter fréquemment et automatiquement,  par exemple en exécutant une tâche cron toutes les nuits, la mise à jour ne prenant que quelques secondes..

Dans sa configuration par défaut, RKhunter est configuré pour effectuer tous les test dont il est capables sauf :

Les tests activés et désactivés pouvant être gérés aux lignes 359 et 360 du fichier de configuration :

rkhunter-linux-securisation-04
La configuration de RKhunter peut être très détaillée, nous pouvons pas exemple préciser quelle base de données nous souhaitons utiliser, quels sont les processus ou fichiers à écarter de notre analyse (au travers un système de liste blanche), s’adapter à des configurations customisées en précisant, par exemple, la position du fichier /etc/shadow s’il n’est pas à son emplacement par défaut ,etc.

Note : Après chaque modification, je vous conseille d’utiliser la commande “rkhunter -C” qui permet de vérifier la validité de la configuration.

Sachez néanmoins que la configuration par défaut est tout à fait suffisante pour débuter notre analyse du système, n’oubliez pas de mettre à jour vos base avant via la commande exposée plus haut. Une fois cela fait, il ne nous reste qu’à utiliser la commande suivante :

rkhunter -c

Cette commande, avec l’option “-c” pour “check“, va donc dérouler tous les tests et vérifications demandés dans le fichier de configuration. Voici quelques exemples de sortie :

rkhunter-linux-securisation-05

Sortie d’une analyse RKhunter

A gauche, nous pouvons voir que RKhunter vérifie les commandes basiques du systèmes UNIX afin de valider que leurs hash correspond avec la base de données de hash récupérée. Cela permettra notamment de détecter la présence d’un rootkit dans l’une de ces commandes. A droite, nous pouvons voir que RKhunter vérifie la présence de la signature des malwares connus dans notre système, à la manière d’un antivirus sous Windows.

rkhunter-linux-securisation-06

Sortie d’une analyse RKhunter

A gauche, RKhunter vérifier le paramétrage standard de notre système, il m’alerte par exemple du fait que la connexion SSH via root soit autorisée dans ma configuration SSH. A droite, nous avons le sommaire des recherches et vérifications faites par RKhunter.

Notez que si les bonnes nouvelles ne vous font ni chaud ni froid, on peut tout à fait les exclure pour n’afficher que les alertes et les points importants avec l’option “–rwo” (pour “report warnings only”) :

rkhunter -c --rwo

III. Automatisation

En tant qu’administrateur système ou RSSI très occupé, vous n’aurez probablement jamais le temps d’aller exécuter manuellement votre check RKhunter sur tous vos serveurs tous les soirs. C’est pour cette raison que je recommande une automatisation de cette vérification. Une des fonctionnalités intéressante de RKhunter est l’envoi du rapport de vérification via mail, ajoutez à cela la petite option qui va bien permettant de n’envoyer un rapport que si une erreur est trouvée, et le tour est joué !

Pour une exécution automatique de RKhunter, je recommande d’aller à la ligne 133 du fichier de configuration /etc/rkhutner.conf pour spécifier la ou les adresse(s) de(s) destinataire(s) du mail. Un peu plus bas, la ligne 144 vous permettra de régler l’objet de votre mail et la commande à utiliser. Notez que l’objet peut être variabilisé avec la variable ${HOST_NAME}, pratique si vous mettez RKhunter sur tous vos serveur (ce que vous ferez bien sûr ! :) )

Pour automatiser cette tâche, rien de plus simple, en tant que l’utilisateur root, exécutez la commande suivante :

crontab -e

Ajoutez ensuite la ligne suivante à la fin de votre configuration crontab pour faire tourner RKhunter toutes les nuits  :

00 0 * * * rkhunter -c

Avec cette commande, les vérifications de RKhunter seront effectuées toutes les nuits et un rapport vous sera envoyé. Pour ne pas être débordé par les mails, vous pouvez ajouter l’option “–rwo” pour n’envoyer un mail que si des “warnings” sont présents.

A noter que toutes les informations générées lors des vérifications manuelles ou automatiques peuvent être retrouvées dans le fichier de logs /var/log/rkhunter.log de votre systèmes UNIX.

N’hésitez pas à réagir dans les commentaires où à utiliser notre forum si vous avez des questions ou des remarques ! :)