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 :
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:¶
- 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:
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:
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.