Modules de sécurité
🔑 darkone.security.complement
Section intitulée « 🔑 darkone.security.complement »Mesures supplémentaires transversales — Annexe A (C1–C12). (en cours)
Ces mesures n’ont pas de numéro ANSSI mais sont essentielles à l’esprit du guide. Couvre les correctifs linux-hardened (C1), LSM Lockdown (C2), USBGuard (C3), nftables deny-by-default (C4), SSH durci (C5), LUKS2 (C6), NTP/NTS (C7), DNS sécurisé (C8), vidages de mémoire désactivés (C9), anti-brute-force PAM (C10), bannières légales (C11) et restriction cron/at (C12).
- enable
boolActiver les mesures supplémentaires ANSSI (C1–C12). - lockdownLevel
enum [ "none" "integrity" "confidentiality" ]Niveau LSM Lockdown (C2) - lsmStack
listOf strOrdre de pile LSM (C2, R11, R20). Modifie boot.kernelParams lsm=… - ntpServers
listOf strServeurs NTP/NTS (C7). - useNts
boolActiver NTS (Network Time Security) pour l’authentification NTP (C7). - sshBanner
strBannière SSH affichée avant authentification (C11). - cronAllowedUsers
listOf strUtilisateurs autorisés à programmer des tâches cron (C12). - egressAllowlist
listOf strIP/CIDR autorisés en sortie pour le filtrage nftables sortant strict (C4).
darkone.security.complement = { enable = false; lockdownLevel = "integrity"; lsmStack = [ ]; ntpServers = [ ]; useNts = true; sshBanner = '' *** Access restricted to authorized personnel *** All connections are logged and may be subject to prosecution. ''; cronAllowedUsers = [ ]; egressAllowlist = [ ];};🔑 darkone.security.filesystem
Section intitulée « 🔑 darkone.security.filesystem »Partitionnement, arborescence de fichiers et permissions de fichiers (R28–R29, R50–R57). (en cours)
Couvre les options de montage sécurisées (R28), la restriction de /boot (R29), les permissions des fichiers sensibles (R50), les mots de passe hors du magasin (R51), les sockets (R52), les fichiers orphelins (R53), le bit collant (R54), les répertoires temporaires par utilisateur (R55) et setuid (R56, R57).
- enable
boolActiver le durcissement du système de fichiers ANSSI (R28–R29, R50–R57). - allowedSetuid
listOf strListe blanche des binaires setuid/setgid tolérés (R56, R57).
darkone.security.filesystem = { enable = false; allowedSetuid = [ ];};🔑 darkone.security.integrity
Section intitulée « 🔑 darkone.security.integrity »Intégrité du système de fichiers — HIDS (R76–R77). (en cours)
Couvre le scellement et la vérification d’intégrité via AIDE (R76) et la protection de la base de données scellée avec signature GPG plus copie distante (R77).
- enable
boolActiver l’intégrité ANSSI HIDS — AIDE (R76–R77). - aideRemoteCopy
nullOr ( submodule { options = { host = lib.mkOption { type = str; description = "Remote host for the AIDE database copy."; }; sshKeyFile = lib.mkOption { type = path; description = "Path to the private SSH key for the remote copy."; }; }; } )Copie distante de la base de données AIDE signée par GPG (R77). null = désactivé.- host
strHôte distant pour la copie de la base de données AIDE. - sshKeyFile
pathChemin vers la clé SSH privée pour la copie distante.
- host
darkone.security.integrity = { enable = false; aideRemoteCopy = null; aideRemoteCopy.host = null; aideRemoteCopy.sshKeyFile = null;};🔑 darkone.security.journaling
Section intitulée « 🔑 darkone.security.journaling »Journalisation et auditd (R71–R73). (en cours)
Couvre la journalisation persistante avec forwarding TLS (R71), journaux dédiés par service (R72) et auditd avec règles ANSSI (R73).
- enable
boolActiver la journalisation ANSSI et auditd (R71–R73).
darkone.security.journaling.enable = false;🔑 darkone.security.kernel-build
Section intitulée « 🔑 darkone.security.kernel-build »Configuration du noyau statique — nécessite recompilation (R15–R27). (en cours)
Ces règles nécessitent un noyau personnalisé via boot.kernelPackages.
NixOS le permet via structuredExtraConfig. Toutes ces règles portent
le tag kernel-recompile : elles sont ignorées si ce tag est dans excludes.
- enable
boolActiver le module de recompilation du noyau ANSSI (R15–R27).
darkone.security.kernel-build.enable = false;🔑 darkone.security.kernel-params
Section intitulée « 🔑 darkone.security.kernel-params »Configuration dynamique du noyau : paramètres d’amorçage et sysctls (R8–R14). (en cours)
Règles applicables sans recompiler le noyau. Couvre les options mémoire (R8), les sysctls système (R9), la désactivation du chargement de modules (R10), Yama/ptrace (R11), les sysctls réseau IPv4 (R12), la désactivation d’IPv6 (R13), et les sysctls du système de fichiers (R14).
- enable
boolActiver les paramètres du noyau dynamiques ANSSI (R8–R14).
darkone.security.kernel-params.enable = false;🔑 darkone.security.mac
Section intitulée « 🔑 darkone.security.mac »Contrôle d’accès obligatoire — MAC (R37, R45–R49). (en cours)
R37 est une méta-règle : valide si au moins R45 (AppArmor) ou R46 (SELinux)
est active. SELinux (R46–R49) n’est pas supporté sur NixOS et est exclu
par défaut via exceptions. AppArmor (R45) est partiellement supporté.
- enable
boolActiver le module MAC ANSSI — AppArmor/SELinux (R37, R45–R49).
darkone.security.mac.enable = false;🔑 darkone.security.mta
Section intitulée « 🔑 darkone.security.mta »Gestion locale du courrier (R74–R75). (en cours)
Couvre l’MTA local durci à loopback-only (R74) et les alias mail acheminés vers l’adresse de l’administrateur (R75). Ces règles s’appliquent uniquement si un service MTA est actif (Postfix ou OpenSMTPD).
- enable
boolActiver le durcissement MTA ANSSI (R74–R75).
darkone.security.mta.enable = false;🔑 darkone.security.network
Section intitulée « 🔑 darkone.security.network »Services réseau — isolation et supervision (R78–R80). (en cours)
Couvre l’isolation des services réseau (R78 : catégorie serveur), durcissement et monitoring des services exposés (R79 : fail2ban, en-têtes HTTP, TLS ANSSI) et réduction de la surface réseau (R80).
- enable
boolActiver le durcissement réseau ANSSI (R78–R80). - exposedServices
listOf strServices publics pour lesquels fail2ban et supervision seront activés (R79). - publicListeners
listOf strServices autorisés à écouter sur 0.0.0.0 / :: (R80). - httpsHeaders
boolAjoute les en-têtes de sécurité HTTP ANSSI dans Nginx/Caddy (R79). - tlsCiphers
listOf strSuite de chiffrement TLS ANSSI pour Nginx (R79).
darkone.security.network = { enable = false; exposedServices = [ ]; publicListeners = [ ]; httpsHeaders = true; tlsCiphers = [ ];};🔑 darkone.security.nss
Section intitulée « 🔑 darkone.security.nss »NSS — Bases de données utilisateurs distantes (R69–R70). (en cours)
Règles applicables uniquement si une NSS externe est active (SSSD, nslcd). Pas actuellement pertinent pour DNF ; voir ce qui peut être fait avec Kanidm + PAM.
Couvre le durcissement des bases de données distantes (R69 : TLS obligatoire) et la séparation des comptes système et annuaire (R70).
- enable
boolActiver le durcissement NSS ANSSI (R69–R70).
darkone.security.nss.enable = false;🔑 darkone.security.packages
Section intitulée « 🔑 darkone.security.packages »Gestion des paquets et mises à jour (R58–R61). (en cours)
Couvre l’installation uniquement de ce qui est strictement nécessaire (R58), des référentiels de confiance (R59), des référentiels durcis (R60 : linux_hardened) et des mises à jour régulières (R61).
- enable
boolActiver la gestion des paquets ANSSI (R58–R61). - trustedSubstituters
listOf strListe blanche des caches binaires Nix autorisés (R59). - trustedPublicKeys
listOf strClés publiques pour les caches binaires autorisés (R59).
darkone.security.packages = { enable = false; trustedSubstituters = [ ]; trustedPublicKeys = [ ];};🔑 darkone.security.pam
Section intitulée « 🔑 darkone.security.pam »PAM — Authentification et stockage des mots de passe (R67–R68). (en cours)
Couvre l’authentification PAM distante sécurisée (R67 : SSSD, Kerberos, pam_faillock) et le stockage des mots de passe chiffrés (R68 : yescrypt).
- enable
boolActiver le module PAM ANSSI — authentification et mots de passe (R67–R68).
darkone.security.pam.enable = false;🔑 darkone.security.preboot
Section intitulée « 🔑 darkone.security.preboot »Configuration matérielle et démarrage sécurisé (R1–R7). (en cours)
Couvre UEFI Secure Boot (R3), lanzaboote, mot de passe du chargeur d’amorçage (R5), UKIs signés (R6) et IOMMU (R7). R1 et R2 (matériel/firmware) sont hors de la portée de NixOS et produisent uniquement une note dans le rapport.
- enable
boolActiver le démarrage sécurisé ANSSI — Secure Boot, IOMMU (R1–R7).
darkone.security.preboot.enable = false;🔑 darkone.security.services
Section intitulée « 🔑 darkone.security.services »Durcissement des services systemd (R62–R66). (en cours)
Couvre la désactivation des services inutiles (R62), la réduction des fonctionnalités via les options de sécurité systemd (R63), la restriction des privilèges (R64), l’isolation (R65) et le durcissement des composants de conteneurisation (R66).
- enable
boolActiver le durcissement ANSSI des services systemd (R62–R66). - rootServicesAllowed
listOf strservices systemd autorisés à s’exécuter en tant que root sans CapabilityBoundingSet (R64).
darkone.security.services = { enable = false; rootServicesAllowed = [ ];};🔑 darkone.security.sudo
Section intitulée « 🔑 darkone.security.sudo »Durcissement de sudo (R38–R44). (en cours)
Couvre le groupe sudo dédié (R38), les directives sudo durcies (R39), la restriction des cibles non-root (R40), la limitation NOEXEC (R41), l’interdiction des négations (R42), la spécification d’arguments explicite (R43), et l’utilisation de sudoedit (R44).
- enable
boolActiver le durcissement sudo ANSSI (R38–R44). - allowedRootRules
listOf strrègles sudo autorisées à cibler root (R40). D’autres doivent cibler un compte de service.
darkone.security.sudo = { enable = false; allowedRootRules = [ ];};🔑 darkone.security.users
Section intitulée « 🔑 darkone.security.users »Comptes utilisateurs et authentification (R30–R36). (en cours)
Couvre les comptes inutilisés (R30), la politique de mots de passe (R31), le verrouillage d’inactivité (R32), la responsabilité des administrateurs (R33), les comptes de service (R34), les comptes de service uniques (R35), et umask (R36).
- enable
boolActiver la gestion des comptes ANSSI (R30–R36).
darkone.security.users.enable = false;