Set-OPS-Public/roles/auditd/defaults/main.yml
Daniel Allaire 5f5af70a9c audit : la piste sort de la machine auditee, et quelqu un regarde
auditd tournait, onze regles etaient armees, et rien de tout cela ne servait
a grand-chose. Quatre manques, mesures avant d etre combles.

1. Rien ne sortait. Alloy ne contenait aucune reference a l audit et les cinq
greffons etaient inactifs. Il lit maintenant audit.log et le pousse vers Loki
— sans toucher une permission, alloy etant deja dans le groupe adm. On ecarte
le greffon syslog : journald limite le debit, et une rafale d evenements est
exactement le moment qui compte.

2. Aucune sonde. Elle mesure la COLLECTE, pas l armement : le nombre de
regles est precisement le chiffre qui restait bon pendant la panne du
2026-08-30. Il part en perfdata, jamais en verdict.

3. Retention non declaree. Mesuree a 4,6 Mo/jour au repos ; portee de 40 a
128 Mo. Depuis (1), le local n est plus l archive mais un tampon.

4. Les regles ignoraient la cle privee de l hote. -w /etc/step/ partout, et
-w /etc/step-ca/ sur la seule autorite : auditctl refuse un watch vers un
chemin absent et fait echouer le chargement entier.

Verifie sur l autorite seule d abord, puis 14/14 : regles armees, auditd
actif, sonde a 0, et les quatorze hotes presents dans Loki sous job=audit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-11 09:00:28 -04:00

56 lines
2.8 KiB
YAML

---
auditd_enabled: true
# LES FICHIERS QU'UNE NOMENCLATURE ABANDONNEE A LAISSES DERRIERE ELLE.
#
# Ce role a porte le nom `chezlepro` avant de porter celui du moteur. Le renommage a
# change le fichier DEPOSE sans retirer le precedent — meme mue que `ssh_baseline`, meme
# registre, et une consequence PIRE ici.
#
# `augenrules` CONCATENE tout `rules.d/`. Deux fichiers portant la meme regle la
# presentent donc deux fois au noyau, qui refuse la seconde :
#
# Error sending add rule data request (Rule exists)
# There was an error in line 16 of /etc/audit/audit.rules
#
# `audit-rules.service` echoue, et `auditd.service` ne demarre pas — c'est sa dependance.
# Resultat mesure le 2026-08-30 sur les quinze machines de Chezlepro : ONZE REGLES
# ARMEES DANS LE NOYAU, ET PERSONNE POUR COLLECTER. `auditctl -l` les affiche, ce qui
# donne toutes les apparences d'un audit qui fonctionne.
#
# On n'ajoute a cette liste que des noms qu'on a REELLEMENT deposes un jour : retirer un
# fichier qu'on n'a jamais ecrit serait s'arroger le droit de supprimer la configuration
# de quelqu'un d'autre.
auditd_fichiers_perimes:
- 99-chezlepro.rules
# RETENTION LOCALE : UN TAMPON, PLUS UNE ARCHIVE (2026-09-11).
#
# Debian livre 8 Mo x 5 fichiers = 40 Mo. Mesure sur `infra-edge-01` au repos,
# deploiement termine : 3 380 octets en 60 s, soit ~4,6 Mo/jour. Les 40 Mo tiennent
# donc environ NEUF JOURS — sauf qu'une reconstruction a elle seule en brule 4 Mo : les
# trois du 2026-09-10 auraient mange trois jours de piste.
#
# CE QUI CHANGE LE RAISONNEMENT : depuis aujourd'hui, Alloy expedie `audit.log` vers Loki
# (`client_journal`). L'archive n'est plus ici — elle est chez le collecteur, hors de la
# machine auditee, ce qui est le seul endroit ou elle ait une valeur de preuve. Ce qui
# reste en local n'est plus qu'un TAMPON : de quoi traverser une panne de Loki sans
# perdre la piste.
#
# 16 Mo x 8 = 128 Mo, soit ~28 jours au repos. Sur un disque de 40 Go c'est negligeable,
# et ca couvre largement toute indisponibilite plausible du collecteur.
#
# CE CHOIX EST UNE DECISION D'EXPLOITATION, pas une derivation : deux lignes a changer si
# la mesure du debit evolue.
auditd_max_log_file: 16 # Mo par fichier
auditd_num_logs: 8 # fichiers conserves
# SONDE « audit » — AGE MAXIMAL TOLERE SANS UNE SEULE ECRITURE.
#
# Repose sur une observation, et il faut le savoir : le journal bouge meme SANS activite
# humaine. La regle `time-change` capte les ajustements d'horloge (218 evenements sur la
# premiere heure d'une machine neuve), et les sessions `sudo` du deploiement le reste du
# temps. Une heure de silence COMPLET n'est donc pas un creux normal : c'est soit
# `disk_full_action = SUSPEND` qui a mordu, soit la collecte qui s'est arretee sans que le
# service meure.
auditd_sonde_age_max: 3600