Analyse du fonctionnement de Windows Deployment Service (v2.2) Tutorial conçu et rédigé par Michel de CREVOISIER
SOURCES Fonctionnement des NBP : http://technet.microsoft.com/en-us/library/cc732351%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc753134%28v=ws.10%29.aspx Fonctionnement et stockage des images WIM : http://technet.microsoft.com/en-us/library/cc732289%28v=ws.10%29.aspx http://technet.microsoft.com/en-us/library/cc770495%28v=ws.10%29.aspx Fonctionnement du BCD : http://technet.microsoft.com/en-us/library/cc770770%28v=ws.10%29.aspx http://technet.microsoft.com/en-u s/library/cc731245%28v=ws.10%29.aspx http://technet.microsoft.com/en-us/library/cc709667%28v=ws.10%29.aspx Etapes de démarrage d’une image de boot : http://technet.microsoft.com/en-us/library/cc771845%28WS.10%29.aspx
INDEX SOURCES.............................................................................................................................................................. 1 INDEX................................................................................................................................................................... 2 Préambule ........................................................................................................................................................... 3 1.
2.
3.
4.
Structure et fonctionnement...................................................................................................................... 4 1.1
PXE Server ............................................................................................................................................ 4
1.2
PXE Provider ........................................................................................................................................ 4
1.3
Image Server ........................................................................................................................................ 4
1.4
Multicast Server................................................................................................................................... 4
1.5
TFTP Server .......................................................................................................................................... 4
Protocoles et fonctionnalités associés ....................................................................................................... 5 2.1
PXE ....................................................................................................................................................... 5
2.2
WinPE .................................................................................................................................................. 5
2.3
NBP ...................................................................................................................................................... 6
2.4
GUID .................................................................................................................................................... 7
2.5
TFTP ..................................................................................................................................................... 7
2.6
Détection d’architecture ..................................................................................................................... 8
Etapes d’exécution...................................................................................................................................... 9 3.1
Démarrage réseau ............................................................................................................................... 9
3.2
Téléchargement TFTP des fichiers d’amorçage ................................................................................... 9
3.3
Sélection du fichier de boot WinPE ................................................................................................... 10
3.4
Création et amorçage du disque virtuel ............................................................................................ 11
3.5
Résumé .............................................................................................................................................. 12
Divers......................................................................................................................................................... 13 4.1
Découverte serveur WDS .................................................................................................................. 13
4.2
Session multicast ............................................................................................................................... 13
Conclusion ......................................................................................................................................................... 14
2
Préambule L’objectif de ce tuto est de mettre en évidence les nombreuses interactions qu’il existe entre les différents protocoles utilisés par WDS. Par ailleurs les captures réseaux réalisées via Wireshark vous permettront de mieux comprendre, d’un point de vue réseau, à quel moment ces derniers sont appelés. Si vous souhaitez installer et configurer WDS, je vous recommande lire mon tuto « Installation et configuration de WDS » ; et si vous souhaitez installer et sécuriser un serveur DHCP, je vous recommande lire mon tuto « Serveur DHCP sécurisé sous Windows Server 2008 R2 ». Pour ce tuto, j’utiliserai 3 serveurs membres du même domaine : SRV-AD: serveur Active Directory et DNS (installation non détaillée) SRV-DHCP: serveur DHCP (installation non détaillée) SRV-WDS : serveur WDS (installation non détaillée)
3
1. Structure et fonctionnement Le service WDS est réparti en cinq modules :
WDS Service PXE Server
PXE Provider
DHCP Server
Image Server
Multicast Server
TFTP Server
Content Provider
1.1 PXE Server Le PXE Server permet aux clients de démarrer depuis le réseau via la méthode « boot PXE ». Il dispose également de son propre serveur DHCP. Plus de détails concernant le PXE au point 2.1.
1.2 PXE Provider Le PXE Provider fournit des services de démarrage au travers d’un appel de procédure distante (RPC).
1.3 Image Server Ce module fournit les images d’installation stockées sur le serveur WDS.
1.4 Multicast Server Le Multicast Server traite les demandes de multidiffusion. Quant au fournisseur de contenu (content provider), il transmet les données du serveur vers le ou les clients en ayant fait la demande. Pour la création de session multicast, rendez-vous au point 9 de mon tuto sur WDS.
1.5 TFTP Server Le serveur TFTP permet aux clients de télécharger les fichiers contenus dans WDS. Plus de détails concernant le protocole TFTP au point 2.5.
4
2. Protocoles et fonctionnalités associés 2.1 PXE Le PXE (Preboot Execution Environment) est un environnement de démarrage issu du projet WfM (Wired for Management) soutenu par Intel dans les années 1990. A l’origine, ce projet avait pour objectif d’administrer un ordinateur à partir d’un serveur central afin d’y « injecter » des programmes ou des mises à jour. Par la suite, WfM a été remplacé par le standard IPMI (Intelligent Platform Management Interface). Actuellement en version 2.1, le PXE fait appel aux éléments suivants : IP, UDP, DHCP, TFTP et GUID/UUID. Pour initier un ordinateur en « mode PXE », il faut appuyer sur la touche F12 lors de l’affichage du BIOS ou bien modifier l’ordre des périphériques de démarrage.
2.2 WinPE WinPE (Windows Preinstallation Environment) est un environnement Windows allégé permettant de démarrer une machine sans système d’exploitation depuis le réseau ou depuis une clef USB. Distribué avec chaque nouvelle version ou Service Pack de Windows, sa diffusion a longtemps été restreinte. Ce n’est qu’à partir de la version 2.0 basée sur Vista qu’il est devenu accessible au grand public. La dernière version en date est la 3.1 et est apparue avec Windows 7 SP1. Pour récupérer ce fameux fichier WinPE, naviguez dans le disque d’installation et recherchez le fichier « boot.wim » situé dans le dossier « /sources ». Une variante bien connue de WinPE est WinRE (Windows Recovery Environment). Il s’agit d’un « mini » système d’exploitation contenant de nombreux outils permettant de diagnostiquer et réparer un système endommagé. WinRE est accessible depuis le DVD d’installation de Windows. Pour le lancer, il suffit de cliquer sur Réparer l’ordinateur (cf. image ci-dessous).
5
2.3 NBP Un Network Boot Program (NBP) est le premier fichier téléchargé et exécuté suite à un « boot PXE ». Il détermine si le client peut démarrer à partir du réseau, s’il doit appuyer sur F12 pour amorcer une image, etc… Pour les ordinateurs disposant d’un BIOS (et non d’un UEFI), le NBP est une application 16 bits en mode réel. Sachez qu’il existe six différents types de NBP dans WDS : Wdsnbp.com : o NBP téléchargé par défaut sous WDS. Il fait ensuite appel aux autres NBP selon les
paramètres définis au point 4 de mon tuto o Architecture : x86/x64 o Firmware : BIOS PXEboot.com : o Requiert l’appui de la touche F12 o Architecture : x86/x64 o Firmware : BIOS PXEboot.n12 : o Démarrage automatique sans intervention de l’utilisateur o Architecture : x86/x64 o Firmware : BIOS AbortPXE.com : o Annule le démarrage PXE et passe directement à l’option next-device o Architecture : x86/x64 o Firmware : BIOS HDLscom1.com : o Pour les ordinateurs dont le firmware permet la redirection de console o Architecture : x86/x64 o Firmware : BIOS 6
Bootmgfw.efi : o Equivalent du bootmgr.exe. Pour les firmware EFI, le choix de démarrage PXE est géré par le shell EFI et non par le NBP o Architecture : x64/ia64 o Firmware : EFI
2.4 GUID Le GUID (Global Unique Identifier) est une implémentation de l’UUID par Microsoft. Il s’agit d’un identifiant unique dont la taille est de 16 octets. Concrètement, ce dernier est composé de 32 caractères hexadécimaux (plus 4 tirets) répartis en cinq groupes sous la forme suivante : 8 – 4 – 4 – 4 – 12. Il en existe 5 versions : V1 (MAC address) : concaténation du GUID avec l’adresse MAC, en plus du nombre de nanosecondes écoulées depuis l’adoption du calendrier Grégorien V2 (DCE Security) : similaire à la V1 sauf que la séquence horaire a été remplacée par le GID du compte « local admin » V3 (MD5 hash) : dérivation de l’UUID basée sur une URL, un FQDN, un « distingued name (DN) », etc… o Structure : xxxxxxxx-xxxx-3xxx-xxxx-xxxxxxxxxxxx V4 (random) : basée sur des nombres aléatoires o Structure : xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx V5 (SHA-1) : utilise un schéma avec un hachage SHA-1 Ci-dessous, un exemple de GUID envoyé par un poste client PXE :
On remarquera simplement que le GUID est 564d2bc5-30f2-d8ef-ea44-902e8f679e51 et qu’il contient les trois derniers octets de l’adresse MAC du client : 00 0c 29 67 9e 51
2.5 TFTP Le TFTP (Trivial File Transfert Protocol) est un protocole réseau permettant le transfert simplifié de fichiers. En raison de sa facilité et de sa flexibilité, le TFTP est souvent utilisé pour la mise à jour d’équipements réseau (routeurs, switchs, pare-feu, etc…). Il diffère du FTP par les points suivants : Fonctionnement en UDP et non en TCP. De ce fait, c’est au client ou au serveur de gérer les éventuelles pertes de paquets Utilisation du port 69 au lieu des ports 20 et 21 Il ne dispose d’aucun mécanisme d’authentification et de chiffrement Il est nécessaire de connaître par avance le nom du fichier à télécharger Il ne gère pas le listage des fichiers Il ne peut pas gérer les fichiers de plus de 4Gb Le transfert de fichiers se fait bloc par bloc (« ping-pong method ») Le TFTP possède toutefois une limitation : il envoie le bloc suivant que lorsqu’il a reçu l’accusé (ACK) du paquet précédent ; ce qui réduit considérablement les taux de transfert. Pour pallier à ce problème, Microsoft a implémenté la méthode Windowing qui consiste à augmenter le nombre de 7
blocs par fenêtre. De cette façon, les informations sont transmises plus rapidement et le nombre de paquets ACK est considérablement réduit. Afin d’optimiser au maximum le transfert de fichiers, il est possible de modifier manuellement la taille du bloc TFTP ainsi que la taille des fenêtres. Par ailleurs, sachez qu’il existe de nombreux projets (Open TFTP Server, BazooTFTP, …) visant à combler ces défauts, notamment en implémentant la gestion du « multithread ».
2.6 Détection d’architecture Pour déterminer l’architecture d’une machine (ia64, x86, x64, etc…), le protocole DHCP utilise une option spécifique. Il s’agit de l’option 93 (Client System Architecture Type) dont la RFC est disponible ici. Cette option peut posséder l’un des paramètres suivants : 0 = IA x86 PC 1 = NEC/PC98 2 = IA64 PC ou EFI Itanium 3 = DEC Alpha 4 = ArcX86 5 = Intel Lean Client 6 = EFI IA32 7 = EFI BC 8 = EFI Xscale 9 = EFI x86-64 La capture ci-dessous indique que l’architecture de client est « IA x86 PC » car la value est égale à 0:
8
3. Etapes d’exécution 3.1 Démarrage réseau
Démarrage du client en mode PXE Requête DHCP de type Discover émise par le client indiquant : o Qu’il est « client PXE » via l’option 60 (Vendor Class Identifier - VCI) o Son architecture via l’option 93 (Client System Architecture)
Obtention d’une adresse IP auprès du serveur DHCP Contact du serveur PXE (WDS) à partir du nom ou de l’IP fourni par le DHCP via l’option 66 (next server)
3.2 Téléchargement TFTP des fichiers d’amorçage
Téléchargement du NBP wdsnbp.com grâce au nom indiqué dans l’option 67
Détection de l’architecture Attente de validation de la demande à partir du GUID :
wdsnbp.com valide le paquet de réponse DHCP/PXE et télécharge le NBP pxeboot
9
Résumé
1 2
3
4
pxeboot télécharge ensuite : le « boot manager » BOOTMGR.EXE :
les « fonts » du menu :
le magasin BCD (remplaçant du boot.ini depuis Vista) :
Une requête de lecture du fichier hiberfil.sys est également exécutée :
3.3 Sélection du fichier de boot WinPE
Une fois les fichiers d’amorçage téléchargés, l’écran « Windows Boot Manager » apparaît. Ce dernier permet de sélectionner le fichier WinPE à télécharger. Selon les paramètres définis et selon l’architecture détectée, l’un des deux choix est automatiquement sélectionné :
10
Téléchargement et chargement du fichier boot.sdi (image disque formatée en NTFS) :
Téléchargement du fichier de boot.wim selon l’architecture du client :
3.4 Création et amorçage du disque virtuel Une fois les fichiers boot.wim et boot.sdi téléchargés :
3.4.1 Sélection et création d’une entrée système
Le boot manager bootmgr.exe lit les entrées du fichier BCD téléchargé précédemment et effectue les tâches suivantes : o Création d’un objet RAMDISK (ou disque virtuel) o Création d’une entrée pour le système d’exploitation spécifiant l’image du système ainsi que les références de l’objet RAMDISK Ci-dessous, un exemple de magasin BCD :
11
3.4.2 Création du RAMDISK
Le RAMDISK est composé de deux parties : un « fichier disque » formaté en NTFS (boot.sdi) et un système de fichiers. Le processus de démarrage depuis le RAMDISK consiste à faire pointer le loader vers le boot.sdi comme s’il s’agissait d’un disque physique. Le loader du système d’exploitation monte ensuite le volume et cherche le fichier *.wim.
3.4.3 Démarrage de WinPE
Bootmgr.exe commence le démarrage de WinPE en appelant le « boot loader » Winload.exe stocké dans l’image WinPE
3.5 Résumé
12
4. Divers 4.1 Découverte serveur WDS La capture ci-dessous montre les trames émises par un client pour détecter d’autres serveurs WDS.
4.2 Session multicast Ci-dessous, un extrait d’une capture réseau durant une session multicast :
13
Conclusion WDS s’avère donc être une fonctionnalité faisant appel à un grand nombre de protocoles. C’est donc au travers de ce tuto que j’ai mis en évidence l’ensemble de ces interactions afin de vous les présenter de façon plus concrète. Par ailleurs, ces explications vous faciliteront la tâche dans d’éventuelles situations de « troubleshooting »…
N’hésitez pas m’envoyer vos commentaires ou retours à l’adresse suivante : michel_de A-R-0-B-A-5 hotmail . com
Soyez-en d’ores et déjà remercié
14