Aller au contenu

auditd

À quoi il sert

Le noyau Linux contient un sous-système d'audit qui produit un enregistrement à chaque événement correspondant à une règle : exécution d'un programme, écriture dans un fichier sensible, changement d'identité. auditd, le démon de l'espace utilisateur, lit ces enregistrements, les écrit dans /var/log/audit/audit.log et les transmet à des greffons (vers syslog, vers une machine distante). Autour de lui : auditctl charge les règles et lit l'état du noyau, augenrules assemble les fichiers de /etc/audit/rules.d/, ausearch et aureport cherchent dans le journal et en tirent des synthèses. Chaque événement porte l'identité de connexion (auid), qui survit à sudo et à su : on sait qui a vraiment agi.

Quand le choisir

Quand il faut prouver qui a fait quoi et quand sur un serveur : imputabilité des actions d'administration, exigences de clients publics ou de NIS2, enquête après incident. Le guide BP-028 de l'ANSSI le recommande au niveau renforcé. Il se complète par un outil de scellement comme AIDE, qui dit ce qui a changé sans dépendre des journaux, et par l'enregistrement des sessions sudo. Il ne voit que ce que ses règles couvrent : sans règle, presque rien n'est tracé.

Points d'attention

  • Écrivez les règles persistantes dans /etc/audit/rules.d/*.rules et chargez-les avec augenrules --load ; ne modifiez jamais /etc/audit/audit.rules, qui est généré.
  • Donnez une clé (-k ou -F key=) à chaque règle, sinon personne ne saura retrouver ses événements, et placez -F arch=b64 avant -S.
  • La forme -w est déclarée dépréciée dans la version 4 d'audit (Debian 13) ; la forme -a always,exit -F path=... -F perm=wa est acceptée partout.
  • -e 2 rend la configuration immuable jusqu'au redémarrage : posez-le en dernier, une fois les règles validées.
  • Une règle trop large (tous les execve, tous les accès à /var) noie le journal et ralentit la machine. auditd.conf arbitre entre disponibilité et complétude quand le disque se remplit (disk_full_action) : décidez-le, et placez /var/log/audit sur un système de fichiers dédié.
  • Un journal resté sur la machine ne vaut rien face à un attaquant root : envoyez les événements au fil de l'eau vers un collecteur (greffon syslog ou audisp-remote).
  • Les versions diffèrent : audit 3.1.2 sur Ubuntu 24.04, 4.0.2 sur Debian 13, où le chargement des règles passe par l'unité audit-rules.service.

Par où commencer

La leçon Tracer et contrôler l'intégrité : auditd et AIDE du cours Linux : administration système, qui écrit les règles d'audit des serveurs de Signalements, lit un événement brut et retrouve l'auteur d'une action avec ausearch. Puis les pages de manuel auditctl(8), audit.rules(7), auditd.conf(5) et ausearch(8), et le dépôt du projet, qui fournit des règles d'exemple.