Aller au contenu

Audit des événements système : Surveillance et analyse de la sécurité

Dans cet article

Assurer la sécurité et la stabilité d'un système Linux nécessite plus que simplement prévenir les menaces ; il est essentiel de détecter et d'enquêter sur les incidents. Audit système ne bloque pas les attaques, mais il vous permet d'enregistrer la violation, d'identifier sa source et son étendue, et de compiler des preuves pour l'analyse.

L'outil d'audit clé dans la plupart des distributions est le démon *****auditd******. Il suit les appels du noyau (appels système), consigne les actions des utilisateurs et des processus, et stocke les événements dans des journaux structurés.

Comment fonctionne auditd

Le système d'audit s'attache au noyau via des déclencheurs qui se déclenchent à l'entrée d'un appel système (entry) ou à sa sortie (exit). Les règles déterminent quels appels, fichiers, utilisateurs ou processus sont surveillés. Tous les événements capturés sont écrits dans /var/log/audit/audit.log.

Avec auditd, vous pouvez suivre :

  • Démarrage/arrêt des systèmes et services
  • Opérations sur des fichiers critiques tels que /etc/passwd, /etc/shadow, les configurations SSH, etc.
  • Modifications des permissions, de la propriété ou des attributs des fichiers
  • Création/suppression de fichiers, répertoires et liens
  • Montage de systèmes de fichiers
  • Connexions réseau et changements de configuration
  • Actions d'utilisateurs ou de processus spécifiques

Installation et composants

Dans CentOS/RHEL, le paquet audit est installé par défaut.
Dans Debian/Ubuntu, installez-le avec :

sudo apt-get install auditd

Utilitaires clés :

Utilitaire Utilité
auditctl Gérer les règles d'audit et l'état (configuration dynamique)
ausearch Rechercher des journaux par divers critères (utilisateur, fichier, appel système, etc.)
aureport Générer des rapports récapitulatifs (par fichier, utilisateur, temps, etc.)
autrace Suivre les appels système d'un processus (similaire à strace, mais intégré à l'audit)

La configuration du démon se trouve dans /etc/audit/auditd.conf (tampons, comportement de dépassement, rotation des journaux, etc.). Les paramètres par défaut conviennent généralement à la plupart des scénarios.

Configuration des règles d'audit

Les règles peuvent être définies dynamiquement via auditctl ou statiquement dans /etc/audit/audit.rules.

Syntaxe de base:

sudo auditctl -a <list>,<action> -S <syscall> -F <filter>
  • Listes d'événements:
    task — création de processus
    entry / exit — entrée/sortie d'appel système (les plus courants)
    user — événements espace utilisateur
    exclude — exclusions
  • Actions:
    always — enregistrer l'événement
    never — ignorer
  • Exemples:
# Suivre les ouvertures de fichiers dans /etc avec des changements d'écriture ou d'attribut
sudo auditctl -a task,always -S open -F dir=/etc -F auid>=1000 -F perm=wa

# Même chose, mais plus simple et plus efficace pour les fichiers/répertoires
sudo auditctl -a task,always -S open -F dir=/etc -F perm=wa

# Fichier spécifique
sudo auditctl -a task,always -F path=/etc/passwd -F perm=wa

Note

Le filtre -p wa signifie écriture et changement d'attribut.

Règles persistantes — dans /etc/audit/audit.rules

Le format correspond aux commandes auditctl, mais sans la commande elle‑même:

# Exemples d'entrées (une par ligne)
-a task,always -S open -F dir=/etc -F perm=wa
-a task,always -S open -F path=/etc/passwd -F perm=wa

Après avoir modifié le fichier, appliquez les modifications:

sudo systemctl restart auditd

Analyse des journaux

Les journaux sont stockés dans /var/log/audit/. Les outils clés sont aureport et ausearch.

aureport — Résumés et rapports

# Rapport sur les accès aux fichiers
sudo aureport -f
# Seulement les 10 dernières minutes (noms lisibles par l'homme)
sudo aureport -f -i --start recent
# Résumé par fichier (combien de fois chaque fichier a été accédé)
sudo aureport -f --summary
# Rapport pour une période spécifique
sudo aureport --start 08/20/2025 12:00 --end 08/20/2025 13:00 -f
# Marqueurs de temps pratiques : aujourd'hui, hier, cette semaine, récent, maintenant
sudo aureport -f --start today --summary

Exemple de recherche d'accès suspect:

sudo aureport -f -i --start today | grep /etc/passwd

ausearch — Analyse détaillée des événements

# Par ID d'événement (issu d'aureport)
sudo ausearch -a 123456

# Par utilisateur (UID)
sudo ausearch -ui 1001 -i

# Par exécutable
sudo ausearch -x /usr/bin/sudo -i

# Par appel système
sudo ausearch -sc openat -i

# Par service (par ex., cron)
sudo ausearch -tm cron -i

# Avec une limite de temps
sudo ausearch --start 08/20/2025 12:00 --end 08/20/2025 13:00 -f /etc/passwd

Note

Le drapeau -i (ou --interpret) remplace les UIDs/GIDs et les codes d'appels système par des noms lisibles par l'homme.