Files
ansible-mln/hardening/playbook-audit-rules-sudo-omnex.yml
2026-07-22 21:01:19 +02:00

85 lines
3.6 KiB
YAML

---
# 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).