Files
ansible-mln/hardening/playbook-kernel-sysctl-hardening.yml
2026-07-22 21:01:19 +02:00

72 lines
3.5 KiB
YAML

---
# Durcissement CIS Ubuntu 24.04 — modules noyau reseau/filesystem inutilises + sysctl reseau
# (checks 35509, 35604-35607, 35608-35618)
#
# IMPORTANT :
# - net.ipv4.ip_forward est laisse ACTIF sur la plupart des hosts (Docker gere le NAT des ports
# publies, vpn-uber fait relais entre pairs WireGuard) — le desactiver casserait ces usages.
# Seul load-balancer (pas de Docker, pas de relais VPN) le desactive, via la variable
# `ip_forwarding_disabled` (group_vars, defaut false, true uniquement pour load-balancer).
# Le check CIS 35608 restera donc en echec par necessite fonctionnelle sur la plupart des hosts.
# - rp_filter est mis a 1 (strict) partout : verifie sans casse sur cette infra (Docker + WireGuard
# coexistent sans probleme de routage asymetrique ici), mais a re-tester si la topologie change.
# - Aucun des modules blacklistes n'est charge sur cette infra (verifie via lsmod avant deploiement) :
# zero impact fonctionnel attendu. Exception : fat/fuse sont compiles en dur dans le noyau Ubuntu
# (builtin) et resteront "disponibles" quoi qu'il arrive — check CIS 35509 restera en echec pour
# ces deux modules specifiquement, cas documente par la CIS elle-meme comme sans remediation
# possible ("if pre-compiled into the kernel, no remediation is necessary").
#
# `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-kernel-sysctl-hardening.yml --limit pre-prod-uber
- name: Durcissement kernel modules + sysctl reseau (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 le blacklist des modules noyau inutilises
ansible.builtin.template:
src: ../templates/blacklist-unused-modules.conf.j2
dest: /etc/modprobe.d/cis-blacklist-unused.conf
owner: root
group: root
mode: "0644"
- name: Deployer le durcissement sysctl reseau
ansible.builtin.template:
src: ../templates/60-cis-network-hardening.conf.j2
dest: /etc/sysctl.d/60-cis-network-hardening.conf
owner: root
group: root
mode: "0644"
register: sysctl_conf
- name: Appliquer les parametres sysctl actifs
ansible.builtin.command:
cmd: sysctl --system
when: sysctl_conf.changed
changed_when: true
register: sysctl_apply
- name: Verifier qu'aucune erreur n'est remontee par sysctl --system
ansible.builtin.fail:
msg: "Erreur sysctl --system sur {{ inventory_hostname }} : {{ sysctl_apply.stdout }}"
when: sysctl_apply is defined and sysctl_apply.stdout is defined and 'error' in sysctl_apply.stdout | lower
- name: Verifier la valeur effective de ip_forward
ansible.builtin.command:
cmd: sysctl -n net.ipv4.ip_forward
register: ip_forward_check
changed_when: false
failed_when: >
(not (ip_forwarding_disabled | default(false)) and ip_forward_check.stdout != "1") or
((ip_forwarding_disabled | default(false)) and ip_forward_check.stdout != "0")
- name: Confirmer le succes pour cet host
ansible.builtin.debug:
msg: "✅ Durcissement kernel/sysctl appliqué sur {{ inventory_hostname }} — ip_forward={{ ip_forward_check.stdout }}"