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