85 lines
3.6 KiB
YAML
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).
|