Set-OPS-Public/roles/auditd/tasks/main.yml
Daniel Allaire e2bc235132 audit + timers : deux services en echec sur les quinze machines, muets depuis toujours
`make prouver` disait 15/15 a failed=0. Les machines, elles, portaient chacune trois
unites systemd en echec. Le rapport d Ansible n est pas l etat d une machine.

AUDITD : ONZE REGLES ARMEES, PERSONNE POUR COLLECTER.

Deux fichiers de regles identiques cohabitaient — 99-chezlepro.rules et
99-setops.rules, vestige du renommage du role. augenrules CONCATENE rules.d/ :

    Error sending add rule data request (Rule exists)
    There was an error in line 16 of /etc/audit/audit.rules

audit-rules echoue, et auditd ne demarre pas — c est sa dependance. Resultat :
auditctl -l affiche onze regles, ce qui donne toutes les apparences d un audit qui
fonctionne, et rien ne les enregistre.

Meme mue que ssh_baseline, meme registre : auditd_fichiers_perimes. On n y ajoute
que des noms qu on a REELLEMENT deposes un jour.

Et `failed_when: false` cachait la panne : quinze machines a failed=0 avec auditd
mort sur les quinze. Un service de securite qui ne demarre pas doit se VOIR.

TIMERS APT-DAILY : UN ETAT D ECHEC RESIDUEL.

Masquer le service pendant que son timer tourne lui fait perdre sa cible ; systemd
le note et le GARDE (Unit to trigger vanished). `state: stopped` n efface pas un
etat failed — seul reset-failed le fait.

Ce n est pas cosmetique : une supervision qui compte les unites en echec compte ces
deux-la pour toujours, et la vraie panne s y noiera. Meme defaut que le journal de
la frontiere noye sous 982 000 entrees.

DIAGNOSTIC FAUX, CORRIGE : j avais lu « masked enabled » dans list-unit-files comme
un etat contradictoire, et construit une reparation pour le defaire. Ces colonnes
sont ETAT puis PRESET — masque avec un prereglage constructeur active est normal.
La reparation a ete annulee avant d etre livree.

make verifier : vert. make prouver : CONFORME, 55 OK, 0 echec, 0 saute.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-08-31 16:16:13 -04:00

57 lines
2 KiB
YAML

---
- name: Installer auditd
ansible.builtin.apt:
name:
- auditd
- audispd-plugins
state: present
# AVANT DE POSER LES NOTRES, RETIRER CELLES D'UNE NOMENCLATURE ABANDONNEE.
#
# `augenrules` concatene tout `rules.d/` : un doublon fait echouer le chargement ENTIER,
# et `auditd` ne demarre pas faute de sa dependance. Voir defaults/main.yml.
- name: Retirer les regles auditd d'une nomenclature abandonnee
ansible.builtin.file:
path: "/etc/audit/rules.d/{{ item }}"
state: absent
loop: "{{ auditd_fichiers_perimes }}"
notify: Restart auditd
when: auditd_enabled | bool
- name: Déployer les règles auditd Set-OPS
ansible.builtin.template:
src: 99-setops.rules.j2
dest: /etc/audit/rules.d/99-setops.rules
owner: root
group: root
mode: "0640"
notify: Restart auditd
when: auditd_enabled | bool
# `failed_when: false` A CACHE LA PANNE PENDANT TOUT UN DEPLOIEMENT (2026-08-30).
#
# Quinze machines rapportaient `failed=0` alors qu'`auditd` etait mort sur les quinze. Un
# service de securite qui ne demarre pas doit se VOIR : c'est precisement le genre de
# panne que personne ne va chercher, puisque rien ne la signale et que `auditctl -l`
# affiche des regles.
#
# On tolere encore l'echec sur les machines ou l'audit n'est pas demande — mais quand il
# l'est, on le dit.
- name: Activer auditd
ansible.builtin.systemd:
name: auditd
enabled: true
state: started
when: auditd_enabled | bool
register: auditd_demarrage
- name: Refuser si l'audit est demande mais ne tourne pas
ansible.builtin.assert:
that:
- auditd_demarrage is not failed
fail_msg: >-
`auditd_enabled` est vrai mais le service n'a pas demarre. Cause la plus frequente :
un doublon dans `/etc/audit/rules.d/` fait echouer `audit-rules.service`, dont
`auditd` depend — verifier `augenrules --check` et `auditd_fichiers_perimes`.
Les regles peuvent etre ARMEES dans le noyau sans que personne ne collecte.
when: auditd_enabled | bool