Aller au contenu
Sécurité

Durcissement du système

Secure Boot, chiffrement LUKS2 (TPM2, PIN, redémarrage à distance), secrets, isolation, pare-feu, SSH, mises à jour, vulnérabilités, journaux et horodatage.

Hypothèse#securite#linux#docker#rgpdPublié le 16 sept. 2026Mis à jour le 16 sept. 2026Vérifié le 16 sept. 2026À revérifier le 15 déc. 2026

L'essentiel

  • Référentiel : recommandations de configuration d'un système GNU/Linux de l'ANSSI 1 et guide d'hygiène 2. Le dossier en retient un sous-ensemble adapté à une machine unique administrée à distance.
  • Chiffrement disque complet en LUKS2. Le choix du mode de déverrouillage (TPM2 seul, TPM2 + PIN, mot de passe) conditionne la possibilité de redémarrer la Box à distance : non tranché.
  • Aucun service n'écoute sur le réseau hormis le reverse proxy (443) et SSH (via VPN). Tout le reste est lié à localhost ou au réseau interne des containers.
  • Mises à jour de sécurité automatiques pour l'OS ; mises à jour applicatives planifiées dans une fenêtre de maintenance avec possibilité de retour arrière (snapshot).
  • Journaux conservés entre 6 mois et 1 an (recommandation CNIL) 9, protégés en intégrité, horodatés par NTP.

Toutes les commandes et paramètres ci-dessous sont des propositions à valider sur la machine cible ; la distribution n'est pas encore choisie (voir Linux).

Démarrage : Secure Boot et UEFI

MesureDétailStatut
Secure Boot activéEmpêche le démarrage d'un chargeur ou d'un noyau non signé (protection contre un « evil maid » simple). Les distributions candidates (Ubuntu, Fedora) démarrent avec Secure Boot par défaut ; les modules noyau tiers (ROCm, pilotes hors arbre) doivent être signés ou évités.À tester avec la pile AMD retenue
Mot de passe administrateur UEFIEmpêche de désactiver Secure Boot ou de changer l'ordre de démarrage.Hypothèse
Démarrage sur USB/réseau désactivéOrdre de démarrage verrouillé sur le SSD interne.Hypothèse
Mesures TPM2Si le déverrouillage LUKS est lié au TPM2, les registres PCR permettent de refuser le déverrouillage si le chargeur ou le noyau a changé.À tester

Chiffrement du disque

LUKS2

Le chiffrement complet du disque système et du disque de données utilise LUKS2 via cryptsetup (GPL-2.0 ou ultérieure) 4. Choix proposés : chiffre AES-XTS 512 bits, dérivation Argon2id (défaut LUKS2), chiffrement de tout le disque et non d'un simple répertoire, y compris le swap.

Avec deux SSD en miroir (voir Sauvegardes), chaque SSD est chiffré séparément (LUKS sous mdadm ou Btrfs) ou le volume miroir est chiffré au-dessus : à trancher avec la question du RAID.

Mode de déverrouillage : la décision structurante

ModeFonctionnementSécuritéRedémarrage à distanceCharge pour le client
Mot de passe au démarrageUn opérateur saisit la phrase de passe au clavier (ou via une console distante)Forte si la phrase est robusteImpossible sans intervention (ou console IP, absente sur la machine candidate)Une personne du cabinet doit connaître la phrase
TPM2 seulLe TPM libère la clé si les mesures de démarrage (PCR) sont conformesProtège contre le vol d'un SSD seul, pas contre le vol de la machine entière allumée ou démarrée par l'attaquant (qui obtient l'écran de login)Oui, automatiqueAucune
TPM2 + PINComme TPM2, plus un PIN saisi au démarrageForte : vol de la machine entière sans PIN = disque illisibleNon (PIN à saisir)Une personne connaît le PIN
TPM2 + clé réseau (Tang/Clevis ou secret distant)Le disque se déverrouille si un serveur du LAN répondCorrect : la machine hors du réseau du cabinet ne démarre pasOui, tant qu'elle est dans les locauxUn second équipement à maintenir
Clé FIDO2Clé matérielle branchée au démarrageForteNonClé physique à garder

systemd-cryptenroll gère l'enrôlement TPM2, FIDO2, PKCS#11, PIN et clé de récupération sur un volume LUKS2 3. Deux points de sa documentation comptent ici : par défaut, sans option --tpm2-pcrs, l'enrôlement n'est lié à aucun PCR (il faut donc choisir explicitement les registres, par exemple ceux du chargeur et de l'état Secure Boot) ; et le « PIN » accepte tout caractère, pas seulement des chiffres 3.

Conséquences pratiques à documenter dans le contrat : qui connaît le PIN ou la phrase de passe, qui détient la clé de récupération, procédure de remplacement de carte mère (le TPM change, la clé de récupération est alors indispensable).

Chiffrement des sauvegardes

Les sauvegardes quittent le périmètre physique ; elles sont chiffrées avant de sortir de la Box, avec une clé distincte de la clé LUKS. restic 12 et BorgBackup chiffrent côté client avec authentification (voir Sauvegardes). La clé du dépôt est détenue par le client ; le prestataire n'y a pas accès sauf accord explicite documenté.

Gestion des secrets

ApprocheAvantagesLimitesProposition
Fichiers .env à côté des ComposeSimple, lisibleEn clair sur disque (protégés par LUKS seulement), faciles à copier dans un dépôt Git par erreurAcceptable en V1 si permissions 600, propriétaire dédié, exclus de Git, disque chiffré
sops + ageSecrets chiffrés dans le dépôt de configuration ; déchiffrés au déploiementUne clé age à protéger ; un outil de plusRecommandé dès que la configuration est versionnée
Docker/Podman secretsMontés en mémoire dans le containerPortée limitée à Compose/SwarmComplément utile
HashiCorp Vault / OpenBaoRotation, audit, politique fineSurdimensionné pour une machine uniqueNon retenu en V1

Règles quelles que soient les approches : jamais de secret dans une image Docker, dans un journal ou dans le prompt système ; rotation à chaque départ d'un administrateur ; inventaire des secrets tenu à jour (quoi, où, qui, dernière rotation).

Mots de passe : la CNIL exige un niveau minimal équivalent à 80 bits d'entropie sans mesure complémentaire (délibération 2022-100) 10. Les mots de passe des comptes utilisateurs et administrateurs sont générés (gestionnaire de mots de passe), jamais choisis, et doublés par un second facteur.

Isolation des services

MesureDétailStatut
Un utilisateur système par servicellama, rag, webui, backup sans shell, sans sudoHypothèse
Containers rootlessDocker en mode rootless exécute le démon et les containers sans root ; prérequis newuidmap/newgidmap et plages subuid/subgid 5. Podman offre l'équivalent nativement. Limites connues : ports privilégiés, certains périphériques, AppArmor selon distribution.À tester : accès GPU (/dev/kfd, /dev/dri) depuis un container rootless non vérifié sur la machine cible
Pas de --privileged, pas de socket Docker montéLe socket Docker équivaut à root sur l'hôteHypothèse
Système de fichiers en lecture seule dans les containersread_only: true, volumes explicitesHypothèse
Capacités Linux minimalescap_drop: [ALL] puis ajout au cas par casHypothèse
AppArmor (Ubuntu) ou SELinux (Fedora) en mode enforcingNe pas désactiver « pour que ça marche » ; profils par défaut des containersHypothèse
Réseau interne des containersSeul le reverse proxy publie un port ; llama-server, base vectorielle et base SQL ne sont joignables que depuis le réseau interneHypothèse
RéférenceCIS Docker Benchmark (version 1.8.0 au moment de la consultation) 6À parcourir avant la V1

Pare-feu

Politique par défaut : tout entrant refusé, tout sortant limité. nftables est le successeur d'iptables dans le noyau Linux 7 ; ufw ou firewalld sont des interfaces acceptables si l'équipe préfère, tant que la politique reste identique.

SensPortServiceDepuis / versNote
Entrant443/tcpReverse proxy (interface, API)LAN du cabinet (ou VLAN dédié)Seul port applicatif
Entrant22/tcpSSHInterface VPN uniquementJamais depuis le LAN entier ni Internet
EntrantUDP WireGuardVPNSelon le scénario réseau (souvent sortant seulement avec Tailscale/NetBird)Voir Réseau
Sortant53, 123DNS, NTPRésolveur interne, serveurs de tempsNécessaires
Sortant443/tcpMises à jour, images, modèles, dépôt de sauvegardeListe de domaines restreinte si possibleJournaliser
Sortant445/tcpSMB vers le NASNAS uniquementLecture seule côté compte
Tout le resteRefusé et journalisé

Docker manipule lui-même les règles de pare-feu et peut contourner ufw : ne publier aucun port sur 0.0.0.0 hormis le reverse proxy, et vérifier le résultat effectif avec nft list ruleset et un scan depuis un autre poste.

SSH

  • Authentification par clé uniquement (PasswordAuthentication no), clés ed25519, une clé par administrateur nominatif.
  • PermitRootLogin no ; élévation par sudo journalisée.
  • Second facteur pour SSH : soit le VPN lui-même (accès nominatif avec MFA à l'IdP du VPN), soit un module TOTP/FIDO2 sur SSH. Proposition : VPN avec MFA + clé SSH, ce qui donne deux facteurs indépendants.
  • Écoute limitée à l'interface VPN.
  • Bannière légale, MaxAuthTries 3, ClientAliveInterval pour fermer les sessions inactives.
  • Journal des sessions administrateur exploitable a posteriori (voir Accès prestataire).

Mises à jour

ComposantPolitique proposéeRetour arrière
Système (paquets de sécurité)Automatique, quotidien (unattended-upgrades ou dnf-automatic) ; redémarrage seulement dans la fenêtre de maintenanceSnapshot du système avant redémarrage
Noyau et pilotes GPUFenêtre de maintenance mensuelle, après test sur la machine de laboratoireConserver le noyau précédent au démarrage ; snapshot
Images Docker (interface, RAG, runtime)Versions épinglées ; mise à jour mensuelle ou sur CVE critique ; test sur le laboratoireTag précédent conservé ; snapshot des volumes
ModèlesJamais automatique ; changement = décision documentéeAncien fichier conservé jusqu'à validation
Firmware UEFISur alerte du constructeur ; attention au TPM (clé de récupération à portée)Selon constructeur

Fenêtre de maintenance type : un soir par mois, annoncée au cabinet, avec télémaintenance ouverte pour la durée de l'intervention seulement.

Gestion des vulnérabilités

  • Veille : abonnements aux avis de sécurité de la distribution, de l'interface web retenue, du runtime d'inférence et de la base vectorielle. L'historique 2026 des CVE d'Open WebUI (contournement de permissions RAG) montre que cette veille n'est pas optionnelle (voir Interface).
  • Scan des images : Trivy scanne images, systèmes de fichiers et dépôts, détecte vulnérabilités, mauvaises configurations et secrets, et génère un SBOM 8. Fréquence proposée : à chaque mise à jour et une fois par mois.
  • SBOM léger : liste des images (nom, tag, digest), des paquets système principaux et des modèles (nom, somme de contrôle), tenue dans le dépôt de configuration. C'est aussi une demande de la CNIL pour les systèmes d'IA (nomenclature logicielle) 11 et de l'ANSSI (chaîne d'approvisionnement).
  • Scan externe : une fois par trimestre, un scan de ports depuis l'extérieur du cabinet pour vérifier qu'aucun port n'est exposé.

Journaux

SujetProposition
Collectejournald pour le système et les containers ; journaux applicatifs (interface, RAG) en JSON vers journald ou fichiers dédiés
Ce qui est journaliséAuthentifications (succès/échec), actions d'administration (sudo, sessions SSH, modifications de configuration), accès aux documents et requêtes RAG (utilisateur, horodatage, dossiers filtrés, identifiants de documents retournés), erreurs, événements de sécurité (pare-feu, échecs MFA)
Ce qui n'est pas journalisé par défautLe texte intégral des questions et des réponses : c'est une donnée sensible en soi. Option activable par le client après analyse RGPD.
Durée6 mois à 1 an sur période glissante (délibération CNIL 2021-122) 9 ; proposition : 12 mois pour les journaux d'accès et d'administration, 6 mois pour les journaux techniques
ProtectionRépertoire dédié, accès restreint au rôle audit, rotation par taille et date, copie quotidienne vers un emplacement en ajout seul (sauvegarde ou collecteur) pour résister à une altération locale
CentralisationUne seule Box : pas de SIEM. Une copie hors machine des journaux d'accès et d'administration (dans la sauvegarde chiffrée) suffit en V1.
Information des utilisateursLa CNIL demande d'informer les utilisateurs de la journalisation : mention dans la charte d'utilisation.

Horodatage et temps

Des journaux non horodatés de manière fiable sont inexploitables en cas d'incident. NTP (chrony ou systemd-timesyncd) vers des serveurs de temps de confiance, ou vers le serveur de temps interne du cabinet s'il existe ; vérification de la dérive dans le monitoring. Fuseau horaire explicite (Europe/Paris) et journaux en UTC ou avec décalage indiqué.

Ce que ce durcissement ne fait pas

  • Il ne protège pas contre un administrateur légitime malveillant : c'est le rôle du contrat, du journal inaltérable et de la séparation des clés.
  • Il ne compense pas un poste utilisateur compromis : la session de l'utilisateur est alors utilisable par l'attaquant, avec les droits de l'utilisateur.
  • Il ne rend pas la Box inviolable : il rend chaque étape coûteuse et visible.

Questions ouvertes

Ce qu'il reste à tester

Sources

  1. 1ANSSI — Recommandations de configuration d'un système GNU/Linux (v2.0)Documentation officielleFiabilité hauteANSSI · publié 2019-02-22 · consulté le 16 sept. 2026 · fiche source
  2. 2ANSSI — Guide d'hygiène informatique (42 mesures)Documentation officielleFiabilité hauteANSSI · publié Non daté (page maintenue) · consulté le 16 sept. 2026 · fiche source
  3. 3systemd-cryptenroll(1) — page de manuelDocumentation officielleFiabilité hautesystemd (miroir man7.org) · publié 2026 · consulté le 16 sept. 2026 · fiche source
  4. 4cryptsetup / LUKS — dépôt officielGitHubFiabilité hauteProjet cryptsetup · publié 2026 · consulté le 16 sept. 2026 · fiche source
  5. 5Docker — Run the Docker daemon as a non-root user (Rootless mode)Documentation officielleFiabilité hauteDocker · publié 2026 · consulté le 16 sept. 2026 · fiche source
  6. 6CIS Docker BenchmarkDocumentation officielleFiabilité hauteCenter for Internet Security · publié version 1.8.0 (date non affichée) · consulté le 16 sept. 2026 · fiche source
  7. 7nftables — wiki officielDocumentation officielleFiabilité hauteProjet Netfilter · publié 2026 · consulté le 16 sept. 2026 · fiche source
  8. 8Trivy — dépôt officiel (aquasecurity/trivy)GitHubFiabilité hauteAqua Security · publié 2026 · consulté le 16 sept. 2026 · fiche source
  9. 9CNIL — Délibération n° 2021-122 du 14 octobre 2021 (recommandation relative à la journalisation)Documentation juridiqueFiabilité hauteCNIL / Légifrance · publié 2021-10-14 · consulté le 16 sept. 2026 · fiche source
  10. 10Délibération CNIL n° 2022-100 — recommandation relative aux mots de passeDocumentation juridiqueFiabilité hauteCNIL / Légifrance · publié 21 juillet 2022 · consulté le 16 sept. 2026 · fiche source
  11. 11CNIL — Guide de la sécurité des données personnelles, édition 2024Documentation officielleFiabilité hauteCNIL · publié 26 mars 2024 (PDF mis à jour 2026-05, contenu non vérifié) · consulté le 16 sept. 2026 · fiche source
  12. 12restic — dépôt officielGitHubFiabilité hauteProjet restic · publié 2026 · consulté le 16 sept. 2026 · fiche source
content/docs/security/durcissement.md2323 mots