Maintenance de sa Debian - rootkits et malwares

Et comme c’est l’été, on en profite pour continuer cette belle campagne de prévention sur gnu/linux debian 10 & 11. Je vous propose donc de mettre en place un système pour rechercher les rootkits et malwares sur Jeedom.

Lorsque l’on ouvre les ports de son Jeedom vers l’extérieur, on expose potentiellement la machine à des attaques. Le minimum que l’on se doit de faire dans ce cas est d’installer un petit anti-virus (clam-av par exemple) et faire une recherche régulière de malware et rootkit sur la machine.

La procédure que je vous propose permet de rechercher ces derniers, elle est simple et peut compléter la maintenance préventive de votre système .

En premier lieu, connectez-vous à votre console en root et installez l’utilitaire rkhunter

sudo apt-get install rkhunter

éditez le fichier /etc/rkhunter.conf et changez la ligne

MIRRORS_MODE=1

en

MIRRORS_MODE=0

puis tout en bas du fichier :

WEB_CMD="/bin/false"

en

WEB_CMD=""

Un petit Ctrl+X suivi d’un Oui et voilà c’est tout.

on peut tester qu’il est bien configuré en lançant :

rkhunter --update

en principe il doit récupérer ses mises à jour et afficher un truc comme ça :

[ Rootkit Hunter version 1.4.6 ]

Checking rkhunter data files...
  Checking file mirrors.dat                                  [ Updated ]
  Checking file programs_bad.dat                             [ No update ]
  Checking file backdoorports.dat                            [ No update ]
  Checking file suspscan.dat                                 [ No update ]
  Checking file i18n/cn                                      [ Skipped ]
  Checking file i18n/de                                      [ Skipped ]
  Checking file i18n/en                                      [ No update ]
  Checking file i18n/tr                                      [ Skipped ]
  Checking file i18n/tr.utf8                                 [ Skipped ]
  Checking file i18n/zh                                      [ Skipped ]
  Checking file i18n/zh.utf8                                 [ Skipped ]
  Checking file i18n/ja                                      [ Skipped ]

suivant le même principe que pour la maintenance, créez un scénario sur lequel vous injecterez le code suivant :

shell_exec('LC_ALL=C sudo rkhunter -c -q --sk --update');
$iRK = rtrim(shell_exec('LC_ALL=C sudo cat /var/log/rkhunter.log | grep -P "Possible rootkits: \d+" | cut -d " " -f 4'));
$iSF = shell_exec('LC_ALL=C sudo cat /var/log/rkhunter.log | grep -P "Suspect files: \d+" | cut -d " " -f 4');
$scenario->setlog("out=$iRK rootkit(s) trouvé(s), $iSF fichier(s) suspect(s)");

if ($iRK != 0) 
	message::add("Debian", 'La Recherche de RootKit a trouvé '.$iRK.' rootkit(s) potentiel(s), vérifiez votre fichier /var/log/rkhunter.log');

if ($iSF > 0) {
  	$sWarnings = shell_exec('LC_ALL=C sudo cat /var/log/rkhunter.log | grep -P "Warning:" | cut -d " " -f 4-');
	$scenario->setlog($sWarnings);
}

le scénario va nécessiter environ 1 min 1/2 pour s’exécuter car rkhunter fait beaucoup de vérifications.

voilà un exemple de sortie du log scénario :

[2022-08-08 15:44:20][SCENARIO] -- Start : Scenario lance manuellement.
[2022-08-08 15:44:20][SCENARIO] - Exécution du sous-élément de type [action] : code
[2022-08-08 15:44:20][SCENARIO] Exécution d'un bloc code 
[2022-08-08 15:45:35][SCENARIO] out=0 rootkit(s) trouvé(s), 1
fichier(s) suspect(s)
[2022-08-08 15:45:35][SCENARIO] command '/usr/bin/lwp-request' has been replaced by a script: /usr/bin/lwp-request: Perl script text executable
SSH and rkhunter configuration options should be the same:
file found: /etc/.rkhunter.conf.swp: Nano swap file, pid 728146, user root, host pdvtest, file /etc/rkhunter.conf
[2022-08-08 15:45:35][SCENARIO] Fin correcte du scénario
------------------------------------

a l’issue du script vous aurez plusieurs informations :

  • le nombre de rootkits et malware détectés (attention il se peut que ce soit de faux positifs, à vous de vérifier)
  • dans le log du scénario l’ensemble des warnings émis par rkhunter que vous pourrez investiguer ou non.

bonne journée à tous

edit : correction coquille de copier/coller version

8 « J'aime »

super initiative!!
Petit loupé dans le fichier de conf a modifer c’est pas le .log mais le .conf

 /etc/rkhunter.log =>  /etc/rkhunter.conf

@chris94440

2 « J'aime »

Bonjour,
comment faire pour afficher le nombre de rootkit trouvé dans le centre de message?
Voici ce qu’il affiche

Essaye avec (je ne suis pas devant mon pc) :

'La Recherche de RootKit a trouvé ' .$iRK .' rootkit(s) potentiel(s), vérifiez votre fichier /var/log/rkhunter.log'

EDIT :
Ca fonctionne je viens de tester sur un PC :

$iRK = 300;
message::add("Debian",'toto a ' .$iRK .' moutons');

Résultat :

1 « J'aime »

oui c’est corrigé, erreur de copier/coller :slight_smile:

Bonjour,

Ta correction ne fonctionne pas.
La syntaxe avec message::add() n’est pas la même qu’avec setLog(). Il faut concaténer la chaîne de caractère avec la variable.
Voir : Maintenance de sa Debian - rootkits et malwares - #8 par Madcow

De plus, il n’y a pas une inversion dans ta condition if ($iRK == 0) ?
Ce n’est pas plutôt if ($iRK != 0) ?

désolé, effectivement, pas le bon script. je viens de recopier/coller celui qui tourne sur ma vm de test au lieu de corriger à la volée. Le script en tête de fil est donc à jour pour moi.

Bonjour

J’ai ce script depuis un moment sans soucis et ce jour alerte sur un possible rootkit :
Checking for TCP port 32982 [ Found ]
[15:25:56] Warning: Network TCP port 32982 is being used by /usr/bin/node. Possible rootkit: Solaris Wanuk

Si je fais les commandes recommandées je trouve le lien :
192.168.1.21:32982 192.168.1.98:80 ESTABLISHED

Sauf que l’IP cible est interne et c’est une passerelle Somfy Connectivity kit liée au plugin hkControl. Cette solution est en place depuis plusieurs mois sans cette alerte.
J’ai relancé mon jeedom hier (le script passe tous les jours mais il était passé avant), peut être que la connexion est passé sur un port « suspect », qu’en pensez vous ? Faux positif ?

le système de détection de rootkit a des faux positifs. c’est un fait ce n’est pas un produit commercial et super performant :slight_smile:

effectivement le port en question est celui utilisé pour le virus pour se propager. donc si vous avez relancé l’ensemble et que le port a changé, ceci explique donc cela :slight_smile:

1 « J'aime »

Bonjour, j’ai réinstallé mon jeedom en debian 11, et j’ai remis ce super scénario de maintenance mais dans la log d’exécution j’ai cela :

2024-07-06 11:12:49][SCENARIO] command '/usr/bin/lwp-request' has been replaced by a script: /usr/bin/lwp-request: Perl script text executable
SSH configuration option 'PermitRootLogin' has not been set.
file found: /etc/.fstab: ASCII text

Que dois je changer ??

et bien c’est clairement expliqué dans le message, sur debian, c’est juste un message d’information de rkhunter qui indique que l’autorisation de connexion root via ssh n’est pas activée.

le premier messsage est à ignorer et sans conséquences puisque l’on utilise pas le scripting perl sur jeedom.

si ce sont les uniques messages du log, il n’y a pas de rootkit sur ton système :slight_smile:

Ah ok merci, j’avais eu peur qu’il manque des droits pour l’application. Je n’ai pas le souvenir d’avoir vu cela en debian 10, mais bon à vrai dire une fois que cela tourne on oublie les logs. merci

1 « J'aime »