Une fois le système installé et configuré, l'état de la majorité des fichiers et répertoires (hors données) n'a pas de raison d'évoluer (sauf mises à jour de sécurité). Il est donc intéressant de s'assurer que c'est bien le cas : tout changement inattendu est alors suspect. Les outils présentés dans cette section permettent de surveiller tous les fichiers et de prévenir les administrateurs en cas d'altération inattendue, ou alors simplement de diagnostiquer l'étendue des altérations.
14.3.3.1. Audit des paquets : l'outil debsums
et ses limites
debsums
est un outil intéressant du point de vue de la sécurité puisqu'il permet de trouver facilement quels fichiers installés ont été modifiés (suite par exemple à des interventions malignes). Mais il convient de nuancer fortement cette affirmation : d'abord, tous les paquets Debian ne fournissent pas les empreintes nécessaires au fonctionnement de ce programme (quand elles existent, elles se trouvent dans un fichier
/var/lib/dpkg/info/paquet.md5sums
).
Rappelons qu'une empreinte est une valeur, généralement numérique (même si elle est codée en hexadécimal), constituant une sorte de signature caractéristique du contenu d'un fichier. Elle est calculée au moyen d'algorithmes (comme le célèbre MD5 ou le moins connu SHA1) qui garantissent dans la pratique que (presque) toute modification du fichier, aussi minime soit-elle, entraînera un changement de l'empreinte ; c'est l'« effet d'avalanche ». C'est pourquoi une empreinte numérique sert à vérifier que le contenu d'un fichier n'a pas été altéré. Ces algorithmes ne sont pas réversibles, c'est-à-dire que pour la plupart d'entre eux, il est impossible de retrouver un contenu inconnu à partir de la seule empreinte. De récentes découvertes scientifiques tendent à infirmer l'inviolabilité de ces principes, mais cela ne remet pas encore en cause leur usage puisque la création de contenus différents générant la même empreinte semble être très contraignante.
D'autre part, les fichiers md5sums
sont stockés sur le disque dur : un intrus consciencieux modifiera ces fichiers pour leur faire refléter les nouvelles sommes de contrôle des fichiers sur lesquels il sera intervenu.
On peut contourner le premier inconvénient en demandant à debsums
d'utiliser directement un paquet .deb
pour effectuer le contrôle au lieu de se reposer sur le fichier md5sums
. Il faut au préalable télécharger les fichiers .deb
correspondants :
#
apt-get --reinstall -d install `debsums -l`
[ ... ]
#
debsums -p /var/cache/apt/archives -g
En outre, dans sa configuration par défaut, debsums
génère automatiquement les fichiers md5sums
manquants en effectuant l'opération ci-dessus chaque fois que APT est employé pour installer un nouveau paquet.
L'autre souci se contourne de la même manière : il suffit d'effectuer la vérification par rapport à un fichier .deb
intègre. Cela impose de disposer de tous les fichiers .deb
des paquets installés et d'être assuré de leur intégrité. Pour cela, le plus simple est de les reprendre depuis un miroir Debian. Cette opération étant plutôt lente et fastidieuse, ce n'est donc pas une technique à suivre systématiquement dans un but de prévention.
#
apt-get --reinstall -d install `grep-status -e 'Status: install ok installed' -n -s Package`
[ ... ]
#
debsums -p /var/cache/apt/archives --generate=all
Attention, cet exemple a employé la commande grep-status
du paquet grep-dctrl, qui n'est pas installé en standard.
14.3.3.2. Surveillance des fichiers : AIDE
AIDE (Advanced Intrusion Detection Environment) est un outil qui sert à vérifier l'intégrité des fichiers et à détecter toute altération par rapport à une image du système préalablement enregistrée et validée. Cette dernière prend la forme d'une base de données (/var/lib/aide/aide.db
) contenant les caractéristiques de tous les fichiers du système (permissions, horodatages, empreintes numériques, etc.). Cette base de données est initialisée une première fois par aideinit
; elle est ensuite employée pour vérifier quotidiennement (script /etc/cron.daily/aide
) que rien n'a changé. Si des changements sont détectés, le logiciel les enregistre dans des fichiers de journalisation (/var/log/aide/*.log
) et envoie un courrier à l'administrateur avec ses découvertes.
Le comportement du paquet aide se paramètre grâce à de nombreuses options dans /etc/default/aide
. La configuration du logiciel proprement dit se trouve dans /etc/aide/aide.conf
et /etc/aide/aide.conf.d/
(en réalité, ces fichiers servent de base à update-aide.conf
pour créer /var/lib/aide/aide.conf.autogenerated
). La configuration indique quelles propriétés de chaque fichier il faut vérifier. Ainsi, le contenu des fichiers de logs peut varier tant que les permissions associées ne varient pas, mais le contenu et les permissions d'un exécutable doivent être fixes. La syntaxe n'est pas très compliquée, mais elle n'est pas forcément intuitive pour autant. La lecture de la page de manuel aide.conf(5) est donc bénéfique.
Une nouvelle version de la base de données est générée chaque jour dans /var/lib/aide/aide.db.new
et peut être utilisée pour remplacer la base officielle si tous les changements constatés étaient légitimes.