# QEMU/KVM: Intégration de Windows Server Core dans KVM/QEM
{{INLINETOC}}
La version core de `Windows Server` est globalement moins lourde et plus économe en ressources. Elle ne contient pas les logiciels intégrés de la version "expérience utilisateur" et cela participe à réduire la surface d'attaque du système de Microsoft:
* **Maintenance réduite**: étant donné que l'option d'installation `Server Core` n'installe que ce qui est nécessaire pour disposer d'un serveur gérable pour les rôles AD DS, AD LDS, Serveur DHCP, Serveur DNS, Services de fichiers, Services d'impression et Services de diffusion multimédia en continu, une installation complète de Windows Server avec une interface graphique.
* **Surface d'attaque réduite**: étant donné que les installations de `Server Core` sont minimales, le nombre d'applications exécutées sur le serveur est réduit, ce qui réduit la surface d'attaque.
* **Gestion réduite**: étant donné que moins d'applications et de services sont installés sur un serveur exécutant l'installation de `Server Core`, il y en a moins à gérer.
* **Moins d'espace disque requis**: une installation `Server Core` ne nécessite qu'environ 1 Go d'espace disque à installer et environ 2 Go pour les opérations après l'installation.
Les conteneurs permettent d’avoir de petites « instances » de serveur, chacune ayant un service ou un rôle spécifique.
Cet article présente la confection et l'utilisation d’un conteneur `Windows Server Core` pour utiliser une fenêtre de commandes MS-Dos.
# Configuration et installation de la VM
Pour commencer on va construire une image complète de Windows Server Core – un petit Windows Server 2016 à jour, sans interface graphique et avec tout le nécessaire pour une machine virtuelle fonctionnelle.
## Préparation de la VM
### Créer le fichier de configuration KVM
Pour commencer, créer un fichier XML compatible avec l'hyperviseur :
```
Windows2016core154d0X-va57-5fc4-f51c-c5d4fgg4rvNone200000000000002hvmdestroyrestartrestart/usr/bin/kvm
```
Il faut adapter certaines balises à la configuration : chemins des fichiers images, ISO Windows Serveur et l'emplacement du drivers virtio ainsi que la balise `network` et `graphics`.
### Créer une image disque
Générer d'un fichier image pour le volume `C:\` (minimum de 32Go). Dans le cas on a créer deux images : une de 50Go (Système) et une de 100Go (Backups) en approvisionnement dynamique :
```
qemu-img create -f qcow2 windows2016core 50G
qemu-img create -f qcow2 windows2016core-vtl 100G
```
### Créer et démarrer la VM
Intégrer le fichier de configuration XML: `windows2016core.xml` dans KVM/QEMU avec virsh :
```
virsh define windows2016core.xml
virsh start windows2016core
```
## Installation de Windows Server Core
Il est désormais possible en `VNC` ou via `spice` (au choix) de réaliser l'installation.
`Windows Server 2016` peut s’installer de manière traditionnelle, comprendre par là avec son interface graphique, ou en version minimale avec un simple invite de commandes. Ce mode console est dénommé `Core Server` et est dédié aux environnements cloud. Sans interface graphique, `Windows Core Server 2016` n’occupe qu’une place réduite sur le disque et ne nécessite que peu de ressources en mémoire vive. .
`Core Server` ne sera pas compatible `WoW64` donc les applications 32 bits ne pourront pas être installées dessus.
### Télécharger le fichier ISO de Windows Server 2016 Preview
Télécharger le fichier `en_windows_server_2016_technical_preview_3_x64_dvd_6942082.iso`. Ce fichier d’installation intègre les versions GUI et console. Dans le cas d’une installation sur une machine physique, on peut créer une clé USB ou graver un DVD d’installation.
### Installer Windows Server 2016 Technical Preview 3
1. Charger le fichier ISO pour une VM ou insérer le DVD / la clé USB d’installation de WS2016TP3 pour une machine physique.
2. La langue du système sera l’anglais mais on peut changer le fuseau horaire et le clavier sur `French (France)`.
3. Cliquer sur `Install now` .
4. Choisir la première ligne `Windows Server 2016 Technical Preview 3` pour installer Windows Server sans son environnement graphique. Sans le GUI, WS2016 s’administre en PowerShell en local ou à distance.
5. Accepter le contrat de licence.
6. Demander une installation « Custom » .
7. Indiquer où installer Windows Core Server 2016.
### Intégrer les drivers virtio de RedHat pour Windows Server
L'intégration des drivers virtio contenu dans l'ISO est très importante. Elle permet de charger à l'installation dans Windows du pilote du bus virtio pour la reconnaissance des images disques avec `visostor`.
Le pilote NetKVM prends en charge la reconnaissance de la carte réseau
### Configuration du shell Windows Server Core
Une fois le passe administrateur configuré: une interface `cmd.exe` s'affiche. Pour profiter des fonctionnalités de Windows 2016, il est nécessaire de basculer vers `PowerShell` comme ceci :
```
start powershell
```
A chaque connexion, il faut jongler entre `cmd.exe` et `powershell.exe`. Afin de démarrer par défaut avec `powershell`, changer la valeur de la clé `Winlogon` dans le registre :
```
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name Shell -Value 'PowerShell.exe -NoExit'
```
### Configuration du mode core
Lancer la commande serveur :
```
sconfig
```
Un menu apparaît avec différents choix numéroté de 1 à 15, voici serveur actuellement :
```
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. Tous droits réservés.
Inspection en cours du système...
===============================================================================
Configuration du serveur
===============================================================================
1) Domaine ou groupe de travail : Domaine: kassianoff.local
2) Nom d’ordinateur : DC-W2K16
3) Ajouter l’administrateur local
4) Configurer l’administration à distance désactivé
5) Paramètres de Windows Update : Manuel
6) Télécharger et installer les mises à jour
7) Bureau à distance : Activé (tous les clients)
8) Paramètres réseau
9) Date et Heure
10) Paramètres de télémétrie Sécurité
11) Activation de Windows
12) Fermer la session utilisateur
13) Redémarrer le serveur
14) Arrêter le serveur
15) Quitter pour revenir à la ligne de commande
Entrez un nombre pour sélectionner une option :
```
1. renommer l'ordinateur (2)
2. modifier les paramétres réseau (8)
3. vérifier la date et l'heure (9)
Pour le reste ceci est une question d'appréciation personnelle. Un fois fait : un redémarrage est nécessaire.
### Initialisation du second disque
* Initialiser le second disque présent sur le serveur de 100GB :
```
Get-Disk |
Where partitionstyle -eq 'raw' |
Initialize-Disk -PartitionStyle MBR -PassThru |
New-Partition -AssignDriveLetter -UseMaximumSize |
Format-Volume -FileSystem NTFS -NewFileSystemLabel "disk2" -Confirm:$false
```
* lister les volumes présents sur le serveur :
```
Get-PSDrive -PSProvider 'FileSystem'
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
C 15,60 33,91 FileSystem C:\ Windows\system32
D 0,29 0,00 FileSystem D:\
E 5,36 0,00 FileSystem E:\
G 0,11 99,89 FileSystem G:\
```
**Note**: Pour assigner une autre lettre à un volume : exemple de la lettre G vers V
```
Get-Partition -DriveLetter G | Set-Partition -NewDriveLetter V.
```
* désactiver la protection en temps réel de `Windows Defender` :
```
Set-MpPreference -DisableRealtimeMonitoring $true
```
### Installation et configuration d'active directory
* AJouter les services de domaine Active Directory :
```
Install-WindowsFeature AD-Domain-Services -IncludeManagementTools
```
* Réaliser la promotion du système Server Core vers le contrôleur de domaine :
```
Install-ADDSforest -DomainName kassianoff.local
```
### Finalisation de l'installation
A la fin du processus d’installation fournir un mot de passe pour le mode restauration des services d'annuaire. Une fois fait, redémarrerle serveur pour découvrir la promotion du serveur.
Une solution standard, est également possible pour continuer la configuration des objets dans l'Active Directory. Utiliser un client Windows compatible avec les les outils d'administration AD DS - AD LDS et DNS. Celles-ci permettent simplement d'ouvrir une mmc distance pour manager le serveur comme l'experience utilisateur standard.
# Commandes utiles
## Création d'utilisateur en powershell
```
New-ADUser -Name "Jérémie KASSIANOFF" -GivenNaMe Jeremie -Surname KASSIANOFF -SamAccountName Jeremie -Ac
countPassword (Read-Host -AsSecureString "AccountPassword") -PassThru | Enable-ADAccount
```
Ou avec **dsadd**:
```
dsadd user "cn=Jeremie, dc=kassianoff, dc=local" -fn Jeremie -ln KASSIANOFF -pwd (Read-Host -AsSecureString "pwd") -disabled no
pwd: ***********************
dsadd réussite:cn=Jeremie,dc=kassianoff,dc=local
```
## Gestion des groupes d'utilisateur
Pour afficher le groupe principale utilisateur :
```
Get-ADPrincipalGroupMembership Jeremie | select name
name
-----
Utilisateurs du domaine
```
Pour ajouter un utilisateur dans un autre groupe, par exemple en tant que : "admins du domaine"
```
Add-ADGroupMember "Admins du domaine" Jeremie
```
## Gestion des mots de passe
En cas d'oubli on a la possibilité de changer le mot de passe d'un utilisateur de façon sécurisé en deux étapes :
```
$newpwd = Read-Host "Enter the new password" -AsSecureString
Enter the new password: ********
```
Puis terminer par la commande en y incluant la variable sécurisée :
```
Set-ADAccountPassword Jeremie -NewPassword $newpwd –Reset
```
# Sauvegarde du l'état du système Windows
La sauvegarde du "systemstate" permet de conserver la configuration l'Active Directory mais également des fichiers systèmes (Boot et WFP), Sysvol, les certificats de l'autorité, la base de registre et les bases des Component Service Class. Pour ce faire il faut installer l'outil en ligne de commande Windows Backup Server :
## Installer Windows Backup Server
```
Install-WindowsFeature -Name Windows-Server-Backup
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True No Success {Sauvegarde Windows Server}
```
## Sauvegarde de l'état du système Windows
Utiliser la commande **wbadmin**, pour sauvegarder l'état du système Windows vers la cible `V:\` :
```
wbadmin.exe start systemstatebackup -backuptarget:v:
wbadmin 1.0 - Outil en ligne de commande de sauvegarde
(C) Copyright 2013 Microsoft Corporation. Tous droits réservés.
Démarrage de la sauvegarde de l’état du système [17/10/2017 18:23]...
Récupération des informations de volume...
Cette opération va sauvegarder l’état du système du ou des volumes Réservé au système (500.00 Mo),(C:) vers v:.
Voulez-vous démarrer l’opération de sauvegarde ?
[O] Oui [N] Non O
Création d’un cliché instantané des volumes spécifiés pour la sauvegarde...
Création d’un cliché instantané des volumes spécifiés pour la sauvegarde...
La Sauvegarde `Windows Server` met à jour la sauvegarde existante pour supprimer les fichiers
qui ont été supprimés du serveur depuis la dernière sauvegarde.
Cette opération peut prendre quelques minutes.
(128) fichiers trouvés.
(128) fichiers trouvés.
(5759) fichiers trouvés.
(16838) fichiers trouvés.
(25640) fichiers trouvés.
(27545) fichiers trouvés.
(32136) fichiers trouvés.
(38401) fichiers trouvés.
(40891) fichiers trouvés.
(46330) fichiers trouvés.
(51592) fichiers trouvés.
(57589) fichiers trouvés.
(62223) fichiers trouvés.
(65702) fichiers trouvés.
(67775) fichiers trouvés.
(74302) fichiers trouvés.
(80408) fichiers trouvés.
(86037) fichiers trouvés.
(91284) fichiers trouvés.
(93183) fichiers trouvés.
La recherche des fichiers sur l’état du système est terminée.
Démarrage de la sauvegarde des fichiers...
La sauvegarde des fichiers signalés par « Task Scheduler Writer » est terminée.
La sauvegarde des fichiers signalés par « VSS Metadata Store Writer » est terminée.
La sauvegarde des fichiers signalés par « Performance Counters Writer » est terminée.
État d’avancement : 0 %.
Sauvegarde des fichiers signalés par « System Writer » en cours...
État d’avancement : 100 %.
Sauvegarde des fichiers signalés par « System Writer » en cours...
Récapitulatif de l’opération de sauvegarde :
-------------------------
L’opération de sauvegarde a abouti.
La sauvegarde de l’état du système a abouti [16/10/2017 16:37].
Journal des fichiers sauvegardés correctement :
C:\Windows\Logs\WindowsServerBackup\Backup-16-10-2017_16-23-37.log
```
## Planification de la sauvegarde
Une planification de tache est recommandé pour sauvegarder l'état du système :
```
wbadmin enable backup -addtarget:V: -schedule:00:00 -systemState -quiet
```
# Outils d'interface graphique
Théoriquement, voire formellement, Server Core ne peut être géré localement que via la ligne de commande (ou Powershell), car il n'inclut pas les outils intégrés pour la gestion locale via une interface utilisateur graphique (GUI).
## Installer l'interface graphique
Dans la dernière version de Windows Server Technical Preview, l’interface graphique n’était plus une option dans une installation par défaut. A l'invite à sélectionner le système d'exploitation que vous souhaitez installer, on a le choix entre deux options.
* La première option, `Windows Server Technical Preview 2` est l’installation classique de `Server Core` qui n’inclut pas l’interface graphique.
* La deuxième option, `Windows Server Technical Preview 2 (avec les outils d’administrateur local)`, est l’installation `MinShell` qui contient une interface graphique minimale comprenant le Gestionnaire de serveur et les autres outils d’administration de l’interface graphique, mais pas de bureau traditionnel.
La version **MinShell** de **Windows Server 2016** inclut le Gestionnaire de serveur et les autres outils d’administration de l’interface graphique.
Sur Windows Server l’installation de l’interface graphique complète est plutôt simple. À l'invite de commande à l'issue de la connection, exécuter **powerShell** puis exécuter la commande suivante:
```
Install-WindowsFeature Server-Gui-Shell -Restart
```
Dans Server Core si on exécute cette commande **PowerShell**, elle échouera.
```
Install-WindowsFeature: La demande d'ajout ou de suppression de fonctionnalités sur le serveur spécifié a échoué. L'installation d'un ou de plusieurs rôles, services de rôle ou fonctionnalités a échoué. Les fichiers source sont introuvables.
```
L'utilisation de la commande **Get-WindowsFeature \*gui\*** montre que les options de l’interface graphique installable sur le serveur sont à l'état `Supprimé`. Comme il s'agit d'une installation Server Core, des options telles que l'interface graphique ne sont pas mises en cache sur le disque pour une installation rapide. Au lieu de cela,il faut utiliser le fichier WIM d'installation du système d'exploitation pour installer l'interface graphique:
```
Install-WindowsFeature Server-Gui-Shell –Restart -Source wim:D:\sources\install.wim:4
```
Après un redémarrage sur `Windows Server 2016 MinShell` ou `Server Core`, on aura l'interface utilisateur graphique complète
## Programmes fournis avec Windows Server Core
La liste suivante répertorie les programmes basés sur une interface graphique fournis avec Windows Server Core:
* **Control.exe intl.cpl** - configure les informations de région
* **Control.exe timedate.cpl** - configure la date et l'heure
* **Regedit** - éditeur de registre
* **Bloc-notes** - éditeur de texte
* **Msinfo32.exe** - affiche des informations système complètes
* **Taskmgr.exe** - peut également être exécuté via ctrl-alt-del
* **Msiexec.exe** - Windows Installer
* **Cmd.exe et Powershell.exe**
## Utilitaires SysInternals pour Server Core
Des outils supplémentaires basés sur une interface graphique sont fournis par Microsoft et peuvent être téléchargés gratuitement, directement à partir du «référentiel» `Sysinternals`.
La liste suivante répertorie partiellement les utilitaires `Sysinternals` basés sur une interface graphique et compatibles avec Core.
* **Adexplorer.exe** - explorateur de répertoire actif
* **Procexp.exe** - explorateur de processus
* **Procmon.exe** - un moniteur de processus bien établi et capable
* **Tcpview.exe** - affiche les listes détaillées de tous les points de terminaison TCP et UDP
* **Vmmap.exe** - outil d'analyse de mémoire virtuelle et physique, par processus
* **Rammap 1.50** - utilitaire d'analyse de l'utilisation de la mémoire physique
* **Protqueryui.exe** - analyse de port, interface utilisateur pour la ligne de commande PortQry; non disponible avec SysInternals mais peut être téléchargé ici (téléchargement direct)
## Add-On supplémentaire basé sur une interface graphique
D'autres options pour les applications à interface graphique de Micrsoft peuvent être installées via la commande `Powershell Install-WindowsFeature`.
Outre ce que Microsoft fournit, il existe de nombreux outils tiers basés sur une interface graphique, qui peuvent être installés avec succès sur Server Core.
Par exemple pour installer `Chrome` par exemple:
* télécharger le programme d'installation à partir du Web via `Powershell`: `Invoke-WebRequest http://somewebsite.com/ChromeSetup.exe -OutFile C:\Chrome\ChromeSetup.exe`
* exécuter le programme d'installation via la ligne de commande en exécutant: `C:\Chrome\ChromeSetup.exe`
* démarrer l'application en appelant son exécutable. `C:\Program Files (x86)\Google\Chrome\Application\Chrome.exe`.