Table of Contents
QEMU/KVM: Intégration de Windows Server Core dans KVM/QEM
Table of Contents
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 :
<domain type='kvm' id='10'> <name>Windows2016core</name> <uuid>154d0X-va57-5fc4-f51c-c5d4fgg4rv</uuid> <description>None</description> <memory unit='KiB'>2000000</memory> <currentMemory unit='KiB'>0000000</currentMemory> <vcpu placement='static'>2</vcpu> <os> <type arch='x86_64' machine='pc-1.1'>hvm</type> <boot dev='hd'/> <boot dev='cdrom'/> <bootmenu enable='yes'/> </os> <features> <acpi/> <apic/> <pae/> </features> <cpu mode='host-model'> <model fallback='allow'/> </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/windows2016core'/> <target dev='vda' bus='virtio'/> <alias name='virtio-disk0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/windows2016core-vtl'/> <target dev='vdb' bus='virtio'/> <alias name='virtio-disk1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> <disk type='file' device='cdrom'> <source file='/var/lib/libvirt/iso/Microsoft/fr_windows_server_2016_standard_and_datacenter_x64.iso'/> <target dev='hdc' bus='sata'/> <readonly/> </disk> <disk type='file' device='cdrom'> <source file='/var/lib/libvirt/iso/Drivers/virtio-windows.iso'/> <target dev='hdb' bus='sata'/> <readonly/> </disk> <controller type='usb' index='0'> <alias name='usb0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> <alias name='ide0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <interface type='network'> <mac address='52:54:5f:5v:5v:5v'/> <source network='lbr300'/> <target dev='vnet13'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <source path='/dev/pts/0'/> <target port='0'/> <alias name='serial0'/> </serial> <console type='pty' tty='/dev/pts/0'> <source path='/dev/pts/0'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> <input type='tablet' bus='usb'> <alias name='input0'/> </input> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='5900' autoport='no' listen='127.0.0.1' keymap='fr'> <listen type='address' address='127.0.0.1'/> </graphics> <video> <model type='vga' vram='9216' heads='1'/> <alias name='video0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <alias name='balloon0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </memballoon> </devices> <seclabel type='none'/> </domain>
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
- Charger le fichier ISO pour une VM ou insérer le DVD / la clé USB d’installation de WS2016TP3 pour une machine physique.
- La langue du système sera l’anglais mais on peut changer le fuseau horaire et le clavier sur
French (France)
. - Cliquer sur
Install now
. - 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. - Accepter le contrat de licence.
- Demander une installation « Custom » .
- 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 :
- renommer l'ordinateur (2)
- modifier les paramétres réseau (8)
- 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 deServer 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’installationMinShell
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
.