Installer le paquet Rkhunter sur un serveur Debian
Par Joël le dans Administration de serveurs. Marqué comme debian, linux, sécurité, sysadmin, tutoriel avec 5 Commentaires
Bonjour tout le monde … ça faisait un bail que je n’avais rien écrit ici. Plus de 2 mois, ce n’est pas très sérieux tout ça ^^ On va donc reprendre un rythme de publication normal car le plaisir d’écrire et de partager avec vous m’a tout simplement manqué !
Je vais donc en profiter pour vous parler d’un paquet que j’utilise depuis un moment sur mon serveur Debian (ma distribution favorite of course).
Ce paquet m’aide à sécuriser mon serveur, ou tout du moins, à effectuer une veille régulière concernant celle-ci. Je voulais vous en parler, mais je n’avais pas pris le temps de le faire … et bien … sachez que c’est chose faite et j’espère que cela vous sera utile !
Petite présentation du paquet :
Rkhunter est un anti-rootkit qui a été initialement développé en 2006 par M. Boelen Handed. L’équipe se chargeant de ce paquet est composée de 3 développeurs. Si vous voulez en savoir plus sur ce paquet, sachez que la page rkhunter.sourceforge.net est le site web officiel du projet RootKit Hunter. Je vous conseille d’aller y faire un tour, on peut y apprendre pas mal de choses.
Donc pour résumé, Rkhunter (pour Rootkit Hunter) est un programme qui permet de détecter la présence de Rootkits, portes dérobées et exploits au sein du système sur lequel il est exécuté.
Son principe de fonctionnement est le suivant :
Il réalise des comparaisons sur les empreintes SHA-256, SHA-512, SHA1 et MD5 de fichiers considérés comme critiques pour le système d’exploitation sur lequel il est exécuté. Ces comparaisons sont réalisées avec les empreintes connus de ces fichiers. Les empreintes sont donc comparés avec des tableaux de hachages qui sont accessibles à partir d’une base de données en ligne.
Rkhunter peut alors détecter les répertoires généralement utilisés par les rootkit, les permissions anormales, les fichiers cachés, les chaînes suspectes dans le noyau (Kernel) d’un système et peut effectuer des tests spécifiques à GNU/Linux et FreeBSD.
Mais … qu’est-ce qu’un rootkit ?!
Pour répondre à cette question rien ne vaut la réponse de notre encyclopédie préférée :
Un rootkit (outil de dissimulation d'activité) est un ensemble de techniques mises en œuvre par un ou plusieurs logiciels, dont le but est d'obtenir et de pérenniser un accès (généralement non autorisé) à un ordinateur de la manière la plus furtive possible, à la différence d'autres logiciels malveillants. Un rootkit peut, par exemple, s'installer dans un autre logiciel, une bibliothèque ou dans le noyau d'un système d'exploitation. La plupart des rootkits servent à installer des logiciels malveillants sur les machines où l'accès est obtenu.
Après ce court extrait Wikipédia, en voici un second que j’ai particulièrement apprécié lire :
Certains fournisseurs de matériels informatiques, tel que Sony, les utilisent pour s'assurer du respect des conditions d'utilisation de leurs produits par leurs clients.
Sympa non ?!
Pour en savoir plus, n’hésitez pas à aller lire la page consacrée aux rootkits sur Wikipédia, vous trouverez le lien direct dans les sources en fin d’article.
Installation du paquet Rkhunter sur son système :
Avant de commencer :
Avant toute chose, si vous utilisez une « ancienne » version de Rkhunter et que vous souhaitez la mettre à jour, Rkhunter <1.4.0> n’étant pas disponible dans les dépôts officiels de Debian, je vous conseille de commencer par supprimer la version que vous utilisez avant d’installer la dernière release (version 1.4.0 mise à jour le 01/05/2012).
Pour cela, rien de plus simple, il vous suffit d’utiliser les commande suivantes :
Pour désinstaller le paquet :
aptitude remove rkhunter
Pour supprimer toutes traces des fichiers de configuration :
aptitude purge rkhunter
Dans le cas où vous préféreriez conserver votre fichier de configuration, vous pouvez lancer l’installateur par défaut. En effet, son principe de fonctionnement est de créer un nouveau fichier de configuration séparé vous permettant de conserver au final celui que vous voulez.
Pour ceux qui n’ont pas peur de mettre les mains dans le cambouis et de refaire from scratch la configuration, il est également possible d’utiliser l’option --overwrite
de l’installateur qui comme vous l’avez compris écrasera le fichier de configuration existant.
--overwrite : Overwrite the existing configuration file. (Default is to create a separate configuration file.)
Si vous êtes prêts :
Maintenant que tout est OK, nous allons installer cet anti-rootkit sur notre système favori.
Pour cela, récupérons le paquet avec la commande suivante :
wget http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.4.0/rkhunter-1.4.0.tar.gz
La dernière version disponible à ce jour est là 1.4.0 mais n’hésitez pas à vérifier sur le site officiel si une nouvelle release n’a pas été publiée avant de réaliser les manipulations que je décris ici =)
Une fois le paquet récupéré, on le décompresse :
tar -vxf rkhunter-1.4.0.tar.gz
On se place ensuite dans le répertoire qui vient d’être créer :
cd rkhunter-1.4.0
Pour obtenir de l’aide concernant le fonctionnement du script d’installation, vous pouvez utiliser la commande :
sh installer.sh --help
La commande suivante vous permettra de savoir dans quels répertoires Rkhunter s’installera par défaut :
sh installer.sh --show
Il est possible de modifier cela avec le paramètre --layout
(pour les utilisateurs expérimentés). N’hésitez pas à utiliser le paramètre --examples
qui vous guidera dans la création des layouts à passer en paramètres à l’installateur.
C’est parti pour une installation « classique » de notre chasseur de rootkits :
sh installer.sh --install
Si vous obtenez un joli message du type "Installation complete"
c’est que tout s’est bien déroulé :)
Rkhunter … comment ça s’utilise ?!
Alors les plus curieux d’entre vous auront forcément « déjà » testé ce que retourne la commande rkhunter, et comme moi, vous êtes sûrement tombés sur ce message d’erreur :
[sublimigeek@XXXXXXX][~]$ rkhunter bash: /usr/bin/rkhunter: Aucun fichier ou dossier de ce type
Ce n’est rien de bien grave, si vous avez lu le résultat de la commande rkhunter --show
avant d’installer le paquet, vous aurez remarqué que l’exécutable ne s’est pas déployé dans le répertoire /usr/bin/
mais dans le répertoire /usr/local/bin/
.
Pour faire appel directement au paquet Rkhunter sans prise de tête, il suffit de créer un lien symbolique pointant sur le paquet dans le répertoire /usr/bin/
, qui comme la nomenclature des systèmes GNU/Linux FHS (ou Filesystem Hierarchy Standard, Structure Hiérarchique Standard) le précise, contient les binaires exécutables en complément du répertoire /bin
qui lui contient l’essentiel des exécutables utiles au système.
Pour cela, il suffit d’exécuter la commande suivante :
ln -s /usr/local/bin/rkhunter /usr/bin/
Vous pouvez maintenant utiliser la commande rkhunter sans avoir à spécifier son emplacement. Un petit rkhunter --version
vous prouvera que vous utilisez bien la dernière release du paquet ce qui est une bonne chose :)
Configurer correctement Rkhunter :
Avant toute chose, nous allons maintenant configurer notre anti-rootkit convenablement. Pour cela, on va d’abord réaliser une sauvegarde du fichier de configuration initiale (au cas où quoi) :
cp /etc/rkhunter.conf /etc/rkhunter.conf.bak
Maintenant, on peut utiliser notre éditeur de texte préféré pour ajuster la configuration de Rkhunter en fonction de nos besoins :
vi /etc/rkhunter.conf
On commence par chercher dans ce fichier la ligne suivante pour la modifier en ajoutant l’adresse mail sur laquelle vous recevrez les rapports générés quotidiennement et/ou les alertes transmises par Rkhunter :
MAIL-ON-WARNING="Utilisateur@VotreNomDeDomane.extension"
On aurait pu modifier la ligne contenant LANGUAGE=en
pour modifier la langue utilisée par Rkhunter (pour ceux qui sont allergiques à l’anglais huhu) mais malheureusement, la commande rkhunter --list languages
qui permet de lister les langues disponibles ne propose pas le français ^^
Par défaut, Rkhunter stocke ses fichiers de logs dans le répertoire /var/log/rkhunter.log/
, si vous souhaitez les déplacer, vous pouvez modifier la ligne suivante :
LOGFILE=/var/log/rkhunter.log
J’ai également modifier la ligne suivante pour modifier sa valeur en la passant à 1.
WHITELISTED_IS_WHITE=1
Ce paramètre permet d’afficher dans les résultat des scans Rkhunter toutes les lignes qui ont été ajoutées à la liste blanche en blanc plutôt qu’en gris. Il ne s’agit ici que d’une préférence personnelle, alors ne modifiez cette valeur qu’en fonction de vos besoins.
Dans le cas où votre configuration SSH autorise les connexions avec l’utilisateur ROOT, pensez à modifier la ligne suivante pour modifier la valeur à 1 :
ALLOW_SSH_ROOT_USER=0
Si votre serveur fait tourner une application qui nécessite d’utiliser un port « inhabituel » et que les scans de Rkhunter vous retourne des faux-positifs, il est possible d’ajouter le ou les ports utilisés dans une liste blanche que Rkhunter prendra en compte.
Pour cela il faut dé-commenter et modifier la ligne suivante afin d’ajouter les valeurs souhaitées :
#PORT_WHITELIST=""
J’ai également décommenté la ligne suivante afin de recevoir des alertes en cas de modifications des informations liées directement au système d’exploitation exécutant Rkhunter.
Si ces alertes vous semble inutile, il vous suffit alors de commenter à nouveau cette ligne ou de basculer sa valeur à 0.
WARN_ON_OS_CHANGE=1
Il y a un nombre assez important de paramètres modifiables et je ne vais pas tous les lister, mais je vous conseille de parcourir la totalité du fichier de configuration pour savoir à quoi vous attendre. Cela reste très instructif et n’oubliez pas de sauvegarder vos modifications une fois terminé :)
Rkhunter … comment ça fonctionne ?!
Bon … nous venons de configurer « aux petits oignons » notre nouveau chasseur de rootkits, c’est bien beau tout ça, mais comment ça fonctionne ?
Voici ce que j’ai compris du fonctionnement et de l’utilité des principales commandes de ce programme, pour obtenir de plus amples informations je ne vous conseille qu’une chose … lire le manuel (RTFM quoi ^^).
• Commande #1 :
rkhunter --propupd
Cette commande permet de créer la première base de données qui sera utilisée pour les futurs scans. Il faut donc être sûr que le système est sain à ce moment précis et avant de créer le référentiel qui sera utilisé pour les prochains scans.
Résultat :
[ Rootkit Hunter version 1.4.0 ] File created: searched for 170 files, found 138
• Commande #2 :
rkhunter --versioncheck
Cette commande permet de vérifier que l’on utilise bien la dernière version du paquet.
Résultat :
[ Rootkit Hunter version 1.4.0 ] Checking rkhunter version... This version : 1.4.0 Latest version: 1.4.0
• Commande #3 :
rkhunter --update
Cette commande permet de mettre à jour la base de données des r00tkits connus par le programme.
Résultat :
[ Rootkit Hunter version 1.4.0 ] Checking rkhunter data files... Checking file mirrors.dat [ No update ] Checking file programs_bad.dat [ No update ] Checking file backdoorports.dat [ No update ] Checking file suspscan.dat [ No update ] Checking file i18n/cn [ No update ] Checking file i18n/de [ No update ] Checking file i18n/en [ No update ] Checking file i18n/zh [ No update ] Checking file i18n/zh.utf8 [ No update ]
• Commande #4 :
rkhunter --checkall (ou --check)
Cette commande permet de démarrer un scan complet du système sur lequelle Rkhunter est installé.
Rkhunter … Trucs & Astuces :
L’utilisation du programme vous retournera OBLIGATOIREMENT un jour ou l’autre un résultat erroné (faux positif), une alerte ou un warning qu’il va falloir prendre en compte afin de mener une enquête et vérifier si oui ou non votre système a été compromis …
Voici une petite astuce qui vous permettra de faire une vérification rapide des fichiers de logs :
cat /var/log/rkhunter.log | grep -i "warning"
Cette commande permet d’afficher à l’écran toutes les lignes du fichier de logs de Rkhunter comprenant le mot « WARNING » sans prendre en compte la case (ie. en majuscule ET en minuscule). Cette commande est pratique et vous évite alors de vous coltiner la lecture complète du fichier de logs.
Une fois les résultats escomptés récupérés, il vous faudra rester patient et ne pas céder à la panique !! En effet, votre système n’est pas forcément compromis, il se peut également que ces « warning » soient des faux-positifs et ils peuvent être assez courants. Je vous conseille alors de faire de nombreuses recherches sur Google la Toile pour savoir de quoi il en retourne.
Traiter les faux-positifs récurrents :
En cas de fausses détections positives récurrentes sur des répertoires ou fichiers existants QUE VOUS SAVEZ SAINS, il est possible d’éditer le fichier /etc/rkhunter.conf
afin de les ajouter à la liste des éléments autorisés :
Voici un exemple du fichier de configuration d’une de mes machines :
ALLOWHIDDENDIR=/dev/.udev ALLOWHIDDENDIR=/dev/.static ALLOWHIDDENDIR=/dev/.mdadm ALLOWHIDDENDIR=/dev/.initramfs
Avant toute modification des listes blanches de Rkhunter, il faut bien entendu vérifier que ces paquets soient installés sur votre machine avant de les ajouter en liste blanche. Ce serait un comble d’autoriser un programme contenant une backdoor ou autres …
N’hésitez pas pour cela à utiliser la commande whereis
qui vous permet de localiser dans votre système de fichiers les programmes recherchés. Faites ensuite une recherche sur leur fonctionnement et vérifiez si leur présence est nécessaire ou non sur votre serveur.
Exemples :
whereis udev whereis initramfs-tools
Il est également possible d’aller dans le répertoire /etc/init.d/
afin de vérifier si les fichiers y sont présents ou non comme par exemple : /etc/init.d/mdam
.
Sur ma Debian Squeeze avec un rkhunter en version 1.3.6, un faux positif apparaît régulièrement dans les rapports par mail sur /etc/init.d/hdparm
.
Pour le désactiver, il suffit d’ajouter la ligne suivante dans le fichier de configuration :
RTKT_FILE_WHITELIST="/etc/init.d/hdparm"
De la même façon, pour limiter les faux positifs sur le répertoire /dev/shm
, il suffit d’ajouter la ligne suivante :
ALLOWDEVFILE=/dev/shm/*
L’ajout de ‘os_specific’ dans le fichier de configuration permet de désactiver les warnings sur le répertoire /proc/modules
manquants :
DISABLE_TESTS="suspscan hidden_procs deleted_files packet_cap_apps apps os_specific"
Ces quelques bidouilles viennent de mon retour d’expérience, libre à vous de les prendre en compte ou non, cela dépendra de vos machines.
Astuces supplémentaires :
Vous l’aurez peut être remarqué, mais les logs de notre chasseur de r00tkit ne sont pas super causants … Du coup, si vous souhaitez en savoir un peu plus, je vous conseille de réaliser la modification suivante dans votre fichier de conf :
APPEND_LOG=0 en passant la valeur à 1
Allez je vous laisse vous amuser, je m’en vais terminer le prochain billet que je vous réserve histoire de rattraper un peu mon retard de ces derniers temps :)
Mes « marque TA page » glanés lors de cette chasse aux r00tkits :
– Pour aller plus loin sur la configuration du paquet pour une distribution Debian : Biapy – Rkhunter
– Pour les allergiques à la ligne de commande, un projet permettant l’utilisation de Rkhunter via une interface graphique : VisualHunter (je ne l’ai pas testé et le projet semble arrêté depuis fin 2009)
Source utilisée pour la rédaction de l’article :
– La fameuse encyclopédie Wikipédia : Rootkit et Rkhunter
– Un bon vieux README à l’ancienne : Rkhunter readme
– Et le wiki et la FAQ du paquet Rkhunter sur sourceforge.net : Dépôt Sourceforge.net Rkhunter
Sources des images utilisées en illustrations :
– L’illustration utilisée dans ce billet est l’expression de mes maigres compétences en GIMP ^^
Ah, enfin ! Content de voir un peu d’animation sur ce site. ^^
Salut Hebert,
Merci pour ton commentaire, j’avoue que cela faisait un petit moment que je n’avais pas publié, mais ne t’inquiètes pas, je compte bien m’y remettre bon de bon ^^
C’est juste que l’IRL m’a un peu trop occupé ces derniers temps mais tout est OK maintenant, d’ailleurs, le prochain billet est déjà en cours de rédaction !
@+
Et une astuce supplémentaire (pardonne moi si elle y’est déjà, c’est que j’ai mal lu :D):
vim /etc/apt/apt.conf
Copiez-Collez:
DPkg
{
Post-Invoke {« rkhunter –propupdate »};
};
Comme ça a chaque apt-get upgrade ou dist-upgrade, la mise à jour de la BDD sera automatiquement réalisée et ça évite le mail du lendemain avec une tonne de fichiers qui on bougés car on a oublié de lancer la commande à la main :)
Merci Diablotin pour le partage de cette astuce que je ne connaissais pas !
Je vais regarder cela de plus près et en profiter pour mettre le billet à jour du coup :D
PS : ton cv en ligne est plutôt sympa ;)
Je pose la question con : je suis un affreux pirate, et je viens de craquer la machine avec rkhunter dessus. Qu’est ce qui m’empêche d’aller modifier la base de données rkhunter, pour faire croire que les logiciels que je viens de modifier sont légitimes ? La doc dit que les empreintes sont en SHA256, donc faciles à produire, Et c’est d’autant plus vrai que la base elle-même est stockée en texte dans /var/lib/rkhunter/db/rkhunter.dat…
Ça manque clairement de crypto tout ça, et surtout il manque la possibilité d’envoyer par email les empreintes des fichiers, afin de pouvoir faire la comparaison sur une machine externe, non compromise. Dans ce sens, une logique client/serveur serait bien plus intègre sur le fond.
Ma conclusion est que rkhunter est un début de solution pour assurer l’intégrité de certains fichiers par trop sensibles, mais dans son fonctionnement actuel, il est bien trop léger pour le « vendre » en outil de sécurité à part entière.