Durcir un hôte PVE et PBS : SSH, accès GUI, certificats ACME¶
Cette checklist ramène un hôte Proxmox VE (pve01) ou Proxmox Backup Server à un niveau de sécurité raisonnable : interface d'administration non exposée, SSH par clés, certificats valides, comptes nominatifs et mises à jour suivies. Chaque point se vérifie par une commande ou un écran.
Avant de toucher la prod
- Accès console hors bande (IPMI/iDRAC/iLO) testé : une erreur SSH ou firewall se rattrape en console.
- Une session root ouverte en parallèle pendant toute modification de
sshdoupveproxy. - Clé SSH de l'équipe et clé du MSP déjà déposées et testées.
- Sur un cluster : appliquer nœud par nœud, vérifier
pvecm statusentre deux nœuds.
1. Exposition réseau¶
- La GUI PVE (port 8006) et PBS (port 8007) ne sont joignables que depuis le réseau d'administration, jamais depuis Internet. Test depuis un poste extérieur :
curl -k -m 5 https://<ip-publique>:8006doit échouer. - Interfaces de management sur un VLAN dédié, distinct des réseaux de VM, voir plan réseau type.
- Firewall PVE actif avec un IPset
managementà jour : Datacenter → Firewall → Options = Yes. Voir Firewall Proxmox. - PBS filtré par nftables local ou par le firewall réseau : seuls les nœuds PVE, les postes admin et le PBS du MSP atteignent le port 8007.
-
Si un filtrage applicatif complémentaire est souhaité sur PVE,
/etc/default/pveproxy(puissystemctl restart pveproxy.service spiceproxy.service) :Vérification :
grep -E 'ALLOW|DENY|POLICY' /etc/default/pveproxy. Ne pas utiliserLISTEN_IPsur un nœud de cluster.
2. SSH¶
-
Fichier de durcissement dédié, sans modifier
sshd_configd'origine,/etc/ssh/sshd_config.d/90-durcissement.conf: -
Syntaxe validée avant rechargement :
sshd -t && systemctl reload ssh. - Configuration effective :
sshd -T | grep -E 'permitrootlogin|passwordauthentication'afficheprohibit-passwordetno. - Test de connexion par clé depuis un nouveau terminal avant de fermer l'ancien.
- Sur un cluster PVE,
PermitRootLoginn'est pas àno: les nœuds communiquent en root par clé (migration, réplication ZFS, console). Test :ssh -o BatchMode=yes root@pve02 hostnamedepuispve01répond sans mot de passe. - Clés autorisées revues :
cat /root/.ssh/authorized_keys. Sur PVE, les clés des nœuds sont gérées par le cluster via/etc/pve/priv/authorized_keys: ne pas supprimer ces lignes ni écraser le fichier. -
fail2baninstallé si le SSH est joignable depuis un réseau non maîtrisé (apt install fail2ban, puisfail2ban-client status sshd).
3. Certificats¶
- Accès à la GUI par FQDN (
https://pve01.corp.local:8006), pas par IP. Prérequis pour WebAuthn. - Certificat valide reconnu par les navigateurs, au choix :
- ACME (Let's Encrypt ou CA ACME interne). PVE : Datacenter → ACME (compte + plugin DNS), puis Nœud → System → Certificates → ACME → Add le domaine, Order Certificates Now. PBS : Configuration → Certificates.
- Certificat de la PKI interne : Nœud → System → Certificates → Upload Custom Certificate.
-
Commandes PVE équivalentes, à tester d'abord avec l'annuaire staging de Let's Encrypt :
-
Renouvellement automatique actif : géré par
pve-daily-update.service, tenté à 30 jours de l'échéance. Vérification :pvenode cert info | grep -i notafter. - Certificat du serveur PBS : empreinte relevée (Dashboard → Show Fingerprint) et identique à celle déclarée dans le stockage
pbs-local(grep -A6 pbs-local /etc/pve/storage.cfg). Changer le certificat PBS change l'empreinte : mettre à jour le stockage côté PVE et la synchronisation côté MSP.
4. Comptes et accès¶
- Mot de passe
rootlong, unique par hôte, stocké au coffre. - Un compte nominatif par administrateur, via annuaire, avec 2FA : voir Authentification et 2FA.
- 2FA sur
root@pamet clés de récupération imprimées au coffre. - Revue trimestrielle :
pveum user listetpveum acl list(PVE),proxmox-backup-manager user list(PBS). Aucun compte de personne partie. - Jetons API inventoriés, avec date d'expiration : voir Jetons API.
5. Système et mises à jour¶
- Dépôts au format deb822 cohérents avec l'abonnement :
ls /etc/apt/sources.list.d/*.sources, aucun dépôtpvetesten production. Voir abonnements et dépôts. - Mises à jour appliquées selon le runbook mises à jour rolling :
apt update && apt list --upgradablevide après passage. - Aucun paquet inutile installé sur l'hyperviseur (pas de serveur web, de base de données ou d'agent non validé).
- Heure synchronisée :
chronyc trackingaffiche Leap status : Normal. Indispensable pour TOTP, certificats et Ceph. - Notifications natives configurées vers une adresse surveillée : voir notifications.
6. Sauvegardes et clés¶
- Sauvegardes PBS chiffrées côté client et clé hors cluster : voir Chiffrement.
- Le compte utilisé par PVE sur PBS n'a que le rôle de sauvegarde sur son datastore, pas
Admin: PBS → Datastore → Permissions. - Le compte de synchronisation du MSP ne peut pas supprimer les sauvegardes locales, voir sync vers le MSP.
Pièges vus en support
PermitRootLogin noappliqué sur un nœud de cluster : migrations et réplications en échec, console noVNC d'un autre nœud inaccessible./root/.ssh/authorized_keysécrasé par un outil de gestion de configuration : les nœuds ne se joignent plus. Les outils (Ansible…) doivent ajouter des lignes, pas remplacer le fichier.- Certificat ACME commandé en production pour un FQDN mal résolu : quota Let's Encrypt atteint. Toujours tester en staging.
- Port 8006 publié en NAT « temporairement » pour un prestataire : accès exposé des mois plus tard. Utiliser un VPN ou le bastion du MSP.
Quand ouvrir un ticket iTop
Accès SSH ou GUI perdu sur un nœud après durcissement : P2 (P1 si plusieurs nœuds). Mise en place d'une CA ACME interne, audit de sécurité, revue de conformité : demande P4. Contrat N3 : le MSP applique et maintient cette checklist.
Documentation officielle : Certificate Management · pveproxy(8) · PBS Certificate Management