Windows-2000-Problem mit gelöschten Objekten

Inkonsistenzen im Active Directory

09.08.2002
Bug im Active Directory mit fatalen Folgen: Die Wiederherstellung versehentlich gelöschter Objekte verläuft nur vordergründig erfolgreich - tatsächlich existieren aber auf verschiedenen Servern abweichende Mitgliederlisten. Mittlerweile gibt es effektive Lösungsmöglichkeiten. Von Ralf Feest*

In früheren Versionen von Windows NT gab es mit dem Primary Domain Controller (PDC) eine einzige Instanz innerhalb einer Domäne, die berechtigt war, Änderungen an der Benutzerdatenbank vorzunehmen. Alle anderen Domänen-Controller (Backup Domain Controller = BDC) hielten lokal nur eine Lesekopie der Datenbank vor. Mit Windows 2000 hat sich das geändert: Die Benutzerdatenbank wurde in das Active Directory (AD) integriert, das auf allen Domänen-Controllern in einer Lese-Schreib-Kopie vorliegt. Dadurch können Änderungen an der Datenbank auf jedem beliebigen Domänen-Controller ausgeführt werden.

Um Konsistenz zu gewährleisten, stellt das Betriebssystem Synchronisationsmechanismen bereit. So ist garantiert, dass alle Änderungen eines Domänen-Controllers mit Hilfe des Replikationsprozesses auf alle anderen Controller der Domäne kopiert werden. Dabei ist jede Eigenschaft (Attribut) eines Objekts mit einer Transaktions- und Versionsnummer versehen, die zusätzlich einen Zeitstempel der letzten Änderung enthält. In der Praxis funktioniert dieses Verfahren sehr gut und sorgt für eine hohe Stabilität des Windows-2000-Netzwerks.

Problem seit dem Service Pack 2

Allerdings hat sich mit dem Service Pack 2 ein Fehler in Windows 2000 eingeschlichen: Restauriert ein Administrator ein oder mehrere versehentlich gelöschte Benutzerobjekte mit Hilfe des Authoritative-Restore-Verfahrens, werden bei der Replikation auf Domänen-Controllern nicht mehr alle Mitglieder einer Gruppe anlegt.

Hintergrund ist folgender: Jedes Gruppenobjekt in Windows 2000 hat ein Attribut "Member". Darin sind alle Benutzer eingetragen, die Teil dieser Gruppe sind. Die einzelnen Benutzerobjekte selbst haben wiederum ein Attribut "Member of", das auf die Gruppe(n) verweist, in denen der Benutzer Mitglied ist. Beide Attribute sind mit Versionsnummern und Zeitstempel der letzten Änderung versehen. Löscht nun ein Administrator einen Benutzer, der Mitglied einer oder mehrerer Gruppen war, so wird in den betroffenen Gruppen die Liste der Mitglieder (das "Member"-Attribut) automatisch modifiziert, ohne diesen Eingriff durch eine Erhöhung der Versionsnummer oder durch Aktualisierung des Zeitstempels zu protokollieren. Im Normalfall hat dies keine Auswirkungen auf den Betrieb, denn durch die Replikation des Löschbefehls wird diese Modifikation auch auf den anderen Domänen-Controllern zeitverzögert vorgenommen.

Unterschiedliche Wiederherstellungsverfahren

Anders ist das beim Wiedereinspielen eines Backups der AD-Datenbank. Hierzu werden unter Windows 2000 zwei Alternativen angeboten: Ein "Non-authoritative"- und ein "Authoritative" Restore. Bei Ersterem wird der Domänen-Controller im "Active Directory Repair Mode" gestartet. Die Datenbank bleibt geschlossen, und der Administrator kann eine ältere, gesicherte Version vom Band einspielen. Nach einem Reboot der Maschine nimmt der Domänen-Controller am ganz normalen Replikationsprozess teil und aktualisiert seine aufgrund des alten Versionsstandes nicht mehr aktuelle Datenbank.

Dieses Verfahren eignet sich sehr gut nach einem Hardwareausfall zur schnellen Reparatur einer Directory-Datenbank am Domänen-Controller. Allerdings lassen sich auf diese weise keine nach dem Backup gelöschten Objekte reaktivieren, da der Replikationsprozess die nach dem Backup erfolgten Löschbefehle ebenfalls an den wiederhergestellten Domänen-Controller sendet und die betreffenden Objekte wieder entfernt.

Aus diesem Grund wurde als Alternative das Authoritative-Restore-Verfahren entwickelt. Damit kann ein Administrator versehentlich gelöschte Objekte im Active Directory reproduzieren, indem er ein zuvor angefertigtes Backup eines Domänen-Controllers einspielt und bestimmte Bereiche der Datenbank als "authoritative", also vertrauenswürdig, markiert. Dies bewirkt eine Erhöhung der Versionsnummer in den betreffenden Objekten und Attributen. Dadurch werden Löschbefehle von anderen Domänen-Controllern mit einer niedrigeren Versionsnummer nicht beachtet, die soeben zurückgespielten Objekte werden wie gewünscht mit den anderen Domänen-Controllern repliziert.

Eine durch den Replikationsprozess angestoßene Erstellung eines Gruppenobjekts überprüft jedoch, ob die Mitglieder, die es enthalten soll, auch im Active Directory als Benutzerobjekt vorhanden sind. Existiert ein Benutzer noch nicht, weil er erst zu einem späteren Zeitpunkt repliziert wird, so wird dieser beim Anlegen der Gruppe automatisch aus der Mitgliedsliste entfernt. Auf dem Domänen-Controller, bei dem restauriert wurde, bleibt der Benutzer jedoch Mitglied dieser Gruppe.

Datenbankinhalte weichen voneinander ab

Durch diese Vorgehensweise können unterschiedliche Active-Directory-Inhalte auf den Domänen-Controllern entstehen. Der Administrator hat in der Regel keinen Einfluss auf die Reihenfolge, in der die Objekte von einem Domänen-Controller zum anderen repliziert werden. Würden im obigen Beispiel zuerst die drei Benutzer repliziert und als Letztes die Gruppe, dann wären die AD-Datenbanken auf allen Domänen-Controllern konsistent.

Die deutsche Microsoft-Anwendervereinigung "NT-Anwendergruppe" hat noch andere Probleme beim Wiederherstellen von Gruppenobjekten entdeckt und stellt auf ihrer Website unter www.nt-ag.de weitere Informationen sowie Tools zum Erkennen und Lösen dieser Problematik bereit. Mit dem soeben erschienenen Service Pack 3 für Windows 2000 dürfte Microsoft das geschilderte Problem vermutlich behoben haben. (wm)

*Ralf Feest ist Leiter Projekte bei der Addon Systemhaus GmbH in Böblingen.

Mitgliederschwund

Auch Microsoft ist die Problematik von inkonsistenten Mitgliedereinträgen in der ActiveDirectory-Datenbank bekannt. Wie in vielen anderen Problemfällen hilft das Technet-Archiv im Web weiter, das Tausende von Artikeln mit Problemen und zugehörigen Lösungsmöglichkeiten bereitstellt (www.microsoft.com/technet). Der geschilderte Fehler wird im Technet-Artikel Q280079 beschrieben. Enthalten ist darin auch eine skriptbasierende Lösung.

Service Pack 3 ist fertig

Mehr als ein Jahr ist seit dem letzten Service Pack 2 für Windows 2000 vergangen. Nun hat Microsoft das neueste Paket mit Fehlerbereinigungen für den Windows-XP-Vorgänger zum Download bereitgestellt. Das Service Pack enthält auch die Fixes aus den Service Packs 1 und 2. Offiziell war bis Redaktionsschluss weder ein Link auf den Windows-2000-Seiten des Herstellers noch eine Inhaltsbeschreibung zu der 125 MB großen Installationsdatei verfügbar. Der Download ist dennoch direkt über folgende URL möglich: http://download.microsoft.com/download/win2000platform/SP/SP3/NT5/DE/W2KSP3.exe.

Abb: Fehlerhafte Benutzerlisten

Löschung mit Folgen: Auch wenn Benutzerobjekte manuell wiederhergestellt werden, löscht die Replikation der Gruppe die Benutzer erneut. Die Reihenfolge der Objektreplikation ist nicht beeinflussbar. Quelle: Ralf Feest/Addon