Chargement de Smiley Hoster
Aller au contenu

Détecter une compromission Linux avec auditd et Falco sans effacer les preuves

Équipe Smiley Hoster · · 7 min de lecture
Une chronologie relie capture des événements, alerte, conservation des preuves et enquête.

Un nouveau compte apparaît sur un serveur web, puis un processus tente de lire une clé SSH. Un seul journal ne suffit pas à reconstruire la séquence : associez les événements d'audit Linux au contexte d'exécution fourni par Falco.

1. Préparer un pilote et une référence

Ce scénario suppose Linux x86_64, auditd déjà installé, Falco installé depuis son dépôt officiel avec un moteur de capture compatible, sudo et une destination de logs séparée. Commencez sur une machine de préproduction ; n'installez pas d'outils supplémentaires sur un hôte déjà suspect sans accord de l'équipe incident.

Exemple
sudo auditctl -ssudo auditctl -lsudo systemctl status auditd --no-pagersudo falco --versionsudo ss -lntupgetent passwd

Notez les services, comptes techniques, traitements de sauvegarde et lecteurs légitimes de fichiers sensibles. Dans auditctl, contrôlez lost, backlog et enabled : la valeur 2 signifie que les règles sont verrouillées jusqu'au redémarrage. Ne redémarrez pas un serveur suspect pour contourner ce verrou.

Flux proposé : noyau → auditd et Falco → collecteur protégé → alerte avec hôte, heure UTC, utilisateur et processus. Synchronisez les horloges et limitez l'accès aux logs, qui peuvent contenir des arguments confidentiels.

2. Ajouter des détections ciblées

Chargez ces règles temporaires pour les changements de comptes, de groupes et de permissions. Vérifiez auparavant que la clé guide_identity n'est pas déjà utilisée :

Exemple
for f in /etc/passwd /etc/shadow /etc/group /etc/gshadow; do sudo auditctl -a always,exit -F arch=b64 -F path="$f" -F perm=wa -k guide_identitydonesudo auditctl -a always,exit -F arch=b64 -F path=/etc/shadow -F perm=r -k guide_read

w surveille les écritures, a les attributs, r les lectures. Une écriture sur passwd mérite une corrélation avec useradd/usermod ; elle ne prouve pas une intrusion. Lire passwd est banal : réservez sa surveillance en lecture à une investigation ciblée, avec -F path=/etc/passwd -F perm=r.

Pour un dossier SSH existant, remplacez le chemin :

Exemple
sudo auditctl -a always,exit -F arch=b64 -F dir=/home/deploy/.ssh -F perm=rwa -k guide_sshsudo auditctl -a always,exit -F arch=b64 -S execve,execveat -F euid=0 -k guide_exec

La dernière règle peut produire beaucoup d'événements et enregistrer des arguments : gardez-la pour le pilote ou une fenêtre d'investigation. Dupliquez les règles avec arch=b32 seulement si les exécutables 32 bits sont pris en charge et utilisés. Ne journalisez pas tous les syscalls du serveur.

Après validation, exportez uniquement ces règles dans un fichier de persistance nouveau :

Exemple
sudo auditctl -l | grep 'guide_' | sudo tee /etc/audit/rules.d/70-guide.rules >/dev/nullsudo augenrules --check

Le fichier sert aux prochains chargements ; les règles temporaires sont déjà actives. Sauvegardez tout fichier préexistant avant de le remplacer.

Ajoutez à /etc/falco/falco_rules.local.yaml, sans écraser les règles existantes, cette détection pédagogique :

Exemple
- rule: Guide sensitive read desc: Sensitive file opened for reading condition: > evt.type in (open, openat, openat2) and evt.is_open_read=true and evt.rawres>=0 and (fd.name=/etc/shadow or fd.name startswith /home/deploy/.ssh/) output: > Sensitive read user=%user.name process=%proc.name file=%fd.name parent=%proc.pname priority: WARNING- rule: Guide web server shell desc: Shell started directly by a web worker condition: > evt.type in (execve, execveat) and evt.rawres=0 and proc.name in (sh, bash, dash) and proc.pname in (nginx, apache2, httpd, php-fpm) output: > Web shell process=%proc.name parent=%proc.pname user=%user.name priority: WARNING

Validez avec sudo falco --validate /etc/falco/falco_rules.local.yaml, puis rechargez selon votre service. Cette règle ne détecte pas toute exécution suspecte : corrélez aussi chemins inhabituels, nouveaux binaires et processus hors créneau. Construisez des exceptions documentées après observation, jamais une exclusion générale de root.

3. Tester puis enquêter sans nettoyage immédiat

En préproduction, déclenchez une lecture sans afficher le contenu :

Exemple
sudo head -c 0 /etc/shadowsudo ausearch -k guide_read -ts recent -isudo journalctl -u falco --since '-10 minutes'sudo auditctl -s

L'ouverture doit apparaître dans les deux systèmes ; adaptez le nom du service Falco à votre installation. Testez les changements de comptes uniquement avec un compte jetable en laboratoire.

Lors d'une alerte réelle, notez l'heure, le PID, son parent, les connexions et les identifiants d'événement. Exportez les logs vers un stockage d'incident restreint, calculez leurs empreintes et documentez l'opérateur. Une collecte sur machine active modifie son état : faites préserver mémoire et disque par l'équipe compétente si nécessaire. Isolez au niveau réseau tout en gardant le canal de collecte autorisé ; ne supprimez pas immédiatement comptes, fichiers ou conteneurs.

Surveillez événements perdus, files d'attente, CPU, espace disque et nombre d'alertes par règle. Les exclusions trop larges et la lecture systématique de passwd créent respectivement des angles morts et du bruit.

Pour revenir en arrière, retirez les règles ajoutées une à une avec auditctl -d et les mêmes filtres, puis retirez leurs lignes du fichier persistant. N'utilisez pas auditctl -D, qui efface toutes les règles. Restaurez le fichier local Falco précédent, validez et rechargez. Préservez les logs et maintenez les autres détections pendant ce repli.

Sources : Linux Audit, auditctl, Falco, champs des règles.

Slide 1 of 5: Linux security. Spot compromise. Preserve evidence.. Use auditd and Falco to investigate suspicious activity with context.
Slide 2 of 5: Step 1 of 3. Start with a baseline. Pilot on one staging host. Record service accounts, scheduled jobs and normal file access. Check audit counters and send logs to a protected collector.
Slide 3 of 5: Step 2 of 3. Watch changes. Add context.. Track identity-file changes, SSH-key access and suspicious shell execution. Correlate alerts with approved changes. An alert is an investigation lead, not proof.
Slide 4 of 5: Step 3 of 3. Test alerts. Keep evidence.. Confirm audit records and Falco alerts reach the collector. Record event IDs and process ancestry. Export and hash logs. Do not immediately delete suspicious files.
Slide 5 of 5: Build a focused audit trail. Make every alert investigable. Read the guide for detection rules, delivery checks and evidence-preserving investigation steps.
Sur les réseaux sociaux

Retrouvez-le dans nos publications

Les étapes clés de cet article, en carrousel. Suivez-nous pour découvrir les prochaines. Nos publications sont rédigées en anglais.

Cet article a-t-il répondu à votre question ?
Vos retours orientent ce qu'on écrit ensuite.

Votre site en ligne aujourd'hui

Migration gratuite* · remboursé 30 jours

Commencer* Un site de moins de 30 Go, offres cPanel, WordPress et VPS.