Installation et configuration de RKHunter pour chercher les modifications des fichiers critiques grâce à des empreintes prises régulièrement et chercher la présence de rootkits/malwares connus. Il vérifie aussi les processus ayant des fichiers supprimés ouverts, les binaires qui sont des scripts, … Cet outil aide à détecter la compromission d’un système.

Présentation de RKHunter

rkhunter signifie Root Kit Hunter. Un Rootkit est un ensemble de programmes installés par des pirates lorsqu’ils parviennent à pénétrer un système. Il peut aussi être installé par des virus. Ces programmes ont pour but d’envoyer des informations depuis le système infecté vers les machines du pirate ou d’exécuter des commandes arbitraires au nom du propriétaire. RKHunter dispose d’une base de données des malwares connus et recherche leurs traces dans le système. Il prend aussi une empreinte des fichiers systèmes critiques pour détecter d’éventuelles modifications. La prise d’empreinte est automatisée avec apt lors de l’installation, la mise à jour ou la suppression de paquetages. Il envoie des notifications aux administrateurs par courriel lorsque quelquechose a été détecté. J’utilise RKHunter principalement pour la base de rootkits, j’installerai dans le prochain article un autre outil, tripwire pour la détection des modifications de fichier.

Pré-requis

Cet article ne dépend que de la série d’articles que la préparation générique d’une machine.

Installation de RKHunter

Je commence par donner à debconf les réponses aux questions qui seront posées par le paquetage lors de son installation. Je souhaite que rkhunter soit exécuté tous les jours pour vérifier mon système, je souhaite aussi qu’il mette à jour sa base de vulnérabilités automatiquement. Enfin, je veux qu’il soit exécuté automatiquement lors de l’installation, la suppression ou la mise à jour de paquetages afin de prendre une empreinte des fichiers supposés propres. Cette dernière étape est potentiellement dangereuse si vous utilisez apt, il déclenchera automatiquement une nouvelle photo des fichiers et légitimera les fichiers présents sur le disque. C’est mon choix, pour mon architecture, et je sais ce que je fais sur mes serveur en connaissance des risques. Assurez-vous de bien comprendre les conséquences avant de le faire vous-même.

echo 'rkhunter rkhunter/cron_daily_run boolean true' | debconf-set-selections
echo 'rkhunter rkhunter/cron_db_update boolean true' | debconf-set-selections
echo 'rkhunter rkhunter/apt_autogen boolean true' | debconf-set-selections
apt-get install -y rkhunter

Configuration

Notifications par courriel

RKHunter va envoyer une notification par courriel lorsque quelquechose se passe mal durant la vérification du système ou la mise à jour de la base de vulnérabilités. Ainsi, il faut configurer l’adresse électronique et la commande à utiliser pour envoyer ces messages. Dans tous les cas, il envoie aussi le détail par courriel dans un autre message.

sed -i 's/#\?MAIL-ON-WARNING=.*/#MAIL-ON-WARNING=root@localhost/' /etc/rkhunter.conf
sed -i 's/#\?MAIL_CMD=.*"/MAIL_CMD=mail -s "[rkhunter] Warnings found for \${HOST_NAME}"/' /etc/rkhunter.conf

Mise à jour de la base

RKHunter a besoin de maintenir sa base de connaissances à jour de temps en temps. J’ai configuré l’outil de téléchargement à utiliser, l’activation des notifications et j’ai activé la recherche de mises à jour.

sed -i 's/#\?WEB_CMD=.*/WEB_CMD=wget/' /etc/rkhunter.conf
sed -i 's/DB_UPDATE_EMAIL=".*"/DB_UPDATE_EMAIL="true"/' /etc/default/rkhunter
sed -i 's/#\?UPDATE_MIRRORS=.*/UPDATE_MIRRORS=1/' /etc/rkhunter.conf
sed -i 's/#\?MIRRORS_MODE=.*/MIRRORS_MODE=0/' /etc/rkhunter.conf

Filtrage des faux positifs

Après quelques temps de test en environnement sécurisé, j’ai pu lister les alertes relative à une activité normale. J’ajuste la configuration pour indiquer à rkhunter que ces alertes sont normales et ne doivent pas déclencher d’avertissements. La dernière ligne s’explique car j’accepte les connexions directe au compte root, ce que vous ne faites peut-être pas.

echo 'ALLOWPROCDELFILE=/usr/sbin/cron' >> /etc/rkhunter.conf
echo 'ALLOWPROCDELFILE=/usr/bin/dash' >> /etc/rkhunter.conf
echo 'ALLOWPROCDELFILE=/usr/bin/run-parts' >> /etc/rkhunter.conf
echo 'SCRIPTWHITELIST=/usr/bin/egrep' >> /etc/rkhunter.conf
echo 'SCRIPTWHITELIST=/usr/bin/fgrep' >> /etc/rkhunter.conf
echo 'SCRIPTWHITELIST=/usr/bin/which' >> /etc/rkhunter.conf
echo 'PORT_PATH_WHITELIST=/usr/sbin/portsentry' >> /etc/rkhunter.conf
echo 'ALLOW_SSH_ROOT_USER=prohibit-password' >> /etc/rkhunter.conf

Divers

J’ai aussi décommenté la ligne concernant dhclient car j’utilise cet outil dans certains cas, mais cela dépend de votre configuration, gardez-la commentée si vous n’utilisez pas dhclient. J’active la suite de tests complète et la vérification de la version du protocole SSH : la v1 doit être désactivée et le rester.

sed -i 's~#\?ALLOWPROCLISTEN=/sbin/dhclient~ALLOWPROCLISTEN=/sbin/dhclient~' /etc/rkhunter.conf
sed -i 's/^DISABLE_TESTS/#&/' /etc/rkhunter.conf
sed -i 's/^#\?PKGMGR=.*/PKGMGR=DPKG/' /etc/rkhunter.conf
sed -i 's/^#\?\(ALLOW_SSH_PROT_V1\)=.*/\1=0/' /etc/rkhunter.conf

Flux IPTables pour les mises à jour

RKHunter a besoin de mettre sa base de connaissances à jour. Nous avons configuré une vérification et il a besoin de pouvoir télécharger des fichiers depuis Internet. IPTables bloque tout le traffic sortant par défaut, s’il n’est pas explicitement autorisé. Il faut donc créer une nouvelle chaine pour lister les adresses IP des dépôts de RKHunter et l’inclure dans la chaine de validation du traffic sortant WAN_output.

sed -i 's/^-N WAN_input$/-N RKHunterRepositories\n-A RKHunterRepositories -d 216.105.38.10 -j ACCEPT\n\n&/' /etc/iptables/rules.v4
sed -i 's/^-N WAN_output$/&\n-A WAN_output -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -j RKHunterRepositories/' /etc/iptables/rules.v4
systemctl restart netfilter-persistent

Mise à jour de la base

Il est maintenant temps d’initier la première mise à jour de la base manuellement pour tester la configuration des règles du pare-feu et s’assurer que les recherches de mise à jour fonctionneront.

rkhunter --update

Prise d’empreinte du système

Il faut aussi prendre un instantané des fichiers critiques du système. RKHunter va calculer des empreintes (hash) pour chacun de ces fichiers et les enregistrer. Il est configuré pour exécuter cette prise d’empreinte après chaque installation, mise à jour ou suppression de paquetage demandée à apt. Il maintient sa base d’empreinte à jour. La recherche de modification des fichiers est exécutée tous les jours. Quoiqu’il en soit, j’installerai aussi tripwire pour cette tâche spécifique, dans le prochain article.

rkhunter --propupd

Tests

Vérification complète

Exécutons un test complet du système, avec une sortie colorée en temps réel !

rkhunter -c --enable all --disable none --skip-keypress

rkhuntercheck.gif

Notifications par courriel

Exécuton un test plus rapide, avec une notification par courriel, pour vérifier que les notifications fonctionnent bien.

/etc/cron.daily/rkhunter

Supports et liens

ICT Force site 1

ZoneWebmaster site 2

Notes de bas de page

  1. https://www.ictforce.be/2018/linux-security-tool-rkhunter/ 

  2. https://www1.zonewebmaster.eu/serveur-debian-securite:installer-rootkit-hunter