🛡️ Guide de Durcissement Proxmox VE 9 — Référence Francophone
Présentation
Ce guide fournit des recommandations de durcissement prescriptives, vérifiables et opérationnelles pour Proxmox Virtual Environment 9.x (Debian 13 "Trixie"). Il est conçu pour les administrateurs systèmes, ingénieurs sécurité et auditeurs.
Ce qui le différencie
| Caractéristique | Ce guide | Guides existants |
|---|---|---|
| Format CIS hybride | Chaque contrôle suit la structure CIS (Audit/Remediation/Default Value) + mappings compliance | Formats variés, rarement alignés CIS |
| Mappings compliance intégrés | CIS Controls v8, MITRE ATT&CK, ISO 27001:2022, PCI DSS v4.0 | Peu ou pas de mappings |
| Threat model explicite | 10 scénarios d'attaque rattachés à chaque contrôle | Pas de threat model |
| 3 profils d'environnement | 🏠 Homelab, 🏢 Production, 🌐 Exposé internet | Pas de distinction |
| Contrôles validés | Testé sur PVE 9.x — pas de "non validé" dans le guide principal | Contrôles souvent non validés |
| Corrections d'erreurs | Corrige les erreurs des guides existants (syntaxe 2FA, Fail2Ban regex, firewall defaults, LUKS) | Erreurs propagées |
| Rollback documenté | Chaque contrôle risqué a sa procédure de retour arrière | Jamais documenté |
| Couverture hyperviseur | Isolation VM (seccomp, KSM, IOMMU), pas juste l'OS | Focalisé OS uniquement |
Base de référence
- CIS Debian Linux 13 Benchmark v1.0.0 (2025-12-16)
- MITRE ATT&CK v16
- CIS Controls v8
- ISO/IEC 27001:2022 Annex A
- PCI DSS v4.0
- BSI — Sicherheitsanalyse von KVM (KVMSec) v1.0.1
- QEMU Project — Security Documentation
Structure du guide
| # | Fichier | Phase | Description | Contrôles |
|---|---|---|---|---|
| 01 | 01-threat-model.md | — | Modèle de menaces (10 scénarios MITRE ATT&CK) | — |
| 02 | 02-pre-installation.md | Phase 0 | Avant l'installation (matériel, BIOS, chiffrement, réseau) | 8 |
| 03 | 03-os-debian-durci.md | Phase 1 | Durcissement OS Debian 13 (kernel, comptes, audit, services) | 15 |
| 04 | 04-proxmox-specifique.md | Phase 2 | Durcissement Proxmox (pveproxy, cluster, API, mises à jour) | 12 |
| 05 | 05-acces-authentification.md | Phase 3 | Accès et authentification (SSH, 2FA, RBAC, Fail2Ban, VPN) | 12 |
| 06 | 06-reseau-segmentation.md | Phase 4 | Réseau et segmentation (VLAN, firewall PVE, security groups) | 8 |
| 07 | 07-stockage-chiffrement.md | Phase 5 | Stockage et chiffrement (LUKS, ZFS, Ceph, NFS/iSCSI) | 5 |
| 08 | 08-isolation-vm-ct.md | Phase 6 | Isolation VM/CT (seccomp, KSM, IOMMU, LXC) | 6 |
| 09 | 09-monitoring-detection.md | Phase 7 | Monitoring et détection (AIDE, logs centralisés, audit) | 3 |
| 10 | 10-maintenance-backup.md | Phase 8+9 | Maintenance, backup, reprise d'activité (PBS, DR drills) | 8 |
Quickstart
Prérequis
- Proxmox VE 9.x installé (Debian 13 "Trixie")
- Accès root au(x) nœud(s)
- Accès console hors-bande (IPMI/iDRAC/KVM) ou physique
- Sauvegardes fonctionnelles des VM et du nœud
Par où commencer ?
🏠 Homelab — Top 5 actions à impact maximal :
- SSH : clés uniquement + Fail2Ban → Phase 3
- Mises à jour auto sécurité Debian → Phase 1
- 2FA sur le web UI → Phase 3
- Backups PBS chiffrées → Phase 9
- Firewall PVE activé → Phase 4
🏢 Production — Parcours recommandé :
- Lire le threat model (30 min)
- Appliquer la Phase 0 (pré-installation) si nouveau déploiement
- Phases 1 → 4 dans l'ordre (Level 1 d'abord)
- Phase 9 (backup) en priorité si pas encore fait
- Phases 5 → 8 pour la défense en profondeur
- Revenir sur les contrôles Level 2
🌐 Exposé internet — Ajouts critiques :
- VPN comme unique entrée management → Phase 3, 3.5
- WebAuthn/FIDO2 → Phase 3, 3.2.2
- LUKS full-disk encryption → Phase 0, 0.2.3
Règles d'or
- Toujours tester en lab avant d'appliquer en production
- Ne jamais fermer votre session SSH avant d'avoir testé la nouvelle configuration dans un second terminal
- Garder un accès console OOB en cas de lock-out
- Appliquer Level 1 d'abord, puis Level 2 quand Level 1 est stabilisé
- Documenter chaque déviation par rapport au guide (justification + acceptation du risque)
Corrections notables vs guides existants
| Erreur courante | Notre correction | Phase |
|---|---|---|
pveum realm modify <<pam>> --tfa type=<<oath>> (syntaxe invalide) |
Procédure via interface web documentée | 3 (3.2.1) |
Fail2Ban pointe vers /var/log/syslog (absent PVE 9) |
Backend systemd + journalmatch = _SYSTEMD_UNIT=pvedaemon.service |
3 (3.4.2) |
PermitRootLogin no (casse le cluster) |
PermitRootLogin prohibit-password + Match Address cluster |
3 (3.1.1) |
lockdown=integrity en production (casse ZFS/Ceph/GPU) |
Classé expérimental, exclu du guide principal | 1 (1.2.5) |
| Firewall PVE "INPUT=DROP par défaut" (faux) | Explication complète des règles anti-lockout cachées | 4 (4.2.1) |
| LUKS via installateur PVE (non disponible pour ext4) | Tableau comparatif ISO PVE vs Debian-first | 0 (0.2.1) |
KSM echo 2 > run (incomplet) |
Désactivation KSM + ksmtuned | 6 (6.1.2) |
| FORWARD=DROP sans règles cluster (casse les migrations) | Avertissement + prérequis réseau dédié | 4 (4.2.4) |
Format des contrôles
Chaque contrôle suit le format CIS Benchmark enrichi :
X.Y.Z — Titre du contrôle
| Profile Applicability | Level 1/2 — Server |
|---|---|
| Applicabilité PVE | 🏠🏢🌐 |
| Réf. CIS Debian 13 | X.Y.Z |
| CIS Controls v8 | Safeguard mappé |
| MITRE ATT&CK | Techniques + Mitigations |
| ISO 27001:2022 | Annex A |
| PCI DSS v4.0 | Exigence |
| Scénario threat model | S1-S10 |
| Statut PVE 9 | ✅ Validé / ⚠️ Partiel / 🧪 Expérimental |
Description / Rationale / Impact / Audit / Remédiation
Valeur par défaut / Rollback / Spécificité PVE
---
Avertissements
⚠️ Ce guide est fourni « en l'état », sans garantie. Vous êtes seul responsable de l'évaluation, du test et de la validation de chaque recommandation dans votre environnement.
⚠️ Certaines procédures ne sont pas officiellement supportées par Proxmox GmbH. Tester et maintenir à vos propres risques.
⚠️ Ce guide ne constitue pas une certification de conformité. Il est conçu pour aider à la préparation d'audits et à l'amélioration de la posture de sécurité.
Contribuer
Les contributions sont bienvenues. Voir CONTRIBUTING.md.
Licence
Ce guide est publié sous licence Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).
Vous pouvez copier, modifier et distribuer le contenu à condition de conserver l'attribution et de partager sous la même licence.
-e
01 — Modèle de menaces Proxmox VE
Version : 0.2.0 Date : 2026-03-20 Statut : Rédaction initiale — Format normalisé Licence : CC BY-SA 4.0 Base de référence : CIS Debian Linux 13 Benchmark v1.0.0, MITRE ATT&CK v16, CIS Controls v8 Sources : BSI KVMSec v1.0.1, QEMU Security Documentation, Proxmox Forum, CVE databases
1.1 — Objectif et portée
Pourquoi un modèle de menaces ?
La plupart des guides de durcissement démarrent par « exécutez ces commandes ». Sans modèle de menaces, on applique des contrôles au hasard — on chiffre des disques pendant que SSH accepte les mots de passe, on active auditd sur un nœud dont le BMC a encore le mot de passe usine.
Ce chapitre identifie :
- Les surfaces d'attaque spécifiques à un hyperviseur Proxmox VE
- Les scénarios d'attaque réalistes, classés par probabilité
- Les mappings vers les cadres de référence (MITRE ATT&CK, CIS Controls v8, ISO 27001, PCI DSS)
- Les contrôles préventifs et détectifs de ce guide rattachés à chaque scénario
Chaque contrôle des phases suivantes référence un ou plusieurs scénarios de ce chapitre. Si un scénario ne vous concerne pas, les contrôles associés deviennent optionnels. Si un scénario est votre cauchemar, vous savez exactement quoi prioriser.
Portée
| Élément | Inclus | Exclu |
|---|---|---|
| Hyperviseur Proxmox VE 9.x | ✅ | |
| OS hôte Debian 13 | ✅ | |
| Infrastructure réseau PVE (bridges, VLAN, firewall) | ✅ | |
| Stockage PVE (local, Ceph, NFS/iSCSI) | ✅ | |
| BMC/IPMI/iDRAC | ✅ | |
| Proxmox Backup Server | ✅ (interactions) | Guide dédié PBS hors périmètre |
| Sécurité des OS guests (VM/CT internes) | ❌ | |
| Sécurité applicative des workloads | ❌ | |
| Sécurité physique des locaux | ❌ (mentionnée, non couverte) |
1.2 — Surfaces d'attaque
Un hyperviseur est le pire point de compromission possible dans une infrastructure. Compromettre un hyperviseur donne accès simultanément à toutes les VM hébergées, à leur mémoire vive, à leurs disques, à leur trafic réseau. Proxmox VE expose quatre plans d'attaque distincts :
| Composant | Port/Protocole |
| pveproxy (Web UI + API REST) | TCP 8006 |
| SSH | TCP 22 |
| VNC/SPICE/noVNC | Tunnelés via pveproxy |
| pvedaemon | TCP 85 (local) |
Criticité : Quiconque contrôle le plan de management contrôle tout — création/destruction de VM, accès backups, lecture mémoire des VM, modification de la configuration cluster.
| Composant | Port/Protocole |
| Bridges Linux (vmbr*) | Variable |
| Stockage NFS | TCP 2049 |
| Stockage iSCSI | TCP 3260 |
| Ceph public | TCP 6789, 6800-7300 |
| Migration live | TCP 60000-60050 |
Criticité : Une VM compromise peut tenter de pivoter via le réseau partagé ou tenter une évasion vers l'hôte via les devices émulés QEMU.
Référence : La documentation officielle de sécurité QEMU définit explicitement les guests, les interfaces utilisateur (VNC, SPICE), les protocoles réseau (NBD, migration) et les fichiers fournis par l'utilisateur comme des entités non fiables (untrusted).
| Composant | Port/Protocole |
| Corosync | UDP 5405 |
| pmxcfs | — |
| SSH inter-nœuds | TCP 22 |
Criticité : Compromettre un nœud = accès au filesystem cluster partagé (configurations, certificats, tokens de tous les nœuds).
| Composant | Accès |
| BMC/IPMI/iDRAC/iLO | Réseau OOB (TCP 443, UDP 623) |
| Console physique | Local |
| Disques physiques | Local |
| Ports USB | Local |
Criticité : Un BMC compromis donne un accès console virtuel complet, invisible depuis l'OS. Des cas de ransomware via BMC vulnérable sont documentés dans la communauté Proxmox.
1.3 — Profils d'environnement
| Profil | Symbole | Description | Menaces principales |
|---|---|---|---|
| Homelab | 🏠 | Nœud unique ou petit cluster, réseau local, pas d'exposition internet directe | Rebond depuis poste LAN compromis, erreur de config, accès physique accidentel |
| Production | 🏢 | Cluster multi-nœuds, réseau d'entreprise segmenté, SLA internes, multi-administrateurs | Mouvement latéral, insider malveillant, ransomware, non-conformité réglementaire |
| Exposé internet | 🌐 | Nœuds accessibles depuis internet (hébergeur, cloud privé, VPS) | Brute-force, exploitation CVE, compromission BMC, attaques ciblées, supply chain |
Règle : en cas de doute entre deux profils, choisir le plus restrictif.
1.4 — Scénarios d'attaque
Chaque scénario suit un format normalisé avec mappings compliance intégrés. Les scénarios sont ordonnés par probabilité décroissante.
| Probabilité | 🔴 Très élevée |
| Impact | Critique — contrôle total de l'hyperviseur |
| Profils | 🏠🏢🌐 |
| Vecteur | Réseau — plan de management |
MITRE ATT&CK :
| Phase | Tactique | Technique | ID |
|---|---|---|---|
| Accès initial | Initial Access | Exploit Public-Facing Application | T1190 |
| Accès initial | Initial Access | Valid Accounts | T1078 |
| Accès initial | Initial Access | Brute Force | T1110 |
| Exécution | Execution | Command and Scripting Interpreter | T1059 |
| Persistance | Persistence | Account Manipulation | T1098 |
CIS Controls v8 : 4.1, 5.2, 5.4, 6.3, 6.4, 6.5, 13.1
ISO 27001:2022 : A.5.15, A.5.17, A.8.5, A.8.20
PCI DSS v4.0 : 2.2.1, 6.3.3, 8.2.1, 8.3.1, 8.3.6
Description :
Description :
Chaîne d'attaque type :
- Scan de ports → détection SSH (22) et/ou pveproxy (8006)
- Brute-force ou credential stuffing sur SSH/web UI
- Ou : exploitation d'une CVE pveproxy (ex : CVE-2023-43320 bypass 2FA, CVE-2025-57538/39/40 XSS stocké)
- Obtention d'un shell root ou d'une session web admin
- Contrôle total : création/suppression VM, accès backups, modification cluster
Contrôles préventifs :
| Contrôle | Phase | Réf. | Priorité |
|---|---|---|---|
| Désactivation auth par mot de passe SSH | 3 | 3.1.1 | 🔴 Critique |
| 2FA obligatoire (TOTP ou WebAuthn) | 3 | 3.2 | 🔴 Critique |
| Fail2Ban SSH + Web UI (regex corrigé) | 3 | 3.4 | 🔴 Critique |
| Restriction IP sur pveproxy :8006 | 2 | 2.1.3 | 🔴 Critique |
| VPN comme unique entrée management | 3 | 3.5 | 🟡 Important (🌐) |
| Mise à jour régulière PVE | 2 | 2.4 | 🔴 Critique |
| RBAC moindre privilège | 3 | 3.3 | 🟡 Important |
Contrôles détectifs :
| Contrôle | Phase | Réf. |
|---|---|---|
| Centralisation logs auth | 7 | 7.2.3 |
| Alerting échecs auth multiples | 7 | 7.1.3 |
| Audit appels API | 2 | 2.2.3 |
CVE historiques pertinentes :
| CVE | Année | Type | CVSS |
|---|---|---|---|
| CVE-2023-43320 | 2023 | Bypass 2FA (PVE 5.4–8.0) | N/A |
| CVE-2025-57538/39/40 | 2025 | XSS stocké config Datacenter | N/A |
| CVE-2022-31358 | 2022 | XSS stocké | N/A |
| Probabilité | 🔴 Élevée |
| Impact | Critique — perte totale des données et des VM |
| Profils | 🏠🏢🌐 |
| Vecteur | Post-compromission (rebond après S1 ou poste admin compromis) |
MITRE ATT&CK :
| Phase | Tactique | Technique | ID |
|---|---|---|---|
| Impact | Impact | Data Encrypted for Impact | T1486 |
| Impact | Impact | Inhibit System Recovery | T1490 |
| Impact | Impact | Data Destruction | T1485 |
| Mouvement | Lateral Movement | Remote Services: SSH | T1021.004 |
| Collection | Collection | Data from Local System | T1005 |
CIS Controls v8 : 3.4, 11.1, 11.2, 11.3, 11.4, 11.5
ISO 27001:2022 : A.8.13 (Information backup), A.8.14 (Redundancy), A.5.29 (Business continuity)
PCI DSS v4.0 : 3.5.1, 9.4.1, 12.10.1
Description :
Description :
Chaîne d'attaque type :
- Compromission initiale (S1, phishing admin, rebond LAN)
- Reconnaissance : stockage, backups PBS, snapshots
- Suppression des snapshots ZFS/LVM
- Suppression ou chiffrement des backups PBS
- Chiffrement des images disque VM
- Demande de rançon
Contrôles préventifs :
| Contrôle | Phase | Réf. | Priorité |
|---|---|---|---|
| Backups PBS chiffrés client-side + clé escrow hors ligne | 9 | 9.1.2, 9.1.3 | 🔴 Critique |
| Immutabilité backups (retention lock PBS) | 9 | 9.1.3 | 🔴 Critique |
| Tokens PBS avec privilèges minimaux (pas de suppression) | 9 | 9.1.2 | 🔴 Critique |
| Backup hors site / hors ligne (3-2-1-1-0) | 9 | 9.1.1 | 🔴 Critique |
| Snapshots ZFS out-of-band | 5 | 5.3 | 🟡 Important |
| RBAC : séparer admin-VM et admin-backup | 3 | 3.3 | 🟡 Important |
Contrôles détectifs :
| Contrôle | Phase | Réf. |
|---|---|---|
| Monitoring espace stockage (suppression massive = alerte) | 7 | 7.1 |
| AIDE (intégrité fichiers) | 7 | 7.2.1 |
| Alerting suppression backups PBS | 7 | 7.1.3 |
| Probabilité | 🟡 Moyenne (en augmentation) |
| Impact | Critique — compromission de l'hôte depuis un guest |
| Profils | 🏢🌐 |
| Vecteur | VM compromise → exploitation QEMU/KVM → accès hôte |
MITRE ATT&CK :
| Phase | Tactique | Technique | ID |
|---|---|---|---|
| Évasion | Privilege Escalation | Escape to Host | T1611 |
| Exploitation | Execution | Exploitation for Client Execution | T1203 |
| Découverte | Discovery | System Information Discovery | T1082 |
| Accès | Privilege Escalation | Exploitation for Privilege Escalation | T1068 |
CIS Controls v8 : 4.1, 7.1, 7.3, 10.5, 16.13
ISO 27001:2022 : A.8.7, A.8.8, A.8.9
PCI DSS v4.0 : 6.2.4, 6.3.3, 11.3.1
Description :
Description :
Particularité Proxmox : Contrairement à libvirt/sVirt qui confine chaque processus QEMU avec des labels SELinux automatiques, Proxmox ne génère pas de profils AppArmor par VM automatiquement. Les processus QEMU tournent en tant que root sans confinement mandatory access control par défaut. C'est une différence architecturale majeure documentée par le BSI.
Contrôles préventifs :
| Contrôle | Phase | Réf. | Priorité |
|---|---|---|---|
| Profils AppArmor pour QEMU | 6 | 6.1.1 | 🟡 Important |
| Filtres seccomp QEMU | 6 | 6.1.2 | 🟡 Important |
| Suppression devices émulés inutiles | 6 | 6.1.5 | 🟡 Important |
| Machine type q35 (meilleure isolation) | 6 | 6.1.5 | 🟡 Important |
| KSM désactivé (side-channel multi-tenant) | 6 | 6.1.4 | 🟡 Important |
| IOMMU vérifié pour PCI passthrough | 6 | 6.1.3 | 🔴 Critique si passthrough |
| Mise à jour kernel + QEMU prioritaire | 2 | 2.4 | 🔴 Critique |
| Paramètres boot kernel durcis | 1 | 1.2.5 | 🟡 Important |
Contrôles détectifs :
| Contrôle | Phase | Réf. |
|---|---|---|
| auditd modules kernel + syscalls | 1 | 1.4.1 |
| Monitoring processus anormaux sur l'hôte | 7 | 7.2 |
Références :
- BSI — Sicherheitsanalyse von KVM (KVMSec) v1.0.1, 2017
- QEMU Project — Security Documentation (modèle d'entités non fiables)
- Red Hat — Hardening QEMU through continuous security testing
| Probabilité | 🟡 Moyenne |
| Impact | Critique — compromission de tous les nœuds |
| Profils | 🏢🌐 |
| Vecteur | Réseau interne — plan cluster |
MITRE ATT&CK :
| Phase | Tactique | Technique | ID |
|---|---|---|---|
| Mouvement | Lateral Movement | Remote Services: SSH | T1021.004 |
| Mouvement | Lateral Movement | Exploitation of Remote Services | T1210 |
| Collecte | Credential Access | Unsecured Credentials: Private Keys | T1552.004 |
| Collecte | Collection | Data from Information Repositories | T1213 |
CIS Controls v8 : 4.1, 6.1, 6.4, 12.2, 13.1
ISO 27001:2022 : A.8.20, A.8.22, A.8.24
PCI DSS v4.0 : 1.2.1, 1.3.1, 4.2.1
Description :
Description :
Chaîne d'attaque type :
- Compromission d'un nœud (via S1 ou S3)
- Lecture
/etc/pve→ certificats cluster, clés SSH, tokens API - SSH root vers les autres nœuds (confiance implicite)
- Interception/injection Corosync si non chiffré
- Contrôle de l'ensemble du cluster
Contrôles préventifs :
| Contrôle | Phase | Réf. | Priorité |
|---|---|---|---|
| Réseau dédié Corosync (VLAN isolé) | 4 | 4.1.1 | 🔴 Critique |
| Chiffrement Corosync | 2 | 2.3.1 | 🔴 Critique |
| Segmentation VLAN management/cluster/VM | 4 | 4.1 | 🔴 Critique |
| Restriction SSH inter-nœuds au réseau cluster | 3 | 3.1.1 | 🟡 Important |
| Firewall PVE FORWARD=DROP + règles explicites | 4 | 4.2 | 🟡 Important |
Contrôles détectifs :
| Contrôle | Phase | Réf. |
|---|---|---|
| Monitoring connexions SSH inter-nœuds | 7 | 7.2.4 |
| Alerting changements config cluster | 7 | 7.2 |
| auditd sur /etc/pve | 1 | 1.4.1 |
| Probabilité | 🟡 Moyenne (🔴 si BMC exposé internet) |
| Impact | Critique — contrôle physique total du serveur |
| Profils | 🏢🌐 |
| Vecteur | Réseau — plan physique/OOB |
MITRE ATT&CK :
| Phase | Tactique | Technique | ID |
|---|---|---|---|
| Accès initial | Initial Access | External Remote Services | T1133 |
| Accès initial | Initial Access | Valid Accounts: Default Accounts | T1078.001 |
| Persistance | Persistence | Pre-OS Boot: Component Firmware | T1542.002 |
| Accès | Privilege Escalation | Hardware Additions | T1200 |
CIS Controls v8 : 1.1, 2.2, 4.1, 4.6, 12.2
ISO 27001:2022 : A.5.15, A.7.2, A.8.9, A.8.20
PCI DSS v4.0 : 2.2.1, 9.2.1, 11.3.1
Description :
Description :
Contrôles préventifs :
| Contrôle | Phase | Réf. | Priorité |
|---|---|---|---|
| Isolation BMC sur VLAN OOB dédié | 0 | 0.1.2 | 🔴 Critique |
| Changement credentials par défaut | 0 | 0.1.2 | 🔴 Critique |
| Désactivation protocoles non chiffrés | 0 | 0.1.2 | 🔴 Critique |
| Mise à jour firmware BMC | 0 | 0.1.1 | 🔴 Critique |
| Certificats TLS sur interface web BMC | 0 | 0.1.2 | 🟡 Important |
| Probabilité | 🟡 Moyenne |
| Impact | Variable — fuite de données à destruction |
| Profils | 🏢 |
| Vecteur | Accès légitime — plan de management |
MITRE ATT&CK :
| Phase | Tactique | Technique | ID |
|---|---|---|---|
| Collection | Collection | Data from Local System | T1005 |
| Exfiltration | Exfiltration | Exfiltration Over Web Service | T1567 |
| Impact | Impact | Data Destruction | T1485 |
| Évasion | Defense Evasion | Indicator Removal: Clear Linux Logs | T1070.002 |
CIS Controls v8 : 3.3, 5.3, 5.4, 6.1, 6.2, 8.2, 8.5
ISO 27001:2022 : A.5.10, A.5.15, A.6.1, A.8.15
PCI DSS v4.0 : 7.2.1, 8.2.1, 10.2.1
Description :
Description :
Contrôles préventifs :
| Contrôle | Phase | Réf. | Priorité |
|---|---|---|---|
| RBAC strict moindre privilège | 3 | 3.3 | 🔴 Critique |
| Comptes nommés individuels | 3 | 3.3.1 | 🔴 Critique |
| 2FA sur tous les comptes | 3 | 3.2.3 | 🔴 Critique |
| Séparation des rôles | 3 | 3.3.2 | 🟡 Important |
| Revue trimestrielle des accès | 8 | 8.2.1 | 🟡 Important |
Contrôles détectifs :
| Contrôle | Phase | Réf. |
|---|---|---|
| Journalisation appels API | 2 | 2.2.3 |
| auditd fichiers sensibles | 1 | 1.4.1 |
| Logs centralisés hors contrôle admin PVE | 7 | 7.2.3 |
| Probabilité | 🟠 Faible-Moyenne |
| Impact | Critique — backdoor persistante sur tous les nœuds |
| Profils | 🏠🏢🌐 |
| Vecteur | Réseau — mises à jour |
MITRE ATT&CK :
| Phase | Tactique | Technique | ID |
|---|---|---|---|
| Accès initial | Initial Access | Supply Chain Compromise: Software | T1195.002 |
| Exécution | Execution | System Services: Service Execution | T1569.002 |
| Persistance | Persistence | Compromise Client Software Binary | T1554 |
CIS Controls v8 : 2.2, 2.5, 7.3, 16.4
ISO 27001:2022 : A.8.8, A.8.10
PCI DSS v4.0 : 6.3.2, 6.3.3
Description :
Description :
Contrôles préventifs :
| Contrôle | Phase | Réf. | Priorité |
|---|---|---|---|
| Vérification signatures GPG (ne pas désactiver) | 1 | 1.1.1 | 🔴 Critique |
| Dépôt enterprise (signé Proxmox GmbH) | 1 | 1.1.1 | 🟡 Important |
| Vérification intégrité paquets installés | 1 | 1.1.3 | 🟡 Important |
| Pas de dépôts tiers non vérifiés | 1 | 1.1.1 | 🔴 Critique |
Contrôles détectifs :
| Contrôle | Phase | Réf. |
|---|---|---|
| Vérification périodique intégrité (debsums) | 7 | 7.2 |
| AIDE (changements binaires) | 7 | 7.2.1 |
| Probabilité | 🟠 Faible |
| Impact | Critique — accès mémoire hôte |
| Profils | 🏢🌐 |
| Vecteur | VM compromise + device passthrough → DMA → mémoire hôte |
MITRE ATT&CK :
| Phase | Tactique | Technique | ID |
|---|---|---|---|
| Évasion | Privilege Escalation | Escape to Host | T1611 |
| Accès | Privilege Escalation | Exploitation for Privilege Escalation | T1068 |
CIS Controls v8 : 4.1, 4.8
ISO 27001:2022 : A.8.9
Description :
Description :
Contrôles préventifs :
| Contrôle | Phase | Réf. | Priorité |
|---|---|---|---|
| IOMMU activé et vérifié (VT-d / AMD-Vi) | 6 | 6.1.3 | 🔴 Critique |
| IOMMU groups isolés | 6 | 6.1.3 | 🔴 Critique |
| Pas de passthrough vers VM non fiables | 6 | 6.1.3 | 🔴 Critique |
Paramètres kernel intel_iommu=on iommu=pt |
1 | 1.2.5 | 🔴 Critique |
| Probabilité | 🟠 Faible (accès réseau interne requis) |
| Impact | Élevé — vol de données, injection |
| Profils | 🏢 |
| Vecteur | Réseau interne — plan données/cluster |
MITRE ATT&CK :
| Phase | Tactique | Technique | ID |
|---|---|---|---|
| Collecte | Credential Access | Adversary-in-the-Middle | T1557 |
| Collecte | Collection | Data from Network Shared Drive | T1039 |
CIS Controls v8 : 3.10, 12.2, 12.6
ISO 27001:2022 : A.8.20, A.8.24
PCI DSS v4.0 : 4.2.1
Description :
Description :
Contrôles préventifs :
| Contrôle | Phase | Réf. | Priorité |
|---|---|---|---|
| Réseaux dédiés Ceph et migration | 4 | 4.1.1 | 🔴 Critique |
| Chiffrement Ceph en transit (Messenger v2) | 5 | 5.2.1 | 🟡 Important |
| Migration chiffrée | 2 | 2.3.3 | 🟡 Important |
| VLAN isolation stricte | 4 | 4.1 | 🔴 Critique |
| Probabilité | Variable |
| Impact | Critique — compromission totale |
| Profils | 🏠🏢 |
| Vecteur | Physique |
MITRE ATT&CK :
| Phase | Tactique | Technique | ID |
|---|---|---|---|
| Accès initial | Initial Access | Hardware Additions | T1200 |
| Accès initial | Initial Access | Replication Through Removable Media | T1091 |
| Persistance | Persistence | Pre-OS Boot | T1542 |
| Collecte | Collection | Data from Local System | T1005 |
CIS Controls v8 : 3.6, 4.1, 4.6
ISO 27001:2022 : A.7.1, A.7.2, A.7.4, A.8.24
PCI DSS v4.0 : 9.1.1, 9.2.1, 9.4.1
Description :
Description :
Contrôles préventifs :
| Contrôle | Phase | Réf. | Priorité |
|---|---|---|---|
| Chiffrement disques (LUKS2 / ZFS encryption) | 0 | 0.2.3 | 🔴 Critique (🌐) |
| Mot de passe GRUB | 1 | 1.2.1 | 🟡 Important |
| Secure Boot | 0 | 0.1.3 | 🟡 Important |
| Désactivation boot USB dans BIOS | 0 | 0.1.1 | 🟡 Important |
| TPM 2.0 pour scellement clés | 0 | 0.1.4 | 🟡 Important |
1.5 — Matrice menaces ↔ phases du guide
| Scénario | Ph.0 | Ph.1 | Ph.2 | Ph.3 | Ph.4 | Ph.5 | Ph.6 | Ph.7 | Ph.8 | Ph.9 |
|---|---|---|---|---|---|---|---|---|---|---|
| S1 SSH/Web | ● | ●●● | ● | ●● | ● | |||||
| S2 Ransomware | ● | ●● | ● | ●● | ●●● | |||||
| S3 VM escape | ● | ●● | ●●● | ● | ||||||
| S4 Cluster | ●● | ● | ●●● | ●● | ||||||
| S5 BMC | ●●● | ● | ||||||||
| S6 Insider | ●●● | ●●● | ●● | ● | ||||||
| S7 Supply chain | ●●● | ● | ●● | |||||||
| S8 PCI/DMA | ● | ●●● | ||||||||
| S9 Interception | ●● | ●●● | ●● | |||||||
| S10 Physique | ●●● | ● | ●● |
Légende : ● pertinent, ●● important, ●●● critique pour ce scénario
1.6 — Priorisation par profil
🏠 Homelab — Top 5 actions
| # | Action | Scénario | Phase |
|---|---|---|---|
| 1 | SSH clés uniquement + Fail2Ban | S1 | 3 |
| 2 | Mises à jour auto sécurité Debian | S7 | 1 |
| 3 | 2FA sur le web UI | S1, S6 | 3 |
| 4 | Backups PBS chiffrées + hors site | S2 | 9 |
| 5 | Firewall PVE politique restrictive | S1 | 4 |
🏢 Production — Top 10
| # | Action | Scénario | Phase |
|---|---|---|---|
| 1-5 | Tout le Top 5 homelab | — | — |
| 6 | RBAC strict comptes nommés | S6 | 3 |
| 7 | Segmentation VLAN complète | S4, S9 | 4 |
| 8 | Chiffrement Corosync | S4 | 2 |
| 9 | Logs centralisés hors contrôle admin PVE | S6 | 7 |
| 10 | BMC isolé VLAN OOB | S5 | 0 |
🌐 Exposé internet — Ajouts critiques
| # | Action | Scénario | Phase |
|---|---|---|---|
| 11 | VPN unique entrée management | S1 | 3 |
| 12 | WebAuthn/FIDO2 (résistant phishing) | S1 | 3 |
| 13 | Profils AppArmor QEMU | S3 | 6 |
| 14 | BMC jamais exposé internet | S5 | 0 |
| 15 | Chiffrement disques complet (LUKS2) | S10 | 0 |
| 16 | Secure Boot | S10 | 0 |
| 17 | IOMMU vérifié pour tout passthrough | S8 | 6 |
1.7 — Références
| Source | Description | Date |
|---|---|---|
| BSI — Sicherheitsanalyse von KVM (KVMSec) v1.0.1 | Analyse de sécurité KVM/QEMU avec recommandations (AppArmor/sVirt, seccomp, devices) | 2017 |
| QEMU Project — Security Documentation | Modèle de sécurité QEMU, entités non fiables, principe de moindre privilège | En cours |
| Red Hat — Hardening QEMU through continuous security testing | Mécanismes de durcissement continu (fuzzing, Coverity, analyse statique) | 2025 |
| OpenStack Security Guide — Hardening the Virtualization Layers | Recommandations minimisation QEMU, compiler hardening, sVirt/AppArmor | En cours |
| CIS — Debian Linux 13 Benchmark v1.0.0 | Benchmark de configuration sécurisée Debian 13 | 2025-12-16 |
| MITRE — ATT&CK Framework v16 | Tactiques, techniques et procédures adversaires | 2025 |
| CIS — Controls v8 | Contrôles de sécurité prioritisés | 2021 |
| Proxmox Forum — Security Hardening threads | Retours communautaires, cas BMC/ransomware | 2021-2026 |
| CVE databases (OpenCVE, CVEDetails, Akaoma) | Vulnérabilités Proxmox VE documentées | Continu |
Navigation : ← 00-introduction.md | 02-pre-installation.md →
-e
02 — Phase 0 : Avant l'installation
Version : 0.2.0 Date : 2026-03-20 Statut : Rédaction initiale — Format CIS hybride Licence : CC BY-SA 4.0 Base de référence : CIS Debian Linux 13 Benchmark v1.0.0 (2025-12-16) Scénarios du threat model : S5, S7, S10
Conventions du format
Chaque contrôle suit la structure du CIS Benchmark, enrichie de champs spécifiques à Proxmox VE :
| Champ | Description |
|---|---|
| Profile Applicability | Level 1 (baseline) / Level 2 (defense-in-depth) — conforme au CIS |
| Applicabilité PVE | 🏠 Homelab / 🏢 Production / 🌐 Exposé internet |
| Réf. CIS Debian 13 | Numéro de section CIS correspondant (si applicable) |
| CIS Controls v8 | Safeguard CIS Controls v8 mappé |
| MITRE ATT&CK | Techniques / Tactics / Mitigations |
| ISO 27001:2022 | Contrôle Annex A mappé |
| PCI DSS v4.0 | Exigence PCI DSS mappée |
| Scénario threat model | Référence S1-S10 du chapitre 01 |
| Statut PVE 9 | ✅ Validé / ⚠️ Partiel / 🧪 Expérimental |
| Description | Ce que fait le contrôle |
| Rationale | Pourquoi ce contrôle est nécessaire |
| Impact | Conséquences opérationnelles |
| Audit | Commande(s) de vérification + résultat attendu |
| Remédiation | Commande(s) d'application |
| Valeur par défaut | Valeur sur une installation fraîche |
| Rollback | Procédure de retour arrière (ajout Proxmox) |
| Spécificité PVE | Notes spécifiques à Proxmox (ajout Proxmox) |
| Références | Sources additionnelles |
0.1 — Préparation matérielle
| Profile Applicability | Level 1 — Server |
| Applicabilité PVE | 🏠🏢🌐 |
| Réf. CIS Debian 13 | Hors périmètre CIS (prérequis matériel) |
| CIS Controls v8 | 2.2 — Ensure Authorized Software is Currently Supported |
| MITRE ATT&CK | T1542 (Pre-OS Boot), T1195 (Supply Chain Compromise) |
| ISO 27001:2022 | A.8.8 — Management of technical vulnerabilities |
| PCI DSS v4.0 | 6.3.3 — Install security patches within one month |
| Scénario threat model | S5 (BMC), S10 (accès physique) |
| Statut PVE 9 | ✅ Validé |
Description :
Description :
Rationale :
Rationale :
Impact :
Reboot nécessaire. Un flash de BIOS raté peut bricker le serveur — prévoir un accès console physique ou IPMI. Certaines mises à jour de microcode peuvent réduire très légèrement les performances (~1-3%) sur les workloads affectés par les mitigations Spectre.
🔍 Audit
Audit :
Version BIOS/UEFI
dmidecode -t bios | grep -E "Vendor|Version|Release Date"
Résultat attendu : version correspondant à la dernière release constructeur
Version microcode CPU
journalctl -k | grep -i microcode
ou :
cat /proc/cpuinfo | grep -m1 microcode
Résultat attendu : version récente (comparer avec les advisories Intel/AMD)
Vérification des mitigations CPU actives
cat /sys/devices/system/cpu/vulnerabilities/*
Résultat attendu : "Mitigation:" sur chaque ligne (pas "Vulnerable")
**Remédiation** :
1. Firmware BIOS : procédure constructeur (Dell, HP, Lenovo, Supermicro)
Télécharger depuis le site officiel, vérifier le checksum, appliquer
2. Microcode CPU via paquets Debian :
apt update
Intel
apt install -y intel-microcode
AMD
apt install -y amd64-microcode
3. Redémarrer pour appliquer
reboot
**Valeur par défaut** : Microcode distribué avec le kernel Debian. Peut ne pas être la dernière version.
**Rollback** : Pour le microcode Debian : `apt purge intel-microcode` ou `amd64-microcode` et reboot. Pour le BIOS : procédure de flash-back constructeur (si disponible).
**Spécificité PVE** : Le kernel Proxmox (basé sur Ubuntu) charge le microcode depuis l'initramfs. Les paquets `intel-microcode` et `amd64-microcode` de Debian fonctionnent normalement avec le kernel PVE.
---
| Profile Applicability | Level 1 — Server |
| Applicabilité PVE | 🏢🌐 (N/A si matériel sans BMC) |
| Réf. CIS Debian 13 | Hors périmètre CIS (couche matérielle) |
| CIS Controls v8 | 4.1 — Establish and Maintain a Secure Configuration Process |
| MITRE ATT&CK | T1200 (Hardware Additions), T1133 (External Remote Services), T1078 (Valid Accounts) |
| ISO 27001:2022 | A.8.9 — Configuration management, A.5.15 — Access control |
| PCI DSS v4.0 | 2.2.1 — Develop configuration standards for system components |
| Scénario threat model | S5 (Compromission BMC) |
| Statut PVE 9 | ✅ Validé |
Description :
Description :
Rationale :
Rationale :
Impact :
Faible. Nécessite un accès au réseau BMC pour la configuration initiale.
🔍 Audit
Audit :
Vérifier que le BMC N'EST PAS accessible depuis le réseau management PVE
(exécuter depuis un hôte sur le réseau management, PAS le réseau OOB)
nmap -sV <adresse_IP_BMC> -p 80,443,623,5900 --max-retries 1
Résultat attendu : tous les ports filtrés ou host unreachable
(le BMC ne doit être joignable QUE depuis le VLAN OOB)
Vérifier les protocoles actifs (depuis le réseau OOB)
ipmitool -I lanplus -H <BMC_IP> -U admin -P <password> lan print 1
Vérifier : Auth Type = PASSWORD uniquement n'est pas acceptable
Résultat attendu : des méthodes d'authentification fortes
**Remédiation** :
| Action | Priorité | Détail |
|--------|----------|--------|
| Changer les credentials par défaut | 🔴 Critique | Mot de passe ≥ 16 caractères, unique par serveur, stocké dans un gestionnaire de MDP |
| Isoler sur VLAN OOB dédié | 🔴 Critique | VLAN non routable vers internet ni vers le réseau VM/management PVE |
| Désactiver HTTP (forcer HTTPS) | 🔴 Critique | Via l'interface web BMC ou CLI ipmitool |
| Désactiver SNMP v1/v2c | 🟡 Important | Migrer vers SNMPv3 si monitoring nécessaire |
| Désactiver Telnet | 🔴 Critique | Via l'interface web BMC |
| Désactiver IPMI-over-LAN | 🟡 Important | Si non utilisé pour le monitoring |
| Mettre à jour le firmware BMC | 🔴 Critique | Depuis le site constructeur |
| Installer certificat TLS | 🟡 Important | Si le BMC supporte l'import de certificats |
| Activer le System Event Log | 🟡 Important | Pour la traçabilité des accès BMC |
**Valeur par défaut** : Credentials usine (`admin`/`admin`, `ADMIN`/`ADMIN`, ou similaire). HTTP actif. SNMP v1/v2c actif. Pas d'isolation réseau.
**Rollback** : Reset usine du BMC via le bouton physique ou la procédure constructeur.
**Spécificité PVE** : Proxmox n'a aucune interaction directe avec le BMC. La sécurisation du BMC est entièrement indépendante de PVE mais critique pour la sécurité globale de l'infrastructure.
**Références** :
- Forum Proxmox — cas documentés de ransomware via BMC
- NIST SP 800-123 — Guide to General Server Security
---
| Profile Applicability | Level 2 — Server |
| Applicabilité PVE | 🏢🌐 |
| Réf. CIS Debian 13 | Hors périmètre CIS |
| CIS Controls v8 | 4.1 — Establish and Maintain a Secure Configuration Process |
| MITRE ATT&CK | T1542.003 (Bootkit), T1014 (Rootkit) |
| ISO 27001:2022 | A.8.9 — Configuration management |
| PCI DSS v4.0 | 2.2.1 |
| Scénario threat model | S10 (accès physique) |
| Statut PVE 9 | ⚠️ Partiel — fonctionnel mais incompatible avec certains modules tiers |
Description :
Description :
Rationale :
Rationale :
Impact :
Moyen à élevé. Les modules kernel non signés ne se chargeront pas. Cela affecte :
- Drivers NVIDIA propriétaires (GPU passthrough) — ❌ ne fonctionneront pas sans signature personnalisée
- Certains modules DRBD — ⚠️ vérifier la compatibilité
- Modules kernel out-of-tree tiers — ❌ bloqués
- ZFS (inclus dans le kernel PVE) — ✅ fonctionne
- Modules kernel Proxmox standard — ✅ fonctionnent
🔍 Audit
Audit :
mokutil --sb-state
Résultat attendu : "SecureBoot enabled"
Alternative si mokutil non installé :
dmesg | grep -i "secure boot"
Résultat attendu : "Secure boot enabled"
**Remédiation** :
1. Activer Secure Boot dans le BIOS/UEFI
2. Installer PVE normalement (ou redémarrer si déjà installé)
3. Vérifier que le système démarre et que tous les modules nécessaires se chargent :
lsmod | grep -E "zfs|kvm|vhost"
Résultat attendu : modules présents et chargés
**Valeur par défaut** : Dépend du matériel et du BIOS. Souvent désactivé sur les serveurs.
**Rollback** : Désactiver Secure Boot dans le BIOS/UEFI.
**Spécificité PVE** : Proxmox VE 9 supporte Secure Boot. Le kernel PVE et ses modules intégrés (ZFS, KVM) sont signés. Cependant, les modules tiers non signés sont bloqués. **Tester impérativement en lab avant activation en production.**
---
| Profile Applicability | Level 2 — Server |
| Applicabilité PVE | 🏢🌐 |
| Réf. CIS Debian 13 | Hors périmètre CIS |
| CIS Controls v8 | 3.6 — Encrypt Data on End-User Devices |
| MITRE ATT&CK | T1542 (Pre-OS Boot), M1026 (Privileged Account Management) |
| ISO 27001:2022 | A.8.24 — Use of cryptography |
| PCI DSS v4.0 | 3.5.1 |
| Scénario threat model | S10 (accès physique) |
| Statut PVE 9 | ✅ Validé (vTPM pour VM), ⚠️ Partiel (auto-unlock LUKS) |
Description :
Description :
Rationale :
Rationale :
Impact :
Faible. Le TPM est transparent une fois configuré. L'auto-unlock via TPM protège contre le vol de disques mais PAS contre un attaquant ayant accès à l'ensemble du serveur (le TPM est sur la carte mère).
🔍 Audit
Audit :
cat /sys/class/tpm/tpm0/tpm_version_major 2>/dev/null
Résultat attendu : 2
dmesg | grep -i tpm
Résultat attendu : lignes indiquant un TPM détecté et initialisé
**Remédiation** :
1. Activer le TPM 2.0 dans le BIOS/UEFI
2. Vérifier la détection par le kernel
Pour l'auto-unlock LUKS via TPM (si LUKS est utilisé) :
apt install -y systemd-cryptenroll tpm2-tools
Enregistrer la clé TPM pour un volume LUKS
systemd-cryptenroll /dev/sdX3 --tpm2-device=auto --tpm2-pcrs=0+1+7
PCR 0 = firmware, PCR 1 = firmware config, PCR 7 = Secure Boot state
Générer une clé de récupération (IMPÉRATIF)
systemd-cryptenroll /dev/sdX3 --recovery-key
STOCKER CETTE CLÉ HORS LIGNE (password manager, coffre-fort)
**Valeur par défaut** : TPM souvent désactivé dans le BIOS par défaut sur les serveurs.
**Rollback** : Supprimer l'enrollment TPM : `systemd-cryptenroll /dev/sdX3 --wipe-slot=tpm2`. La passphrase LUKS reste fonctionnelle.
**Spécificité PVE** :
- PVE 9 supporte le vTPM (TPM virtuel) pour les VM guests — utile pour Windows 11 et les OS exigeant un TPM
- L'auto-unlock LUKS via TPM est une fonctionnalité Debian/systemd standard, indépendante de PVE
- **Alternatives sans TPM** : `dropbear-initramfs` (unlock SSH dans l'initramfs), `tang`/`clevis` (Network-Bound Disk Encryption — NBDE)
---
| Profile Applicability | Level 1 — Server |
| Applicabilité PVE | 🏠🏢🌐 |
| Réf. CIS Debian 13 | Hors périmètre CIS |
| CIS Controls v8 | 1.1 — Establish and Maintain Detailed Enterprise Asset Inventory |
| MITRE ATT&CK | T1082 (System Information Discovery) — contrôle défensif |
| ISO 27001:2022 | A.5.9 — Inventory of information and other associated assets |
| PCI DSS v4.0 | 9.9.1 — Maintain a listing of devices |
| Scénario threat model | Tous |
| Statut PVE 9 | ✅ Validé |
Description :
Description :
Rationale :
Rationale :
Impact : Nul.
🔍 Audit
Audit :
Script de génération d'inventaire rapide
echo "=== SYSTEM ===" && dmidecode -t system | grep -E "Manufacturer|Product|Serial" && \
echo "=== BIOS ===" && dmidecode -t bios | grep -E "Vendor|Version|Release" && \
echo "=== CPU ===" && lscpu | grep -E "Model name|Socket|Thread" && \
echo "=== RAM ===" && free -h | grep Mem && \
echo "=== STORAGE ===" && lsblk -d -o NAME,SIZE,MODEL,SERIAL && \
echo "=== NETWORK ===" && ip -br link show && \
echo "=== PVE ===" && pveversion -v 2>/dev/null && \
echo "=== KERNEL ===" && uname -r
Résultat attendu : informations complètes pour alimenter le tableau d'inventaire
**Remédiation** :
Créer et maintenir un fichier d'inventaire par nœud. Modèle :
| Champ | Valeur |
|---|---|
| Hostname | pve-node01 |
| Modèle | Dell PowerEdge R750 |
| N° série | [À renseigner] |
| CPU | 2x Intel Xeon Gold 6338 |
| RAM | 256 Go DDR4 ECC |
| Disques OS | 2x 480 Go SSD SATA (RAID1) |
| Disques VM | 4x 1.92 To NVMe |
| Réseau | 2x 25 GbE + 2x 1 GbE |
| BIOS | v2.12.2 (2025-10-15) |
| BMC | iLO 5 v3.10 |
| PVE | 9.1-3 |
| Kernel | 6.12.6-1-pve |
| Emplacement | Rack A, U12-14 |
| VLAN Mgmt | 10 — 10.0.10.11/24 |
| VLAN BMC | 99 — 10.0.99.11/24 |
| Dernier audit | 2026-03-20 |
Mettre à jour après **chaque** changement de matériel ou de configuration.
**Valeur par défaut** : Aucun inventaire.
---
0.2 — Choix d'installation
| Profile Applicability | Level 1 — Server |
| Applicabilité PVE | 🏠🏢🌐 |
| Réf. CIS Debian 13 | Prérequis global (conditionne 1.1.x partitionnement) |
| CIS Controls v8 | 4.1 — Establish and Maintain a Secure Configuration Process |
| ISO 27001:2022 | A.8.9 — Configuration management |
| Scénario threat model | S7 (supply chain), S10 (accès physique) |
| Statut PVE 9 | ✅ Validé |
Description :
Description :
Rationale :
Rationale :
Impact :
Décision architecturale irréversible. L'installateur ISO Proxmox ne propose pas d'option LUKS pour ext4/XFS. Les options de chiffrement dans l'installateur PVE n'existent que pour ZFS.
| Critère | ISO Proxmox | Debian 13 + dépôt PVE |
|---|---|---|
| Simplicité | ✅ Assistée | ❌ Manuelle |
| Support Proxmox GmbH | ✅ Méthode principale | ⚠️ Supportée |
| Partitionnement CIS (1.1.x) | ❌ Schéma fixe | ✅ Contrôle total |
| LUKS sur ext4/LVM | ❌ Non disponible | ✅ Via installateur Debian |
| ZFS encryption | ✅ Disponible | ⚠️ Installation manuelle |
| Conformité CIS complète | ❌ Partitions non séparées | ✅ Possible |
| Risque opérationnel | Faible | Moyen |
Remédiation (recommandation par profil) :
| Profil | Recommandation |
|---|---|
| 🏠 Homelab | ISO Proxmox — simple, fiable |
| 🏢 Prod sans exigence CIS strict | ISO Proxmox + ZFS encryption si chiffrement requis |
| 🏢🌐 Prod avec conformité CIS ou LUKS obligatoire | Debian 13 + dépôt Proxmox |
Si Debian 13 + dépôt PVE : suivre https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_13_Trixie
Pièges documentés :
- Ne PAS installer d'environnement de bureau
- Sélectionner uniquement
Standard system utilities+SSH server - Configurer un hostname FQDN résolvable (requis par Proxmox)
- Retirer le kernel Debian APRÈS vérification du boot sur kernel PVE
Valeur par défaut : N/A (choix initial).
Spécificité PVE : L'installateur ISO PVE utilise un partitionnement prédéfini : une partition EFI, un VG LVM avec root + swap (ou ZFS avec root pool + data pool). Ce schéma ne crée PAS de partitions séparées pour /tmp, /var, /var/log, /var/log/audit, /home.
| Profile Applicability | Level 1 — Server (partitions de base), Level 2 — Server (toutes) |
| Applicabilité PVE | 🏠 (simplifié) 🏢🌐 (complet) |
| Réf. CIS Debian 13 | 1.1.2.1 à 1.1.2.7 |
| CIS Controls v8 | 4.8 — Uninstall or Disable Unnecessary Services |
| MITRE ATT&CK | T1499.001 (OS Exhaustion Flood), M1022 (Restrict File and Directory Permissions) |
| ISO 27001:2022 | A.8.9 — Configuration management |
| PCI DSS v4.0 | 2.2.1, 2.2.4 |
| Scénario threat model | S2 (ransomware), S7 (supply chain) |
| Statut PVE 9 | ✅ Validé (si Debian-first) / ⚠️ Non conforme (si ISO PVE) |
Description :
Description :
Rationale :
Rationale :
Impact :
Nul si fait à l'installation. Irréversible après installation (réinstallation nécessaire pour le partitionnement, options de montage modifiables à chaud).
🔍 Audit
Audit :
Vérifier que les partitions existent
for mp in /tmp /var /var/log /var/log/audit /home /var/tmp; do
findmnt -n "$mp" > /dev/null 2>&1 && echo "PASS: $mp est une partition séparée" \
| echo "FAIL: $mp n'est PAS une partition séparée" |
done
Vérifier les options de montage
for mp in /tmp /dev/shm /var/tmp; do
opts=$(findmnt -n -o OPTIONS "$mp" 2>/dev/null)
echo "$mp: $opts"
echo "$opts" | grep -q "nosuid" && echo " nosuid: PASS" || echo " nosuid: FAIL"
echo "$opts" | grep -q "nodev" && echo " nodev: PASS" || echo " nodev: FAIL"
echo "$opts" | grep -q "noexec" && echo " noexec: PASS" || echo " noexec: FAIL"
done
**Remédiation** :
Schéma complet (installateur Debian, conformité CIS Level 1+2) :
| Point de montage | CIS | Level | Taille recommandée | Options de montage |
|-----------------|-----|-------|--------------------|--------------------|
| `/` | — | — | 20-50 Go | `defaults` |
| `/boot` | — | — | 1 Go | `defaults,nosuid,nodev,noexec` |
| `/boot/efi` | — | — | 512 Mo | `defaults,nosuid,nodev,noexec` |
| `/tmp` | 1.1.2.1 | L1 | 5-10 Go | `defaults,nosuid,nodev,noexec` |
| `/dev/shm` | 1.1.2.2 | L1 | tmpfs | `defaults,nosuid,nodev,noexec` |
| `/home` | 1.1.2.3 | L1 | 5-10 Go | `defaults,nosuid,nodev` |
| `/var` | 1.1.2.4 | L1 | 20-50 Go | `defaults,nosuid,nodev` |
| `/var/tmp` | 1.1.2.5 | L1 | 5-10 Go | `defaults,nosuid,nodev,noexec` |
| `/var/log` | 1.1.2.6 | L1 | 10-20 Go | `defaults,nosuid,nodev,noexec` |
| `/var/log/audit` | 1.1.2.7 | L1 | 5-10 Go | `defaults,nosuid,nodev,noexec` |
| `/var/lib/vz` | PVE | — | Max ou volume dédié | `defaults,nosuid,nodev` |
| swap | — | — | 1-2x RAM (max 32 Go) | `sw` |
**Valeur par défaut** : L'installateur ISO PVE crée une partition unique root + swap (LVM) ou un pool ZFS sans séparation. Non conforme CIS 1.1.2.x.
**Rollback** : Les options de montage sont modifiables dans `/etc/fstab` + `mount -o remount`. Le partitionnement lui-même n'est pas modifiable sans réinstallation.
**Spécificité PVE** : `/var/lib/vz` est le répertoire de stockage local par défaut de Proxmox (images ISO, templates, snippets). Sur l'installateur ISO, il est créé comme un volume LVM-thin ou un dataset ZFS. Le séparer du root filesystem prévient l'épuisement de l'espace disque root par les images VM.
---
| Profile Applicability | Level 2 — Server |
| Applicabilité PVE | 🏢🌐 |
| Réf. CIS Debian 13 | Hors périmètre CIS (recommandation complémentaire) |
| CIS Controls v8 | 3.6 — Encrypt Data on End-User Devices, 3.9 — Encrypt Data on Removable Media |
| MITRE ATT&CK | T1005 (Data from Local System), T1025 (Data from Removable Media), M1041 (Encrypt Sensitive Information) |
| ISO 27001:2022 | A.8.24 — Use of cryptography |
| PCI DSS v4.0 | 3.5.1 — Render PAN unreadable anywhere it is stored |
| Scénario threat model | S10 (accès physique) |
| Statut PVE 9 | ⚠️ Partiel — ZFS encryption natif dans l'installateur, LUKS uniquement via Debian-first |
Description :
Description :
Rationale :
Rationale :
Impact :
- Surcoût performance : 3-5% (LUKS2 + AES-NI), 5-8% (ZFS encryption) sur I/O séquentiel
- Nécessite une intervention au boot (saisie de passphrase) ou une configuration auto-unlock (TPM, dropbear, tang/clevis)
- Complexité accrue de la gestion des clés et de la recovery
🔍 Audit
Audit :
Vérifier le chiffrement LUKS
lsblk -f | grep -i crypt
Résultat attendu : volumes de type "crypt" visibles
Vérifier le chiffrement ZFS
zfs get encryption -r rpool 2>/dev/null | grep -v off
Résultat attendu : datasets avec encryption=aes-256-gcm
Vérifier l'état global
cryptsetup status cryptlvm 2>/dev/null || echo "Pas de LUKS actif"
**Remédiation** :
Trois options (voir 0.2.1 pour le choix d'installation) :
**Option A — ZFS native encryption (via installateur PVE)** :
Sélectionner ZFS dans l'installateur et activer le chiffrement. Pour un chiffrement per-dataset post-installation :
zfs create -o encryption=aes-256-gcm \
-o keylocation=prompt \
-o keyformat=passphrase \
rpool/encrypted-vms
**Option B — LUKS2 (via installateur Debian)** :
Choisir « Guided — use entire disk and set up encrypted LVM » dans l'installateur Debian 13. Puis installer Proxmox par-dessus.
**Option C — LUKS sous ZFS (post-installation, avancé)** :
Conversion in-place via live boot. Réservé aux experts.
**Impératifs communs** :
Sauvegarder l'en-tête LUKS (si LUKS)
cryptsetup luksHeaderBackup /dev/sdX3 --header-backup-file /root/luks-header-sdX3.img
STOCKER HORS SITE
Générer et stocker une clé de récupération
systemd-cryptenroll /dev/sdX3 --recovery-key 2>/dev/null
ou noter la passphrase dans un gestionnaire de MDP hors ligne
**Valeur par défaut** : Aucun chiffrement.
**Rollback** : Le chiffrement une fois appliqué n'est pas réversible sans réinstallation ou procédure de déchiffrement destructive.
**Spécificité PVE** :
- L'installateur ISO PVE **ne propose PAS LUKS pour ext4/XFS**. Le chiffrement dans l'installateur n'est disponible que pour ZFS.
- ZFS native encryption ne chiffre pas le root pool facilement (le boot doit lire le pool).
- Pour un chiffrement total (full disk encryption), la méthode Debian-first + LUKS est nécessaire.
- Le déverrouillage distant via `dropbear-initramfs` est recommandé pour les serveurs en datacenter :
apt install dropbear-initramfs
echo 'DROPBEAR_OPTIONS="-s -c cryptroot-unlock"' > /etc/dropbear/initramfs/dropbear.conf
Ajouter votre clé publique SSH dans /etc/dropbear/initramfs/authorized_keys
update-initramfs -u
---
| Profile Applicability | Level 1 — Server |
| Applicabilité PVE | 🏠 (simplifié) 🏢🌐 (complet) |
| Réf. CIS Debian 13 | Hors périmètre CIS (architecture) |
| CIS Controls v8 | 12.2 — Establish and Maintain a Secure Network Architecture |
| MITRE ATT&CK | T1557 (Adversary-in-the-Middle), T1021 (Remote Services), M1030 (Network Segmentation) |
| ISO 27001:2022 | A.8.22 — Segregation of networks |
| PCI DSS v4.0 | 1.2.1 — Restrict inbound and outbound traffic |
| Scénario threat model | S1, S4, S5, S9 |
| Statut PVE 9 | ✅ Validé |
Description :
Description :
Rationale :
Rationale :
Impact : Nul (planification uniquement).
🔧 Remédiation
Remédiation :
Architecture VLAN de référence (🏢🌐) :
| VLAN | Nom | Rôle | Plage exemple | Ports PVE |
|---|---|---|---|---|
| 10 | Management | Web UI :8006, SSH, API | 10.0.10.0/24 | 8006/tcp, 22/tcp |
| 20 | VM/CT | Trafic applicatif guests | 10.0.20.0/24+ | Variable |
| 30 | Stockage | NFS, iSCSI, Ceph public | 10.0.30.0/24 | 2049, 3260, 6789 |
| 40 | Cluster | Corosync, migration, réplication | 10.0.40.0/24 | 5405/udp, 60000-60050/tcp |
| 41 | Ceph cluster | Réplication OSD (si Ceph) | 10.0.41.0/24 | 6800-7300/tcp |
| 99 | OOB | BMC/IPMI | 10.0.99.0/24 | 443/tcp (BMC web) |
Architecture simplifiée (🏠) :
Réseau plat avec firewall PVE pour restreindre l'accès aux ports management. Pas de VLAN nécessaire.
Valeur par défaut : Pas de segmentation. Un seul bridge vmbr0 sur l'interface principale.
Spécificité PVE : Proxmox utilise des bridges Linux (vmbr0, vmbr1...) pour la connectivité réseau. Chaque VLAN peut être associé à un bridge dédié ou utiliser des VLAN-aware bridges. La configuration détaillée est couverte en Phase 4.
0.3 — Checklist pré-installation
MATÉRIEL
[ ] 0.1.1 — Firmware/BIOS à jour
[ ] 0.1.1 — Microcode CPU installé
[ ] 0.1.2 — Credentials BMC changés
[ ] 0.1.2 — BMC isolé sur VLAN OOB
[ ] 0.1.2 — Protocoles non chiffrés BMC désactivés
[ ] 0.1.3 — Secure Boot : décision documentée (activé/désactivé)
[ ] 0.1.4 — TPM 2.0 : décision documentée
[ ] 0.1.5 — Inventaire matériel rempli
ARCHITECTURE
[ ] 0.2.1 — Méthode d'installation choisie (ISO PVE / Debian-first)
[ ] 0.2.2 — Schéma de partitionnement défini
[ ] 0.2.3 — Stratégie de chiffrement définie + clés générées et stockées
[ ] 0.2.4 — Architecture réseau VLAN planifiée et documentée
PRÉREQUIS
[ ] Accès console hors-bande vérifié
[ ] ISO d'installation préparée (checksum SHA256 vérifié)
[ ] Procédure de déverrouillage distant planifiée (si LUKS)
Navigation : ← 01-threat-model.md | 03-os-debian-durci.md →
-e