Portail / Linux(Sommaire)

Compléments au chasseur de rootkits rkhunter.

Mise à jour du 26/02/2021.

Le logiciel rkhunter est un logiciel de sécurité basique qui devrait être installé sur toute configuration Linux. En bref, en plus de quelques fonctions spécifiques, il compare le code de hachage des fichiers les plus sensibles à ceux des fichiers courants installés. Il compare également les fichiers systèmes (dont ses propres fichiers de configuration) à ceux installés par le gestionnaire de configuration lorsque ce dernier est déclaré (option PKGMGR par exemple PKGMGR=RPM du fichier /etc/rkhunter.conf).

La vérification du système peut se faire via la commande rkhunter --rwo -c. Cette commande ne devrait rien afficher lorsque tout est correct. Sur une machine qui "vit" cela est rarement le cas. Nous allons examiner le cas de la modification du ficher /etc/rkhunter.conf, celui de l'ajout de sémaphores ou de segments de mémoires partagée (.shm) par certains logiciels comme PostgreSQL et la présence de fichiers cachés "réguliers".

Modification du fichier de configuration.

Il est souvent nécessaire de modifier le fichier /etc/rkhunter.conf comme par exemple pour mettre en adéquation l'autorisation de connexion SSH via le compte root(option ALLOW_SSH_ROOT_USER=yes). La mise à jour de la base de données de rkhunter via l'option --propupdn'est ici pas suffisante car la comparaison se fait via le code de hachage du gestionnaire de paquets. Fort heureusement, il existe une option du fichier de configuration qui permet d'ignorer la comparaison d'un fichier donné avec celui installé par le gestionnaire de paquets : PKGMGR_NO_VRFY. Dans notre exemple il faudrait ajouter au fichier de configuration l'option PKGMGR_NO_VRFY=/etc/rkhunter.conf. Cette option peut être ajoutée autant de fois que nécessaire.

Utilisation de fichiers périphériques "réguliers".

L'emploi de logiciels comme JACK ou PostgreSQL ajoutent des fichiers dits de "périphériques" (note : pour Linux la mémoire partagée ou les sémaphores sont des "périphériques"). De tels fichiers se trouvent sur le sous-répertoire /dev. L'utilisation de l'option ALLOWDEVFILE permet d'autoriser de tels fichiers. L'emploi de caractères joker d'expressions régulières dans les noms de fichier est autorisé. Par exemple la déclaration ALLOWDEVFILE=/dev/shm/PostgreSQL* autorise les segments de mémoire partagée créés par le gestionnaire de bases de données PostgreSQL.

Notez que la modification d'une option exige sa prise en compte via l'emploi du paramètre --propupd.

Utilisation de fichiers cachés "réguliers".

D'autres logiciels utilisent des fichiers cachés (noms de fichiers préfixés par un point). L'utilisation de l'option ALLOWHIDDENFILE permet d'autoriser de tels fichiers. L'emploi de caractères joker d'expressions régulières dans les noms de fichier est autorisé. Par exemple : ALLOWHIDDENFILE=/usr/bin/.hmac256.hmac.

Particularité OpenSuse.

La distribution OpenSuse fournit un certain nombre d'exceptions que l'on trouve généralement (version Leap 42.3) dans le fichier /etc/rkhunter.d/00-opensuse.conf

Cas particulier de l'anti-virus ESET NOD32.

L'installation de cet anti-virus place dans le fichier /etc/ld.so.preload la librairie libesets_pac.so mais sans préciser son chemin. Lorsque rkhunter analyse ce fichier, il considère que cette absence de chemin est une faute car il ne peut pas trouver le fichier de cette librairie sous /lib ou /lib64.

La commande ldconfig -p | grep eset permet de trouver les chemins des librairies chargées (affichage du cache des librairies chargées). En principe, il y a pour NOD32 dans le cache la version pour une machine i386 et celle pour une machine x64. Ne retenez que le chemin qui correspond à votre architecture et ajoutez le dans le fichier /etc/ld.so.preload. Sur une machine Debian 10 cela donne :

/usr/lib/x86_64-linux-gnu/libesets_pac.so

Il faut maintenant demander à rkhunter via le fichier /etc/rkhunter.conf d'ignorer cette librairie. Pour cela ajouter l'exception correspndant à la librairie pré-chargée. Dans notre exemple pour une machine Debian x64 :

SHARED_LIB_WHITELIST=/usr/lib/x86_64-linux-gnu/libesets_pac.so

Rédaction par Jean-Marie Piatte (1983-2021)