Windows Server : Capture instantanée de l’Active Directory
Sommaire
I. Présentation
Depuis Windows Server 2008, les éditions serveur de Windows intègre l'API VSS (Volume Shadow Copy) qui permet de faire des clichés de volume en instantané. L'avantage c'est que cela permet de sauvegarder des fichiers même s'ils sont verrouillés.
Dans le cas de la sauvegarde d'un Active Directory, cela est intéressant puisque cela évite de devoir arrêter le service Active Directory pour accéder aux fichiers verrouillés et notamment la base ntds.dit. On pourra alors réaliser ce que l'on appelle une sauvegarde à chaud de l'Active Directory.
De plus, cette méthode de sauvegarde consomme très peu de ressources et est rapide à l'exécution. Ce qui vous permettra d'effectuer des sauvegardes régulières de votre annuaire Active Directory sans crainte de surcharger votre serveur en production.
De nombreux logiciels utilisent l'API VSS pour effectuer ce type de tâche, dans le cadre de ce tutoriel, nous utiliserons l'utilitaire Microsoft nommé "ntdsutil" qui s'utilise en ligne de commande. Enfin, nous verrons comment lire une sauvegarde cela par l'utilisation de "dsamain.exe".
II. Sauvegarde avec ntdsutil
Comme dit précédemment, nous allons utiliser ntdsutil. Ouvrez une invite de commande en tant qu'Administrateur.
Par mesure de sécurité, sachez que seuls les utilisateurs appartenant au groupe « Administrateurs de l’entreprise » ou « Admins du domaine » peuvent effectuer un cliché instantané.
Saisissez ensuite la commande suivante :
ntdsutil snapshot "activate instance ntds" create
On indiquera ensuite - une fois la capture instantanée terminée - deux fois la commande "quit".
En fait, la première commande saisie est en fait composée de plusieurs sous-commandes qui seront saisies au fur et à mesure. Voyez par vous-même :
Enfin, listez les captures instantanées situées sur votre machine grâce à la commande de listing suivante :
ntdsutil snapshot "activate instance ntds" "List All"
Note : Si vous êtes déjà sous l'invitation "instantané" accessible via la commande "snapshot", saisissez uniquement "List All"
III. Monter un cliché instantané
Afin de lire les données stockées dans une sauvegarde VSS il faut tout d'abord la monter dans le système. Pour cela, réitérez la commande pour lister les clichés instantanés si nécessaire et repérez le numéro (en début de ligne) du cliché que vous souhaitez monter pour pouvoir lire les données.
Par exemple, je vais monter le cliché instantané fait précédemment et qui a pour identifiant le numéro 1.
ntdsutil snapshot "activate instance ntds" mount 1
Vous obtiendrez un message comme quoi la capture est montée en tant que C:\$SNAP_xxxxxx\. Il vous est possible de consulter la sauvegarde via l'explorateur Windows si vous le souhaitez.
Note : Sachez qu'il est possible de monter plusieurs clichés instantanés en même temps, en saisissant plusieurs fois la commande "mount" suivie du numéro de cliché.
Au final, pour démonter un cliché on utilisera la commande suivante (mais ne la fait pas maintenant nous avons encore besoin du cliché) :
Unmount 1
Éventuellement, pour lister les clichés instantanés montés utilisez la commande suivante :
List Mounted
IV. Lecture des données avec DSAMAIN
L'utilitaire DSAMAIN sera utilisé pour la lecture des données. Commençons par indiquer le chemin vers la base Active Directory ntds.dit du cliché instantané monté :
dsamain /dbpath C:\$SNAP_201402091603_VOLUMEC$\WINDOWS\NTDS\ntds.dit -ldapPort 33389
Remplacez "$SNAP_201402091603_VOLUMEC$" par le nom de votre cliché instantané tel qu'il est monté au sein de votre système. Le port LDAP que nous indiquons sert à ouvrir une connexion sur ce port pour être en écoute, pensez à utiliser un port non utilisé par un des autres services de votre machine. Dans ce cas, je définis 33389, l'utilitaire définira automatiquement trois autres ports (basés sur le numéro que nous avons défini) :
- LDAP/SSL : 33390
- GC : 33391
- GC/SSL : 33392
Note : Si le cliché instantané correspond à un fichier ntds.dit d'un domaine qui n'existe plus, ajoutez l'option "/allowNonAdminAccess".
Ouvrez la console "Utilisateurs et ordinateurs Active Directory", cliquez sur "Action" et "Changer de contrôleur de domaine".
Choisissez ensuite "Ce contrôleur de domaine ou cette instance AD LDS" puis dans la liste ajoutez une entrée sous la forme suivante : <serveur-dc>:<numero-port-dsamain>. Sélectionnez cette entrée et cliquez sur "OK" pour s'y connecter.
Vous avez ensuite un accès aux données stockées dans la base ntds.dit de façon interactive :
Pour ceux qui souhaitent, vous pouvez aussi utiliser ldp.exe pour effectuer une connexion.
Lorsque vos manipulations seront terminées, vous pouvez démonter le cliché avec la sauvegarde vue précédemment (unmount {numéro}).
V. Supprimer un cliché instantané
Pour supprimer un cliché instantané à l'aide de ntdsutil, utilisez le jeu de commandes suivant :
ntdsutil snapshot "activate instance ntds" delete <numero-cliché>
Le cliché sera alors supprimé.
VI. Planifier une sauvegarde
Pour cela, utilisez simplement le Planificateur de tâches intégré à Windows. Créez une tâche qui appellera un script contenant la commande suivante :
ntdsutil snapshot "activate instance ntds" create quit quit
On ajoute uniquement "quit quit" à la fin pour que le programme ntdsutil soit quitté automatiquement.
Pensez à prévoir un script plus évolué si vous souhaitez une gestion des sauvegardes, notamment sur le nombre à conserver, etc.
Bonjour,
merci pour ce tutoriel, mais je me pose une question.
Dans le planificateur de tâches j’ai indiqué une sauvegarde toutes les semaines de l’Active directory.
Comment ensuite Copier l’intégralité du snapshot vers un disque dur réseau par exemple, car il faut tout d’abord monter ce snapshot dans le C:, mais problème ce numéro de snapshot change à chaque sauvegarde non ?
Enfin, pouvez-vous me confirmer si j’ai par exemple un crash d’active directory, si avec cette méthode je pourrais restaurer mon AD comme une semaine auparavant ?
Merci !
Bonjour,
merci pour ce tutoriel très bien expliqué.
Mais je suis confronté à un problème, comment récupérer le fichier instantané de mon Active Directory pour ensuite l’envoyer sur un NAS par exemple pour sauvegarder l’AD en cas d’accident ?
Car si j’ai bien compris le planificateur de tâche me sauvegarde uniquement le snapshot, mais ensuite comment lui dire d’envoyer le snapshot sur mon NAS ?
En espérant être assez clair,
Cordialement.
Bonjour,
Merci pour ce tutoriel très utiles et intéressant.
Toutefois, lorsque je réalise les manip sur mon serveur, toute la partie capture, montage etc… fonctionne parfaitement, mais lorsque je souhaite accéder aux données sauvegardées dsamain, j’ai le code 1004 : Les services de domaine Active Directory ont été arrêtés correctement.
Si j’ouvre la console dsa.exe, je suis bien connecté à mon AD, mais je ne peux pas changé de contrôleur de domaine, impossible de contacter le serveur, le serveur est indisponible.
Une idée de la cause et une solution palliative ?
Merci