Durcissement ANSSI (module SécurixOS) sur toutes les machines de la flotte

- vendor modules/anssi/ depuis SécurixOS (DINUM), copy-paste explicitement
  supporté par son propre README, licence MIT
- hosts/common/base.nix: security.anssi.enable, level=intermediary,
  category=client -- remplace le bloc sysctl qui n'existait que sur le
  profil oreo (nixos_users), même valeurs, rien de plus fort
- garde systemd.coredump.enable=false + apparmor (pas couvert par le
  module ANSSI, exception R45 explicite côté Sécurix)
- ip_forward=0 (R12) n'affecte pas pxe-server, qui n'importe pas ce fichier

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-09 17:00:17 +02:00
co-authored by Claude Sonnet 5
parent 77b089bc45
commit 6bcb16b8ab
9 changed files with 925 additions and 0 deletions
+36
View File
@@ -2,6 +2,8 @@
{ pkgs, lib, ... }:
{
imports = [ ../../modules/anssi ];
# Toutes les machines de la flotte portent le même nom : pas
# d'identification individuelle pour l'instant (voir README du repo
# racine). À revoir plus tard via le numéro de série DMI si un vrai
@@ -17,6 +19,40 @@
# firmware). mkDefault : un profil peut désactiver au cas par cas.
hardware.enableRedistributableFirmware = lib.mkDefault true;
# Durcissement : reprend le module ANSSI de SécurixOS (modules/anssi/,
# vendored ci-dessus), qui remplace/couvre déjà tous les sysctls qui
# étaient déclarés à la main sur le profil oreo (dmesg_restrict,
# kptr_restrict, yama.ptrace_scope, rp_filter, tcp_syncookies,
# protected_hardlinks/symlinks -- mêmes valeurs, vérifié règle par
# règle dans modules/anssi/kernel-options.nix : R9, R11, R12, R14).
# level "intermediary" : c'est le niveau que couvraient déjà TOUTES
# les valeurs qu'on avait mises à la main sur oreo -- rien de plus
# fort n'a été inventé ici. category "client" : ce sont des postes de
# travail, pas des serveurs (les règles actuellement implémentées sont
# toutes "category = base" donc ça ne change rien pour l'instant, mais
# c'est le bon réglage si Sécurix ajoute des règles catégorisées).
#
# ATTENTION : R12 force net.ipv4.ip_forward = 0. Sans impact ici (ce
# sont des postes clients), mais à ne SURTOUT PAS importer sur
# pxe-server/configuration.nix, qui a besoin l'inverse (voir son
# networking.nat) -- pxe-server n'importe pas ce fichier, donc ok.
# R8 ajoute des mitigations CPU dont "mds=full,nosmt" (désactive
# l'hyperthreading) : impact perf réel sur du matériel bas de gamme,
# c'est la vraie recommandation ANSSI au niveau "intermediary", pas
# une invention -- à surveiller sur les PC les plus faibles du parc.
security.anssi = {
enable = true;
level = "intermediary";
category = "client";
};
# Pas (encore) couvert par le module ANSSI ci-dessus (R45 y est
# explicitement listé en exception : "AppArmor is partially supported
# on NixOS", modules/anssi/base.nix) -- repris tel quel du profil oreo.
systemd.coredump.enable = false;
security.apparmor.packages = [ pkgs.apparmor-profiles ];
security.apparmor.enableCache = true;
time.timeZone = "Europe/Paris";
i18n.defaultLocale = "fr_FR.UTF-8";
i18n.extraLocaleSettings = {