====== le controle d'integrite ====== cette page a été faite pour une conférence sur la sécurité au [[http://www.culte.org/ | culte]] le samedi 9 avril 2005. Elle est sous licence LGPL voir le site [[http://www.gnu.org]] pour plus de renseignements Vous pouvez redistribuer et modifier ce document selon les termes de la Licence Publique Générale GNU (LGPL) version 2 ou toute autre version ultérieure ===== rappels sur la sécurité informatique ===== Je vais essayer d'illustrer les différents composants de la sécurité informatique par comparaison avec ceux d'une maison : ==== défense passive ==== ^ maison ^ ordinateur ^ | fermer les portes,fenêtres,volets | fermer les ports réseau | | une bonne serrure | mots de passe difficiles, protocoles cryptes | ==== défense active ==== ^ maison ^ ordinateur ^ | alarme | anti-virus, ids | ids = Intrusion Detection System (en français : système de détection d'intrusion) ==== analyse ==== ^ maison ^ ordinateur ^ | inventaire,empreintes | analyse des logs,contrôle d'intégrité | ===== généralités sur le contrôle d'intégrité ===== ==== son but ==== Le but est de connaître ce qui a été modifié sur une machine, ce qui va permettre de : * détecter les intrusions : pourquoi la commande bash a-t-elle changé de taille ? * corriger une configuration : depuis hier ce logiciel ne se lance plus, qu'est-ce qui a changé ? * faire des rapports d'installation : pour savoir ce qu'un logiciel installe exactement ==== que surveiller ==== Les propriétés des fichiers : * taille * droits * propriétaire/groupe * date de modification, d'accès * checksum (md5, sha1) : à calculer pour détecter des modifications ==== comment ça marche ==== Le logiciel travaille par comparaison avec un état précédant, un peu comme le jeu des 7 erreurs entre 2 photos. Il stocke cet état dans une base de donnée. ==== préconisation ==== Lancement régulier du logiciel. La meilleure solution est un lancement journalier par cron. ==== remarque ==== Le système de package [[http://www.rpm.org | rpm]] offre un système équivalent pour * vérifier l'intégrité d'un package fichier : rpm -K * vérifier l'intégrité d'un package installé par rapport à son "image" initiale : rpm -V mais il ne détecteras pas un nouveau fichier installé sans rpm. ===== Les limites du contrôle d'intégrité ===== ==== la configuration ==== Des fichiers sont modifiés en permanence, pour ne pas être submergé de fausses alarmes, on ne peut pas surveiller tous les fichiers, ni tous les paramètres. Il y a donc un travail important de configuration initiale. ==== l'état initial ==== Après la configuration, il faut fabriquer le premier "état". Il faut que celui-ci soit absolument sûr (machine non infectée), puisque on va se baser dessus. ==== les mises à jour ==== Une des préconisation de la sécurité informatique, c'est de mettre régulièrement sa machine à jour avec les correctifs de sécurité logiciels : * attention à ne prendre que des correctifs surs : si possible signé par gpg, et contrôler l'intégrité du correctif. * Toute mise a jour va générer de gros rapports, qu'il va falloir contrôler pour voir si ça ne masque pas une intrusion * il faut pouvoir mettre à jour la base de données du controle d'intégrité ==== intrusion "forte" ==== lors d'une intrusion, l'attaquant va chercher a camoufler ses traces (logs , ...). l'attaquant peut aussi chercher si des logiciels d'intrusions sont installés et tenter de modifier leur fonctionnement : === base attaquée === il peut essayer de modifier la base de référence, afin que la comparaison ne montre rien. solutions : * cryptage de la base de référence * base de référence sur un support en lecture seule, ou externe, montée seulement pour les comparaisons === logiciel attaqué === il peut modifier le logiciel lui-même. solution : * auto-controle du logiciel * logiciel sur un support externe amovible === noyau attaqué === il peut modifier le système d'exploitation : libc, module noyau ... solution : * lancer le logiciel depuis un système propre, par exemple un livecd (knoppix ...) tous ces problèmes militent pour un lancement manuel, en plus du lancement par cron. ===== Panorama des logiciels existants ===== Il y a maintenant un panorama très étendu d'outils : * [[http://www.tripwire.com/|tripwire]]: probablement un des plus anciens. C'était un logiciel propriétaire, mais la licence est devenue GPL sous linux. * [[http://www.cs.tut.fi/~rammer/aide.html|aide]] : un clone de tripwire, écrit en C, pour offrir une alternative libre au logiciel commercial sur linux/unix * [[afick]] : un clone libre et portable, pour fonctionner sur toute plate-forme (Unix, linux, Windows), avec des interfaces graphiques conviviales, dont je suis l'auteur --- //[[eric.gerbier@free.fr|eric gerbier]] 2009/09/14 11:09// {{tag>securite tripwire afick}}