Hyper-V : Shielded VM et Host Guardian Service (HGS)

I. Présentation

Windows Server 2016 apporte son lot d’améliorations pour l’hyperviseur Hyper-V proposé par Microsoft au sein de son système d’exploitation depuis plusieurs années maintenant. Parmi ces améliorations et nouvelles fonctionnalités, il y en a une qui vise à renforcer la sécurité de vos machines virtuelles, nommée « Shielded VM » que l’on pourrait traduire par « VM protégée » ou « VM blindée ».

L’objectif est de renforcer la sécurité de la VM en forçant l’activation de certaines options de sécurité, notamment le chiffrement des disques virtuels, ce qui permet par exemple d’empêcher l’accès aux données de la machine virtuelle à partir de l’Hyper-V en ouvrant le VHD/VHDX de la VM.

Avec cette fonction, Microsoft souhaite renforcer également la différence qu’il y a entre les équipes IT qui mettent en place la couche de virtualisation, de ceux qui s’occupent de la couche OS et applications. L’objectif principal est de garantir un hébergement sécurisé pour les machines virtuelles.

Il est à noter que cette fonctionnalité s’imbrique très bien avec le Cloud Azure ainsi qu’avec System Center Virtual Machine Manager, ce qui peut permettre également de disposer de templates protégés.

Pour ce qui est des fonctionnalités propres à Hyper-V comme « Live Migration », « Hyper-V Replica » ou encore les checkpoints (snapshots), ils restent compatible avec les VM Shielded.

Note : On appellera une « guarded fabric » un Cloud Privé ou un Cloud Public qui est capable de gérer et d’exécuter des VM protégées (Shielded VM).

A l’heure où j’écris ces lignes, Windows Server 2016 est disponible en version Technical Preview 5, ce qui implique que cette fonctionnalité est susceptible encore d’être améliorée et des bugs d’être corrigés.

Cet article a pour objectif de présenter cette fonctionnalité dans les grandes lignes, pour ceux qui souhaitent pousser les tests, je vous oriente vers le guide complet proposé par Microsoft (en) mais avant cela je vous invite à terminer la lecture mon article : Shielded VM Deployment Guide

II. Les protections actives sur une VM protégée

Une VM protégée est une VM standard sur laquelle des options de sécurité sont activées automatiquement et sur laquelle ces options ne peuvent pas être désactivées. Contrairement à une VM de Génération 2 chiffrée sur laquelle ces options sont pour certaines optionnelles.

Voici l’état des options sur une Shielded VM :

- Secure Boot : Actif
- vTPM (qui n’est autre qu’une puce TPM virtuelle) : Actif
- Chiffrement de la VM : Actif
- Chiffrement du trafic lors d’une Live Migration : Actif
- Services d’intégrations : Certains composants bloqués comme l’échange de données et PowerShell Direct
- Connexion distante via le Gestionnaire Hyper-V : Désactivé
- Périphériques HID (souris, clavier) : Désactivé
- Ports COM et Série : Désactivé
- Attaché un débugger : Désactivé

III. Shielded VM : Le HGS au coeur du système

Tout d’abord, il faut savoir que l’utilisation de la fonctionnalité Shielded VM ne constitue pas à effectuer trois clics, il va falloir un peu de travail au préalable et notamment la mise en place d’un serveur avec le rôle « Host Guardian Service (HGS) » installé. De plus et c’est logique, il vous faut un ou plusieurs hôtes Hyper-V qui utiliseront votre serveur HGS.

Ainsi, on appellera un serveur Hyper-V qui s’appuie sur un serveur HGS : un hôte surveillé (« Guarded Host »).

Pour revenir sur le HGS, il est réellement au cœur du service puisque c’est ce serveur (ou ces serveurs s’il y a un cluster d’hôtes HGS) qui donnera les autorisations lorsqu’un utilisateur souhaite réaliser une action sur un hôte Hyper-V surveillé.

Par exemple : Un utilisateur effectue une action pour démarrer une VM protégée (Shielded VM) sur un Hyper-V surveillé, alors l’hôte effectuera une requête auprès du service d’attestation qui va évaluer la validité de l’hôte. Une fois que l’attestation est validée, un certificat est retourné par le HGS à destination de l’hôte Hyper-V qui effectuera une demande de clé pour avoir l’autorisation d’effectuer l’action demandée initialement par l’utilisateur. Dès lors que l’hôte Hyper-V reçoit une clé valide il pourra déverrouiller la VM et la démarrer, si le HGS l’autorise.

Schéma issus du guide Microsoft
Schéma issu du guide Microsoft

Vous l’aurez compris le HGS est constitué de deux services : « Attestation Service » et « Key Protection Service ».

Note : Le rôle HGS peut-être installé sur Windows Server 2016 (TP5) Standard ou Datacenter, avec ou sans interface graphique, mais par contre il ne supporte pas le mode Nano Server.

IV. Le HGS et ses deux modes d’attestation

Lorsqu’un hôte Hyper-V effectue une requête d’attestation auprès du serveur HGS, il y a deux modes possibles mais c’est le HGS qui précise le mode de fonctionnement selon comment il est configuré.

Admin-trusted Attestation – Basé sur la confiance de l'Admin

Dans ce mode, on fait confiance à l’hôte Hyper-V selon son appartenant à un groupe de sécurité particulier (configuré dans le HGS), puisqu’il envoie un ticket Kerberos pour effectuer sa demande. Autrement dit, on fait confiance à l’admin qui a configuré HGS pour avoir défini un groupe de référence et associé l’hôte Hyper-V à ce groupe.

C’est le mode le plus simple à déployer mais il offre un niveau de sécurité inférieur au second mode.

TPM-trusted Attestation – Basé sur TPM

L’hôte Hyper-V s’appuie sur la couche matérielle pour envoyer des infos en provenance de la puce TPM qui vont permettre de l’identifier, ainsi que la liste des processus démarrés lors de la dernière séquence de démarrage du serveur et, des infos à propos de la politique d’intégrité appliquée sur l’hôte.

Ce mode est plus contraignant à mettre en place mais il offre une couche de supplémentaire notamment parce qu’il s’appuie sur la couche matériel et le firmware du serveur : TPM 2.0 et UEFI 2.3.1 (pour le Secure Boot).

L’objectif étant de vérifier l’état de santé de l’hôte Hyper-V qui effectue la requête, afin de s’assurer qu’il ne soit pas corrompu, qu’il s’agisse bien de l’hôte connu, pour ne pas autoriser des actions sur les VMs protégées par erreur.

V. Le HGS et l’Active Directory

Le HGS ne peut pas fonctionner sans l’Active Directory, et Microsoft recommande d’ailleurs d’utiliser une forêt dédiée à HGS et non de l’intégrer directement dans la forêt de l’entreprise. D’ailleurs, Microsoft vient tout juste d’intégrer dans la Technical Preview 5 la possibilité d’utiliser une forêt existante pour le HGS mais en précisant que ça reste pour le moment expérimental...

L’objectif est de disposer d’une forêt dédiée (et isolée) pour améliorer la sécurité puisque le HGS est sensible car il a cette capacité à distribuer des clés pour autoriser des actions.

Bien entendu, ce mode de fonctionnement implique qu’il y ait tout de même un lien entre les deux domaines, ce qui pourra se faire par l’intermédiaire d’une relation d’approbations.

Schéma issu du guide Microsoft
Schéma issu du guide Microsoft

VI. Fichier PDK : Shielding Data

Microsoft propose également la création de fichiers de données protégés grâce à du chiffrement, il s’agit de fichiers de provisionnement de données, appelés PDK. Ce type de fichiers peut contenir différentes informations sensibles : Credentials d’un compte Administrateur pour joindre la machine au domaine, un certificat RDP, un fichier de réponse unattend.xml, ou encore une KP (Key Protector) qui indique sur quel(s) hôte(s) surveillé(s) cette VM peut tourner.

Pourquoi cacher ces informations ? Tout simplement pour qu’elles restent confidentielles, mais aussi pour que l’administrateur de la plateforme de virtualisation soit capable de créer votre VM avec vos paramètres sans pouvoir voir ces paramètres, et surtout sans pouvoir les changer.

shielded-vm3

VII. Quels types de VM peuvent être exécutés sur un hôte surveillé ?

Vous l’aurez compris, un hôte Hyper-V surveillé peut faire tourner des shielded VM pour avoir un environnement totalement sécurisé, mais pas seulement. Voici une liste des trois types de VM pouvant être exécutés :

- Une machine virtuelle normale, sans protection particulière.
- Une machine virtuelle chiffrée sur laquelle les protections peuvent être configurée par l’admin de l’hyperviseur.
- Une machine virtuelle protégée (Shielded VM) où toutes les protections seront active et que l’admin de l’hyperviseur ne pourra pas désactiver

Voilà, cet article de présentation des shielded VM et du Host Guardian Service touche à sa fin, j’espère qu’il aura permis à mieux appréhender ce sujet, et si vous essayez la fonctionnalité n’hésitez pas à me faire un retour. Pour ma part, je verrais pour publier un article sur la configuration mais je vais peut-être attendre la version finale de Windows Server 2016, quoi que...

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5561.Voir tous les posts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.