Dernière mise à jour : 29/10/2004
Cet article ouvre une nouvelle section du site sur la sécurité informatique, que cela soit locale ou bien encore orientée réseau. Ce premier article vous donnera quelques pistes et programmes pour vérifier qu'un système est sain de corps et d'esprit et que personne ne s'est aventuré dessus. Cela ne constitue bien évidemment pas une bible mais plus un tutoriel pratique pour y voir plus clair sur son serveur.
Les tentatives d'attaques et d'intrusion ne sont désormais plus un mythe et même une personne se connectant depuis son domicile peut être sujet à des attaques sur sa machine. Le premier point à aborder concerne les mises à jour (et ce quelque soit l'OS). Il est en effet primordial de toujours mettre à jour son système vers les versions les plus récentes de logiciels pour éviter qu'ils ne contiennent des failles. Cela vaut bien évidemment pour le noyau mais aussi pour tous les services qui tournent sur une machine. Au sujet des services, il est conseillé d'en tourner le moins possible (genre éviter d'avoir des partages NFS accessibles depuis le web ou bien un serveur web depuis sa machine personnelle si celui-ci ne contient que des infos personnelles).
Il existe depuis un petit moment des outils fort pratiques pour tenter de savoir si un intrus a réussit à s'introduire sur une machine sur laquelle il n'était pas sensé avoir accès. On parle dans ce cas là de piratage d'une machine. Il est important de noter que dans un monde d'entreprise, les attaques peuvent aussi venir des utilisateurs de votre réseau, et qu'il est toujours judicieux de bien maintenir un serveur de production même si celui-ci n'est pas ouvert à l'internet. Cela est d'autant plus vrai concernant un serveur sur lequel les utilisateurs ont un compte.
Dans la gamme des attaques sur l'exploitation de machines, on notera les rootkits (genre suckit). Ce type de programmes s'installent en mémoire en se cachant afin de faire des actions destinées à bénéficier aux pirates qui les installents. Suckit par exemple se cache dans les modules du kernel (il n'est pas visible par un lsmod), écoute le démon SSH pour enregistrer les utilisateurs et les mots de passe, et ouvre également un port accessible au pirate depuis l'extérieur sans avoir à se soucier d'un éventuel pare-feu.
Pour vérifier l'existence de tels immondices, il est possible d'installer des anti-rootkits tels que chkrootkit, ou bien rkhunter (voir plus bas). Il est conseillé de toujours réinstaller un vérificateur de rootkit lors d'une vérification car il se peut qu'un pirate n'installe une version vérolée d'un anti-rootkit pour tromper l'administrateur.
Checkrootkit - http://www.chkrootkit.org
Ce projet est né il y a fort longtemps. Il a pour but de vérifier si des rootkits sont présents localement. Comme mentionné auparavant, il est important de veiller à l'installer au moment de la vérification et de le désinstaller par la suite. Si vous téléchargez le source, un binaire déjà pré-compilé vous permet de vérifier le système sans avoir à compiler la bête ce qui peut s'avérer utile sur un système de production sans outils de développements. Vous pouvez vérifier les options de ce programme en faisant : chkrootkit --help.
Si vous lancez chkrootkit tout seul sans aucune autre option, il vérifiera tout le système contre tous les rootkits connus, les fichiers cachés, les zones mémoire, etc ... Une autre option excessivement intéressante (permettant d'ailleurs de détecter un rootkit dans la plupart des cas) est chkrootkit -x lkm. Cette option lance chkrootkit en mode expert et vérifie les LKM (Loadable Kernel Module) pour vérifier qu'il ne se trouve aucun module de rootkit. Il détectera suckit sans aucun soucis.
Il est important de signaler qu'un anti-rootkit peut trouver quelque chose alors qu'il n'y a pas raison de s'inquiéter, on appelle cela un false positive. Il y a eu il y a quelques temps un problème sur chkrootkit sur Debian sid/sarge qui à cause de la nouvelle gestion de glibc trouvait 5 processus cachés et actifs dans le LKM. C'est désormais résolu avec la dernière version du programme.
Précisons enfin qu'une version Française du site existe disponible à : http://frenchkrootkit.free.fr. Ce site comprends la version traduite du site ainsi qu'un miroir de téléchargement, et quelques infos en plus sur la sécurité.
Il est important de signaler qu'un problème de détection (false positives) existe actuellement notemment sur Debian avec la dernière version de glibc. Même la version 0.44 est touchée, il est conseillé de télécharger la dernière version source et de modifier chkproc.c à la ligne 69 pour remplacer la ligne par celle-ci : ps mauxw. Puis de recompiler. La commande qui marchera lors correctement sera : ./chkproc -p 2.
Rootkit Hunter - http://www.rootkit.nl
Rootkit Hunter est un projet plus récent réalisé par un jeune Hollandais du nom de Michaël Boelen. Je participe au projet en tant que dévelopeur, bénéficiant d'une grande variété de systèmes, plateformes et versions disponibles sur mon réseau d'entreprise. Rootkit Hunter propose à peu près les mêmes fonctionalités que chkrootkit mais avec des choses en plus. Il est actuellement arrivé à bonne maturité proposant beaucoup de recherches et d'analyses.
Il vous faudra avoir perl installé sur votre système. Téléchargez la dernière version puis décompressez la en faisant : tar xvzf rkhunter-x.x.x.tar.gz. Puis installez-la en tapant : cd rkhunter/ && ./installer.sh. Vous pouvez ensuite vérifier que vous avez la dernière version en tapant rkhunter --versioncheck. Si vous n'avez pas la dernière vous obtiendrez un message similaire à ceci :
-
This version: 1.1.7
Latest version: 1.1.8
Update available
Avant de commencer la vérification, il est conseillé de mette à jour les fichiers de définition, pour ce faire, taper : chkrootkit --update, vous devriez alors obtenir quelque chose comme suit :
-
Running updater...
Mirrorfile /usr/local/rkhunter/lib/rkhunter/db/mirrors.dat rotated
Using mirror http://www.rootkit.nl/rkhunter
[DB] Mirror file : Up to date
[DB] MD5 hashes system binaries : Update available
Action: Database updated (current version: 2004091000, new version 2004100900)
[DB] Operating System information : Update available
Action: Database updated (current version: 2004091100, new version 2004092200)
[DB] MD5 blacklisted tools/binaries : Up to date
[DB] Known good program versions : Update available
Action: Database updated (current version: 2004091000, new version 2004100900)
[DB] Known bad program versions : Update available
Action: Database updated (current version: 2004091000, new version 2004100900)
Pour vérifier le système, tapez : rkhunter -c. Vont s'en suivre alors plusieurs pages de tests. Le logiciel vérifie également les sommes md5 de vos fichiers. Il est actuellement compatible avec pas mal de versions de Linux, *BSD et Unix, consultez la liste pour plus d'informations. Il n'est pas rare que rkhunter se trompe concernant la vérification de versions vulnérables de services, ne lui en tenez pas rigueur, si vous savez que vous avez la dernière version, n'hésitez pas à contacter l'auteur (en Anglais) pour le lui signaler.
Debsums - http://packages.debian.org/debsums
Les possesseurs de serveurs et machines Debian seront heureux de savoir qu'il existe un outil qui vérifie les sommes md5 des fichiers installés par des paquets officiels Debian. Ces sommes assurent l'intégrité d'un programme et assurent généralement que le code n'a pas été altéré. Pour l'installer, il suffit de faire un apt-get install debsums. Pour vérifier ensuite un système et trouver les fichiers qui ont été modifiés, faire : debsums -i. Dans ce mode, il n'affichera que ce qui a été modifié.
Il est conseillé par la suite de désinstaller debsums pour ne pas laisser trop de traces sur le système. Faîtes alors un apt-get remove --purge debsums && rm -rf /var/cache/apt/archives/debsums* afin de supprimer le paquet du système, les fichiers de configuration et les paquets du cache d'apt.
Voilà pour le moment, j'en mettrais bientôt plus en ligne, n'hésitez pas à m'écrire pour proposer d'autres améliorations ou des articles sur la sécurité que vous aimeriez voir dans cette section. Le prochain article traitera des IDS (Intrusion Detection Systems), les systèmes de détection d'intrusions (snort, aide, rfc, etc ...).