LINUX:Rkhunter
→ retour au menu pour contrer les attaques
But
"rkhunter" (pour Rootkit Hunter) est un programme Unix qui permet de détecter les rootkits, portes dérobées et exploits. En premier temps, il va comparer les empreintes digitales avec une base de données qu'il s'est constituée et ensuite la présence de fichiers, de ports réseaux douteux,...
Installation
Il faut installer le module principal:
dnf install rkhunter
D'autres programmes sont souhaités:
dnf install unhide dnf install tripwire
Un autre programme n'est pas dans la distribution: "skdet"; il faut donc le télécharger sur le site d'origine. Vérifiez la version du fichier directement sur le site "http://dvgevers.home.xs4all.nl/skdet/" Actuellement, c'est la version: 1.0-1 que l'on télécharge:
wget http://dvgevers.home.xs4all.nl/skdet/skdet-1.0-1.i586.rpm
Il peut être nécessaire d'installer glibc qui lui est cécessaire:
dnf install glibc
Ensuite on installe le logiciel:
rpm -iv skdet-1.0-1.i586.rpm
Configuration
Cet utilitaire est lancé chaque jour via le CRON de Linux. Le fichier "/etc/cron.daily/rkhunter" effectue cette tâche et envoie un mail contenant le rapport. Ce dernier utilise des variables d'environnement contenues dans le fichier "/etc/sysconfig/rkhunter". Là vous pouvez configurer l'adresse mail qui recevra ce rapport (variable MAILTO).
Le fichier de configuration principal se nomme "/etc/rkhunter.conf".
Dans ce fichier, il y a quelques options à considérer:
- l'option suivante définit les tests à faire: tous sont à faire:
ENABLE_TESTS=ALL
- j'ai eu deux cas de fichiers spéciaux considérés à problème; on les met sur liste blanche:
ALLOWHIDDENFILE=/usr/share/man/fr/man1/..1.gz ALLOWHIDDENFILE=/usr/share/man/man5/.dockerignore.5.gz
- on peut éventuellement activer l'option concernant le mailing. On adapte l'adresse mail réceptrice:
MAIL-ON-WARNING=root@home.dom
Ensuite il faut reconstituer la base de données des signatures digitales avant le premier démarrage et après une mise à jour; on le verra au point suivant.
Avec cette configuration, je n'ai plus d'alarme.
Utilisation
La commande suivante permet de mettre à jour diverses informations se trouvant sur Internet:
rkhunter --update
Notons que cette commande est exécutée d'office lors du traitement par le CRON.
La commande suivante est importante; elle crée la base de données des signatures digitales de divers programmes importants de l'OS:
rkhunter --propupd
Il faut absolument l'exécuter avant la première série de tests. Il est utile de le faire après une mise à jour mais de façon intelligente; faites les tests et comparez ce qui est mis en alarme avec ce qui a été mis à jour.
Enfin on peut faire les tests:
rkhunter --check -sk
ou
rkhunter -c -sk
En plus du rapport succinct qui apparaît à l'écran, le fichier "/var/log/rkhunter/rkhunter.log" vous permet de repérer le détail du problème.
Tout problème est affiché en rouge ou sous forme d'un récapitulatif simple.
Tripwire
Si vous avez installé Tripwire, il faut le configurer pour pouvoir l'utiliser et qu'il soit pris en compte par Rkhunter..
Scripts personnels
L'exécution de ce programme est automatisé via le CRON.
Tout se passe à merveille sur un serveur car il est actif 24h/24h. En effet un programme mis dans le CRON s'exécute à une heure déterminée.
Mais sur une station de travail, cette machine est à l'arrêt pendant de nombreuses heures imprévisibles et il est impossible de prévoir quelle heure est la plus propice à son exécution journalière. J'ai donc été amené à écrire de petits scripts tenant compte de cet aspect. Sur son principe, il va tester chaque heure, s'il est possible d'exécuter Rkhunter pour une vérification de la non présence de RootKits et dès que l'opération s'est déroulée avec succès, il ne s'exécutera plus de la journée. De même, sur le même principe, la recherche de mises-à-jour et le recalcul des signatures des programmes sensibles du système se fera tous les 7 jours.
Script de mise-à-jour
Ce premier script effectue la mise-à-jour de Rkhunter. Il s'exécute une fois par semaine.
Ce script se nomme "rkhunter.update.bat" et il est placé et s'exécute dans le répertoire "/cron/rkhunter".
#!/bin/bash
#
# Mise à jour de RKHUNTER
#
CHEMIN="/cron/rkhunter"
FICHIERLOG="jourcourantupd.log"
JOURNAL="journalupd.log"
#
# il ne s'exécuter qu'une fois par semaine
#
if [ -e "${CHEMIN}/$FICHIERLOG" ]
then
JOURCOURANT=`/usr/bin/cat ${CHEMIN}/$FICHIERLOG`
else
JOURCOURANT="000"
fi
JCOURANT=`/usr/bin/date +%j`
JDIFFERENCE=`/usr/bin/expr $JOURCOURANT - $JCOURANT`
if [ "$JDIFFERENCE" -gt 0 ]
then
/usr/bin/date +%j > ${CHEMIN}/$FICHIERLOG
exit
fi
if [ "$JDIFFERENCE" -gt -7 ]
then
exit
fi
#
# exécution de la mise à jour (+ une vérification de la version)
#
/usr/bin/rkhunter --versioncheck > ${CHEMIN}/$JOURNAL
/usr/bin/rkhunter --update >> ${CHEMIN}/$JOURNAL
# sauvegarde du jour courant
/usr/bin/date +%j > ${CHEMIN}/$FICHIERLOG
Script de recalcul
Ce second script effectue le recalcul des signatures de fichiers sensibles du système de Rkhunter. Il s'exécute une fois par semaine.
Ce script se nomme "rkhunter.recalcul.bat" et il est placé et s'exécute dans le répertoire "/cron/rkhunter".
#!/bin/bash
#
# recalcul des signatures de fichiers sensibles du système - RKHUNTER
#
CHEMIN="/cron/rkhunter"
FICHIERLOG="jourcourantcal.log"
JOURNAL="journalcal.log"
#
# il ne s'exécuter qu'une fois par semaine
#
if [ -e "${CHEMIN}/$FICHIERLOG" ]
then
JOURCOURANT=`/usr/bin/cat ${CHEMIN}/$FICHIERLOG`
else
JOURCOURANT="000"
fi
JCOURANT=`/usr/bin/date +%j`
JDIFFERENCE=`/usr/bin/expr $JOURCOURANT - $JCOURANT`
if [ "$JDIFFERENCE" -gt 0 ]
then
/usr/bin/date +%j > ${CHEMIN}/$FICHIERLOG
exit
fi
if [ "$JDIFFERENCE" -gt -7 ]
then
exit
fi
#
# exécution du recalcul
#
/usr/bin/rkhunter --propupd > ${CHEMIN}/$JOURNAL
# sauvegarde du jour courant
/usr/bin/date +%j > ${CHEMIN}/$FICHIERLOG
Script de vérification
Ce troisième script effectue la vérification de la non présence de RootKits dans le système. Il s'exécute une fois par jour.
Ce script se nomme "rkhunter.verification.bat" et il est placé et s'exécute dans le répertoire "/cron/rkhunter".
#!/bin/bash
#
# recherche de RootKits - RKHUNTER
#
CHEMIN="/cron/rkhunter"
FICHIERLOG="jourcourantverif.log"
#
# il ne s'exécuter qu'une fois par jour
#
if [ -e "${CHEMIN}/$FICHIERLOG" ]
then
JOURCOURANT=`/usr/bin/cat ${CHEMIN}/$FICHIERLOG`
else
JOURCOURANT="00000000"
fi
JCOURANT=`/usr/bin/date +%Y%m%d`
if [ "$JCOURANT" == "$JOURCOURANT" ]
then
exit
fi
#
# Exécution
# (note: choix en mode long ou en mode alarme)
#
#/usr/bin/rkhunter -c -sk --nocolors
/usr/bin/rkhunter --cronjob --report-warnings-only
# sauvegarde du jour courant
/usr/bin/date +%Y%m%d > ${CHEMIN}/$FICHIERLOG
Toute affichage sera envoyé par mail à l'utilisateur "root" par défaut.
Cron
En liaison avec ces derniers, on doit placer trois lignes dans le fichier "/etc/crontab" afin qu'ils s'exécutent toutes les heures.
# RKHUNTER 10 * * * * root /cron/rkhunter/rkhunter.update.bat 12 * * * * root /cron/rkhunter/rkhunter.recalcul.bat 15 * * * * root /cron/rkhunter/rkhunter.verification.bat
Evidemment la mise-à-jour et le recalcul doivent se faire avant la vérification.
Note
Il est possible d'utiliser le processus Anacron.
→ retour au menu pour contrer les attaques