4.19. Prendre un instantané («snapshot») du système
Avant de mettre le système en production, vous pouvez prendre un instantané du système entier. Cet instantané pourrait être utilisé en cas de compromission (consultez
Chapitre 11, Après la compromission (la réponse à l'incident)). Vous devriez refaire cette mise à jour à chaque fois que le système est mis à jour, particulièrement si vous mettez à jour vers une nouvelle version de Debian.
Pour cela, vous pouvez utiliser un support inscriptible et amovible qui peut être positionné en lecture seule, ce peut être une disquette (en lecture seule après utilisation), un CD d'une unité de CD (vous pourriez utiliser un CD réinscriptible, ainsi vous pourriez même garder des sauvegardes des md5sums à différentes dates), ou un disque USB ou une carte MMC (si le système peut accéder à ceux-ci et qu'ils peuvent être protégés en écriture).
Le script suivant crée un tel instantané:
#!/bin/bash
/bin/mount /dev/fd0 /mnt/floppy
trap "/bin/umount /dev/fd0" 0 1 2 3 9 13 15
if [ ! -f /usr/bin/md5sum ] ; then
echo "Cannot find md5sum. Aborting."
exit 1
fi
/bin/cp /usr/bin/md5sum /mnt/floppy
echo "Calculating md5 database"
>/mnt/floppy/md5checksums.txt
for dir in /bin/ /sbin/ /usr/bin/ /usr/sbin/ /lib/ /usr/lib/
do
find $dir -type f | xargs /usr/bin/md5sum >>/mnt/floppy/md5checksums-lib.txt
done
echo "post installation md5 database calculated"
if [ ! -f /usr/bin/sha1sum ] ; then
echo "Cannot find sha1sum"
echo "WARNING: Only md5 database will be stored"
else
/bin/cp /usr/bin/sha1sum /mnt/floppy
echo "Calculating SHA-1 database"
>/mnt/floppy/sha1checksums.txt
for dir in /bin/ /sbin/ /usr/bin/ /usr/sbin/ /lib/ /usr/lib/
do
find $dir -type f | xargs /usr/bin/sha1sum >>/mnt/floppy/sha1checksums-lib.txt
done
echo "post installation sha1 database calculated"
fi
exit 0
Notez que le binaire md5sum (et le binaire sha1sum, s'il est disponible) est placé sur la disquette pour pouvoir être utilisé plus tard pour vérifier les binaires du système (juste au cas où il serait aussi corrompu). Cependant, si vous voulez vous assurer que vous exécutez bien un binaire légitime, vous pouvez vouloir, soit compiler une copie statique du binaire md5sum et utiliser celui-ci (pour empêcher une bibliothèque libc corrompue d'interférer avec le binaire), soit utiliser des instantanés de md5sums depuis un environnement propre exclusivement comme un CD de récupération ou un CD autonome (pour empêcher un noyau corrompu d'interférer). Je ne peux insister assez sur ce point: si vous êtes sur un système compromis, vous ne pouvez pas faire confiance à ce qui s'affiche, consultez
Chapitre 11, Après la compromission (la réponse à l'incident).
L'instantané n'inclut pas les fichiers sous /var/lib/dpkg/info
qui incluent les sommes de hachage MD5 des paquets installés (dans les fichiers se terminant par .md5sums
). Vous pourriez également y copier ces renseignements, veuillez cependant noter que:
les fichiers md5sums incluent les md5sums de tous les fichiers fournis par les paquets Debian, pas seulement les binaires système. Par conséquent, la base de données est plus importante (5Mo contre 600ko dans un système Debian GNU/Linux avec un système graphique et environ 2,5Go de logiciels installés) et elle ne tiendra sur un petit support amovible (comme une simple disquette, mais tiendra sans doute sur une clef USB) ;
tous les paquets Debian ne fournissent pas les md5sums pour les fichiers installé car ce n'est pas (actuellement) imposé par la Charte. Notez, cependant, que vous pouvez générer les md5sums pour tous les paquets en utilisant
debsums après avoir fini l'installation du système:
# debsums --generate=missing,keep
Une fois que l'instantané est fait, vous devriez vous assurer de placer le support en lecture seule. Vous pouvez ensuite le stocker pour archivage ou le placer dans le lecteur et utiliser une vérification cron
toutes les nuits en comparant les md5sums d'origine avec ceux de l'instantané.
Si vous ne voulez pas configurer de vérification manuelle, vous pouvez toujours utiliser n'importe quel système d'intégrité disponible qui fera cela et plus, pour de plus amples renseignements, veuillez consulter
Section 10.2, « Tests d'intégrité périodiques ».