--- - 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 # LA RETENTION EST UN CHOIX, DONC ELLE S'ECRIT (2026-09-11). Voir defaults/main.yml pour # l'arithmetique : depuis qu'Alloy expedie `audit.log` vers Loki, le local n'est plus # l'archive mais un TAMPON pour traverser une panne du collecteur. # # `lineinfile` plutot qu'un gabarit complet : `auditd.conf` porte une quinzaine de # reglages que Debian ajuste, et les reecrire tous nous rendrait responsables de choix # que nous n'avons pas faits. - name: Fixer la retention locale du journal d'audit ansible.builtin.lineinfile: path: /etc/audit/auditd.conf regexp: "^{{ item.cle }}\\s*=" line: "{{ item.cle }} = {{ item.valeur }}" owner: root group: root mode: "0640" loop: - { cle: "max_log_file", valeur: "{{ auditd_max_log_file }}" } - { cle: "num_logs", valeur: "{{ auditd_num_logs }}" } loop_control: label: "{{ item.cle }}" 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 # LA SONDE MESURE LA COLLECTE, PAS L'ARMEMENT. Voir le gabarit : le 2026-08-30, onze # regles etaient armees dans le noyau sur quinze machines ou personne ne collectait. # # ELLE EST DECLAREE PAR LE GROUPE `serveur_durci` ET DEPOSEE ICI. La derivation de # supervision ne traverse pas les roles-taches : declaree dans `roles/auditd/meta/`, elle # serait restee invisible d'Icinga — et le menage de `client_sante` l'aurait effacee au # passage suivant. Meme lecon que la sonde `correctifs`, le 2026-09-10. # CE ROLE ECRIVAIT SA SONDE SANS CREER LE REPERTOIRE (2026-09-13). Vingt-trois roles sur # vingt-cinq l'assurent avant d'y deposer quoi que ce soit ; `auditd` et `chrony` etaient # les deux exceptions, et ils s'en tiraient parce qu'un role plus precoce l'avait cree. # # UNE DEPENDANCE D'ORDRE QUI N'EST ECRITE NULLE PART. Elle tient tant que la couche # complete passe dans l'ordre habituel, et elle casse des qu'on applique un groupe SEUL : # # Destination directory /usr/local/lib/setops/sondes does not exist # # Mesure sur une flotte neuve : treize machines l'avaient, une ne l'avait pas. Rien ne # distinguait la quatorzieme, sinon l'ordre dans lequel les taches l'avaient atteinte. - name: Assurer le repertoire des sondes de supervision ansible.builtin.file: path: /usr/local/lib/setops/sondes state: directory owner: root group: root mode: "0755" - name: Deposer la sonde de collecte d'audit ansible.builtin.template: src: sonde-audit.sh.j2 dest: /usr/local/lib/setops/sondes/audit.sh owner: root group: root mode: "0750" when: auditd_enabled | bool