{"id":11354,"date":"2012-03-18T18:44:31","date_gmt":"2012-03-18T17:44:31","guid":{"rendered":"https:\/\/www.saasweb.agency\/blog\/comment-verifier-facilement-lintegrite-des-fichiers-installes-sur-un-systeme-debian\/"},"modified":"2026-10-27T13:30:03","modified_gmt":"2026-10-27T12:30:03","slug":"comment-verifier-facilement-lintegrite-des-fichiers-installes-sur-un-systeme-debian","status":"publish","type":"post","link":"https:\/\/www.saasweb.agency\/fr\/blog\/comment-verifier-facilement-lintegrite-des-fichiers-installes-sur-un-systeme-debian\/","title":{"rendered":"Comment v\u00e9rifier facilement l\u2019int\u00e9grit\u00e9 des fichiers install\u00e9s sur un syst\u00e8me Debian ?"},"content":{"rendered":"<p><a href=\"https:\/\/www.saasweb.agency\/wp-content\/uploads\/2012\/03\/openlogo-100.png\"><img decoding=\"async\" class=\"alignleft size-full wp-image-933\" title=\"Debian\" src=\"https:\/\/www.saasweb.agency\/wp-content\/uploads\/2012\/03\/openlogo-100.png\" alt=\"\" width=\"100\" height=\"123\" srcset=\"https:\/\/www.saasweb.agency\/wp-content\/uploads\/2012\/03\/openlogo-100.png 100w, https:\/\/www.saasweb.agency\/wp-content\/uploads\/2012\/03\/openlogo-100-50x62.png 50w, https:\/\/www.saasweb.agency\/wp-content\/uploads\/2012\/03\/openlogo-100-81x100.png 81w\" sizes=\"(max-width: 100px) 100vw, 100px\" \/><\/a><\/p>\n<p>Lorsqu\u2019on utilise des outils de surveillance tels que <em>tripwire<\/em> ou <em>rkhunter<\/em> pour surveiller les modifications des fichiers install\u00e9s, on rencontre le probl\u00e8me suivant : ces outils ne permettent pas de d\u00e9terminer si les fichiers ont \u00e9t\u00e9 modifi\u00e9s par une mise \u00e0 jour r\u00e9guli\u00e8re d\u2019un paquet ou alt\u00e9r\u00e9s par une personne non autoris\u00e9e.<\/p>\n<p>Si, par exemple, <em>rkhunter<\/em> signale que le fichier <em>\/usr\/bin\/ldd<\/em> a \u00e9t\u00e9 modifi\u00e9, il faut v\u00e9rifier manuellement si la somme de contr\u00f4le du fichier correspond \u00e0 la version la plus r\u00e9cente du paquet Debian.<\/p>\n<p>Il existe un outil nomm\u00e9 <strong>debsums<\/strong> qui facilite cette t\u00e2che. L\u2019installation se fait avec : <\/p>\n<div class=\"code-snippet\"># apt-get install debsums<\/div>\n<p>Une fois l\u2019outil install\u00e9, on peut effectuer la v\u00e9rification au niveau du paquet :<\/p>\n<div class=\"code-snippet\"># debsums file<br \/>\n\/usr\/bin\/file OK<br \/>\n\/usr\/share\/bug\/file\/control OK<br \/>\n\/usr\/share\/bug\/file\/presubj OK<br \/>\n\/usr\/share\/doc\/file\/README.Debian OK<br \/>\n\/usr\/share\/doc\/file\/README.gz OK<br \/>\n\/usr\/share\/doc\/file\/changelog.Debian.gz OK<br \/>\n\/usr\/share\/doc\/file\/changelog.gz OK<br \/>\n\/usr\/share\/doc\/file\/copyright OK<br \/>\n\/usr\/share\/lintian\/overrides\/file OK<br \/>\n\/usr\/share\/man\/man1\/file.1.gz OK<\/div>\n<p>mais pas au niveau du fichier :<\/p>\n<div class=\"code-snippet\"># debsums \/usr\/bin\/ldd<br \/>\ndebsums: invalid package name &lsquo;\/usr\/bin\/ldd&rsquo;<\/div>\n<p>Il faut d\u2019abord d\u00e9terminer \u00e0 quel paquet appartient le fichier \/usr\/bin\/ldd.<\/p>\n<div class=\"code-snippet\"># dpkg -S \/usr\/bin\/ldd<br \/>\nlibc-bin: \/usr\/bin\/ldd<\/div>\n<p>Afin de ne pas avoir \u00e0 effectuer cette recherche \u00e0 chaque fois, j\u2019ai \u00e9crit un petit script shell qui se charge de cette t\u00e2che et appelle debsums avec les r\u00e9sultats obtenus :<\/p>\n<div class=\"code-snippet\">#!\/bin\/bash<br \/>\nEC=0<br \/>\nPKGS=$(dpkg -S \u00ab\u00a0$@\u00a0\u00bb | awk -F&rsquo;:&rsquo; &lsquo;{print $1}&rsquo; | sed -e &lsquo;s\/, \/<br \/>\n\/g&rsquo; | sort | uniq)<br \/>\nfor i in $PKGS; do<br \/>\ndebsums \u00ab\u00a0$i\u00a0\u00bb | grep -v OK<br \/>\ndec=$PIPESTATUS<br \/>\necho -n \u00ab\u00a0=== Package &lsquo;$i&rsquo; : \u00a0\u00bb<br \/>\nif [ $dec -eq 0 ]; then echo OK; else echo MODIFIED; EC=$dec; fi<br \/>\ndone<br \/>\nexit $EC<\/div>\n<p>Dans cet exemple, j\u2019ai nomm\u00e9 le script check-inst.sh. Son utilisation est simple : <\/p>\n<div class=\"code-snippet\"># .\/check-inst.sh \/usr\/bin\/ldd<br \/>\n=== Package &lsquo;libc-bin&rsquo; : OK<\/div>\n<p>On peut appeler le script avec plusieurs noms de fichiers :<\/p>\n<div class=\"code-snippet\"># .\/check-inst.sh \/usr\/bin\/file \/usr\/bin\/ldd<br \/>\n=== Package &lsquo;file&rsquo; : OK<br \/>\n=== Package &lsquo;libc-bin&rsquo; : OK<\/div>\n<p>Si l\u2019on n\u2019utilise pas de chemin absolu, on obtient des r\u00e9sultats de recherche pour les paquets install\u00e9s :<\/p>\n<div class=\"code-snippet\"># .\/check-inst.sh apache2<br \/>\n=== Package &lsquo;apache2&rsquo; : OK<br \/>\n=== Package &lsquo;apache2.2-bin&rsquo; : OK<br \/>\n=== Package &lsquo;apache2.2-common&rsquo; : OK<br \/>\n=== Package &lsquo;apache2-doc&rsquo; : OK<br \/>\n=== Package &lsquo;apache2-mpm-prefork&rsquo; : OK<br \/>\n=== Package &lsquo;apache2-suexec&rsquo; : OK<br \/>\n=== Package &lsquo;apache2-utils&rsquo; : OK<br \/>\n=== Package &lsquo;bash-completion&rsquo; : OK<br \/>\n=== Package &lsquo;libapache2-mod-fcgid&rsquo; : OK<br \/>\n=== Package &lsquo;libapache2-mod-php5&rsquo; : OK<br \/>\n=== Package &lsquo;libapache2-mod-ruby&rsquo; : OK<br \/>\n=== Package &lsquo;libapache2-mod-suphp&rsquo; : OK<\/div>\n<p>Si les r\u00e9sultats sont OK, tu peux mettre \u00e0 jour ton outil de surveillance en toute tranquillit\u00e9. Par exemple, pour rkhunter : <\/p>\n<div class=\"code-snippet\"># rkhunter &#8211;propupd &#8211;update<\/div>\n<p>Voici un exemple de sortie affichant les fichiers modifi\u00e9s par l\u2019utilisateur :<\/p>\n<div class=\"code-snippet\"># .\/check-inst.sh \/usr\/bin\/pear<br \/>\n\/usr\/bin\/pear FAILED<br \/>\n\/usr\/bin\/peardev FAILED<br \/>\n\/usr\/bin\/pecl FAILED<br \/>\n&#8230;<br \/>\n\/usr\/share\/php\/pearcmd.php FAILED<br \/>\n\/usr\/share\/php\/peclcmd.php FAILED<br \/>\n=== Package &lsquo;php-pear&rsquo; : MODIFIED<\/div>\n<p>Le script renvoie le <strong>code de sortie 0<\/strong> si toutes les v\u00e9rifications ont r\u00e9ussi, sinon le code d\u2019erreur de la premi\u00e8re v\u00e9rification ayant \u00e9chou\u00e9. Cela est utile lorsqu\u2019on souhaite d\u2019abord conna\u00eetre uniquement le code de sortie et consulter les r\u00e9sultats d\u00e9taill\u00e9s dans un fichier journal. <\/p>\n<p>Amuse-toi bien avec tes essais<br \/>\nC.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lorsqu\u2019on utilise des outils de surveillance tels que tripwire ou rkhunter pour surveiller les modifications des fichiers install\u00e9s, on rencontre le probl\u00e8me suivant : ces outils ne permettent pas de d\u00e9terminer si les fichiers ont \u00e9t\u00e9 modifi\u00e9s par une mise \u00e0 jour r\u00e9guli\u00e8re d\u2019un paquet ou alt\u00e9r\u00e9s par une personne non autoris\u00e9e. Si, par exemple, \u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[924,816],"tags":[991,1741,994,1089,1087,1459,1002,990,2101,1073,1207],"class_list":["post-11354","post","type-post","status-publish","format-standard","hentry","category-programmation","category-tutoriel","tag-administration","tag-debian","tag-declencheur","tag-dpkg","tag-gestion-des-paquets","tag-integrite","tag-outil-de-monitoring","tag-rkhunter","tag-somme-de-controle","tag-sommes-de-debogage","tag-surveillance"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.saasweb.agency\/fr\/wp-json\/wp\/v2\/posts\/11354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.saasweb.agency\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.saasweb.agency\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.saasweb.agency\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.saasweb.agency\/fr\/wp-json\/wp\/v2\/comments?post=11354"}],"version-history":[{"count":1,"href":"https:\/\/www.saasweb.agency\/fr\/wp-json\/wp\/v2\/posts\/11354\/revisions"}],"predecessor-version":[{"id":11883,"href":"https:\/\/www.saasweb.agency\/fr\/wp-json\/wp\/v2\/posts\/11354\/revisions\/11883"}],"wp:attachment":[{"href":"https:\/\/www.saasweb.agency\/fr\/wp-json\/wp\/v2\/media?parent=11354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.saasweb.agency\/fr\/wp-json\/wp\/v2\/categories?post=11354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.saasweb.agency\/fr\/wp-json\/wp\/v2\/tags?post=11354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}