--- # Regles d'audit detaillees (CIS 6.2.3.1-6.2.3.3) — surveillance sudo + surveillance dediee omnex # # PREREQUIS : necessite hardening/playbook-coredump-auditd-hardening.yml deja applique # (auditd installe et actif). # # - Regles CIS standard : changements /etc/sudoers(.d), toute action "en tant qu'un autre # utilisateur" (execve avec euid!=uid, couvre sudo/su), modifications de /var/log/sudo.log. # - Regle custom omnex : capture TOUTE commande executee par omnex (execve filtre sur auid, # qui persiste a travers sudo/su, donc suit omnex meme apres elevation) — uniquement sur # les hosts ou l'utilisateur omnex existe (absent sur bdd-redis-prod/backup-mln, root direct). # - `augenrules --load` recharge la config a chaud : PAS besoin de redemarrage ici (contrairement # a audit=1 dans GRUB) tant que le mode immutable (-e 2) n'est pas active — volontairement pas # configure par ce playbook (risque : plus aucune modif de regle possible sans reboot). # # `serial: 1` + `any_errors_fatal` : un host a la fois, arret immediat si un host casse. # # Usage recommande : tester sur un host avant le rollout complet : # ansible-playbook hardening/playbook-audit-rules-sudo-omnex.yml --limit pre-prod-uber - name: Regles d'audit detaillees - sudo + omnex (CIS Ubuntu 24.04) hosts: prod,pre-prod,bdd-redis-prod,replica-prod,infra,infra-runner,infra-utils,load-balancer become: true serial: 1 any_errors_fatal: true tasks: - name: Deployer les regles d'audit sudo (CIS 6.2.3.1-6.2.3.3) ansible.builtin.template: src: ../templates/audit-50-sudo.rules.j2 dest: /etc/audit/rules.d/50-sudo.rules owner: root group: root mode: "0640" register: sudo_rules - name: Verifier si l'utilisateur omnex existe sur cet host ansible.builtin.getent: database: passwd key: omnex ignore_errors: true register: omnex_getent - name: Deployer la regle d'audit dediee omnex (uniquement si l'utilisateur existe) ansible.builtin.template: src: ../templates/audit-51-omnex.rules.j2 dest: /etc/audit/rules.d/51-omnex.rules owner: root group: root mode: "0640" vars: omnex_uid: "{{ ansible_facts.getent_passwd.omnex[1] }}" when: omnex_getent is succeeded register: omnex_rules - name: Charger les nouvelles regles d'audit (augenrules --load) ansible.builtin.command: cmd: augenrules --load when: sudo_rules.changed or (omnex_rules is defined and omnex_rules.changed) changed_when: true - name: Verifier que les regles sudo sont bien actives (auditctl -l) ansible.builtin.command: cmd: auditctl -l register: auditctl_check changed_when: false failed_when: > 'scope' not in auditctl_check.stdout or 'user_emulation' not in auditctl_check.stdout or 'sudo_log_file' not in auditctl_check.stdout - name: Verifier que la regle omnex est active (si applicable) ansible.builtin.command: cmd: auditctl -l register: auditctl_omnex_check changed_when: false when: omnex_getent is succeeded failed_when: "'omnex_actions' not in auditctl_omnex_check.stdout" - name: Confirmer le succes pour cet host ansible.builtin.debug: msg: >- ✅ Règles d'audit sudo{{ ' + omnex' if omnex_getent is succeeded else '' }} actives sur {{ inventory_hostname }} (auditctl -l vérifié, pas de reboot requis).