Code : MO-PLT-021 | Version : 1.0 | Date : 16 avril 2026 | Auteur : C. Legrand
Ce mode operatoire decrit la mise en conformite des comptes d'administration ProxMox VE de l'infrastructure BTS SIO avec les recommandations ANSSI PA-022 v3.0 sur l'administration securisee des systemes d'information. Il couvre trois chantiers complementaires :
clegrand@pve, manu@pve), en remplacement de l'usage partage de root@pam ;/pool/icad (T16) de Administrator a PVEAdmin et harmonisation sur le groupe (modele aligne sur les pools ksav et publicom) pour les trois comptes etudiants rattaches ;pvesh, compatible avec toute application conforme a la RFC 6238 (Bitwarden, Aegis, FreeOTP, Google Authenticator, Microsoft Authenticator, Proton Authenticator).Ces actions repondent au constat F-VIRT-019 de l'audit authentifie du 15 mars 2026 (comptes etudiants avec droits excessifs sur le pool icad) ainsi qu'a la recommandation R-12 (« deployer une authentification forte sur les interfaces d'administration »).
| Application | ProxMox VE 8.4.14 (kernel 6.8.12-17-pve) |
| Hebergement | Serveur physique (10.0.112.200), 2x Xeon E5-2620 v2, 32 Go RAM |
| Acces | https://10.0.112.200:8006 ou SSH root@10.0.112.200 |
| Comptes concernes | 2 nouveaux (clegrand@pve, manu@pve) + 3 existants (dbalmigere@pve, lbonet@pve, mboyer@pve) |
| Duree estimee | 20 a 30 minutes (15 min pour les ACL, 5 min par TOTP utilisateur) |
| Referentiel | ANSSI PA-022 v3, ANSSI « Les Essentiels » Virtualisation (2024), Proxmox VE User Management |
root sur le noeud ProxMox : ssh root@10.0.112.200 (cle ed25519 deployee)root@pam sauvegardes dans Vaultwarden (collection Virtualisation)clegrand@pve et manu@pve (generateur interne Vaultwarden)qrencode installe localement pour generer les QR codes TOTP en mode texte (apt install qrencode si absent)
Contexte historique du pool icad : le groupe et le pool icad hebergeaient initialement un projet etudiant (CT 100 « icad », aujourd'hui arrete). Trois comptes etudiants y gardent une habilitation
Administratorposee individuellement sur le chemin/pool/icad, ce qui devie du modele applique aux pools ksav et publicom (ACL au niveau du groupe avec le rolePVEAdmin). L'harmonisation retire sept privileges sensibles (dontPermissions.ModifyetSys.Modify) et unifie la gouvernance des trois perimetres pedagogiques.
Les comptes clegrand@pve et manu@pve sont crees dans le realm natif pve (authentification interne ProxMox). Le compte partage root@pam est conserve pour les operations de bris de glace uniquement.
Etape 1 — Se connecter a l'hote ProxMox
ssh root@10.0.112.200
La cle ed25519 de l'administrateur principal est deja deployee dans /root/.ssh/authorized_keys depuis le 26/03/2026.
Etape 2 — Creer les deux comptes nominatifs et attribuer le role PVEAdmin
# Creation des comptes nominatifs (realm pve)
pveum user add clegrand@pve --comment "Cedric LEGRAND - admin nominatif"
pveum user add manu@pve --comment "Emmanuel MARTINEZ - co-administrateur"
# Definition des mots de passe (interactif)
pveum passwd clegrand@pve
pveum passwd manu@pve
# Attribution du role PVEAdmin sur la racine (propagation heritee)
pveum acl modify / --users clegrand@pve --roles PVEAdmin --propagate 1
pveum acl modify / --users manu@pve --roles PVEAdmin --propagate 1

Etape 3 — Verifier la liste des comptes actifs
pveum user list

Cloisonnement PVEAdmin vs Administrator : le role
PVEAdmincouvre tout l'exploitation courante (gestion des VM/CT, snapshots, sauvegardes, migration, console) mais exclut explicitement quatre privileges « systeme » :Sys.Modify,Permissions.Modify,Realm.AllocateetMapping.Modify. Ces droits restent cantonnes au compteroot@pam, conformement au principe ANSSI PA-022 de separation par domaine technique.
Avant l'intervention, les trois etudiants du groupe icad possedent chacun une ACL Administrator posee individuellement sur /pool/icad, contrairement aux pools ksav (/vms/101) et publicom (/vms/102) qui utilisent une ACL posee au niveau du groupe avec le role PVEAdmin.
Etape 4 — Etat initial de la matrice d'habilitations
pveum acl list

Etape 5 — Privileges effectifs d'un etudiant du groupe icad
pveum user permissions dbalmigere@pve --path /pool/icad

Ordre des commandes critique : toujours ajouter l'ACL du groupe avant de retirer les ACL utilisateurs individuelles. Un retrait d'ACL premature laisserait temporairement les etudiants sans aucun acces au pool, ce qui peut interrompre un TP en cours.
Etape 6 — Attribuer le role PVEAdmin au groupe icad sur le pool
# 1. Ajout de l'ACL au niveau du groupe (nouvelle habilitation)
pveum acl modify /pool/icad --groups icad --roles PVEAdmin --propagate 1
Etape 7 — Retirer les ACL utilisateurs Administrator devenues redondantes
# 2-4. Suppression des trois ACL utilisateurs Administrator
pveum acl delete /pool/icad --users dbalmigere@pve --roles Administrator
pveum acl delete /pool/icad --users lbonet@pve --roles Administrator
pveum acl delete /pool/icad --users mboyer@pve --roles Administrator

Etape 8 — Verifier l'etat final de la matrice d'habilitations
pveum acl list

Etape 9 — Constater la reduction des privileges effectifs
pveum user permissions dbalmigere@pve --path /pool/icad

L'activation du TOTP est une operation individuelle que chaque administrateur effectue pour son propre compte. La procedure decrite ci-dessous est agnostique a l'application cliente choisie (toute application conforme a la RFC 6238 est compatible).
Etape 10 — Generer un secret TOTP aleatoire et l'URI otpauth
# Secret de 30 octets aleatoires encodes en base32 (format RFC 4648)
SECRET=$(openssl rand -base32 30 | tr -d '=' | tr '+/' 'AB')
# Construction de l'URI otpauth selon la RFC 6238 (SHA1, 6 digits, periode 30 s)
URI="otpauth://totp/PVE-BTS:clegrand@pve?secret=${SECRET}\
&issuer=PVE-BTS&algorithm=SHA1&digits=6&period=30"

Etape 11 — Afficher le QR code en mode terminal
qrencode -t UTF8 "$URI"

Archiver le secret dans le gestionnaire de mots de passe : il est recommande de stocker egalement le secret TOTP dans Vaultwarden (champ TOTP natif de l'element
clegrand@pve) pour permettre la reconstitution du second facteur en cas de perte du telephone, sans devoir re-enroler. Cette duplication reste conforme a l'ANSSI tant que le coffre est protege par une phrase-passe forte et un 2FA distinct.
Etape 12 — Enregistrer le second facteur cote ProxMox
L'administrateur doit fournir un code OTP valide (lu dans l'application) pour prouver qu'il a bien enrole le secret cote client :
pvesh create /access/tfa/clegrand@pve \
--type totp \
--totp "$URI" \
--value <CODE_OTP_6_CHIFFRES> \
--description "TOTP principal clegrand - 16/04/2026" \
--password "$MDP_CLEGRAND"

Etape 13 — Verifier l'enrolement
pveum user tfa list clegrand@pve

Apres enrolement, toute connexion (interface web ou API) de clegrand@pve declenche un echange en deux etapes : l'authentification primaire renvoie un ticket partiel marque NeedTFA=1, qui ne donne aucun acces aux ressources tant que le second facteur n'est pas valide. Il faut alors reinjecter ce ticket partiel accompagne du code TOTP courant pour obtenir un ticket d'acces complet.

Interface web equivalente : sur
https://10.0.112.200:8006, le meme echange est realise de facon transparente : un premier ecran demande identifiant et mot de passe, puis un second ecran « Second factor required » demande le code a 6 chiffres genere par l'application. L'option « Remember me » ne concerne que le premier facteur — le code TOTP est demande a chaque nouvelle session.
| Controle | Commande / attendu |
|---|---|
| Comptes nominatifs presents | pveum user list \| grep -E 'clegrand\|manu' — 2 lignes, enable=1 |
| Role PVEAdmin attribue | pveum acl list \| grep '/ .*PVEAdmin' — 2 lignes |
| Pool icad harmonise | pveum acl list \| grep /pool/icad — 1 seule ligne group icad PVEAdmin |
| Aucune ACL utilisateur residuelle | pveum acl list \| grep -c Administrator — 0 |
| Privileges etudiant reduits | pveum user permissions dbalmigere@pve — absence de Permissions.Modify et Sys.Modify |
| TOTP enrole pour un administrateur | pveum user tfa list clegrand@pve — 1 entree de type totp |
| Connexion interactive OK | Login web + code OTP accepte en moins de 30 s |
Chaque chantier est reversible independamment. En cas d'anomalie constatee pendant les verifications, appliquer uniquement le rollback du bloc concerne.
Acces console necessaire en cas de perte TOTP : si le TOTP est active sur le compte de bris de glace
root@pamet que le telephone associe est perdu, la seule remise en service passe par un acces console physique ou IPMI au noeud. Editer/etc/pve/priv/tfa.cfget retirer la section correspondante puis redemarrerpveproxy. Garder systematiquement un jeu de codes de recuperation (--type recovery) hors ligne.
Rollback T14 — retrait des comptes nominatifs
pveum user delete clegrand@pve
pveum user delete manu@pve
Rollback T16 — restauration des ACL utilisateurs Administrator
# Restaurer les ACL utilisateurs Administrator
pveum acl modify /pool/icad --users dbalmigere@pve --roles Administrator --propagate 1
pveum acl modify /pool/icad --users lbonet@pve --roles Administrator --propagate 1
pveum acl modify /pool/icad --users mboyer@pve --roles Administrator --propagate 1
# Retirer l'ACL groupe PVEAdmin
pveum acl delete /pool/icad --groups icad --roles PVEAdmin
Rollback TOTP — revoquer un facteur enrole
# Lister les facteurs pour recuperer l'identifiant
pveum user tfa list clegrand@pve
# Supprimer un facteur precis
pveum user tfa delete clegrand@pve --id <IDENTIFIANT_TFA>