Ein weit verbreitetes Missverständnis ist, das ein Ereignis, welches die dringende AD-Replikation auslöst, sofort an alle Domänencontroller (DC) repliziert wird. Genau genommen handelt es sich bei einer dringenden AD-Replikation (urgent replication) noch nicht einmal um eine echte sofortige Replikation. In Wirklichkeit wird lediglich die Benachrichtigung, dass Änderungen auf dem Quell-DC vorliegen, an erster Stelle der Replikationswarteschlange hinzugefügt.
Genau wie bei der standortinternen (Intra-Site) Replikation, basiert die dringende AD-Replikation auf Änderungsbenachrichtigungen (change notification). Außer das beim Eintreten eines wichtigen Ereignisses die Benachrichtigung unverzüglich versendet wird, statt 15 Sekunden (bzw. 300 Sekunden unter Windows 2000) abzuwarten. Diese Änderungsbenachrichtigung wird sofort an alle Replikationspartner versendet, noch bevor die in der Replikationswarteschlange anstehenden Änderungsbenachrichtigungen verschickt werden. Jeder DC, der eine dringende Aktualisierung erhält, leitet diese ebenfalls umgehend an seine Replikationspartner weiter. Durch diese Vorgehensweise ist sichergestellt, dass alle DCs am gleichen AD-Standort innerhalb von Sekunden aktualisiert werden.
Durch die dringende AD-Replikation erhalten die Replikationspartner in gewohnter Weise sofort eine Änderungsbenachrichtigung über das RPC over IP Protokoll. Aufgrund des hohen Replikationsaufkommens werden bei der dringenden AD-Replikation standardmäßig die AD-Standortgrenzen nicht überschritten. Das lässt sich jedoch konfigurieren.
Ereignisse, die eine dringende AD-Replikation auslösen
Die dringende AD-Replikation wird bei Eintreten bestimmter Ereignisse standardmäßig nur innerhalb eines AD-Standorts durchgeführt. Dabei ist es unabhängig, unter welchem Betriebssystem die DCs betrieben werden. Ist allerdings die standortübergreifende Änderungsbenachrichtigung in der Standortverknüpfung (Site-Link) aktiviert, werden diese Ereignisse auch unverzüglich zwischen den AD-Standorten repliziert.
Siehe dazu:
Die Inter-Site (standortübergreifende) Änderungsbenachrichtigung aktivieren
Zwischen den DCs, die sich innerhalb des gleichen AD-Standorts befinden, wird die dringende AD-Replikation durch folgende Änderungstypen ausgelöst:
- Benutzerkontosperrung (nachdem ein Benutzer sein Kennwort zu oft falsch eingegeben hat). Die Sperrung eines Benutzerkontos wird über die dringende AD-Replikation in erster Linie zu dem DC, der die FSMO-Rolle des PDC-Emulators innehat, repliziert. Das Entsperren eines Benutzerkontos hingegen löst keine dingende AD-Replikation aus!
- Bearbeitung der Kontosperrungsrichtlinie. Die Bearbeitung der gleichen Optionen in einem PSO (Password Setting Object) löst hingegen keine dringende AD-Replikation aus! Die Änderung eines PSO wird über die normale standortinterne (Intra-Site) und standortübergreifende (Inter-Site) AD-Replikation durchgeführt.
- Bearbeitung der domänenweiten Kennwortrichtlinie. Aber das Bearbeiten der Kennwortvorgaben in einem PSO löst ebenfalls keine dringende AD-Replikation aus! Die Änderung der Kennwortvorgaben innerhalb einer PSO wird ebenfalls über die normale standortinterne und standortübergreifende AD-Replikation durchgeführt.
- Verschiebung der RID-Master FSMO-Rolle auf einen anderen DC.
- Änderung eines LSA-Schlüssels (Local Security Authority, lokale Sicherheitsautorität). Wenn zum Beispiel das Kennwort des Computerkontos eines DCs oder für eine Vertrauensstellung geändert wird.
Die dringende AD-Replikation durch eine Benutzerkontosperrung
Gibt ein Benutzer sein Kennwort häufiger falsch ein, als es in der Kontosperrungsrichtlinie oder im PSO definiert ist, wird sein Benutzerkonto gesperrt. Die Benutzerkontosperrung wird dann über die dringende AD-Replikation zum PDC-Emulator repliziert. Unabhängig davon, an welchem AD-Standort dieser sich befindet.
Anschließend wird ebenfalls über die dringende AD-Replikation die Benutzerkontosperrung zu den folgenden DCs repliziert:
- Zu allen DCs der gleichen Domäne, die sich am gleichen AD-Standort befinden wie der DC der die FSMO-Rolle des PDC-Emulators innehat.
- Zu allen DCs der gleichen Domäne, die sich am gleichen AD-Standort befinden wie der DC der die Benutzerkontosperrung durchgeführt hat.
- Zu allen DCs der gleichen Domäne, die sich an einem AD-Standort befinden zu der die standortübergreifende Änderungsbenachrichtigung (und demnach die dringende AD-Replikation) mit dem AD-Standort aktiviert wurde, in dem sich der PDC-Emulator oder der DC befindet, der die Benutzerkontosperrung durchgeführt hat.
Wenn die Benutzerauthentisierung an einem DC, nicht jedoch am PDC-Emulator fehlschlägt, wird die Authentisierung auf dem PDC-Emulator wiederholt. Aus diesem Grund ist letzten Endes auch der PDC-Emulator derjenige, der das Benutzerkonto nach den Vorgaben der Kontosperrungsrichtlinie zuerst sperrt. Und nicht der DC, der die fehlgeschlagene Benutzerauthentisierung als erster entgegennahm.
Die Replikation einer Kennwortänderung
Oftmals wird auch fälschlicherweise angenommen, dass die Kennwortänderung eines Benutzers über die dringende AD-Replikation zu allen anderen DCs repliziert wird. Kennwortänderungen werden anders als die normale AD-Replikation und anders als die dringende AD-Replikation durchgeführt.
Bei der Kennwortänderung eines Domänen-Benutzers oder eines Computerkontos repliziert der DC, der die Kennwortänderung durchgeführt hat, umgehend das neue Kennwort durch den sicheren Kanal zum PDC-Emulator. Das neue Kennwort wird sogar dann zum PDC-Emulator repliziert, wenn dieser an einem anderen AD-Standort steht. Dabei greift der DC auch nicht auf die Bridgeheadserver an den AD-Standort zurück. Der DC, auf dem das Kennwort geändert wurde, nutzt stattdessen eine RPC over IP-Verbindung direkt zum PDC-Emulator, um das Kennwort zu aktualisieren.
Authentisiert sich der Benutzer danach an einem DC (z.B. aus einem anderen AD-Standort) der das neue Kennwort noch nicht kennt, fragt der DC beim PDC-Emulator nach, ob ihm ein neueres Kennwort vorliegt, bevor er dem Benutzer die Anmeldung verweigert. Falls ja, wird der Benutzer vom PDC-Emulator authentisiert und der Benutzer kann sich anmelden. Falls nicht, schlägt die Anmeldung fehl. Der PDC-Emulator hat also bei der Kennwortfrage immer das letzte Wort. Wenn die Kennwortnachfrage beim PDC-Emulator erfolgreich verlief, repliziert der PDC-Emulator das neue Kennwort unverzüglich zu dem DC, von dem die Anfrage kam. Dadurch ist sichergestellt, dass der DC nicht erneut wegen des geänderten Kennworts beim PDC-Emulator nachfrägt.
Die Kennwortaktualisierung wird sofort zum PDC-Emulator repliziert, ohne Rücksicht auf einen eventuell konfigurierten Zeitplan in der Standortverknüpfung. Anschließend wird sie innerhalb des AD-Standorts des PDC-Emulators und innerhalb des AD-Standorts des DC, der die Kennwortänderung durchgeführt hat, durch die standortinterne AD-Replikation zu den anderen DCs repliziert. Alle anderen DCs, die sich an entfernten AD-Standorten befinden, erhalten die Kennwortänderung ganz normal durch die standortübergreifende AD-Replikation.
Ist allerdings der PDC-Emulator nicht erreichbar (beispielsweise wegen Überlastung) oder schlägt die RPC over IP-Verbindung fehl, wird die Kennwortänderung über das normale Replikationsverfahren (standortintern und standortübergreifend) an alle DCs inklusive dem PDC-Emulator repliziert.
Wenn es nicht gewünscht wird, dass die Kennwortaktualisierung eines Benutzers oder eines Computers sofort zum PDC-Emulator an einem anderen AD-Standort repliziert wird, kann man dieses Verhalten unterbinden. Dazu muss folgender neuer Eintrag in die Registry erstellt werden:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters
REG_DWORD AvoidPdcOnWan 1 = Aktiviert (True)
Dieser Registryeintrag muss auf jedem DC erstellt werden, der eine Kennwortaktualisierung nicht sofort zu einem (an einem entfernten AD-Standort stehenden) PDC-Emulator replizieren soll. Der PDC-Emulator erhält die Kennwortaktualisierung dann ganz normal über den konfigurierten Zeitplan für die standortübergreifende AD-Replikation. Befindet sich aber der PDC-Emulator am gleichen AD-Standort wie der DC, der die Kennwortaktualisierung durchgeführt hat, wird der Registryeintrag ignoriert und das neue Kennwort wird unverzüglich zum PDC-Emulator repliziert.
Komfortabler lässt sich diese Einstellung über die folgende GPO konfigurieren:
Computerkonfiguration\Richtlinien\Administrative Vorlagen\System\Netzwerkanmeldung\Verbindung mit PDC bei Anmeldungsfehler herstellen
Wird diese Richtlinie auf Deaktiviert konfiguriert, repliziert der DC, auf dem die Kennwortänderung stattgefunden hat, das neue Kennwort ebenfalls nicht sofort zum PDC-Emulator an einem anderen AD-Standort. Stattdessen wird das neue Kennwort dann über den konfigurierten Zeitplan für die standortübergreifende AD-Replikation repliziert. Wenn sich jedoch der PDC-Emulator am gleichen AD-Standort befindet wie der die Kennwortänderung durchführende DC, wird das neue Kennwort sofort zum PDC-Emulator repliziert.
Auf der anderen Seite hat man sowohl mit dem Registryeintrag als auch mit der GPO Einfluss darauf, wie sich ein DC Verhalten soll, wenn sich ein Benutzer oder Computer mit einem für den DC fremden Kennwort authentisieren möchte. Setzt man den Registryeintrag oder konfiguriert man die GPO, leitet der DC die Kennwortabfrage nicht an den PDC-Emulator weiter, wenn dieser sich an einem anderen AD-Standort befindet.
Der Registryeintrag oder die GPO kann zum Beispiel dann sinnvoll sein, wenn sich der PDC-Emulator an einem AD-Standort befindet, der mit einer geringen Bandbreite mit anderen Standorten angebunden ist (was in unserer Hemisphäre schon kaum mehr möglich ist). Oder um bei einer Brute Force Attacke nicht zusätzlich den PDC-Emulator und die VPN-Verbindung zu belasten. Dann muss man aber in Kauf nehmen, dass der Benutzer sich über einen längeren Zeitraum nicht an der Domäne anmelden kann.
Weitere Informationen: Password Setting Objects erstellen und verwalten Der RID-Master und sein RID-Pool How the Active Directory Replication Model Works New Password Change and Conflict Resolution Functionality in Windows
Die Mitglieder einer Gruppe werden im mehrwertigen Attribut member des AD-Objekts der Gruppe gespeichert. Bei diesem Attribut handelt es sich um das Forward-Link Attribut und das Pendant dazu ist das mehrwertige Attribut memberOf, das im Benutzerobjekt gespeichert ist und als Back-Link bezeichnet wird.
Mehr über verknüpfte Attribute gibt es hier: Verknüpfte Attribute
Möchte man die Mitglieder einer bestimmten Gruppe in eine andere kopieren, so hat man neben skriptbasierten Lösungen folgende Möglichkeiten
In der AD-PowerShell
In einem Einzeiler sieht der AD-PowerShellbefehl zum Kopieren der Mitglieder einer Gruppe in eine andere so aus:
Get-ADGroupMember <Quell-Gruppe> | Select sAMAccountName | ForEach { Add-ADGroupMember <Ziel-Gruppe> -Members $_.sAMAccountName }
Möchte man den Befehl mit Hilfe einer Variablen ausführen, so lautet der Befehl wie folgt:
$Gruppe = Get-ADGroupMember <Quell-Gruppe> | Select sAMAccountName $Gruppe | ForEach { Add-ADGroupMember <Ziel-Gruppe> -Members $_.sAMAccountName }
Wenn es gewünscht ist einen bestimmten Benutzer zu den gleichen Gruppen hinzufügen in denen bereits ein anderer Benutzer Mitglied ist, so kann man das ebenfalls mit der AD-PowerShell erledigen.
Den Benutzer Kaan kann man mit dem folgenden AD-PowerShellbefehl zu den gleichen Gruppen hinzufügen, in denen Yusuf Mitglied ist:
Get-ADPrincipalGroupmembership Yusuf | % {Add-ADPrincipalGroupmembership Kaan -MemberOf $_}
Mit den ds*-Tools
Mit den ds*-Tools die sich seit Windows Server 2003 on Bord befinden, lassen sich ebenfalls die Mitglieder einer Gruppe in eine andere Gruppe kopieren. Mit den beiden Tools dsget sowie dsmod lässt sich das wie folgt bewerkstelligen:
dsget group "DN der Quell-Gruppe" -members | dsmod group "DN der Zielgruppe" -addmbr -c
Mit einer gespeicherten Abfrage
Durch eine gespeicherte Abfrage kann man ebenfalls alle Mitglieder einer Gruppe in eine andere kopieren. Dazu erstellt man in der MMC Active Directory-Benutzer und -Computer eine gespeicherte Abfrage mit diesem benutzerdefinierten Filter:
(objectCategory=user)(memberOf=CN=<Quell-Gruppe>,OU=<OU>,DC=Domäne,DC=de)
Ist die Abfrage erfolgt, markiert man mit STRG+A alle Benutzer, ruft mit einem Rechtsklick die Option "Einer Gruppe hinzufügen..." aus und wählt anschließend die entsprechende Ziel-Gruppe aus.
Gespeicherte Abfragen Gespeicherte Abfragen für dsa.msc
In der Kommandozeile mit dem Tool NET
Mit dem Kommandozeilentool NET müssen zuerst alle Benutzer der entsprechenden Gruppe in eine Textdatei exportiert werden. Der Befehl dazu lautet folgendermaßen:
Net Group <Quell-Gruppe> /Domain > C:\Benutzer.txt
Danach kann man automatisiert mit einer FOR-Schleife die exportierten Benutzer zur Zielgruppe wie folgt importieren:
FOR /F "delims=" %i IN (C:\Benutzer.txt) DO (Net Group <Ziel-Gruppe> %i /Add /Domain)
Das funktioniert jedoch nur mit globalen und universellen Sicherheits- sowie Verteilergruppen. Domänenlokale Sicherheits- sowie Verteilergruppen werden ignoriert.
Mit LDIFDE
Mit Ldifde lassen sich die Mitglieder einer bestimmten Gruppe wie folgt in eine andere Gruppe kopieren. Dazu muss im ersten Schritt mit dem folgenden Befehl ein Export der Mitglieder aus der Quell-Gruppe durchgeführt werden:
Ldifde -f C:\Mitglieder.txt -r "(sAMAccountName=<Quell-Gruppe>)" -l member
Nach dem Export erhält man eine Datei mit folgendem Inhalt:
dn: CN=<Quell-Grupp>,OU=<OU>,DC=Domäne,DC=de changetype: add member: CN=Yusuf,OU=IT,DC=AD2008R2,DC=dikmenoglu,DC=de member: CN=Kaan Dikmenoglu,OU=IT,DC=AD2008R2,DC=dikmenoglu,DC=de member: CN=Aysim Dikmenoglu,OU=IT,DC=AD2008R2,DC=dikmenoglu,DC=de
Die Exportdatei muss dann wie folgt angepasst werden (der Bindestrich am Ende ist zwingend notwendig!):
dn: CN=<Ziel-Gruppe>,OU=<OU>,DC=Domäne,DC=de changetype: modify add: member member: CN=Dikmenoglu\,Yusuf,OU=IT,DC=AD2008R2,DC=dikmenoglu,DC=de member: CN=Kaan Dikmenoglu,OU=IT,DC=AD2008R2,DC=dikmenoglu,DC=de member: CN=Aysim Dikmenoglu,OU=IT,DC=AD2008R2,DC=dikmenoglu,DC=de -
Der Import muss dann mit diesem Befehl erfolgen:
Ldifde -i -f C:\Mitglieder.txt
LDIFDE - LDAP Data Interchange Format Data Exchange
Weitere Informationen: Alle Benutzer einer OU aus einer bestimmten Gruppe entfernen Alle Gruppenmitgliedschaften eines Benutzers exportieren Active Directory - Abfrage
Was in größeren und weltweiten AD-Umgebungen für selbstverständlich gehalten wird, sieht in kleineren und mittelständischen Unternehmen (KMUs) ganz anders aus.
Diese Frage wird oft gestellt: Warum sollte der Server ausschließlich als DC betrieben werden und kann der DC nicht weitere Dienste oder Applikationen zur Verfügung stellen?
Die Antwort darauf lautet: Ja, ein DC kann und darf weitere Dienste zur Verfügung stellen. Beispielsweise ist seitens Microsoft auch unterstützt, Applikationen wie z.B. Exchange oder SQL auf einem DC zu installieren. Doch es ist keineswegs empfohlen weitere Dienste oder Applikationen auf einem DC zu betreiben. Die Gründe folgen.
Viele Administratoren bringen an dieser Stelle nun den Einwand, dass der SBS doch das Paradebeispiel dafür ist. Ein SBS muss ein DC und darf nicht ein Mitgliedsserver sein. Des Weiteren existieren doch auch Exchange und SQL auf einem SBS. Die Antwort auf diese Argumentation lautet jedoch: Der SBS ist ein Spezialfall und ist gezielt für die Produktpositionierung so konzipiert worden. Mit dem SBS 2008 (Premium) wurde das entsprechend angepasst, in dem bspw. eine extra Windows Server Lizenz für die SQL Serverinstallation mitgeliefert wird.
Ein Schelm, wer Böses dabei denkt, dass der SBS kein echter Server sei. 
Die Gründe weshalb es empfohlen ist, den Server nur als dedizierten DC zu betreiben und keine anderen Dienste zur Verfügung zu stellen sind:
- Performance: Werden auf einem DC weitere Applikationen und Dienste installiert, kostet das Ressourcen. Damit steigt das Risiko, dass wenn sich viele Benutzer zur gleichen Zeit an der Domäne authentisieren, dem DC nicht genügend Ressourcen zur Verfügung stehen um jede Authentisierung eines Benutzers erfolgreich durchzuführen. Wenn intensiv mit AD-Abfragen gearbeitet wird, können die fehlenden Ressourcen den DC unnötig auslasten und von Nachteil sein.
- Sicherheit: Werden auf einem DC Applikationen oder Dienste installiert, muss man bei entsprechender Rollentrennung dem Betreuer dieser Applikation bzw. der Dienste Rechte auf dem DC einräumen. Oftmals wird dann der Benutzer in die Gruppe der BuiltIn\Administratoren oder in die Gruppe der Domänen-Admins hinzugefügt, was beides selbstverständlich keineswegs gewünscht ist. Denn zum einen sind das zu viele Rechte die man dem Benutzer einräumt und zum anderen, birgt das Gefahren. Der Benutzer, wenn der DC auch noch der Einzige in der Domäne ist, könnte die Domäne gefährden.
Mit Einführung von Windows Server 2008 und dem RODC hat man die Situation entschärft, was die Sicherheit der AD DS anbetrifft. Der Administrator für die Anwendung kann auf einem RODC lokale Adminrechte erhalten und hat dennoch keine weiteren Rechte auf die AD DS.
Es sollten alle Server hinter Schloss und Riegel stehen und nur Befugten sollte der Zugang erlaubt sein. Doch aus AD-Sicht ist es nicht weiter tragisch wenn „nur“ der Applikationsserver anstatt eines DCs unter dem Schreibtisch steht.
- Rollentrennung: Folgt man der Empfehlung und betreibt dedizierte DCs, kann man in einem Problemfall einen DC in einer Umgebung mit mehreren DCs einfach ersetzen. Ist jedoch auf dem DC eine wichtige Applikation installiert, gestaltet sich der Austausch besonders schwierig!
- Stabilität: Das Installieren von Applikationen und Diensten gefährdet die Stabilität eines DCs (RWDC und RODC). Denn bereits das Installieren eines zusätzlichen nicht kompatiblen (Drucker?) Treibers kann zu Instabilitäten führen, so dass es regelmäßig zum BSOD (Blue Screen of Death) kommt. Dies kann natürlich auch zum Totalausfall des Active Directories führen, bspw. durch Inkonsistenzen die durch solche Abstürze entstehen. Wenn sich in der Domäne mehrere DCs befinden, kann man einen dedizierten DC im laufenden Betrieb herunterstufen, den Computernamen ändern und anschließend wieder zum DC heraufstufen. Ob das die installierte Applikation auf dem DC verkraftet ist fraglich. Ein installierter Exchange Server verhindert dies sehr wirkungsvoll.
Das sind die Hauptargumente warum es ein dedizierter DC sein sollte. Natürlich ist die Welt da draußen alles andere als rosarot und die Realität in der Praxis sieht anders aus. Man muss selbstverständlich unterscheiden, ob es sich um ein fünf-Mann oder um ein weitweites Unternehmen mit 500.000 Mitarbeitern handelt. In einem fünf Mann Unternehmen ist das Budget für IT-Kosten meist knapp und mit einem dedizierten DC würde man in solch einer Umgebung sicherlich mit Kanonen auf Spatzen schießen.
Daher gilt für Unternehmen die sich aus welchen Gründen auch immer keinen dedizierten DC leisten (können oder wollen), folgende Empfehlung:
-
Was die Performance des DCs anbetrifft, sollte eine Applikation bzw. Dienst vor dem Einsatz auf einem DC in einer produktiven Umgebung, ausgiebig in einer Testumgebung möglichst realitätsgetreu getestet werden. Das wichtigste dabei ist das Monitoring. Erst wenn die Tests nach mehreren Tagen zufriedenstellende Ergebnisse geliefert haben, sollte man die Applikation oder den Dienst auf dem DC in der produktiven Umgebung installieren. Bei den Tests die als Referenz dienen, sollte man über mehrere Tage die Auslastung des DCs (CPU, RAM, HDD, NIC) zu verschiedenen Zeitpunkten verteilt über den Tag aufzeichnen. Wurde die Applikation bzw. der Dienst auf dem produktiven DC installiert, sollte man die Auslastung des DCs ständig mit der Referenz vergleichen. Natürlich ist das ein Kraftakt den sich ein Unternehmen mit 5 Angestellten zwei Mal überlegt, ob er diese Tests durchführen soll bzw. kann. Ich kann es aber jedem nur ans Herz legen!
- Derjenige der die Applikation bzw. den Dienst auf einem DC mit Domänen-Adminrechten betreut, muss vertrauenswürdig sein. Schließlich kann der Betreuer mit Domänen-Adminrechten der Domäne schaden bis hin zu zerstören! Die Virtualisierung ist eine Möglichkeit, die einem bei der Rollentrennung behilflich sein kann.
- Es sollten ausschließlich vertrauenswürdige Applikationen und Dienste die vorher ausgiebig getestet wurden auf einem DC installiert werden. Dabei sollte die Datensicherung mit höchster Priorität sichergestellt sein. Sowohl die tatsächliche Durchführung einer funktionierenden System State Sicherung auf der einen Seite, als auch die Sicherung der Daten auf der anderen Seite sollte stets überprüft werden.
Deshalb lautet die Empfehlung: Wann immer möglich sollte ein dedizierter DC eingesetzt werden! Ist das aus welchen Gründen auch immer nicht möglich, sollten vorher ausreichende Tests und eine regelmäßig Datensicherung durchgeführt werden. Dabei sollte die regelmäßige Überprüfung des Gesundheitszustands des DCs nicht vernachlässigt werden (Eventlog, DCDIAG etc.).
Warum Exchange nicht auf einem DC installiert werden sollte
Das Installieren von Exchange auf einem DC ist zwar seitens Microsoft supportet, es wird jedoch nicht empfohlen!
Die Gründe die zusätzlich zu den oben genannten Punkten gegen das Installieren von Exchange auf einem DC sprechen sind:
- Wiederherstellung: Beide Technologien, AD und Exchange erfordern im Falle eine Rücksicherung eine hohe Aufmerksamkeit. Für die Rücksicherung beider Technologien müssen bestimmte Arbeitsschritte durchgeführt werden. Erschwerend kommt dann noch hinzu, dass bei einem Servercrash die Zeit für die Rücksicherung eine umso größere Rolle spielt. Wenn der DC der Einzige in der Domäne ist, dann umso mehr. Deshalb ist es aus Wiederherstellungsgründen einfacher, lediglich eine Technologie rücksichern zu müssen.
- Abhängigkeit: Exchange benötigt zwingend ein funktionierendes AD! Wenn auf einem (wo möglich Einzigen?) DC ein Problem besteht, hat das evtl. Auswirkungen auf Exchange. Wenn sich das DC-Problem nicht lösen lässt, steht unter Umständen Exchange nicht zur Verfügung.
- Sicherheit: Stellt man den Benutzern Outlook Web Access (OWA) zur Verfügung, hat der Benutzer durch den IIS aus dem Internet per HTTP Zugriff auf den DC. Doch meistens ist das nicht gewünscht, dass ein DC von extern egal über welches Protokoll erreichbar ist.
Der Exchange Administrator ist standardmäßig Mitglied in der Gruppe BuiltIn\Administratoren und ist dadurch Administrator auf den DCs! Das ist natürlich zwecks Rollentrennung und vor allem in größeren Umgebungen mit verteilter Administration nicht erwünscht. Alle Exchange Dienste werden als LocalSystem ausgeführt, was ein größeres Sicherheitsrisiko darstellt wenn eine Sicherheitslücke entsteht. Existiert z.B. ein Sicherheitsloch im AD das einem Angreifer den Zugriff auf das AD erlaubt, kann dieser auch auf Exchange (und umgekehrt) zugreifen.
- Ressourcen: Werden die zur Verfügung stehenden Ressourcen auf dem Exchange Server knapp (CPU, RAM, HDD, NIC), leidet darunter auch der DC. Denn läuft z.B. Exchange aus welchen Gründen auch immer voll, hat nicht nur Exchange ein Problem sondern auch der DC! Oder wenn sich ein Exchange-Dienst aufhängt und somit den ganzen Server auslastet, zieht das auch den DC in Mitleidenschaft so das dieser unter Umständen keine Anfragen mehr beantworten kann.
- Neustart: Es kann bis zu zehn Minuten dauern den DC herunterzufahren bzw. neu zu starten. Denn standardmäßig wird der Dienst LSASS.exe in dem das AD ausgeführt wird eher beendet, bevor die Exchange Dienste die vom AD abhängig sind beendet werden. Dadurch kommt es zu mehreren Timeouts und deshalb zu dem langsamen Verhalten. Eine mögliche Abhilfe für dieses Problem ist die Exchange-Dienste (insbesondere den Informationstore) manuell zu stoppen, bevor der DC heruntergefahren oder neu gestartet wird.
-
DCPROMO: Des Weiteren ist das Ausführen von DCPROMO auf einem Exchange Server nicht supportet! Das bedeutet, wurde Exchange auf einem DC installiert, darf der DC nicht heruntergestuft werden. Zuerst müsste Exchange deinstalliert werden, ehe der DC anschließend heruntergestuft werden kann. Oder wenn Exchange auf einem Mitgliedsserver installiert wurde, darf dieser nicht mit DCPROMO zum DC heraufgestuft werden.
Siehe (unter dem Abschnitt "Directory Server Architecture\Installing Exchange 2010 on Directory Servers"): Exchange 2010 System Requirements: Exchange 2010 Help
-
Exchangeabhängigkeit vom GC: Selbst wenn man mehr als einen DC/GC in der Domäne besitzt, wird Exchange immer den DC/GC nutzen, auf dem es installiert ist. Das bedeutet im Umkehrschluss, dass Exchange den Betrieb einstellt, sollte mit der DC Funktion auf dem Server etwas im Argen liegen.
Exchange resident on domain controller that is not a global catalog server
Fazit: Als Best Practice ist es empfehlenswert einen dedizierten DC zu betreiben und Exchange auf einem Mitgliedsserver anstatt auf einem DC zu installieren. Ist das aus organisatorischen Gründen (Kosten etc.) nicht möglich, ist eine funktionierende Datensicherung neben dem Monitoring das Mindeste das regelmäßig durchgeführt werden sollte! Bei der Rollentrennung und bei der Installation von Exchange ist die Virtualisierung eine hilfreiche Option.
Virtualization Support Wizard Exchange Server Supportability Matrix
Weitere Informationen: Wie viele DCs pro Domäne werden benötigt? Die Besonderheiten eines Small Business Server`s (SBS) Images als Sicherung? Zwei wichtige IDs eines DCs: DC GUID und InvocationId Security Considerations for a SQL Server Installation
Bis einschließlich Windows Server 2003 kann mit Bordmittel nur eine Kennwort- und Kontosperrungsrichtlinie innerhalb einer Domäne auf Domänenbenutzer wirken. Damit die Richtlinien auf Domänenbenutzer wirken, müssen diese zwingend auf Domänenebene verlinkt werden. Wenn stattdessen die beiden Richtlinien auf eine Organisationseinheit (OU) verlinkt werden, wirkt sich das lediglich auf die Computer die sich in dieser OU befinden aus und die Kennwortvorgaben gelten somit nur für die lokalen Benutzerkonten, die sich auf diesen Computern befinden!
Möchte man bis Windows Server 2003 mit Bordmittel mehrere Kennwortrichtlinien nutzen, muss man weitere Domänen erstellen, was natürlich den Ressourceneinsatz sowie den Verwaltungsaufwand wesentlich erhöht. Man kann sich aber auch zusätzliche Kennwortfilter erstellen oder weicht auf Dritt-Anbieter Lösungen aus.
Die Kennwort- und Kontosperrungsrichtlinie sollten in allen Serverversionen stets in der Default Domain Policy (DDP) konfiguriert werden, nicht zuletzt, da die DDP standardmäßig ohnehin schon auf der Domänenebene verlinkt ist. Ein weiterer viel wichtiger Punkt ist, das man in den Eigenschaften der Domänenpartition die Attribute die für beide Richtlinien relevant sind (maxPwdAge, minPwdAge, minPwdLength, pwdHistoryLength, pwdProperties, lockoutDuration, lockOutObservationWindow, lockouThreshold etc.) auf dem PDC-Emulator auch direkt konfigurieren kann. Die Konfiguration der Kennwortvorgaben muss nicht zwingend in der DDP vorgenommen werden. Durch einen automatisierten Prozess werden dann die Änderungen die man in den Attributen vorgenommen hat vom PDC-Emulator in die beiden Richtlinien, aber nur in die DDP übertragen!
Es gilt zu beachten, dass die Kennwortoptionen unter den Computerkonfigurationen in der Gruppenrichtlinie und nicht wie man annehmen könnte, unter den Benutzerkonfigurationen konfiguriert wird! Die Benutzerobjekte können mit den Kennworteinstellungen nichts anfangen. Die Kennwortoptionen werden nur von Computerobjekten verwertet und befinden sich unter:
Computerkonfiguration\Richtlinien\Windows-Einstellungen\Sicherheitseinstellungen\Kontorichtlinien\Kennwortrichtlinien
und
Computerkonfiguration\Richtlinien\Windows-Einstellungen\Sicherheitseinstellungen\Kontorichtlinien\Kontosperrungsrichtlinien
Die fein abgestimmten Kennwortrichtlinien
Seit Windows Server 2008 ist es mit Bordmittel nun endlich möglich, mehrere Kennwort- und Kontosperrungsrichtlinien für verschiedene Benutzergruppen innerhalb einer einzigen Domäne zu erstellen. Genau genommen sind es keine weiteren Richtlinien, sondern Active Directory (AD) Objekte. Die AD Objekte nennen sich Kennworteinstellungsobjekte und lauten im Fachjargon Password Setting Objects, kurz PSO.
Mit dieser Funktion die auch als granulare Kennwort- und Kontosperrungsrichtlinien oder als fein abgestimmte/abgestufte Kennwortrichtlinien (auf Englisch: Fine-Grained Password Policy, FGPP) bezeichnet wird, können getrennte Kennwort- und Kontosperreinstellungen für bestimmte Benutzer in der Domäne eingerichtet werden. Standardmäßig können die Mitglieder der Gruppe Domänen-Admins verschiedene Kennwortbeschränkungen und Kontosperreinstellungen für verschiedene Benutzertypen in der Domäne einrichten. Das Erstellen und administrieren von PSOs kann aber auch an eine entsprechende Gruppe delegiert werden.
Durch die beiden neuen Objektklassen Password Settings Container (PSC) und Password Settings die dem AD-Schema ab Windows Server 2008 hinzugefügt wurden, ist das Erstellen und Speichern von PSOs möglich. Der PSC in dem die PSOs für die Domäne gespeichert werden wird standardmäßig im Container System erstellt, dass sich in jeder Domänenpartition befindet. Der LDAP-Pfad zum PSC lautet CN=Password Settings Container,CN=System,DC=Domäne,DC=de.
Aktiviert man in der MMC Active Directory-Benutzer und -Computer unter Ansicht die „Erweiterten Features“, kommt der System Container in dem sich der PSC befindet zum Vorschein. Das systemflags Attribut in den Eigenschaften des PSCs verhindert, dass der Container weder verschoben, noch umbenannt oder gar gelöscht werden kann.
Die Voraussetzungen
- Der Domänenfunktionsmodus muss sich mindestens auf der Ebene Windows Server 2008 befinden! Der Gesamtstrukturfunktionsmodus wiederum kann sich z.B. auf der Ebene Windows Server 2003 befinden. Somit dürften sich in der Gesamtstruktur noch Domänen mit Windows Server 2003 DCs befinden, die dann aber keine PSOs einsetzen können!
- PSOs können nur auf Benutzerobjekte, globale Sicherheitsgruppen und auf inetOrgPerson-Objekte angewendet werden. Die Gruppenbereiche „Lokal (in Domäne)“ und „Universal“ sowie der Gruppentyp „Verteiler“ werden nicht berücksichtigt! Es ist empfehlenswert PSOs lediglich auf globale Gruppen zu verlinken. Dadurch müssen die Benutzer die eine andere Kennwortvorgabe erhalten sollen, nur noch zur entsprechenden Gruppe hinzugefügt werden.
- Auf eine OU können PSOs nicht direkt angewendet werden! Stattdessen kann man eine Schattengruppe (shadow group) verwenden, die der OU logisch zugeordnet ist. Eine Schattengruppe ist nichts anderes als eine globale Sicherheitsgruppe. Alle Benutzer einer OU werden dann zu dieser Schattengruppe hinzugefügt und die PSO wird dieser Schattengruppe zugewiesen. Wird ein Benutzer aus einer OU in eine andere verschoben, muss die Mitgliedschaft der Schattengruppe angepasst werden, falls der Benutzer die PSO der neuen OU zugewiesen bekommen soll.
- Auf einen Benutzer kann immer nur ein einziges PSO wirken!
- PSOs können nur im PSC erstellt werden!
- Das ein und dasselbe PSO kann auf mehrere Benutzer und/oder Gruppen angewandt werden, die sich in der gleichen Domäne befinden wie das PSO.
- Es gibt kein eigenes Bordmittel für PSOs. Ein PSO kann nicht in der MMC Active Directory-Benutzer und -Computer erstellt werden, lediglich das Anzeigen ist möglich. PSOs können mit Bordmittel mit der MMC ADSIEdit, mit dem Kommandozeilentool LDIFDE, LDP oder der AD-PowerShell erstellt und administriert werden. Zusätzlich gibt es aber im Internet kostenlose Tools, die einem das Leben mit den PSOs erleichtern.
Die Attribute eines PSO
Ein PSO in dem die Kennwortvorgaben und Kontosperreinstellungen konfiguriert werden, hat Attribute für alle Kennwortoptionen, die ebenfalls in der DDP festgelegt werden können (bis auf die Kerberos-Einstellungen).
In einem PSO existieren die Attribute für die folgenden Kennwort- und Kontosperreinstellungen:
- Vorrang: Das Attribut msDS-PasswordSettingsPrecedence dient zum Lösen von Konflikten, wenn auf ein Benutzer- oder Gruppenobjekt mehrere PSOs verlinkt sind. Dieses Attribut entscheidet letztendlich darüber welches PSO angewendet wird, falls mehrere PSOs auf ein Benutzer- oder Gruppenobjekt verlinkt sind. Das PSO, das den niedrigsten Wert in diesem Attribut enthält wird angewendet. Existieren mehrere PSOs mit dem gleichen Wert, gewinnt das PSO dessen GUID niedriger ist! Als Werte wird jeder Wert akzeptiert, der größer als 0 ist.
- Kennwörter mit umkehrbarer Verschlüsselung speichern: Diese Option wird im Attribut msDS-PasswordReversibleEncryptionEnabled konfiguriert. Als Werte können FALSE und TRUE vergeben werden. Es versteht sich von selbst, dass man der Empfehlung folgen und hier als Wert FALSE vergeben sollte. Ansonsten würden die Kennwörter im Klartext abgespeichert werden, was ein erhebliches Sicherheitsrisiko darstellt!
- Kennwortchronik erzwingen: Für diese Option ist das Attribut msDS-PasswordHistoryLength zuständig. Hiermit wird die Anzahl der zu speichernden Kennwörter festgelegt. Wird als Wert 10 konfiguriert, werden die letzten 10 Kennwörter die der Benutzer vergeben hatte gespeichert. Wenn der Benutzer aufgefordert wird ein neues Kennwort zu vergeben, darf es kein Kennwort von den letzten 10 Kennwörtern sein. Der Wert muss zwischen 0 und 1024 liegen. Wird als Wert 0 vergeben, werden keine Kennwörter gespeichert.
-
Kennwort muss Komplexitätsvoraussetzungen entsprechen: Hinter dieser Option steckt das Attribut msDS-PasswordComplexityEnabled. Als Werte können hier FALSE (Deaktiviert) und TRUE (Aktiviert) vergeben werden, wobei TRUE empfohlen ist. Mit dieser Option wird festgelegt, dass das Kennwort komplex sein muss.
Komplex bedeutet:
1. Das Kennwort darf nicht den Kontonamen des Benutzers oder mehr als zwei Zeichen enthalten, die nacheinander im vollständigen Namen des Benutzers vorkommen. 2. Das Kennwort muss mindestens sechs Zeichen lang sein. 3. Das Kennwort muss Zeichen aus drei der folgenden Kategorien enthalten: - Großbuchstaben (A bis Z) - Kleinbuchstaben (a bis z) - Zahlen zur Basis 10 (0 bis 9) - Nicht alphabetische Zeichen (zum Beispiel !, $, #, %)
- Minimale Kennwortlänge: Die minimale Kennwortlänge wird im Attribut msDS-MinimumPasswordLength konfiguriert. In diesem Attribut muss angegeben werden, aus wie vielen Zeichen das Kennwort mindestens bestehen muss. Als Wert kann 0 bis 255 vergeben werden, wobei mit 0 der Benutzer selbst die Länge seines Kennworts bestimmen kann.
- Minimales Kennwortalter: Das minimale Kennwortalter im PSO konfiguriert man im Attribut msDS-MinimumPasswordAge. Dieses Attribut gibt vor, wie alt ein Kennwort mindestens sein muss ehe es geändert werden darf. Die Zeitangabe muss im Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) erfolgen. Soll der Benutzer erst nach fünf Tagen sein Kennwort ändern dürfen, so muss als Wert 5:00:00:00 eingetragen werden. Man kann aber auch als Wert mit Klammern (Nie) oder 0 eingeben, um kein Mindestalter zu definieren. Dadurch kann der Benutzer noch am selben Tag sein Kennwort erneut ändern. Der Wert von msDS-MinimumPasswordAge muss „kleiner als“ oder „gleich“ dem Wert von msDS-MaximumPasswordAge sein.
- Maximales Kennwortalter: Das Attribut das hinter dieser Option steckt lautet msDS-MaximumPasswordAge. Mit dieser Option wird angegeben, nach wie vielen Tagen spätestens der Benutzer sein Kennwort ändern muss. Dieser Wert muss „gleich“ oder „größer“ als der Wert im Attribut msDS-MinimumPasswordAge sein. Die Zeitangabe muss in diesem Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) eingegeben werden. Vergibt man als Wert mit Klammern (Nie), läuft das Kennwort des Benutzers nicht ab. Als Wert kann nicht 0 konfiguriert werden.
Des Weiteren existieren im PSO Attribute, mit denen man die folgenden Kontosperreinstellungen konfigurieren kann:
- Kontensperrungsschwelle: Die Anzahl maximal möglicher Fehlversuche bei der Benutzeranmeldung bestimmt das Attribut msDS-LockoutThreshold. Als Wert kann man 0 bis 65535 eintragen, wobei 0 diese Option deaktiviert. Dann erfolgt niemals eine Kontosperrung. Das ist allerdings aus Sicherheitsgründen, z.B. wegen Brute Force Attacken nicht zu empfehlen!
- Zurücksetzungsdauer des Kontosperrungszählers: Wie lange die fehlgeschlagenen Anmeldeversuche zwischengespeichert werden, bevor der Kontosperrungszähler auf 0 zurückgesetzt wird, bestimmt das Attribut msDS-LockoutObservationWindow. Die Zeitangabe muss im Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) angegeben werden. Möchte man als Wert 30 Minuten eintragen, so gilt es die Zeit wie folgt einzugeben 00:00:30:00. Der Wert von msDS-LockoutObservationWindow darf nicht „größer“ als der Wert von msDS-LockoutDuration sein, höchstens „gleich“! Denn es ist nicht möglich, den Kontosperrungszähler länger aktiv zu halten als die Zeit, die das Konto gesperrt und somit im Attribut msDS-LockoutDuration konfiguriert ist.
- Kontosperrdauer: Wie lange ein Benutzerkonto nach den Anmeldefehlversuchen (es zählt der Wert im Attribut msDS-LockoutThreshold) gesperrt werden soll, ehe es automatisch entsperrt wird, definiert man im Attribut msDS-LockoutDuration. Die Zeitangabe muss im Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) erfolgen. Wird als Wert mit Klammern (Nie) eingetragen, entsperrt sich das Benutzerkonto nicht automatisch. Stattdessen muss ein Administrator manuell das Konto entsperren. Der Wert im Attribut msDS-LockoutDuration darf nicht „kleiner“ sondern höchstens „gleich“ sein, als der Wert in msDS-LockoutObservationWindow.
Ferner existiert im PSO zusätzlich noch dieses Attribut:
-
PSO-Link: Im PSO-Link hinter dem das mehrwertige Attribut msDS-PSOAppliesTo steckt, konfiguriert man auf welche Objekte das PSO angewendet werden soll. Das bedeutet, ein PSO kann auf mehrere Benutzer und/oder Gruppen angewendet werden. In diesem Forward-Link muss der LDAP-Pfad bzw. der Distinguished Name (DN) des Objekts eingetragen werden, auf dem das PSO wirken soll.
Das Pendant zum Forward-Link ist das Back-Link, dass Attribut msDS-PSOApplied. In diesem Back-Link das den Benutzer und Gruppenobjekten ab Windows Server 2008 hinzugefügt wurde, ist das PSO bzw. wenn mehrere PSOs auf ein Benutzerobjekt direkt oder indirekt infrage kommen, sind die PSOs enthalten, mit dem das Objekt verknüpft ist. Welches PSO dann letztendlich auf ein Benutzerkonto angewandt wird, entscheidet der Richtlinienergebnissatz (Resultant Set of Policy, RSOP), genauer das Attribut msDS-ResultantPSO das sich ebenfalls in den Eigenschaften eines Benutzerobjekts befindet. Back-Links werden als constructed Attributes bezeichnet was nichts anderes bedeutet, als dass diese Art von Attribut von jedem DC selbst veraltet wird und der Wert eines solchen Attributs auch nicht vom Administrator bearbeitet werden kann. Es ist ein system-only Attribut und wird auch nicht auf andere DCs repliziert. Des Weiteren wird ein Back-Link und sein Wert erst zum Zeitpunkt der Abfrage generiert.
Verknüpfte Attribute Die konstruierten Attribute abfragen
Die PSO-Attribute mit einer Zeitangabe
Es gibt im PSO vier Attribute die als Wert eine Zeitangabe im Form von Tage:Stunden:Minuten:Sekunden verlangen. Die vier Attribute sind:
- msDS-MaximumPasswordAge - msDS-MinimumPasswordAge - msDS-LockoutObservationWindow - msDS-LockoutDuration
Erstellt man ein PSO in der AD-PowerShell oder mit ADSIEdit, muss man die Zeitangabe nach der Vorgabe tt:ss:mm:ss konfigurieren. Möchte man jedoch ein oder mehrere PSOs mit LDIFDE erstellen, so müssen die Werte in diesen Attributen im I8-Format angegeben werden! Im I8-Format wird die Zeit in Intervallen von -100 Nanosekunden (Schema: attributeSyntax = 2.5.5.16 (I8)) gespeichert. Unter Windows Server 2003 wird in der Default Domain Policy genau diese Zeiteinheit für die entsprechenden Zeit-bezogenen Attribute verwendet. Um in diesen vier Attributen die entsprechenden Werte zu konfigurieren, gilt es die Zeitangabe in Tage, Stunden oder Minuten in die Intervalle von -100 Nanosekunden zu konvertieren. Anschließend muss dem konvertierten Ergebnis noch ein negatives Vorzeichen (das Minuszeichen „-„) vorangestellt werden.
Zum umrechnen der Zeit können die folgenden Umrechnungsformel verwendet werden, um die entsprechenden I8-Werte zu erhalten:
Tage: Die Umrechnungsformel für einen Tag lautet = -24*60*60*(10^7) = -864000000000. Demzufolge würde der Wert für fünf Tage so lauten: -4320000000000 (5*864000000000).
Stunden: Eine Stunde wird wie folgt umgerechnet: -60*60*(10^7) = -36000000000. Der Wert für zwei Stunden lautet -72000000000 (2*36000000000).
Minuten: Die Formel für eine Minute lautet = -60*(10^7) = -600000000. Sollen 30 Minuten ins I8-Format konvertiert werden, so lautet das Ergebnis -18000000000 (30*600000000).
Welches PSO wird angewendet und hat Vorrang, falls mehrere PSOs infrage kommen?
PSOs können sowohl Benutzerobjekten als auch globalen Sicherheitsgruppen zugewiesen werden. Der Richtlinienergebnissatz (RSOP) kann jedoch nur für das Benutzerobjekt berechnet werden. Sind mehrere PSOs mit einem Benutzer oder einer globalen Gruppe verknüpft, wird der RSOP wie folgt berechnet:
- Es wird zuerst geprüft, ob ein PSO direkt mit dem Benutzerkonto verknüpft ist. Ist das der Fall, wird dieses PSO angewendet. Sind mehrere PSOs direkt mit dem Benutzerkonto verknüpft, gewinnt das PSO, das den niedrigsten Wert im Attribut msDS-PasswordSettingsPrecedence enthält! Existieren mehrere PSOs mit demselben Wert im Attribut msDS-PasswordSettingsPrecedence, wird das PSO auf das Benutzerkonto angewendet dessen GUID niedriger ist!
- Wenn kein PSO direkt mit dem Benutzerobjekt verknüpft ist, werden die Mitgliedschaften in den globalen Sicherheitsgruppen des betreffenden Benutzers überprüft. Existiert darunter eine Gruppe das mit einem PSO verknüpft ist, wird das PSO auf Umwege auf das Benutzerkonto angewendet. Befindet sich der Benutzer in mehreren globalen Gruppen auf denen verschiedene PSOs verknüpft sind, wird das PSO auf das Benutzerkonto angewendet, das den niedrigsten Wert im Attribut msDS-PasswordSettingsPrecedence hat! Wenn mehrere PSOs mit demselben Wert im Attribut msDS-PasswordSettingsPrecedence existieren, wird das PSO auf das Benutzerkonto angewendet dessen GUID niedriger ist!
- Wenn kein PSO direkt oder indirekt per globaler Sicherheitsgruppe mit einem Benutzerobjekt verknüpft ist, werden die Kennwort- und Kontosperrungsrichtlinien aus der Default Domain Policy angewandt! Deshalb sollten immer die Kennwort- und Kontosperrungsrichtlinien in der DDP konfiguriert werden, um eine Mindestanforderung an die Benutzerkennwörter zu stellen.
- Existiert ein PSO das direkt oder indirekt mit einem Benutzerobjekt verknüpft ist, hat das PSO stets vor der DDP Vorrang! Erst wenn ermittelt wurde, dass letztendlich einem Benutzerobjekt kein PSO zugewiesen wurde, greifen die Kennwortbeschränkungen aus der DDP.
- Welches PSO letzten Endes auf ein Benutzerkonto angewendet wird, entscheidet das RSOP! Denn ein weiteres neues constructed Attribut das dem Benutzerobjekt ab Windows Server 2008 hinzugefügt wurde, lautet msDS-ResultantPSO. In diesem Attribut ist der DN des PSOs gespeichert, das letztendlich nach den o.g. Regeln auf den Benutzer angewandt wird.
Mehr über constructed Attribute gibt es hier: Die konstruierten Attribute abfragen
-
Es gibt jedoch drei Einstellungen die direkt im Benutzerobjekt vorgenommen werden können, um stets die Kennwortvorgaben eines PSOs auszuhebeln. Die drei Optionen lassen sich mit den Flags des userAccountControl Attributs konfigurieren und sind: - Kennwort läuft nie ab - Kennwort mit umkehrbarer Verschlüsselung speichern - Kennwort nicht erforderlich
How to use the UserAccountControl flags to manipulate user account properties
Im Übrigen setzen diese drei Flags die Kennwortvorgaben die in der DDP konfiguriert sind, ebenso außer Kraft!
PSOs mit der AD-PowerShell erstellen und verwalten
Unter „Windows Server 2008“ konnten PSOs mit Bordmittel lediglich mit ADSIEdit, LDIFDE sowie LDP erstellt und administriert werden. Ab „Windows Server 2008 R2“ können PSOs mit einem weiteren Bordmittel, mit dem State of the Art Werkzeug der AD-PowerShell erstellt und verwaltet werden.
Auch unter Windows Server 2003 und Windows Server 2008 kann man die AD-PowerShell nach vorheriger Installation der AD-Management Gateway Services nutzen.
Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008
Zum Überprüfen und konfigurieren der Kennwort- und Kontosperrungsrichtlinie in der DDP gibt es ebenfalls die beiden AD-PowerShell Cmdlets Get-ADDefaultDomainPasswordPolicy und Set-ADDefaultDomainPasswordPolicy. Das Cmdlet Get-ADDefaultDomainPasswordPolicy mit dem die Kennwortoptionen direkt aus den Attributen (und nicht aus der DDP) die sich in der Domänenpartition befinden abgerufen werden, zeigt die Kennwortvorgaben die mit der DDP verteilt werden an.
Das Cmdlet Set-ADDefaultDomainPasswordPolicy ändert nicht etwa die Kennworteinstellungen in der DDP, sondern direkt die Attribute die sich in der Domänenpartition befinden. Wie die einzelnen Kennwortoptionen zum Konfigurieren in der AD-PowerShell lauten, erfährt man mit dem Befehl Get-Help <Cmdlet> -Full. Also z.B. Get-Help Set-ADDefaultDomainPasswordPolicy –Full.
Zum Administrieren der PSOs in der AD-PowerShell stellt Microsoft diese acht Cmdlets zur Verfügung:
- Add-ADFineGrainedPasswordPolicySubject - Get-ADFineGrainedPasswordPolicy - Get-ADFineGrainedPasswordPolicySubject - Get-ADUserResultantPasswordPolicy - New-ADFineGrainedPasswordPolicy - Remove-ADFineGrainedPasswordPolicy - Remove-ADFineGrainedPasswordPolicySubject - Set-ADFineGrainedPasswordPolicy
- Mit diesem Einzeiler lässt sich ein PSO wie folgt erstellen:
New-ADFineGrainedPasswordPolicy –Name “PSO für die GF” –Precedence 20 –ComplexityEnabled $true –Description “Dieses PSO gilt nur für die GF” –Displayname “GF-PSO” –LockoutDuration “0.00:15:00” –LockoutObservationWindow “0.00:15:00” –LockoutThreshold 15 -MaxPasswordAge "60.00:00:00" -MinPasswordAge "5.00:00:00" -MinPasswordLength 8 -PasswordHistoryCount 10 -ReversibleEncryptionEnabled $false
- Ist das PSO erstellt, muss es anschließend mit dem folgenden Befehl an einen Benutzer oder eine Gruppe wie folgt zugewiesen werden:
Add-ADFineGrainedPasswordPolicySubject <Name der PSO> <Benutzer/Gruppe>
- Einzelne Optionen lassen sich in einem bestehenden PSO folgendermaßen ändern:
Set-ADFineGrainedPasswordPolicy “CN=<Name der PSO>,CN=Password Settings Container,CN=System,DC=Domäne,DC=de” –Precedence 15 -MinPasswordLength 12
- Alle PSOs mit den konfigurierten Kennwortoptionen lassen sich mit diesem Befehl Anzeigen:
Get-ADFineGrainedPasswordPolicy -Filter { Name -Like "*" }

- Welches PSO letzten Endes auf einen Benutzer wirkt und wie die einzelnen Kennwortoptionen konfiguriert sind, erfährt man mit diesem Befehl:
Get-ADUserResultantPasswordPolicy <Benutzer>
- Mit der AD-PowerShell kann man sogar abfragen, auf welche Benutzer- und/oder Gruppenobjekte ein bestimmtes PSO verlinkt ist. Der Befehl lautet:
Get-ADFineGrainedPasswordPolicySubject <Name der PSO>
- Um die Verlinkung einer PSO von einem Benutzer oder von einer Gruppe zu entfernen, muss dieser Befehl ausgeführt werden:
Remove-ADFineGrainedPasswordPolicySubject <Name der PSO> -Subjects <Benutzer/Gruppen> -Confirm:$False
- Eine PSO kann man in der AD-PowerShell so löschen:
Remove-ADFineGrainedPasswordPolicy <Name der PSO> -Confirm:$False
Ein PSO mit ADSIEdit erstellen
Die Attribute eines PSO, müssen zwingend in dieser Reihenfolge bei der Erstellung mit ADSIEdit konfiguriert werden. Das Erstellen eines PSOs erfolgt mit Bordmittel in ADSIEdit wie folgt:
- Zuerst verbindet man sich in ADSIEdit mit der Domänenpartition und navigiert zum Container CN=Password Settings Container,CN=System,DC=Domäne,DC=de.
- Mit einem Rechtsklick auf den PSC kann man unter Neu - Objekt… ein PSO, das zur Klasse msDS-PasswordSettings gehört erstellen.
- Mit einem Klick auf Weiter muss der Common-Name im Attribut cn angegeben werden. Der CN ist ein Name, der das PSO eindeutig identifiziert (z.B. „PSO für GF“ etc.).
- Im nächsten Schritt muss der Password Settings Precedence, der Wert für das Attribut msDS-PasswordSettingsPrecedence angegeben werden. Der Wert (der größer 0 sein muss!) der hier eingetragen wird entscheidet darüber, welches PSO auf das Objekt letztendlich angewendet wird, falls mehrere PSOs auf das Objekt verlinkt sind. Das PSO das den niedrigsten Wert in diesem Attribut enthält, wird auf das Objekt angewendet. Existieren mehrere PSOs mit dem gleichen Wert, gewinnt das PSO dessen GUID niedriger ist.
- Dann muss für die Option Password reversible encryption status for user accounts im Attribut msDS-PasswordReversibleEncryptionEnabled entweder als Wert FALSE (was empfohlen ist!) oder TRUE eingegeben werden.
- Als nächstes muss bei der Option Password History Length for user accounts ein Wert zwischen 0 und 1024 im Attribut msDS-PasswordHistoryLength vergeben werden.
- Bei der Option Password complexity status for user accounts muss im Attribut msDS-PasswordComplexityEnabled als Wert FALSE oder TRUE vergeben werden. Wobei TRUE die empfohlene Einstellung ist.
- Danach gibt man bei der Option Minimum Password Length for user accounts im Attribut msDS-MinimumPasswordLength die Mindestlänge, die ein Kennwort zwingend haben muss an! Es kann ein Wert zwischen 0 und 255 vergeben werden.
- Nun muss im Attribut msDS-MinimumPasswordAge für die Option Minimum Password Age for user accounts das minimale Kennwortalter angegeben werden, ehe es vom Benutzer geändert werden darf. Die Zeitangabe muss im Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) angegeben werden (z.B. 7:00:00:00 für sieben Tage). Wird als Wert mit Klammern (Nie) eingetragen, wird kein Mindestalter definiert.
- Im darauffolgenden Schritt muss man in der Option Maximum Password Age for user accounts im Attribut msDS-MaximumPasswordAge diesmal das maximale Alter eines Kennworts eingeben. In diesem Attribut wird definiert, nach wie vielen Tagen spätestens der Benutzer sein Kennwort ändern muss! Auch hier muss die Zeitangabe im Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) erfolgen. Es dürfte jedem klar sein, dass dieser Wert gleich oder höher sein muss als der Wert im Attribut msDS-MinimumPasswordAge.
- Bei der nächsten Option Lockout threshold for lockout of user accounts muss im Attribut msDS-LockoutThreshold der Wert für die Kontosperrschwelle eingegeben werden. Wie oft der Benutzer sein Kennwort falsch eingeben darf ehe sein Benutzerkonto gesperrt wird, legt man in diesem Attribut fest. Als Wert kann zwischen 0 und 65535 gewählt werden. Gibt man als Wert 0 ein, wird das Benutzerkonto nie gesperrt.
- Mit der Option Observation Window for lockout of user accounts bestimmt man im Attribut msDS-LockoutObservationWindow, wie lange die Anmeldefehlversuche gespeichert werden sollen, ehe der Kontosperrungszähler zurückgesetzt wird. Die Zeitangabe muss im Format Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss) angegeben werden. Möchte man die Zeit auf 20 Minuten festlegen, so muss der Wert folgendermaßen konfiguriert werden 00:00:20:00.
- Zum Schluss muss man noch für die Option Lockout duration for locked out user accounts im Attribut msDS-LockoutDuration die Kontosperrdauer angeben. Das Format der Zeitangabe muss so aussehen Tage:Stunden:Minuten:Sekunden (tt:ss:mm:ss). Wenn also der Benutzer sein Kennwort mehr als der Wert, der im Attribut msDS-LockoutThreshold definiert ist falsch eingegeben hat und das Benutzerkonto für zehn Minuten gesperrt werden soll, muss man diesen Wert eintragen 00:00:10:00.
- Nun gelangt man auf die letzte Seite, auf der man zum einen Fertig stellen und zum anderen auf Weitere Attribute klicken kann. Mit einem Klick auf Weitere Attribute öffnet sich ein weiteres Dialogfenster in dem man die Benutzer und Gruppen angeben kann, mit denen dieses PSO verknüpft werden soll. Dort gilt es im Feld Anzuzeigende Eigenschaften den Eintrag Optional und im Feld Anzuzeigende Eigenschaft das Attribut msDS-PSOAppliesTo auszuwählen. Daraufhin muss im Feld Attribut bearbeiten der DN des Objekts angegeben werden, auf dem das PSO angewendet werden soll. Da es sich hierbei um ein mehrwertiges Attribut handelt, können mehrere Objekte angegeben werden, auf denen dasselbe PSO wirken soll. Wenn ein DN eingetragen wurde, muss der Wert mit Hinzufügen in das Feld Wert(e) übernommen werden. Wurden alle Werte eingetragen, gelangt man mit OK zum Dialogfeld Objekt erstellen zurück.

- Mit einem Klick auf Fertig stellen wird nun endlich das PSO im „Password Settings Container“ erstellt. Falls ein Attribut einen ungültigen Wert enthält, erscheint nach dem Klick auf Fertig stellen eine Fehlermeldung.
Nach dem bestätigen der Fehlermeldung mit OK kann man im Dialogfenster Objekt erstellen zurück zum bemängelten Attribut navigieren, um den Wert zu korrigieren. Die Verdächtigen sind dabei die Attribute, die eine Zeitangabe in Form von Tage:Stunden:Minuten:Sekunden enthalten. Z.B. darf der Wert im Attribut msDS-LockoutObservationWindow nicht größer sein (höchstens gleich) als der Wert im Attribut msDS-LockoutDuration. Auch das UAC kann schuld sein. Das ADSIEdit sollte explizit als Administrator gestartet werden.
PSOs mit LDIFDE erstellen
Es gibt auch eine skriptbasierte Alternative, mit dem PSOs erstellt werden können. Das Erstellen von PSOs kann auch mit dem Kommandozeilentool LDIFDE automatisiert durchgeführt werden.
Die Einträge in der LDF Datei müssen folgendermaßen aussehen:
dn:CN=PSO,CN=Password Settings Container,CN=System,DC=Domäne,DC=de changetype:add objectClass:msDS-PasswordSettings msDS-MaximumPasswordAge:-51840000000000 (entspricht 60 Tage) msDS-MinimumPasswordAge:-1728000000000 (entspricht 2 Tage) msDS-MinimumPasswordLength:8 msDS-PasswordHistoryLength:20 msDS-PasswordComplexityEnabled:TRUE msDS-PasswordReversibleEncryptionEnabled:FALSE msDS-LockoutObservationWindow:-36000000000 (entspricht 60 Minuten) msDS-LockoutDuration:-36000000000 (entspricht 60 Minuten) msDS-LockoutThreshold:0 msDS-PasswordSettingsPrecedence:10 msDS-PSOAppliesTo:CN=<Gruppe>,OU=<OU>,DC=Domäne,DC=de
Der Import erfolgt mit diesem Befehl:
Ldifde -i -f C:\PSO.ldf
Weitere Informationen: Den ersten Windows Server 2008 R2 DC zur Gesamtstruktur hinzufügen Domänen- und Gesamtstrukturfunktionsmodus LDIFDE - LDAP Data Interchange Format Data Exchange
Das Active Directory (AD), das auf dem Extensible Storage Engine (ESE) Datenbankmodul basiert organisiert Objekte in einer hierarchischen Baumstruktur und stellt die Hierarchie der Objekte für eine Gesamtstruktur. Das AD speichert die transaktionale Datenbank intern in drei Tabellen: Datentabelle (Data-Table), Verknüpfungstabelle (Link-Table) und in der erweiterten Sicherheitseinstellungen Tabelle (Security Descriptor-Table, kurz SD-Table). Die beiden wichtigsten Tabellen in der sich die Daten des AD befinden ist die Datentabelle, die alle Objekte sowie Attribute enthält und die Verknüpfungstabelle, in der die Beziehungen zwischen den Objekten gespeichert werden.
Siehe auch: Verknüpfte Attribute
In der Datentabelle wird jedes Attribut und jedes Objekt in einer einzelnen Zeile, mit einer Spalte pro Attribut gespeichert. Das bedeutet, jede Zeile in der Datentabelle entspricht einem Attribut bzw. Objekt. Die Einträge die sich auf einem Domänencontroller (DC) in der Datentabelle befinden, sind aus der Schema-, Konfigurations-, Anwendungs- und Domänenpartition. Die Datentabelle eines globalen Katalogs (GC) enthält neben den Einträgen aus den bereits erwähnten Verzeichnispartitionen, zusätzlich noch die Einträge aus allen anderen Domänenpartitionen innerhalb der Gesamtstruktur. Denn bekanntermaßen werden alle Objekte aus allen Domänen innerhalb einer Gesamtstruktur, lediglich mit den Attributen die für eine Suche relevant sind in den GC repliziert.
Um jede Zeile in der Datentabelle eindeutig identifizieren zu können, verwendet das AD als eindeutige Kennung das Distinguished Name Tag (DNT). Bei dem DNT handelt es sich um einen vier Byte (32Bit) Integer Wert und dieser wird zum internen Verweis auf Attribute und Objekte verwendet. Der Distinguished Name Tag ist eine lokale Kennung der nicht zwischen den DCs repliziert wird und lautet bei jedem DC anders.
Der DNT gibt die Zeile in der AD-Datenbank an, in der das Attribut bzw. Objekt gespeichert ist. Jedes Objekt das erstellt wird erhält im DNT eine fortlaufende Nummer. Oder wenn z.B. ein Benutzer einer Gruppe hinzugefügt wird, speichert das AD den DNT des Benutzerobjekts im member Attribut der Gruppe und nicht den Distinguished Name (DN). Dadurch das sich der DNT selbst beim Umbenennen eines Objekts nicht ändert kann ein Benutzerobjekt umbenannt werden, ohne dass das AD alle Gruppen durchsuchen muss um den DN des Benutzers in jedem member Attribut der Gruppe aktualisieren zu müssen.
Im AD hat jedes Objekt genau ein übergeordnetes Objekt und ein Verweis auf das übergeordnete Objekt ist mit dem Objekt selbst gespeichert. Für die Beziehung zwischen den über- und untergeordneten Objekten speichert das AD in einer zusätzlichen Spalte innerhalb der Datentabelle den Parent Distinguished Name Tag (PDNT). In dieser Spalte wird der DNT vom übergeordneten Objekt gespeichert. Die Auflösung der Beziehung zwischen den über- und untergeordneten Objekten ist optimiert, da der DNT und PDNT indizierte Felder in der AD-Datenbank sind.
Um sich das genauer vor Augen zu führen empfiehlt es sich einen Export der AD-Datenbank mit LDP zu generieren. Diese Möglichkeit, einen Export der AD-Datenbank und das sogar im laufenden Betrieb durchzuführen, existiert seit Windows 2000 und ist dank des speziellen Attributs dumpdatabase möglich, das nur für diesen Zweck existiert. Nach dem man LDP gestartet hat, muss man sich zunächst mit einem DC verbinden. Dazu wählt man in LDP unter dem Menüpunkt Remotedesktopverbindung die Option Verbinden… und gibt den gewünschten DC an, von dem aus ein Export der lokalen AD-Datenbankkopie durchgeführt werden soll. Danach muss man ebenfalls unter dem Menüpunkt Remotedesktopverbindung die Option Gebunden… wählen, um sich mit dem AD zu binden. Anschließend gilt es unter dem Menüpunkt Durchsuchen die Option Ändern aufzurufen. Nun muss im Feld Attribut das Attribut dumpdatabase eingetragen werden. Im Feld Werte können die gewünschten Attribute angegeben werden die mit exportiert werden sollen. Das Feld darf dabei nicht leer bleiben und es muss mindestens ein Attribut angegeben werden. Standardmäßig werden unter Windows Server 2008 R2 bereits diese Werte exportiert: DNT - PDNT - CNT - NCDNT - OBJ – DelTime - RecTime - INST - RDNTyp – RDN. Hat man die entsprechenden Attribute eingegeben, muss im Bereich Vorgang die Option Hinzufügen gewählt und mit einem Klick auf Eingabe die getätigten Einträge in die Eingabeliste übernommen werden. Mit einem Klick auf Ausführen wird der Export dann durchgeführt.

Je nach Anzahl der Attribute, Objekte und Größe der AD-Datenbank kann der Export einige Zeit in Anspruch nehmen. Daher ist es empfehlenswert, den Export auf einem DC zu einem Zeitpunkt zu generieren, wenn gerade keine größere Last auf dem DC besteht!
Die exportierte Datei mit dem Dateinamen NTDS.dmp kann mit einem Texteditor geöffnet werden (z.B. Notepad) und wird im gleichen Verzeichnis erstellt, in der sich auch die AD-Datenbank NTDS.dit befindet (standardmäßig %windir%\NTDS).

Was passiert denn nun in der AD-Datenbank wenn ein Objekt, z.B. ein Benutzer gelöscht wird?
Es heißt wenn ein Objekt, z.B. ein Benutzer gelöscht wird, wandert es in den versteckten Container Deleted Objects das sich in der Domänenpartition befindet. Näheres zum Container Deleted Objects liefert der folgende Artikel:
Der Container Deleted Objects
Doch bevor das Objekt überhaupt gelöscht wird, findet anhand bestimmter Kriterien eine Überprüfung statt, ob das Objekt auch tatsächlich gelöscht werden darf. Welche Kriterien das hauptsächlich sind, steht im diesem Artikel:
Active Directory Wiederherstellung
Wenn die Kriterien erfüllt und das Objekt gelöscht werden darf, werden folgende Änderungen am dem gelöschten Objekt vorgenommen:
Lingering Objects (veraltete Objekte)
In Wirklichkeit wird in der AD-Datenbank das Objekt das gelöscht wurde, also z.B. ein Benutzer nicht verschoben. Stattdessen bleibt das Objekt nach dem Löschen weiterhin in der AD-Datenbank an seinem Platz bestehen! Lediglich die Beziehung zu dem übergeordneten Objekt, also der PDNT im gelöschten Objekt ändert sich. Das gelöschte Objekt erhält in der Spalte PDNT den DNT vom Container Deleted Objects.
Im Übrigen trifft das nicht nur auf das Löschen von Objekten zu. Auch wenn ein Objekt in eine andere OU verschoben wird, bleibt das Objekt weiterhin an seinem Ursprungsort in der AD-Datenbank bestehen. Das Einzige was sich auch hier ändert, ist die Beziehung zum übergeordneten Objekt, also der Wert in der Spalte PDNT.
Schauen wir uns das im folgenden Beispiel an:

Das Benutzerobjekt Yusuf Dikmenoglu enthält in der Spalte DNT den Wert 3702. Das Objekt befindet sich also in der Zeile 3702. In der Spalte PDNT ist als Wert 3697 eingetragen. Im PDNT ist der DNT vom übergeordneten Objekt gespeichert. Schaut man sich nun in der Spalte DNT die Zeile 3697 an wird schnell klar, das sich der Benutzer Yusuf Dikmenoglu in der OU „IT“ befindet.
Löscht man jetzt das Benutzerobjekt Yusuf Dikmenoglu, bleibt das Objekt weiterhin in der Zeile 3702 bestehen. Der Wert in der Spalte PDNT, sprich die Beziehung zum übergeordneten Objekt ändert sich jedoch! Das übergeordnete Objekt des gelöschten Benutzerobjekts Yusuf Dikmenoglu ist jetzt nicht mehr die OU „IT“, sondern der Container Deleted Objects in der Domänenpartition.

Wie zu erkennen ist wurde der Wert in der Spalte PDNT im gelöschten Benutzerobjekt Yusuf Dikmenoglu, von 3697 auf 1802 geändert.
Was an dieser Stelle auch zu erkennen ist, der Relative Distinguished Name (RDN) des gelöschten Benutzerobjekts hat einen eindeutigen Namen erhalten. Das gelöschte Objekt erhält intern den Namen <alterRDN>DEL:<objectGUID>. Durch das Hinzufügen der objectGUID ist sichergestellt, dass das Objekt auch im gelöschten Status einen einmaligen Namen innerhalb der AD-Datenbank besitzt und somit eindeutig zu identifizieren ist. Das ist auch notwendig, denn wenn es ein zweites Benutzerobjekt Yusuf Dikmenoglu geben würde das ebenfalls gelöscht wird, müssen beide Objekte im Container Deleted Objects identifiziert werden können. Diese Vorgehensweise ist insbesondere für das wiederherstellen des Tombstones oder aus dem AD-Papierkorb zwingend notwendig!
Weitere Informationen: Die unterschiedliche Größe der AD-Datenbank Domänencontroller vergleichen Phantome im Active Directory
Anlässlich des Erscheinens der aktuellen ADMT Version 3.2 findet ihr hier eine Übersicht die aufzeigt:
- Welche ADMT Version sich auf welchem Serverbetriebssystem installieren lässt.
- Mit welcher ADMT Version man von welcher Quell-Domäne zu welcher Ziel-Domäne migrieren kann.
- Auf welchen Systemen sich der ADMT Agent installieren lässt.
|
ADMT Version |
OS |
Kann installliert werden auf |
Quell-Domäne |
Ziel-Domäne |
ADMT Agent kann installiert werden auf |
|
ADMT 3.2 |
Windows Server 2008 R2 |
ü (nicht auf RODC und Server Core) |
ü |
ü |
ü |
|
Windows Server 2008 |
X |
ü |
ü |
ü |
|
Windows Server 2003 |
X |
ü |
ü |
ü |
|
Windows 2000 Server |
X |
X |
X |
X |
|
Windows NT Server 4.0 |
X |
X |
X |
X |
|
Windows 7 |
X |
X |
X |
ü |
|
Windows Vista |
X |
X |
X |
ü |
|
Windows XP |
X |
X |
X |
ü |
|
Windows 2000 Professional |
X |
X |
X |
X |
|
|
|
|
|
|
|
ADMT Version |
OS |
Kann installliert werden auf |
Quell-Domäne |
Ziel-Domäne |
ADMT Agent kann installiert werden auf |
|
ADMT 3.1 |
Windows Server 2008 R2 |
X |
X |
ü |
ü |
|
Windows Server 2008 |
ü (nicht auf RODC und Server Core) |
ü |
ü |
ü |
|
Windows Server 2003 |
X |
ü |
ü |
ü |
|
Windows 2000 Server |
X |
ü |
ü |
ü |
|
Windows NT Server 4.0 |
X |
X |
X |
X |
|
Windows 7 |
X |
X |
X |
ü |
|
Windows Vista |
X |
X |
X |
ü |
|
Windows XP |
X |
X |
X |
ü |
|
Windows 2000 Professional |
X |
X |
X |
ü |
|
|
|
|
|
|
|
ADMT Version |
OS |
Kann installliert werden auf |
Quell-Domäne |
Ziel-Domäne |
ADMT Agent kann installiert werden auf |
|
ADMT 3.0 |
Windows Server 2008 R2 |
X |
X |
X |
X |
|
Windows Server 2008 |
X |
X |
X |
X |
|
Windows Server 2003 |
ü |
ü |
ü |
ü |
|
Windows 2000 Server |
X |
ü |
ü |
ü |
|
Windows NT Server 4.0 |
X |
ü |
X |
ü |
|
Windows 7 |
X |
X |
X |
X |
|
Windows Vista |
X |
X |
X |
X |
|
Windows XP |
X |
X |
X |
ü |
|
Windows 2000 Professional |
X |
X |
X |
ü |
|
|
|
|
|
|
|
ADMT Version |
OS |
Kann installliert werden auf |
Quell-Domäne |
Ziel-Domäne |
ADMT Agent kann installiert werden auf |
|
ADMT 2.0 |
Windows Server 2008 R2 |
X |
X |
X |
X |
|
Windows Server 2008 |
X |
X |
X |
X |
|
Windows Server 2003 |
ü |
ü |
ü |
ü |
|
Windows 2000 Server |
ü |
ü |
ü |
ü |
|
Windows NT Server 4.0 |
X |
ü |
X |
ü |
|
Windows 7 |
X |
X |
X |
X |
|
Windows Vista |
X |
X |
X |
X |
|
Windows XP |
X |
X |
X |
ü |
|
Windows 2000 Professional |
X |
X |
|
X |
Weitere Informationen: Eine Domänenmigration durchführen Einen Domänensplitt durchführen ADMT Version 3.1 Benutzermigration mit ADMT v3: How-To Den ersten Windows Server 2008 R2 DC zur Gesamtstruktur hinzufügen Active Directory Migration Tool v.2.0 Password Export Server version 3.1 (x86) Password Export Server version 3.1 (x64)
Seit der Veröffentlichung von Windows Server 2008 R2 konnte die bis dahin aktuelle ADMT Version 3.1 nicht auf einem Windows Server 2008 R2 installiert werden. Möchte man die bestehende Windows 2000, Windows Server 2003 oder Windows Server 2008 Umgebung mit ADMT in eine Windows Server 2008 R2 Domäne migrieren, muss dazu die ADMT Version 3.1 auf einem Windows Server 2008 installiert werden.
Nun hat aber Redmond die ADMT Version 3.2 veröffentlicht. Diese Version lässt sich ausschließlich auf einem Windows Server 2008 R2 installieren.
Active Directory Migration Tool version 3.2
Das aktualisierte ADMT-Handbuch findet man hier:
Active Directory Migration Tool (ADMT) Guide: Migrating and Restructuring Active Directory Domains
Mit ADMT 3.2 können Migrationen von folgenden Quell-Domänen durchgeführt werden:
- Windows Server 2003 - Windows Server 2008 - Windows Server 2008 R2
Als Ziel-Domänen werden ebenfalls diese unterstützt:
- Windows Server 2003 - Windows Server 2008 - Windows Server 2008 R2
Wie unschwer zu erkennen ist, kann man ADMT 3.2 nicht für eine Migration von Windows 2000 verwenden! Wer eine Windows 2000 Domäne migrieren möchte, der muss ADMT 3.1 verwenden.
ADMT 3.2 lässt sich wie schon ADMT 3.1 nicht auf einem Server Core oder RODC installieren!
Wer eine Migration mit diesem Werkzeug durchgeführt hat, weiß es zu schätzen! Vor allem da es kostenlos von Microsoft zur Verfügung gestellt wird.
Viel Erfolg bei euren Migrationen! 
Weitere Informationen: Eine Domänenmigration durchführen ADMT Version 3.1 Einen Domänensplitt durchführen
Mit Windows Server 2008 führte Microsoft eine neue Funktion ein mit der es möglich ist, eine Momentaufnahme (im englischen Snapshot genannt) des Active Directory (AD) im laufenden Betrieb auf einem DC zu erstellen und das sogar ohne den Betrieb zu beeinflussen. Ein AD-Snapshot kann dann zu Analyse- und Vergleichszwecken bereitgestellt werden. Aber auch zum Begutachten eines früheren Datenbestands eignet sich diese Technik hervorragend. Des Weiteren hat der Administrator mit dieser Funktion die Möglichkeit, ohne den DC im Modus Verzeichnisdienste wiederherstellen starten zu müssen, Daten aus dem AD-Snapshot zu exportieren und in der produktiven Umgebung zu importieren. Dabei ist lediglich ein Lese- und kein Schreibzugriff auf ein AD-Snapshot möglich! Mit dieser Technik die auf dem Volumenschattenkopiedienst (VSS) beruht, kann man in wenigen Augenblicken auf einfache Weise, punktgenaue AD-Snapshots der lokalen Kopie der AD-Datenbank (NTDS.dit) erstellen. Genau genommen wird ein Snapshot des gesamten Volumes erstellt, auf der sich die AD-Datenbank samt -Protokolle und dem SYSVOL-Verzeichnis befindet. Dabei können AD-Snapshots manuell oder automatisiert auf DCs, die mindestens unter Windows Server 2008 laufen erstellt werden. Der Domänenfunktionsmodus hat keine Relevanz.
Es gilt zu beachten, dass ein AD-Snapshot keine vollständige Kopie der AD-Datenbank enthält! Vielmehr stellt ein AD-Snapshot eine Sammlung von Datenträgerblöcken in der AD-Datenbank dar, die seit dem letzten AD-Snapshot geändert wurden. Durch zusammenfügen der Blöcke mit der lokalen Kopie der AD-Datenbank, kann der Volumenschattenkopiedienst die lokale Verzeichnisdatenbank zum Zeitpunkt der Erstellung des Snapshots darstellen.
Ein AD-Snapshot wird mit dem Kommandozeilentool NTDSUTIL erstellt. Man könnte zwar auch ein Snapshot im Betriebssystem erstellen, doch nur wenn das AD-Snapshot mit NTDSUTIL erstellt wird ist sichergestellt, dass die AD-Datenbank konsistent ist!
AD-Snapshots die mit Windows Server 2008 R2 fortgeführt werden helfen dem Administrator zu bestimmen, welche AD-Sicherung die gewünschten wiederherzustellenden Daten enthält. Auch wenn man lediglich überprüfen möchte, welche Werte ein Objekt bzw. ein Attribut vor einer Änderung hatte, eignet sich dieses Verfahren. In den AD Versionen vor Windows Server 2008 muss der Administrator mehrere Sicherungssätze rücksichern um zu bestimmen, welche Sicherung die wiederherzustellenden Daten enthält. Dazu ist es zwingend notwendig, dass der DC im Modus Verzeichnisdienst-wiederherstellen neu gestartet wird. Der Nachteil an den vorherigen AD-Versionen ist auch, dass es keine Möglichkeit gibt die AD-Daten die zu verschiedenen Zeitpunkten erstellt wurden zu vergleichen.
Aber: Ein AD-Snapshot ist nicht zur alleinigen Datensicherung geeignet! Er ist nur als Ergänzung gedacht! Denn aus einem AD-Snapshot können Daten bzw. Objekte nur sehr eingeschränkt mit Bordmittel (mit CSVDE oder LDIFDE) oder aufwändig mit Skripts exportiert und in die produktive AD-Umgebung importiert werden.
Ein AD-Snapshot erstellen
Für das Erstellen eines AD-Snapshots werden Domänen-Admin Rechte benötigt. Auf einem DC wird ein AD-Snapshot in der Kommandozeile mit NTDSUTIL wie folgt erstellt:
C:\>NTDSUTIL NTDSUTIL: Snapshot Snapshot: Activate Instance NTDS Aktive Instanz wurde auf "NTDS" festgelegt. Snapshot: Create Snapshot wird erstellt... Der Snapshotsatz {5b9dae90-de11-43b2-a8bb-e842b44ffb62} wurde erfolgreich generiert. Snapshot:
Ein AD-Snapshot lässt sich auch mit einem Einzeiler erzeugen. Fügt man den folgenden Befehl z.B. in eine Batchdatei und lässt in einem geplanten Task die Batch ausführen (mit entsprechenden Rechten), kann man so das Erstellen von AD-Snapshots zusätzlich zur regelmäßigen System State-Sicherung automatisieren:
C:\>NTDSUTIL Snapshot "Activate Instance NTDS" Create quit quit
NTDSUTIL: Snapshot
Snapshot: Activate Instance NTDS
Aktive Instanz wurde auf "NTDS" festgelegt.
Snapshot: Create
Snapshot wird erstellt...
Der Snapshotsatz {5057fdd0-a0fb-427d-b71a-c36a4d22f9c3} wurde erfolgreich generiert.
Snapshot: quit
NTDSUTIL: quit
C:\>
Wenn ein AD-Snapshot erstellt wurde, wird in der Ereignisanzeige unter der Serverrolle Active Directory-Domänendienste die Ereignis-ID 2001 mit der Beschreibung NTDS (528) NTDSA: Schattenkopieinstanz 2: Fixierung wurde gestartet. protokolliert.
Die erstellten AD-Snapshots anzeigen
Alle verfügbaren AD-Snapshots die gegenwärtig vom VSS auf einem DC verwaltet werden, lassen sich mit NTDSUTIL wie folgt Anzeigen:
C:\>NTDSUTIL
NTDSUTIL: Snapshot
Snapshot: List All
1: 2010/05/01:15:23 {ad2cf6fc-6fc4-420b-9d43-104196d67a57}
2: C: {41d34055-d61f-41f3-84d7-81b7b4016a8f}
3: 2010/05/02:13:39 {f9675e58-54bb-4a51-be21-60c81c44c286}
4: C: {110b7077-5c11-4b93-99e2-31411f6ebd8d}
5: 2010/05/03:21:21 {f747533a-7fd7-4915-a01d-6f59b1f31cb1}
6: C: {df0a7738-5d2d-4102-b006-e0c8cc712650}
Snapshot:
Die Ausgabe in diesem Beispiel stellt jeden AD-Snapshot in zwei Zeilen dar. Wie in dem oberen Beispiel zu sehen ist, wurden drei AD-Snapshots erstellt. Sind die AD-Protokolle auf einer anderen Partition gespeichert als die AD-Datenbank, wird eine weitere Zeile angezeigt.
Ein AD-Snapshot löschen
Auch wenn man genau weiß welchen AD-Snapshot man löschen möchte, muss man sich zuerst mit List All auf der Snapshot Ebene in NTDSUTIL alle verfügbaren AD-Snapshots anzeigen lassen. Lässt man sich die verfügbaren AD-Snapshots vorher nicht anzeigen und versucht mit einem Einzeiler direkt ein AD-Snapshot zu löschen, so kommt es zu dieser Fehlermeldung:
C:\>NTDSUTIL Snapshot "Delete 4"
NTDSUTIL: Snapshot
Snapshot: Delete 4
Ungültiger Snapshotindex 4. Snapshot:
Erst wenn man sich alle bestehenden AD-Snapshots anzeigen lässt, kann man ein AD-Snapshot wie folgt löschen:
C:\>NTDSUTIL Snapshot "List All"
NTDSUTIL: Snapshot
Snapshot: List All
1: 2010/05/01:15:23 {ad2cf6fc-6fc4-420b-9d43-104196d67a57}
2: C: {41d34055-d61f-41f3-84d7-81b7b4016a8f}
3: 2010/05/02:13:39 {f9675e58-54bb-4a51-be21-60c81c44c286}
4: C: {110b7077-5c11-4b93-99e2-31411f6ebd8d}
5: 2010/05/03:21:21 {f747533a-7fd7-4915-a01d-6f59b1f31cb1}
6: C: {df0a7738-5d2d-4102-b006-e0c8cc712650}
Snapshot: Delete 4
Der Snapshot {110b7077-5c11-4b93-99e2-31411f6ebd8d} wurde gelöscht. Snapshot:
Zum Löschen eines AD-Snapshots kann man einen der beiden Zeilen (die zusammen ein AD-Snapshot darstellen) angeben. Mit Delete 3 kann man ebenfalls dasselbe AD-Snapshot löschen. Anstatt der Nummern kann man auch die GUID angeben. Mit Delete f9675e58-54bb-4a51-be21-60c81c44c286 oder Delete 110b7077-5c11-4b93-99e2-31411f6ebd8d löscht man ebenso dasselbe AD-Snapshot.
Alle AD-Snapshots auf einmal kann man in der Snapshot Ebene mit Delete * löschen.
Ein AD-Snapshot verbinden
Möchte man auf ein AD-Snapshot zugreifen, muss man diesen im ersten Schritt verbinden. Im zweiten Schritt muss dann das verbundene AD-Snapshot mit dem Datenbankbereitstellungstool DSAMAIN bereitgestellt werden. Um ein AD-Snapshot zu verbinden, gilt es entweder die Nummer oder die GUID bei Mount anzugeben. Doch zuerst müssen auch an dieser Stelle mit List All alle verfügbaren AD-Snapshots aufgerufen werden. Erst danach lässt sich ein AD-Snapshot folgendermaßen verbinden:
C:\>NTDSUTIL Snapshot „List All“
NTDSUTIL: Snapshot
Snapshot: List All
1: 2010/05/01:15:23 {ad2cf6fc-6fc4-420b-9d43-104196d67a57}
2: C: {41d34055-d61f-41f3-84d7-81b7b4016a8f}
3: 2010/05/03:21:21 {f747533a-7fd7-4915-a01d-6f59b1f31cb1}
4: C: {df0a7738-5d2d-4102-b006-e0c8cc712650}
Snapshot: Mount 1
Der Snapshot {41d34055-d61f-41f3-84d7-81b7b4016a8f} wird als C:\$SNAP_201005011523_VOLUMEC$\ bereitgestellt. Snapshot:
Nach dem das AD-Snapshot verbunden ist, wird dadurch auf dem %Systemdrive% Laufwerk, beginnend mit der Bezeichnung $SNAP<Erstellungsdatum und Uhrzeit> der AD-Snapshot im Dateisystem eingeblendet. Es ist auch möglich, mehrere AD-Snapshots gleichzeitig zu verbinden. Hat man also mit Mount 1 das erste AD-Snapshot verbunden, kann man anschließend mit Mount 3 das nächste AD-Snapshot zeitgleich verbinden, ohne vorher das erste AD-Snapshot zu trennen. Aus Lastgründen ist es jedoch sinnvoll, nicht mehr als zwei AD-Snapshots gleichzeitig zu verbinden bzw. bereitzustellen!
Es ist auch möglich, die AD-Datenbank aus einer System State-Sicherung zu verbinden und anschließend bereitzustellen. Dazu muss die AD-Datenbank an einen alternativen Ort wiederhergestellt werden.
Die verbundenen AD-Snapshots anzeigen
Auf der Snapshot Ebene kann man mit List Mounted alle verbundenen AD-Snapshots auflisten:
C:\>NTDSUTIL Snapshot "List Mounted"
NTDSUTIL: Snapshot
Snapshot: List Mounted
1: 2010/05/01:15:23 {ad2cf6fc-6fc4-420b-9d43-104196d67a57}
2: C: {41d34055-d61f-41f3-84d7-81b7b4016a8f} C:\$SNAP_201005011523_VOLUMEC$\
3: 2010/05/03:21:21 {f747533a-7fd7-4915-a01d-6f59b1f31cb1}
4: C: {df0a7738-5d2d-4102-b006-e0c8cc712650}
C:\$SNAP_201005032121_VOLUMEC$\
Snapshot:
Wie in diesem Beispiel zu sehen ist, sind zwei AD-Snapshots verbunden.
Ein verbundenes AD-Snapshot trennen
Um ein AD-Snaphot zu trennen, muss man auch an dieser Stelle zuerst alle verbundenen AD-Snapshots mit List Mounted anzeigen lassen, ehe man ein oder alle verbundenen AD-Snapshots trennen kann.
C:\>NTDSUTIL Snapshot "List Mounted"
NTDSUTIL: Snapshot
Snapshot: List Mounted
1: 2010/05/08:14:35 {95c31025-b317-4df6-a7a5-767d0ddbc771}
2: C: {65971d9e-5608-46a9-ab92-043d73b4a6af} C:\$SNAP_201005081435_VOLUMEC$\
3: 2010/05/08:17:11 {fef7ad30-a129-466c-9a37-09f2f4e50d84}
4: C: {8fcee771-b002-46aa-a878-7e2d9519eaf3} C:\$SNAP_201005081711_VOLUMEC$\
Snapshot: Unmount 1
Die Bereitstellung des Snapshots {65971d9e-5608-46a9-ab92-043d73b4a6af} wurde au
fgehoben.
Snapshot:
Sind mehrere AD-Snapshots verbunden, kann man alle auf einmal in der Snapshot Ebene mit Unmount * gleichzeitig trennen.
Ein AD-Snapshot mit dem Datenbankbereitstellungstool DSAMAIN bereitstellen
Damit man auf ein AD-Snapshot mit dem man sich bereits verbunden hat zugreifen kann, muss dieser parallel zur lokalen Kopie der AD-Datenbank auf dem DC als zusätzlicher Verzeichnisdienst geladen werden. Deshalb sollte man in einer separaten Eingabeaufforderung mit dem Datenbankbereitstellungstool DSAMAIN, das verbundene AD-Snapshot das mithilfe von NTDSUTIL erstellt wurde bereitstellen. Anschließend kann man dann mit einem LDAP-Tool wie z.B. Active Directory-Benutzer und -Computer, ADSIEdit oder LDP den AD-Snapshot wie jeden anderen aktiven DC durchsuchen oder mit CSVDE bzw. LDIFDE Inhalte exportieren.
Damit das AD-Snapshot bereitgestellt werden kann, muss dieser Befehl in der Kommandozeile eingegeben werden: DSAMain -DBPath <Pfad zur NTDS.dit> -LDAPPORT <ausgewählter LDAP-Port>. Bei dem Parameter -DBPath muss der Pfad zur AD-Datenbank das sich im verbundenen AD-Snapshot befindet angegeben werden. Bei -LDAPPort muss mindestens ein Port spezifiziert werden, über den die parallele AD-Instanz zur Verfügung gestellt wird. Standardmäßig benötigt das AD vier LDAP-Ports, nämlich 389 für LDAP, 636 für LDAP über SSL/TLS, 3268 für den globalen Katalog (GC) und 3269 für den GC über SSL. Da standardmäßig diese vier Ports von dem eigentlichen produktiven AD auf einem DC benutzt werden, ist es zwingend notwendig für das Bereitstellen des AD-Snapshots einen anderen, eigens ausgewählten verfügbaren Port zu wählen. Gibt man lediglich für den erforderlichen LDAPPort den Port 30000 an, wird automatisch für LDAPS der Port 30001, für den GC 30002 und für den GC über SSL der Port 30003 reserviert.
Der Befehl zum Bereitstellen eines AD-Snapshots muss mindestens so aussehen:
DSAMain -DBPath C:\$SNAP_201005091521_VOLUMEC$\Windows\NTDS\NTDS.dit -LDAPPort 30000
Möchte man alle benötigten LDAP-Ports selbst spezifizieren, so lautet der Befehl wie folgt:
DSAMain -DBPath C:\$SNAP_201005091521_VOLUMEC$\Windows\NTDS\NTDS.dit -LDAPPort 30000 -sslPort 30100 -gcPort 30200 -gcSslPort 30300

Wenn ein AD-Snapshot bereitgestellt wurde, wird in der Ereignisanzeige unter der Serverrolle Active Directory-Domänendienste die Ereignis-ID 102 mit der Beschreibung NTDS (2924) NTDSA: Das Datenbankmodul (6.01.7600.0000) hat eine neue Instanz gestartet (0).protokolliert. Wird die Bereitstellung aufgehoben, so wird die Ereignis-ID 103 verzeichnet.
Nach durchgeführter Arbeit, kann die Bereitstellung der zusätzlichen AD-Instanz mit CTRL+C beendet werden und man sollte noch mit Unmount * das bzw. die verbundenen AD-Snapshots trennen.
Auf den AD-Snapshot zugreifen
- Wenn der AD-Snapshot bereitgestellt ist, kann man ihn mit der MMC dsa.msc betrachten, in dem man zuerst auf den Eintrag Active Directory-Benutzer und -Computer [FQDN des DCs] mit einem Rechtsklick die Option Domänencontroller ändern… aufruft. Danach wählt man die Option Bestimmter Domänencontroller oder AD LDS-Instanz aus und trägt den Computernamen, FQDN oder die IP-Adresse des DCs ein, auf dem der AD-Snapshot bereitgestellt wurde. Dabei ist zu beachten: Egal welches Tool verwendet wird, es ist zwingend notwendig das man den für die zusätzliche AD-Instanz vergebenen LDAP-Port stets mit angibt!

Die MMC dsa.msc eignet sich ideal um den AD-Datenbestand zum Erstellungszeitpunkt des AD-Snapshots zu durchforsten, aber nicht um Inhalte zu exportieren um diese dann in die produktive Umgebung zu importieren.
- Einen Export kann man mit Bordmittel ebenfalls durchführen, nämlich mit CSVDE und LDIFDE. Natürlich lassen sich auch durch eigene Skripte Daten exportieren. Ein Export aller Benutzer mit lediglich den gewünschten Attributen aus einer bestimmten OU, könnte mit CSVDE wie folgt aussehen:
CSVDE -S <DC> -T <vergebener LDAP-Port> -D „OU=<OU>,DC=Domäne,DC=de“ -R „(sAMAccountType=805306368)“ -L “<gewünschteAttribute>” -P Subtree -M -N -U -F „C:\ADFoto.csv“
Nach dem Export kann man die CSV-Datei zur weiteren Bearbeitung in Excel importieren. Hat man die Bearbeitung der Datendatei fertiggestellt, kann man dann mit dem folgenden Befehl den Import in der produktiven AD-Umgebung durchführen:
CSVDE -I –K -F „C:\Datendatei.csv“
Beim Import in der produktiven AD-Umgebung mit CSVDE gilt es jedoch zu beachten, dass man dieses Kommandozeilentool nicht für die Bearbeitung bestehender Objekte einsetzen kann! Zum Bearbeiten bestehender Objekte bietet sich das Kommandozeilentool LDIFDE an, dass ähnlich wie CSVDE funktioniert. Mit LDIFDE könnte man einen Export aus dem AD-Snapshot folgendermaßen gestalten:
LDIFDE -S <DC> -T <vergebener LDAP-Port> -D „OU=<OU>,DC=Domäne,DC=de“ -R „(sAMAccountType=805306368)“ -L “<gewünschteAttribute>” -P Subtree -M -N -F „C:\Export.ldf“
Auch mit diesem Befehl werden alle Benutzer aus der angegebenen OU, mit den gewünschten Attributen aus der Momentaufnahme exportiert. Hat man die gewünschten Informationen aus dem AD-Snapshot exportiert, kann man diese wie folgt in die produktive Umgebung importieren:
LDIFDE -I -K -Z -F „C:\Import.ldf“
LDIFDE - LDAP Data Interchange Format Data Exchange
- Auch mit den ds*-Tools kann man auf den AD-Snapshot zugreifen. Dabei muss man lediglich den Parameter -S mit dem Wert <FQDN des DCs>:<vergebener LDAP-Port> zusätzlich zur Abfrage angeben. Eine Abfrage die alle Benutzer einer bestimmten OU anzeigt, sieht so aus:
Dsquery * "OU=<OU>,DC=Domäne,DC=de" -Filter "(sAMAccountType=805306368)" -Attr * -Server <FQDN des DCs>:30000 -Limit 0
- Natürlich kann man auch mit dem State of the Art Werkzeug, nämlich der AD-PowerShell auf die Momentaufnahme zugreifen und Daten daraus exportieren. Doch bevor man mit der AD-PowerShell auf die Momentaufnahme zugreifen kann, muss wie gehabt zuerst in NTDSUTIL das AD-Snapshot verbunden und mit DSAMain bereitgestellt werden. Ist der AD-Snapshot bereitgestellt, muss man in der AD-PowerShell als nächstes ein AD-PowerShell-Laufwerk erstellen. Mit dem folgenden AD-PowerShellbefehl wird ein Laufwerk, basierend auf dem AD-Snapshot erstellt:
New-PSDrive -Name <frei wählbarer Laufwerksname> -PSProvider ActiveDirectory -Root "" -Server <DC.Domäne.de>:<vergebener LDAP-Port>
Hat man das AD-PowerShell-Laufwerk erstellt, muss man mit cd <vergebener Laufwerksname>: auf das Laufwerk wechseln.

Anschließend kann man mit cd "<DN der Domänenpartition>" zur Domänenpartition, also auf die Verzeichnispartition in der die Benutzer-, Gruppen- und Computerkonten enthalten sind wechseln.

Nun kann man sich mit den entsprechenden AD-PowerShellabfragen die gewünschten Informationen ausgeben lassen oder im Zusammenhang mit dem Cmdlet Export-CSV, einen Export der gewünschten Daten in eine CSV-Datei durchführen. Z.B. kann man alle Benutzer aus einer OU mit allen Eigenschaften wie folgt exportieren:
Get-ADUser -Filter * -Searchbase "OU=<OU>,DC=Domäne,DC=de" -Properties * | Export-Csv C:\Export.txt -NoTypeInformation
Man muss aber nicht zwangsläufig zuerst ein neues AD-PowerShell-Laufwerk erstellen! Stattdessen kann man auch, nach dem der AD-Snapshot mit DSAMain bereitgestellt wurde, alle Benutzer aus einer OU mit allen Eigenschaften wie folgt exportieren:
Get-ADUser -Filter * -Searchbase "OU=<OU>,DC=Domäne,DC=de" -Properties * -Server <FQDN des DCs>:<vergebener LDAP-Port> | Export-Csv C:\Export.txt -NoTypeInformation
Massenimporte- und -exporte mit CSVDE und der AD-PowerShell durchführen
AD-PowerShell Befehle
Nützliche Werkzeuge
Der ADExplorer
Ein hilfreiches Werkzeug im Zusammenhang mit AD-Snapshots stellt der ADExplorer dar. Mit diesem Tool ist es unter anderem zum einen möglich, AD-Snapshots auf Knopfdruck zu erstellen und zum anderen, zwei AD-Snapshots miteinander zu vergleichen. Dabei kann jedoch ein AD-Snapshot weder mit der aktuellen AD-Datenbank, noch mit mehreren AD-Snapshots gleichzeitig verglichen werden! Was das Erstellen und verwalten eines AD-Snapshots mit dem ADExplorer betrifft, gestaltet sich das mit dem Tool bemerkenswert einfacher als mit NTDSUTIL!
Zum Erstellen eines AD-Snapshots startet man den ADExplorer und trägt im Feld Connect to den DC ein mit dem eine Verbindung hergestellt werden soll. In den Feldern User und Password gibt man die entsprechenden Benutzerdaten ein. Führt man stattdessen den ADExplorer direkt auf einem DC aus, muss keins der Felder ausgefüllt werden. Dann verbindet sich der ADExplorer automatisch mit dem DC auf dem es ausgeführt wird und verwendet die Benutzerinformationen, mit dem das Tool gestartet wurde. Nach dem sich der ADExplorer mit dem DC, genauer mit der AD-Datenbank verbunden hat, klickt man entweder in der Symbolleiste auf das Diskettensymbol oder im Menü unter File auf Create Snapshot… um eine Momentaufnahme der AD-Datenbank zu erstellen. Im Feld Specify the path to the snapshot file muss der Pfad inklusive des Dateinamen angegeben werden, in dem das AD-Snapshot erstellt werden soll. Bei dem Dateinamen ist zwingend darauf zu achten, dass die Dateiendung DAT lautet. Zusätzlich kann im Feld Enter an optional description for the snapshot eine Beschreibung angegeben werden, was aber nicht zwingend ist.

Die DAT-Datei die erstellt wurde kann nun auf ein anderes System, das keine Verbindung zur produktiven Umgebung hat transportiert und von dort aus mit dem ADExplorer analysiert werden. Das ist auf der einen Seite zwar ein wesentlicher Vorteil gegenüber NTDSUTIL, hat aber auch auf der anderen Seite einen gravierenden Nachteil! Das AD-Snapshot das mit NTDSUTIL erstellt wurde benötigt die Verbindung zur produktiven Umgebung, um die Momentaufnahme rekonstruieren zu können. Somit kann das AD-Snapshot nicht einfach kopiert und irgendwohin transportiert werden. Das AD-Snapshot das mit dem ADExplorer erstellt wurde benötigt hingegen keine Verbindung zur produktiven Umgebung und befindet sich in genau einer DAT-Datei. Das stellt natürlich ein hohes Sicherheitsrisiko dar! Deshalb ist bei den AD-Snapshots die mit dem ADExplorer erstellt wurden die gleiche Sicherheit zu gewähren, wie der physikalische Zugriff auf DCs oder den Datensicherungen!
Um auf ein AD-Snapshot (die DAT-Datei) zuzugreifen, startet man den ADExplorer, wählt die Option Enter the path of a previous snapshot to load aus und trägt den Pfad zur DAT-Datei ein oder navigiert dorthin. Ist man mit dem ADExplorer bereits mit dem produktiven AD verbunden, kann man sich zusätzlich mit ein oder mehreren AD-Snapshots (nacheinander) unter File - Connect… verbinden. Das eignet sich ideal für das schnelle überprüfen von vorherigen Datenbeständen. Hat man z.B. bei ein oder mehreren Objekten in der produktiven Umgebung Werte versehentlich verändert, kann man mit dem ADExplorer nachschauen welche Werte vorher eingetragen waren, in dem man sich mit dem produktiven AD und einem AD-Snapshot verbindet.
Das Löschen eines AD-Snapshots das mit dem ADExplorer erstellt wurde gestaltet sich ebenfalls einfacher als mit der NTDSUTIL-Variante. Es muss lediglich die DAT-Datei vom Dateisystem gelöscht werden.
Möchte man zwei AD-Snapshots miteinander vergleichen, startet man den ADExplorer mit der Option Enter the path of a previous snapshot to load und gibt das Quell-AD-Snapshot an. Anschließend wählt man im Menü Compare - Compare Snapshot… und gibt im Feld Select an archive to compare to das Ziel-AD-Snapshot an. Sollen nur ausgewählte Klassen und bestimmte Felder bzw. Attribute miteinander verglichen werden, so muss man diese in den beiden unteren Bereichen auswählen.

Mit einem Klick auf Compare werden beide AD-Snapshots verglichen und wenn unterschiede vorhanden sind, werden diese angezeigt.
AD Explorer
Das Directory Service Comparison Tool (DSCT)
Ein weiteres nützliches Werkzeug, das mehr Funktionen als der ADExplorer bietet ist das DSCT. Die Beschreibung zu dem Tool sowie den Download findet man auf der folgenden Seite:
Directory Service Comparison Tool 2.0 B3
Fazit
Die AD-Snapshots sind eine hervorragende Technik, die die AD-Sicherung sowie -Wiederherstellung ergänzt. Zum Wiederherstellen von AD-Informationen muss der DC nicht erst im Modus Verzeichnisdienste wiederherstellen gestartet werden. Die Wiederherstellung kann im laufenden Betrieb, ohne Beeinträchtigung, mit der AD-Snapshot Funktion erfolgen. Auch für das Vergleichen verschiedener Datenbestände eignet sich diese Technik. Außerdem können aus einem AD-Snapshot gezielt (einzelne) Werte exportiert und in die produktive Umgebung importiert werden. Gerade ab Windows Server 2008 R2 mit dem AD-Papierkorb und der bestehenden AD-Sicherung rundet diese Technik die AD-Wiederherstellung ab! Denn mit dem aktivierten AD-Papierkorb können zwar gelöschte Objekte ohne Datenverlust wiederhergestellt werden, nicht jedoch einzelne Werte. Dazu eignet sich ein AD-Snapshot.
Weitere Informationen: Der Active Directory-Papierkorb im Windows Server 2008 R2 Active Directory Wiederherstellung Der Container Deleted Objects
Wer für die Administration von Gruppenrichtlinien in einem Windows Netzwerk zuständig ist, der sollte und wird die Gruppenrichtlinien-Verwaltungskonsole (auf Englisch: Group Policy Management Console, kurz GPMC) kennen. Installiert man sich unter Windows XP und Windows Server 2003 die GPMC das separat heruntergeladen werden muss, stehen einem 32 Skripte im Verzeichnis %PROGRAMFILES%\GPMC\Scripts zur Verfügung. Mit diesen GPMC-Skripts kann man viele alltägliche Gruppenrichtlinien-Aufgaben leicht und automatisiert durchführen. Viele Gruppenrichtlinien-Administratoren werden diese Skripte zu schätzen wissen.
Doch mit Vista und Windows Server 2008 stehen die GPMC-Skripte erst mal nicht zur Verfügung. Die GPMC steht zwar ab Vista nach der Installation der Remote Server Administration Tools (RSAT) und unter Windows Server 2008, erst nach Aktivierung der Gruppenrichtlinienverwaltung in den Features weiterhin zur Verfügung, doch die GPMC Skripte fehlen hingegen. Stattdessen stellt Microsoft die GPMC Skripte als separaten Download für Vista und Windows Server 2008 zur Verfügung. Nach der Installation stehen die GPMC Skripte in gewohnter Weise zur Verfügung.
GPMC Sample Scripts
Unter Windows 7 und Windows Server 2008 R2 steht die GPMC ohne die GPMC Skripte in den RSAT auch zur Verfügung. Es gibt jedoch keinen separaten Download der GPMC Skripte für Windows 7 und Windows Server 2008 R2. Aber die GPMC Skripte für Vista und Windows Server 2008 lassen sich auch unter Windows 7 und Windows Server 2008 R2 weiterhin nutzen. Wer allerdings für die Administration der Gruppenrichtlinien zukunftsorientiert sein möchte, der nutzt die PowerShell! Microsoft stellt 25 Cmdlets allein für Gruppenrichtlinien bereit, mit denen weitestgehend die gleichen Administrationsaufgaben durchgeführt werden können wie mit den GPMC Skripts. Die GPO Cmdlets die in der Zukunft erweitert werden, sind die Nachfolger der GPMC Skripts.
Damit die 25 GPO Cmdlets zur Verfügung stehen, müssen diese zuerst mit dem PowerShellbefehl Import-Module GroupPolicy geladen werden. Das Laden der GPO Cmdlets muss sowohl in der AD-PowerShell, als auch in der Windows PowerShell v2 durchgeführt werden. Man kann sich natürlich ein PowerShell-Profil erstellen, damit beim Starten der AD-/PowerShell die GPO Cmdlets beim Öffnen der PowerShell Konsole automatisch geladen werden. Nach dem Import kann man sich die folgenden 25 GPO Cmdlets mit Get-Command *-GP* anzeigen lassen. Startet man dagegen die Konsole Windows PowerShell Modules, wird beim Starten der Konsole unter anderem automatisch das GPO-Modul geladen.
Die 25 GPO Cmdlets sind:
- Backup-GPO: Mit diesem Cmdlet sichert man das angegebene Gruppenrichtlinienobjekt (GPO) oder alle Gruppenrichtlinienobjekte in einer angegebenen Domäne in ein Sicherungsverzeichnis. Dabei muss das Sicherungsverzeichnis bereits existieren.
- Copy-GPO: Dieses Cmdlet erstellt eine neue GPO und kopiert die Einstellungen aus der Quell-GPO in die neue GPO. Mit diesem Cmdlet kann eine GPO aus einer Domäne in eine andere Domäne innerhalb der gleichen Gesamtstruktur kopiert werden.
- Get-GPInheritance: Informationen zur Gruppenrichtlinienvererbung für eine angegebene Domäne oder Organisationseinheit kann man sich mit diesem Cmdlet ausgeben lassen.
- Get-GPO: Eine bestimmte GPO oder alle GPOs innerhalb einer Domäne kann man sich mit diesem Cmdlet anzeigen lassen.
- Get-GPOReport: Hiermit wird ein Bericht im XML- oder HTML-Format generiert, in dem die Eigenschaften und Richtlinieneinstellungen für eine angegebene GPO oder für alle GPOs einer Domäne angezeigt werden. Dieses Cmdlet eignet sich ideal zu Dokumentationszwecken. Möchte man alle Richtlinieneinstellungen aller GPOs innerhalb der Domäne in eine HTML Datei exportieren, so gilt es diesen Befehl auszuführen: Get-GPOReport -All -Domain <Domäne.de> -ReportType HTML -Path C:\GPOReport\GPOReport.html. Das Zielverzeichnis muss bereits existieren, sonst erhält man eine Fehlermeldung.
- Get-GPPermissions: Die Berechtigungen für einen oder mehrere Sicherheitsprinzipale kann man mit diesem Cmdlet in der angegebenen GPO abrufen.
- Get-GPPrefRegistryValue: Dieses Cmdlet zeigt eine oder mehrere Registrierungseinstellungen die unterhalb der Computerkonfiguration oder der Benutzerkonfiguration in einer GPO getätigt wurden an.
- Get-GPRegistryValue: Bei diesem Cmdlet werden eine oder mehrere registrierungsbasierte Richtlinieneinstellungen aus der Computerkonfiguration oder der Benutzerkonfiguration in einer GPO abgerufen.
- Get-GPResultantSetOfPolicy: Mit diesem Cmdlet kann man die Richtlinienergebnissatz-Informationen für einen Benutzer, einen Computer oder für beide in eine Datei im HTML- oder XML-Format ausgeben lassen.
- Get-GPStarterGPO: Ein bestimmtes oder alle Starter-GPOs werden mit diesem Cmdlet angezeigt.
- Import-GPO: Dieses Cmdlet importiert die Einstellungen aus einer gesicherten GPO in die angegebene Ziel-GPO. Dabei kann sich das Ziel-GPO in einer anderen Domäne oder in einer anderen Gesamtstruktur befinden als die Sicherungs-GPO und muss vorher nicht existieren.
- New-GPLink: Eine GPO wird auf eine Organisationseinheit (OU), einen AD-Standort oder auf die Domäne mit diesem Cmdlet verlinkt.
- New-GPO: Eine neue GPO wird mit diesem Cmdlet erstellt.
- New-GPStarterGPO: Mit diesem Cmdlet wird eine neue Starter-GPO erstellt.
- Remove-GPLink: Dieses Cmdlet entfernt eine GPO-Verklinkung von einer OU, einem AD-Standort oder von der Domäne.
- Remove-GPO: Eine GPO wird mit samt allen Verlinkungen, mit diesem Cmdlet gelöscht.
- Remove-GPPrefRegistryValue: Eine oder mehrere Registrierungseinstellungen werden aus der Benutzerkonfiguration oder Computerkonfiguration innerhalb einer GPO mit diesem Cmdlet entfernt.
- Remove-GPRegistryValue: Um eine oder mehrere Registrierungsbasierte Richtlinieneinstellungen aus der Benutzerkonfiguration oder Computerkonfiguration innerhalb einer GPO zu entfernen, muss dazu dieses Cmdlet verwendet werden.
- Rename-GPO: Mit diesem Cmdlet kann man eine GPO umbenennen bzw. der GPO einen anderen Anzeigenamen zuweisen. Dabei bleibt die GUID der umbenannten GPO erhalten.
- Restore-GPO: Dieses Cmdlet stellt eine GPO-Sicherung in der Domäne wieder her, in der sie ursprünglich gespeichert wurde. Ist die ursprüngliche Domäne oder die GPO nicht mehr in der Domäne vorhanden, tritt ein Fehler auf.
- Set-GPInheritance: Die Vererbung einer GPO kann mit diesem Cmdlet deaktiviert werden. Oder die Deaktivierung der Vererbung für eine angegebene OU oder Domäne lässt sich ebenfalls mit diesem Cmdlet aufheben.
- Set-GPLink: Die Eigenschaften einer GPO-Verknüpfung lassen sich mit diesem Cmdlet festlegen.
- Set-GPPermissions: Die Berechtigungen einer GPO oder für alle GPOs innerhalb einer Domäne lassen sich mit diesem Cmdlet bearbeiten.
- Set-GPPrefRegistryValue: Dieses Cmdlet konfiguriert eine Registrierungseinstellung unter der Benutzerkonfiguration oder der Computerkonfiguration in einer GPO.
- Set-GPRegistryValue: Mit diesem Cmdlet konfiguriert man eine oder mehrere registrierungsbasierte Richtlinieneinstellungen unter der Benutzerkonfiguration oder der Computerkonfiguration in einer GPO.
Die Hilfe zu jedem einzelnen Cmdlet lässt sich mit Get-Help <Cmdlet> -Full anzeigen. Also z.B.: Get-Help Get-GPOReports -Full.
Auch an dieser Stelle zeigt sich: Die Zukunft spricht PowerShell! 
Weitere Informationen: Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008 AD-PowerShell Befehle
Befinden sich alle Benutzer die alle aus einer bestimmten Gruppe entfernt werden sollen in der gleichen OU, so kann man alle Benutzer in einem Schritt mit dem folgenden AD-PowerShell Befehl aus der Gruppe entfernen:
$Benutzer = Get-ADUser -Filter * -Searchbase "OU=<Benutzer>,DC=Domäne,DC=de" Remove-ADGroupMember -identity <Gruppe> -Member $Benutzer -Confirm:0
Befinden sich in der OU in der sich die Benutzer befinden auch Benutzer, die nicht Mitglied der entsprechenden Gruppe sind, schlägt der Befehl fehl.
Wenn sich alle Benutzer die Mitglied der Gruppe "Consultants" sind in der OU "IT" befinden, so lautet der Befehl wie folgt:
$Benutzer = Get-ADUser -Filter * -Searchbase "OU=IT,DC=Domäne,DC=de" Remove-ADGroupMember -identity Consultants -Member $Benutzer -Confirm:0
Dabei spielt es weder eine Rolle um welchen Gruppenbereich es sich dabei handelt (Global, Lokal (in Domäne), Universal), noch ob es sich um eine Sicherheits- oder Verteilergruppe handelt.
Weitere Informationen: AD-PowerShell Befehle
Das Active Directory (AD) stets zu pflegen, ist eines der Aufgaben eines AD-Administrators. Mit der Zeit entstehen Leichen was die Computerkonten im AD betrifft. Clients die verschrottet wurden, sind vorher nicht aus der Domäne entfernt worden. Aber auch wenn Clients oder Mitgliedsserver aus der Domäne entfernt und zu einer Arbeitsgruppe (AG) hinzugefügt werden, wird nicht automatisch das Computerkonto im AD gelöscht. Es wird lediglich deaktiviert und bleibt im AD bestehen. Im Nachgang muss dann das Computerkonto manuell entfernt werden.
State oft the Art löscht man die Computerkonten mit der AD-PowerShell. Weitere Möglichkeiten findet man im folgenden Artikel:
Computerkonto löschen
# Alle deaktivierten Computerkonten, also alle Computer (Clients und Mitgliedsserver) die aus der Domäne entfernt und in eine AG hinzugefügt oder manuell deaktiviert wurden, werden mit diesem Befehl angezeigt: Search-ADAccount -AccountDisabled -ComputersOnly | Sort-Object | FT Name -A
Sollen die deaktivierten Computerkonten aus einer bestimmten Organisationseinheit (OU) angezeigt werden, so gilt es diesen Befehl zu verwenden: Search-ADAccount -AccountDisabled -Searchbase “OU=<OU>,DC=Domäne,DC=de” -ComputersOnly | Sort-Object | FT Name -A
# Alle deaktivierten Computerkonten werden auf Nachfrage, nacheinander mit diesem Befehl gelöscht: Search-ADAccount -AccountDisabled -ComputersOnly | Sort-Object| Remove-ADComputer
Deaktivierte Computerkonten aus einer bestimmten OU werden auf Nachfrage mit diesem Befehl entfernt: Search-ADAccount -AccountDisabled -Searchbase “OU=<OU>,DC=Domäne,DC=de” -ComputersOnly | Sort-Object| Remove-ADComputer
Sollen alle deaktivierten Computerkonten auf einmal ohne Nachfrage gelöscht werden, so muss der Parameter „-Confirm:“ mit dem Wert „$False“ mit angegeben werden. Sprich: Search-ADAccount –AccountDisabled -ComputersOnly | Remove-ADComputer -Confirm:$False
Ohne Nachfrage werden die deaktivierten Computerkonten aus einer OU wie folgt gelöscht: Search-ADAccount –AccountDisabled -Searchbase “OU=<OU>,DC=Domäne,DC=de” -ComputersOnly | Remove-ADComputer -Confirm:$False
# Alle Computer die sich seit 180 Tagen nicht am AD angemeldet haben werden mit dem folgenden Befehl angezeigt. Damit der Parameter AccountInactive verwendet werden kann, muss sich jedoch der Domänenfunktionsmodus mindestens auf der Ebene “Windows Server 2003” befinden: Search-ADAccount -AccountInactive –Timespan 180 –ComputersOnly | Sort-Object | FT Name -A
Möchte man sich alle Computer aus einer bestimmten OU anzeigen, die sich seit 180 Tagen nicht mehr am AD angemeldet haben, so sieht der Befehl folgendermaßen aus: Search-ADAccount -AccountInactive –Timespan 180 -Searchbase “OU=<OU>,DC=Domäne,DC=de” –ComputersOnly | Sort-Object | FT Name -A
Gelöscht werden die Computerkonten dann wie folgt: Search-ADAccount -AccountInactive –Timespan 180 -ComputersOnly | Remove-ADComputer -Confirm:$False
Aus einer bestimmten OU werden die Computerkonten so entfernt: Search-ADAccount -AccountInactive –Timespan 180 -Searchbase “OU=<OU>,DC=Domäne,DC=de” -ComputersOnly | Remove-ADComputer -Confirm:$False
# Alle Computer die seit dem 01.01.2010 inaktiv sind und sich nicht mehr am AD angemeldet haben, werden wie folgt angezeigt: Search-ADAccount -AccountInactive -DateTime "01.01.2010" –ComputersOnly | Sort-Object | FT Name -A
Alle Computer aus einer bestimmten OU, die sich seit dem 01.01.2010 nicht mehr am AD angemeldet haben, werden so angezeigt: Search-ADAccount -AccountInactive -DateTime "01.01.2010" -Searchbase “OU=<OU>,DC=Domäne,DC=de” –ComputersOnly | Sort-Object | FT Name -A
Alle Computerkonten die sich seit dem 01.01.2010 nicht mehr am AD angemeldet haben, lassen sich dann mit diesem Befehl löschen: Search-ADAccount -AccountInactive -DateTime "01.01.2010" –ComputersOnly | Remove-ADComputer -Confirm:$False
Die Computer einer bestimmten OU, die seit dem 01.01.2010 inaktiv sind, werden wie folgt gelöscht: Search-ADAccount -AccountInactive -DateTime "01.01.2010" -Searchbase “OU=<OU>,DC=Domäne,DC=de” –ComputersOnly | Remove-ADComputer -Confirm:$False
Weitere Informationen: Das Erstellungsdatum eines AD-Objekts mit der AD-PowerShell abfragen AD-PowerShell Befehle
Zwei wichtige IDs eines Domänencontrollers (DC) sind der DC GUID (Globaly Unique Identifier) und der Datenbank GUID. Beide IDs sind wichtige Bestandteile bei der AD-Replikation. Mit dem Kommandozeilenbefehl Repadmin /Showrepl <DC> kann man sich beide IDs anzeigen lassen. Gibt man den <DC> nicht an, wird der Befehl gegen den DC ausgeführt, auf dem man den Repadmin Befehl ausführt. Führt man den Befehl auf einem Windows Server 2003 DC aus, so erhält man diese Ausgabe auf dem ersten DC einer Gesamtstruktur:

Auf einem Windows Server 2008 R2 DC sieht das Ergebnis auf dem ersten DC wie folgt aus:

Jeder DC besitzt eine eindeutige DC GUID innerhalb einer Gesamtstruktur, der auch als Directory Service Agent GUID (kurz DSA-GUID) bekannt ist. Mit der DC GUID der im Attribut objectGUID gespeichert ist, wird der DC in der Gesamtstruktur identifiziert. Dabei spielt es auch keine Rolle in welcher Domäne sich der DC innerhalb einer Gesamtstruktur befindet. Der DC GUID eines DCs ist in der Gesamtstruktur einmalig und ändert sich solange der DC existiert (im Gegensatz zu der invocationId) niemals! Es sei denn, der DC wird zuerst herunter- und anschließend wieder zum DC heraufgestuft. Denn der DC GUID eines DCs wird beim heraufstufen eines Servers zu einem DC erstellt und beim herunterstufen eines DCs entfernt. Natürlich ist das manuelle bearbeiten des DC GUIDs ebenso nicht möglich, weil das Attribut objectGUID system-only ist. Das Attribut objectGUID findet man in den Eigenschaften des „NTDS Settings“ Objekts unterhalb des entsprechenden DC-Objekts in der Konfigurationspartition und ist als ein Oktett-String gespeichert. Der LDAP-Pfad zum “NTDS Settings” Objekt lautet: CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne.
Die objectGUID wird unter anderem auch dazu verwendet, um die Reihenfolge der DCs einer ringförmigen Replikationstopologie zu bestimmen und ist außerdem bei der Wahl des Bridgeheadservers eines AD-Standorts von Bedeutung. Damit der DC für seine Replikationspartner erreichbar ist, erstellt dieser mit der objectGUID in der Forward Lookup Zone _msdcs.Root-Domäne im DNS einen CNAME Eintrag.
Beim heraufstufen eines Servers zu einem DC wird der AD-Datenbank (NTDS.dit) ebenfalls eine GUID zugeordnet, die als Datenbank GUID bezeichnet wird. Diese GUID wird dazu verwendet, um die AD-Datenbank eines DCs bei einem Replikationsaufruf zu identifizieren. Bei der Datenbank GUID handelt es sich um das Attribut invocationId und befindet sich so wie die objectGUID ebenfalls in der Konfigurationspartition, in den Eigenschaften des NTDS Settings Objekts eines DCs im LDAP-Pfad: CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne. Auch die invocationId wird wie die objectGUID beim heraufstufen eines Servers zu einem DC erstellt und beim herunterstufen eines DCs entfernt. Replikationspartner nutzen die invocationId und die Update Sequence Number (USN) um die aktuellen Änderungen für die AD-Replikation zu bestimmen.
Die invocationId des ersten DCs mit dem die Gesamtstruktur erstellt wurde, hat den gleichen Wert wie die objectGUID. Bei allen weiteren DCs einer Gesamtstruktur werden unterschiedliche Werte in den beiden Attributen objectGUID und invocationId gespeichert.
Im Gegensatz zur objectGUID ändert sich die invocationId wenn:
- eine neue Anwendungsverzeichnispartition erstellt wird. Oder wenn eine bestehende Anwendungsverzeichnispartition entfernt und erneut erstellt wird.
- der DC mit einer gültigen Sicherung und einer unterstützten Rücksicherungsmethode (supportet von Microsoft!) rückgesichert wird. Eine gültige Sicherung ist eine Sicherung die mit einer Sicherungssoftware durchgeführt wurde, dass das entsprechende API des Betriebssystems verwendet und somit das AD in Kenntnis setzt, dass eine Sicherung durchgeführt wurde. Nur wenn eine gültige und somit eine supportete Sicherung mindestens vom System State durchgeführt wird, erspart man sich je nach Umgebung größeren Schaden im Fall einer Rücksicherung! Ab Windows Server 2003 SP1 kann man mit dem Kommandozeilenbefehl Repadmin /Showbackup überprüfen, ob eine Verzeichnispartition jemals supportet gesichert wurde.
Eine unterstützte Rücksicherung findet in Abstimmung mit der AD-Replikation statt. Denn nur wenn das AD durch eine ordnungsgemäß durchgeführte System State Sicherung und einer supporteten Rücksicherungsmethode rückgesichert wird, erhält die invocationId auf dem rückgesicherten DC einen neuen Wert. Dadurch erkennen alle anderen DCs, dass die Metadaten für die AD-Replikation zu dem rückgesicherten DC hinfällig sind und das die AD-Replikation ab dem durchgeführten Sicherungsdatum mit dem der DC rückgesichert wurde, neu aufgebaut und durchgeführt werden muss. Einige Sicherungsprogramme (bis Windows Server 2003 NTBACKUP und ab Windows Server 2008 Wbadmin, ARCServe…) führen eine ordnungsgemäße Sicherung und Rücksicherung des System States durch und darauf kommt es an!
Das entscheidende bei der Rücksicherung ist nun mal, dass die invocationId einen neuen Wert erhalten muss! Das ist genau der Nachteil bei Image-Programmen. Beim klassischen Imagen zieht man sich eine eins zu eins Kopie des DCs. Sollte es nun zum Rückspielen des Images kommen, erhält die invocationId keinen neuen Wert und somit erfahren je nach Umgebung die Replikationspartner auch nicht, dass ein DC rückgesichert wurde und das die Replikation mit dem rückgesicherten DC neu aufgebaut werden muss. Beim rücksichern eines Images schafft man sich ein USN Rollback, was je nach Fall zu einem größeren Schaden für die AD-Umgebung bedeutet! Im günstigsten Fall hätte man sich lediglich den zurück-geimageten DC zerstört. Diesen müsste man dann gewaltsam herunterstufen und anschließend die Metadaten des AD bereinigen (siehe weiterführende Informationen). Im ungünstigsten Fall hätte man mindestens doppelte RIDs verteilt, nicht mehr gültige Computerkontokennwörter und keine funktionierende AD-Replikation mit diesem DC mehr!
Wenn eine unterstützte Rücksicherung stattgefunden hat, wird der nicht mehr gültige Wert aus dem Attribut invocationId in das Attribut retiredReplDSASignatures (das sich ebenfalls im NTDS Settings Objekt eines DCs befindet) gesetzt.
Auch eine IFM (Install from Media) Installation eines DCs kommt einer Rücksicherung eines DCs gleich. Denn bei einer IFM-Installation wird der Wert aus dem Attribut invocationId das von der Sicherung stammt, in das Attribut retiredReplDSASignatures auf dem neuen DC geschrieben. Der Grund dafür ist, wenn ein Verbindungsobjekt für die Replikation erstellt wird, überprüft der neue DC sein Attribut retiredReplDSASignatures um festzustellen ob das Attribut einen Wert enthält, der mit den invocationIds im Up-To-Dateness Vector (UTDV) des Ziel-DCs übereinstimmt. Durch diese Vorgehensweise ist sichergestellt, dass nur eine Teilmenge der AD-Datenbank, nämlich nur die Änderungen die ab der Sicherung durchgeführt wurden repliziert wird.
Durch die ausschließlich ordnungsgemäß durchgeführte Sicherung und der Rücksicherungsmethode wird ein USN Rollback und somit Schaden verhindert! Wenn man sich nicht sicher ist ob das eingesetzte Sicherungsprogramm eine unterstützte Sicherung sowie Rücksicherung durchführt, sollte man ein klärendes Telefonat mit dem Hersteller führen. Von ungültigen Sicherungsmethoden wie das Rücksichern eines Images, VM-Images und VM-Snapshots (mindestens auf Servern die transaktionale Datenbanken bereitstellen wie ein DC, Exchange und SQL) sollte man stets Abstand halten und wird seitens Microsoft auch nicht supportet!
Auf einem DC ist es Pflicht mindestens das System State zu sichern und das kann man bereits mit Windows-Bordmittel (NTBACKUP, Wbadmin) durchführen!
Weiterführende Informationen: Domänencontroller-Installation von einer Sicherung Images als Sicherung? Das Active Directory gewaltsam vom DC entfernen Die Metadaten des Active Directory unter Windows Server 2008 bereinigen Der RID-Master und sein RID-Pool Lingering Objects (veraltete Objekte) How to detect and recover from a USN rollback in Windows Server 2003 How To Convert a String Formatted GUID to a Hexadecimal String Form For Use When Querying the Active Directory
Der Distinguished Name (DN) der einzelnen Verzeichnispartitionen die auf einem Domänencontroller (DC) gespeichert sind, werden in den folgenden Attributen gespeichert. Diese Attribute gehören zur nTDSDSA-Objektklasse und befinden sich in den Eigenschaften des „NTDS Settings“ Objekts des jeweiligen DCs. Zu finden ist das Objekt in diesem LDAP-Pfad: CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne.
Die im Verlauf dieses Artikels verwendeten Abfragen werden unter anderem über alle AD-Standorte hinweg durchgeführt. Möchte man die Abfrage auf einen bestimmten AD-Standort eingrenzen, so muss im Filter der gewünschte AD-Standort mit angegeben werden. Also anstatt "CN=Sites,CN=Configuration,DC=Root-Domäne" muss es dann so lauten: "CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne".
In welchen Attributen ist die Information gespeichert, welche Verzeichnispartitionen sich auf einem DC befinden?
hasMasterNCs = In diesem mehrwertigen (multivalue) Attribut werden die DNs der beschreibbaren Verzeichnispartitionen die sich auf einem DC befinden gespeichert. Diese sind standardmäßig die Schema-, Konfigurations- und Domänenpartition. In diesem Attribut werden aber keine Anwendungsverzeichnispartitionen gespeichert, wie z.B. die beiden DNS-Partitionen ForestDNSZones sowie DomainDNSZones. Auf RODCs enthält dieses Attribut logischerweise keinen Wert, da auf einem RODC keine beschreibbaren Verzeichnispartitionen gespeichert sind da der RODC auf alle Verzeichnispartitionen lediglich das Leserecht besitzt!
hasPartialReplicaNC = In diesem mehrwertigen Attribut werden die DNs der Domänenpartitionen aus den anderen Domänen innerhalb einer Gesamtstruktur gespeichert, die sich auf einem DC befinden. Das Attribut enthält nur dann einen Wert, wenn zum einen mehr als eine Domäne in der Gesamtstruktur existiert und zum anderen, auf dem DC der globale Katalog (GC) aktiviert wurde! Da ein GC lediglich das Leserecht auf die Domänenpartitionen aus anderen Domänen hat, sind in diesem Attribut die DNs der Domänenpartitionen worauf ausschließlich das Leserecht besteht gespeichert. Da man auf einem RODC auch den GC aktivieren kann, werden bei der Abfrage nach diesem Attribut auch RODCs angezeigt.
msDS-HasDomainNCs = In diesem einwertigen (single-value) Attribut das erst ab Windows Server 2003 existiert, wird der DN der Domänenpartition die sich auf einem DC befindet gespeichert. RODCs verwenden ebenfalls dieses Attribut und werden demzufolge auch bei Abfragen mit angezeigt.
msDS-hasFullReplicaNCs = In diesem mehrwertigen Attribut das nur von einem RODC genutzt wird, sind die DNs der Verzeichnispartitionen: Schemapartition, Konfigurationspartition, Domänenpartition (in der sich der RODC befindet) sowie den beiden DNS-Anwendungsverzeichnispartitionen DomainDNSZones und ForestDNSZones gespeichert.
msDS-hasMasterNCs = In diesem mehrwertigen Attribut werden sämtliche DNs der beschreibbaren Verzeichnispartitionen die sich auf einem DC befinden gespeichert. Standardmäßig enthält das Attribut ab Windows Server 2003 die DNs der folgenden Verzeichnispartitionen: Schemapartition, Konfigurationspartition, Domänenpartition sowie die beiden Anwendungsverzeichnispartitionen DomainDNSZones (der eigenen Domäne) und ForestDNSZones. Da ein RODC keine beschreibbaren Verzeichnispartitionen vorhält, erscheinen bei der Abfrage nach diesem Attribut demzufolge auch keine RODCs!
Welche beschreibbaren Verzeichnispartitionen sind auf einem DC gespeichert?
Um herauszufinden welche beschreibbaren Verzeichnispartitionen auf einem DC gespeichert sind, sollte eine Abfrage nach dem Attribut msDS-hasMasterNCs erfolgen.
Mit der AD-PowerShell
$ADSI = [ADSI]"LDAP://<DC>:389/CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne" $ADSI."msDS-hasMasterNCs"
Oder mit diesem AD-PowerShell Befehl:
Get-ADObject -LDAPFilter “(&(objectClass=nTDSDSA)(msDS-hasMasterNCs=*))“ -Searchbase "CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne" -Properties msDS-hasMasterNCs -SearchScope Subtree | Select msDS-hasMasterNCs | % {write $_."msDS-hasMasterNCs"}
Mit LDP
Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN das „NTDS Settings“ Objekt des entsprechenden DCs in der Konfigurationspartition angeben. Also: CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (&(objectClass=nTDSDSA)(msDS-hasMasterNCs=*)). Als Suchbereich sollte die Option „Unterstruktur“ ausgewählt und im Feld Attribute msDS-hasMasterNCs angegeben werden.
Mit Dsquery
dsquery * "CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne" -attr msDS-hasMasterNCs
Alle Verzeichnispartitionen einer Gesamtstruktur anzeigen
Die Verzeichnispartitionen einer Gesamtstruktur sind standardmäßig:
-
die Schemapartition (wird auf alle DCs innerhalb einer Gesamtstruktur repliziert, egal in welcher Domäne sie sich befinden).
-
die Konfigurationspartition (wird auf alle DCs innerhalb einer Gesamtstruktur repliziert, egal in welcher Domäne sie sich befinden).
-
die jeweilige Domänenpartition (wird auf alle DCs innerhalb der jeweiligen Domäne repliziert). Wenn sich mehrere Domänen in der Gesamtstruktur befinden, werden alle Domänenpartitionen aufgelistet.
-
die Anwendungsverzeichnispartition ForestDNSZones (wird auf alle DCs innerhalb einer Gesamtstruktur repliziert, egal in welcher Domäne sie sich befinden).
-
die Anwendungsverzeichnispartition DomainDNSZones der jeweiligen Domäne (wird auf alle DCs innerhalb der jeweiligen Domäne repliziert). Existieren mehrere Domänen in einer Gesamtstruktur und wurde die Forward Lookup Zone der entsprechenden Domäne in der DomainDNSZones-Partition gespeichert, werden alle DomainDNSZones-Anwendungsverzeichnispartitionen aufgelistet.
Alle Verzeichnispartitionen einer Gesamtstruktur mit der AD-PowerShell abfragen
Get-ADObject -LDAPFilter "(objectCategory=crossRef)" -Properties * -Searchbase "CN=Partitions,CN=Configuration,DC=Root-Domäne" | ? {$_.systemFlags -band 5} –SearchScope OneLevel | Select ncName
Oder mit dieser AD-PowerShell Abfrage
Get-ADObject -LDAPFilter "(&(objectCategory=crossRef)(systemflags:1.2.840.113556.1.4.804:=5))" -Properties * -Searchbase "CN=Partitions,CN=Configuration,DC=Root-Domäne" -SearchScope OneLevel | Select ncName
Mit LDP
Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN den Partitions Container in der Konfigurationspartition angeben. Also: CN=Partitions,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (&(objectCategory=crossRef)(systemFlags:.12.840.113556.1.4.803:=5)). Als Suchbereich sollte die Option „Eine Ebene“ ausgewählt und im Feld Attribute ncName angegeben werden.
Mit Dsquery
dsquery * "CN=Partitions,CN=Configuration,DC=Root-Domäne" -Filter "(&(objectCategory=crossRef)(systemFlags:1.2.840.113556.1.4.804:=5))" -Scope OneLevel -attr ncName
Alle beschreibbaren DCs und die Verzeichnispartitionen anzeigen, die jeweils auf den DCs gespeichert sind
Mit der AD-PowerShell
Get-ADObject -LDAPFilter "(objectClass=nTDSDSA)" -Properties msds-hasMasterNCs -Searchbase "CN=Sites,CN=Configuration,DC=Root-Domäne" | Select distinguishedName,msDS-hasMasterNCs | FT –A -Wrap
Mit LDP
Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN den Sites Container in der Konfigurationspartition angeben. Also: CN=Sites,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (objectClass=nTDSDSA). Als Suchbereich sollte die Option „Unterstruktur“ ausgewählt und im Feld Attribute distinguishedName;msDS-hasMasterNCs angegeben werden.
Mit Dsquery
dsquery * "CN=Sites,CN=Configuration,DC=Root-Domäne" -Filter "(ob jectclass=nTDSDSA)" -attr distinguishedName msds-hasMasterNCs -Limit 0 > C:\Temp\dsquery.txt
Alle Anwendungsverzeichnispartitionen einer Gesamtstruktur anzeigen
Alle Anwendungsverzeichnispartitionen die in einer Gesamtstruktur existieren, standardmäßig sind das ab Windows Server 2003 die beiden DNS-Anwendungsverzeichnispartitionen DomainDNSZones und ForestDNSZones, werden mit der folgenden AD-PowerShell Abfrage angezeigt. Existieren mehrere Domänen in der Gesamtstruktur die mindestens unter Windows Server 2003 betrieben werden, wird für jede Domäne die DNS-Anwendungsverzeichnispartition DomainDNSZones angezeigt.
AD-PowerShell
Get-ADObject -LDAPFilter "(&(objectCategory=crossRef)(systemflags:1.2.84 0.113556.1.4.803:=5))" -Properties * -Searchbase "CN=Partitions,CN=Configuration ,DC=Root-Domäne" -SearchScope OneLevel | Select dnsRoot | FT
Auch mit diesem AD-PowerShell Befehl lassen sich alle Anwendungsverzeichnispartitionen einer Gesamtstruktur Anzeigen:
Get-ADObject -LDAPFilter "(objectCategory=crossRef)" -Searchbase "CN=Partitions,CN=Configuration,DC=Root-Domäne" -Properties * -SearchScope OneLevel | Where {$_.systemFlags -band 4} | Select dnsRoot
Mit LDP
Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN den Partitions Container in der Konfigurationspartition angeben. Also: CN=Partitions,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (&(objectCategory=crossRef)(systemFlags:.12.840.113556.1.4.803:=5)). Als Suchbereich sollte die Option „Eine Ebene“ ausgewählt und im Feld Attribute dnsRoot angegeben werden.
Mit Dsquery
Mit Dsquery werden alle Anwendungsverzeichnispartitionen einer Gesamtstruktur mit dieser Kommandozeilenabfrage angezeigt:
dsquery * "CN=Partitions,CN=Configuration,DC=Root-Domäne" -Filter "(&(objectCategory=crossRef)(systemflags:1.2.840.113556.1.4.803:=5))" -Scope OneLevel -attr dnsRoot
Welche Anwendungsverzeichnispartitionen sind auf einem DC gespeichert?
Um sich die Anwendungsverzeichnispartitionen die auf einem bestimmten DC gespeichert sind anzuzeigen, gilt es eines der folgenden Abfragen durchzuführen. Standardmäßig werden ab Windows Server 2003 die beiden DNS-Partitionen ForestDNSZones und DomainDNSZones (der jeweiligen Domänen) angezeigt.
Mit der AD-PowerShell
Get-ADObject -LDAPFilter "(&(objectcategory=crossRef)(systemFlags:1.2.840.113556.1.4.803:=5)(msds-NC-Replica-Locations=CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne))" –Properties * -Searchbase "CN=Partitions,CN=Configuration,DC=Root-Domäne" -SearchScope OneLevel | Select dnsRoot
Oder mit diesem AD-PowerShell Befehl:
Get-ADObject -LDAPFilter "(&(objectCategory=crossRef)(msds-NC-Replica-Locations=CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne))" -Properties * -Searchbase "CN=Partitions,CN=Configuration,DC= Root-Domäne" -SearchScope OneLevel | Where {$_.systemFlags -band 5} | Select dnsRoot
Mit LDP
Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN den Partitions Container in der Konfigurationspartition angeben. Also: CN=Partitions,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (&(objectcategory=crossRef)(systemFlags:1.2.840.113556.1.4.803:=5)(msds-NC-Replica-Locations=CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne)). Als Suchbereich sollte die Option „Eine Ebene“ ausgewählt und im Feld Attribute dnsRoot angegeben werden.
Mit Dsquery
dsquery * "CN=Partitions,CN=Configuration,DC=Root-Domäne" -Scope OneLevel -attr dnsRoot -Filter "(&(objectcategory=crossRef)(systemFlags:1.2.840.113556.1.4.803:=5)(msds-NC-Replica-Locations=CN=NTDS Settings,CN=<DC>,CN=Servers,CN=<AD-Standort>,CN=Sites,CN=Configuration,DC=Root-Domäne))"
Auf welchen beschreibbaren DCs ist die Anwendungsverzeichnispartition ForestDNSZones gespeichert?
Mit dem folgenden AD-PowerShell Befehl werden alle DCs angezeigt, auf denen die ForestDNSZones-Partition gespeichert ist. Dabei spielt es auch keine Rolle, an welchem AD-Standort sich die DCs befinden.
Get-ADObject -LDAPFilter "(&(objectClass=nTDSDSA)(msDS-hasMasterNCs=DC=ForestDNSZones,DC=Root-Domäne))" -Searchbase "CN=Sites,CN=Configuration,DC=Root-Domäne" -SearchScope Subtree | Select distinguishedName | FT
Mit LDP
Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN den Sites Container in der Konfigurationspartition angeben. Also: CN=Sites,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (&(objectClass=nTDSDSA)(msDS-hasMasterNCs=DC=ForestDNSZones,DC=Root-Domäne)). Als Suchbereich sollte die Option „Unterstruktur“ ausgewählt und im Feld Attribute distinguishedName angegeben werden.
Mit Dsquery
dsquery * "CN=Sites,CN=Configuration,DC=Root-Domäne" -Filter "(&(objectClass=nTDSDSA)(msDS-hasMasterNCs=DC=ForestDNSZones,DC=Root-Domäne))" -Scope Subtree -attr distinguishedName
Auf welchen beschreibbaren DCs ist die Anwendungsverzeichnispartition DomainDNSZones gespeichert?
Um die DCs abzufragen auf denen die DNS-Partition DomainDNSZones gespeichert ist, gilt es den folgenden AD-PowerShell Befehl auszuführen. Die DomainDNSZones Verzeichnispartition wird jeweils nur innerhalb der Domäne repliziert.
Get-ADObject -LDAPFilter "(&(objectClass=nTDSDSA)(msDS-hasMasterNCs=DC=DomainDNSZones,DC=Domäne))" –Properties * -Searchbase "CN=Sites,CN=Configuration,DC=Root-Domäne" -SearchScope Subtree | Select distinguishedName | FT -A –Wrap
Mit LDP
Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN den Sites Container in der Konfigurationspartition angeben. Also: CN=Sites,CN=Configuration,DC=Root-Domäne. Als Filter gilt es diesen zu verwenden: (&(objectClass=nTDSDSA)(msDS-hasMasterNCs=DC=DomainDNSZones,DC=Domäne)). Als Suchbereich sollte die Option „Unterstruktur“ ausgewählt und im Feld Attribute distinguishedName angegeben werden.
Mit Dsquery
dsquery * "CN=Sites,CN=Configuration,DC=Root-Domäne" -Filter "(&(objectClass=nTDSDSA)(msDS-hasMasterNCs=DC=DomainDNSZones,DC=Domäne))" -Scope Subtree -attr distinguishedName
Einfache Abfrage mit DNSCMD
Eine andere einfache Variante um zu überprüfen ob auf einem bestimmten DC die beiden DNS-Anwendungsverzeichnispartitionen gespeichert sind, stellt das DNS-Kommandozeilentool dnscmd dar. Die Abfrage in einer Kommandozeile die auch domänenübergreifend funktioniert lautet so:
Dnscmd <DC> /EnumDirectoryPartitions
Weitere Informationen: Die unterschiedliche Größe der AD-Datenbank Domänencontroller vergleichen
Mit Windows Server 2008 führte Redmond den Read Only Domänencontroller (kurz RODC) ein. Der RODC der für Außenstellen die eine geringe bis keine physikalische Sicherheit den Servern bieten können konzipiert wurde, ist ein Domänencontroller (DC) der ausschließlich einen lesenden Zugriff auf die Active Directory-Domänendienste (AD DS) hat. Der RODC kann keine Änderungen in den AD DS und im AD-integrierten DNS vornehmen (RODNS). Clients oder Applikationen die einen Lesezugriff auf die AD DS benötigen erhalten Zugriff auf den RODC, während Clients oder Applikationen die einen Schreibvorgang in die AD DS durchführen wollen, diesen nicht auf dem RODC durchführen können sondern vom RODC an einen beschreibbaren DC verwiesen werden.
Der RODC besitzt ein vollständiges Replikat der AD-Datenbank, mit allen Attributen und Objekten die sich auch auf einem beschreibbaren DC befinden. Neben dem Unterschied das der RODC lediglich das Leserecht auf die AD-Datenbank hat, werden im Gegensatz zu einem beschreibbaren DC standardmäßig auch keine Benutzer- oder Computeranmeldeinformationen auf dem RODC gespeichert, außer das eigene Computerkonto sowie ein besonderes krbtgt-Konto für diesen RODC. Damit die Anmeldeinformationen der entsprechenden Benutzer-, Computer- und Dienstkonten auf dem RODC gespeichert werden können, muss das explizit in der Kennwortreplikationsrichtlinie (Password Replication Policy, kurz PRP) auf einem beschreibbaren DC gestattet werden, damit der RODC Authentifizierungs- und Dienstticketanforderungen eigenständig verarbeiten kann. Mit der Kennwortreplikationsrichtlinie wird bestimmt, ob die Anmeldeinformationen eines Benutzer- oder Computerkontos von einem beschreibbaren DC auf den RODC repliziert werden können.
Weitere Informationen zum RODC bekommt man in den folgenden beiden Artikeln:
Read-Only Domain Controller (RODC) Die Installation eines RODC
Der gefilterte Attributsatz vom RODC
Diverse Applikationen könnten die AD-Domänendienste als Datenspeicher verwenden und sensible Daten darin speichern. Oder evtl. möchte man einfach nicht, dass bestimmte Daten von Benutzern (z.B. die Adressdaten oder die Personalnummer) auf einen RODC repliziert werden. Natürlich sollen diese kritischen Daten ebenfalls geschützt sein und nicht auf einem RODC gespeichert werden, falls der RODC kompromittiert, gestohlen oder die Sicherheit gefährdet wird. Und für genau diesen Anwendungstyp gibt es den gefilterten Attributsatz. Der gefilterte Attributsatz (auf Englisch: Filtered Attribute Set, kurz FAS) ist ein dynamischer Attributsatz, die nie auf einen RODC in der Gesamtstruktur repliziert werden da sie sensible oder vertrauliche Daten enthalten. Der gefilterte Attributsatz kann aber erst ab Windows Server 2008 konfiguriert werden.
Damit ein Attribut das wichtige Daten enthält nicht auf einen RODC repliziert wird, sollten die folgenden Schritte durchgeführt werden:
-
Das entsprechende Attribut sollte zu dem gefilterten Attributsatz (FAS) hinzugefügt werden. Damit wird verhindert, dass das Attribut an die RODCs in der Gesamtstruktur repliziert wird. Die Konfiguration des gefilterten Attributsatzes betrifft die Gesamtstruktur und kann nicht pro Domäne konfiguriert werden!
-
Des Weiteren sollte das Attribut als vertraulich gekennzeichnet werden. Dies ist eine weitere Sicherheitseinstellung das konfiguriert werden sollte, wenn man nicht möchte das ein sensibles Attribut zu einem RODC repliziert werden soll! Ein Attribut wird als vertraulich gekennzeichnet, in dem die Leseberechtigung für das entsprechende Attribut für die Gruppe Authentifizierte Benutzer entfernt wird. Somit können diese Attribute von den Mitgliedern der Gruppe Authentifizierte Benutzer (das betrifft alle Benutzer- sowie Computerkonten, inklusive RODCs) nicht mehr gelesen werden. Auch die Konfiguration eines vertraulichen Attributs betrifft die Gesamtstruktur und kann nicht pro Domäne konfiguriert werden! Doch bevor ein Attribut als vertraulich gekennzeichnet wird, sollte der Vorgang in einer Testumgebung ausgiebig getestet werden!
-
Der Gesamtstrukturfunktionsmodus sollte sich aus Sicherheitsgründen mindestens auf Windows Server 2008 befinden. Denn die Attribute die sich im gefilterten Attributsatz befinden, werden nur von DCs die mindestens unter Windows Server 2008 laufen berücksichtigt! Windows Server 2003 DCs ignorieren die Konfiguration das ein Attribut geschützt ist und replizieren die Attribute die sich in dem gefilterten Attributsatz befinden trotzdem auf einen RODC. Die Domänenpartition in der sich der RODC befindet wird zwar erst ab einem beschreibbaren Windows Server 2008 DC auf den RODC repliziert, doch wenn auf dem RODC der globale Katalog (ROGC) aktiviert wird, baut sich eine eigene Replikationstopologie für die Replikation des GCs auf. Existieren in der Gesamtstruktur noch weitere Domänen mit Windows Server 2003 GCs in denen ebenfalls ein gefilterter Attributsatz konfiguriert wurde, ist es durchaus möglich das ein Windows Server 2003 GC den gefilterten Attributsatz aus seiner Domäne zu einem RODC repliziert.
-
Das Hinzufügen eines systemkritischen Attributs zum gefilterten Attributsatz ist nicht möglich! Ein systemkritisches Attribut ist ein Attribut, das z.B. für die ordnungsgemäße Funktion der AD DS oder für das Kerberos-Authentifizierungsprotokoll benötigt wird. Erst wenn in den Eigenschaften des entsprechenden Attributs im Attribut schemaFlagsEx, das aus einer Bitmaske besteht, das Flag FLAG_ATTR_IS_CRITICAL aktiviert ist, handelt es sich um ein systemkritisches Attribut. Dieses Flag existiert aber erst seit Windows Server 2008 und Windows Server 2003 DCs würden diese Einstellung ignorieren. Daher ist es umso mehr wichtig, dass sich nicht nur der Schemamaster auf mindestens einem Windows Server 2008 DC, sondern der Gesamtstrukturfunktionsmodus sich zwingend im Modus Windows Server 2008 oder höher befindet. Denn wäre der Schemamaster ein Windows Server 2003 DC, würde sich ein systemkritisches Attribut dem gefilterten Attributsatz scheinbar erfolgreich hinzufügen lassen. Aber da ein Windows Server 2003 DC die Konfiguration eines gefilterten Attributsatzes sowieso nicht kennt, sollte in einer Gesamtstruktur in der ein gefilterter Attributsatz genutzt wird ein Windows Server 2003 DC ohnehin nicht mehr existieren!
Die technische Umsetzung wie ein Attribut zum gefilterten Attributsatz hinzugefügt wird, findet wie folgt statt
-
Um ein Attribut zum gefilterten Attributsatz hinzuzufügen und somit die Replikation des entsprechenden Attributs zu einem RODC zu verwehren, muss im zu schützenden Attribut das zehnte Bit (also Bit 9) im searchFlags Attribut gesetzt werden. Im searchFlags Attribut kann unter anderem bestimmt werden, dass ein Attribut zum gefilterten Attributsatz hinzugefügt wird und das es vertraulich ist. Im searchFlags Attribut das aus einer Bitmaske besteht, muss im zehnten Bit als Wert in Hexadezimal 0x200 und in Dezimal 512 eingetragen werden. Anschließend wird das entsprechende Attribut zu keinem RODC in der Gesamtstruktur repliziert.
-
Im Attribut searchFlags liegt auch das Geheimnis, warum ein Windows Server 2003 DC die Attribute im gefilterten Attributsatz nicht berücksichtigt. Denn das zehnte Bit, also Bit 9 in searchFlags ist erst mit Windows Server 2008 und der Einführung des RODCs hinzugekommen.
-
Soll ein Attribut zum gefilterten Attributsatz hinzugefügt werden, sollte es auch als vertraulich deklariert werden. Als vertraulich deklariert und somit die Leseberechtigung den Authentifizierten Benutzern entzogen, wird ein Attribut durch das Setzen des achten Bits (Bit 7) ebenfalls im searchFlags Attribut. Dieses Flag kam mit Windows Server 2003 SP1 hinzu. Daher sollte darauf geachtet werden, dass wenn mit diesem Flag Attribute als vertraulich definiert werden, alle DCs in der Gesamtstruktur mindestens unter Windows Server 2003 SP1 installiert sind. Alle älteren Serverversionen ignorieren die Kennzeichnung als vertraulich! Im achten Bit des searchFlags Attributs muss als Wert in Hexadezimal 0x080 und in Dezimal 128 eingetragen werden.
-
Demnach erhält also searchFlags als Wert 640 in Dezimal (in Hexadezimal 0x280), damit zum einen das gewünschte Attribut zum gefilterten Attributsatz hinzugefügt und zum anderen, als vertraulich definiert wird. Trägt man als Wert 641 ein, wird zugleich das Attribut indiziert. Sollten bereits andere Flags im searchFlags Attribut konfiguriert sein, müssen die Werte addiert werden!
Den gefilterten Attributsatz abfragen
Standardmäßig befinden sich die folgenden Attribute ab Windows Server 2008 im gefilterten Attributsatz:
ms-FVE-KeyPackage
ms-FVE-RecoveryPassword
ms-PKI-AccountCredentials ms-PKI-DPAPIMasterKeys ms-PKI-RoamingTimeStamp
ms-TPM-OwnerInformation
Um die Attribute die sich im gefilterten Attributsatz befinden abzufragen, muss eine Abfrage nach dem Attribut searchFlags mit dem Wert 512 (das zehnte Bit in searchFlags) durchgeführt werden.
Die Abfrage mit der AD-PowerShell könnte wie folgt lauten
Get-ADObject -LDAPFilter "(objectClass=attributeSchema)" -Searchbase "CN=Schema,CN=Configuration,DC=Root-Domäne" -Properties searchFlags | Where {$_.searchFlags -band 512} | Select Name,searchFlags | Sort Name | FT -Autosize -Wrap
Auch mit diesem AD-PowerShell Befehl lassen sich die gefilterten Attribute anzeigen:
Get-ADObject -LDAPFilter "(&(ObjectClass=attributeSchema)(searchFlags:1.2.840.113556.1.4.803:=512))" -SearchBase “CN=Schema,CN=Configuration,DC=Root-Domäne” -SearchScope Subtree | Select Name | Sort Name | FT -Autosize -Wrap
Mit LDP lässt sich der gefilterte Attributsatz folgendermaßen anzeigen
Nach dem man sich in LDP mit einem DC verbunden und an das AD gebindet hat, muss man unter Durchsuchen - Suchen als Basis-DN die Schemapartition und als Filter (searchFlags:1.2.840.113556.1.4.803:=512) angeben.

Weitere Informationen: How to mark an attribute as confidential in Windows Server 2003 Service Pack 1 Anhang D: Schritte zum Hinzufügen eines Attributs zu einem Attributsatz mit RODC-Filter Search-Flags Attribute
Bevor der erste Server, der mit einem neueren Serverbetriebssystem installiert ist als die bereits bestehenden Domänencontroller (DCs) einer Gesamtstruktur, als DC zur Gesamtstruktur hinzugefügt werden kann, muss vorher zwingend mit dem Active Directory Preparation Tool (ADPREP) das Active Directory-Schema aktualisiert werden. Erst nachdem ADPREP ausgeführt wurde, kann der neue Server als DC zur Gesamtstruktur hinzugefügt werden. Dabei muss ADPREP stets von der CD/DVD ausgeführt werden, mit dem der neue Server installiert wurde. Möchte man also einen Windows Server 2008 oder Windows Server 2008 R2 in eine Windows 2000 bzw. Windows Server 2003 Gesamtstruktur hinzufügen, so muss das ADPREP von der Windows Server 2008 bzw. Windows Server 2008 R2 DVD ausgeführt werden.
ADPREP muss aber nur dann ausgeführt werden, wenn der Server mit dem neueren Serverbetriebssystem zum DC gestuft werden soll! Wird der neue Server lediglich als Mitgliedsserver zur Domäne hinzugefügt, so muss das ADPREP nicht ausgeführt werden.
Soll der Server, der mit einem neuerem OS (Operating System = Betriebssystem) installiert ist als die existierenden DCs, zu einer bestehenden Domäne als zusätzlicher DC hinzugefügt werden, muss zuerst ADPREP /FORESTPREP auf dem Schemamaster und anschließend ADPREP /DOMAINPREP /GPPREP auf dem Infrastrukturmaster in der Domäne ausgeführt werden, zu der der neue Server als DC hinzugefügt werden soll.
Wird jedoch mit dem neuen Server eine neue Subdomäne in einer bestehenden Gesamtstruktur erstellt, muss lediglich das ADPREP /FORESTPREP ausgeführt werden. Das ADPREP /DOMAINPREP /GPPREP muss und kann in diesem Szenario nicht ausgeführt werden, da es keine zu aktualisierende Domäne gibt. Schließlich wird mit dem neuen DC erst eine (weitere) Subdomäne erstellt.
Weitere Details beschreibt der folgende Artikel:
Das Active Directory Preparation Tool - ADPREP
Fehler die beim Ausführen von ADPREP auftreten können
- Wenn das Ausführen von ADPREP aus welchen Gründen auch immer fehl schlagen sollte, ist es empfehlenswert als erstes immer ins ADPREP-Protokoll zu schauen. Das ADPREP-Log wird im Verzeichnis %windir%\System32\Debug\Adprep\Logs erstellt und enthält einen detaillierten Bericht zur Domänen- und Gesamtstrukturvorbereitung.
-
Bevor der erste Server mit neuerem OS als die bereits existierenden DCs, als DC zur Gesamtstruktur hinzugefügt werden kann, muss zuerst das ADPREP /FORESTPREP in der Kommandozeile auf dem Schemamaster ausgeführt werden. Das Benutzerkonto mit dem dieser Befehl ausgeführt wird, muss Mitglied in den Gruppen Schema-Admins, Organisations-Admins und Domänen-Admins in der Domäne sein, in der sich der Schemamaster befindet. Wenn ADPREP /FORESTPREP auf dem Schemamaster mit den notwendigen Rechten ausgeführt wurde und es trotzdem zu einem Fehler führt, weil ADPREP keinen Kontakt zum Schemamaster herstellen konnte (in seltenen Fällen), sollte der Schemamaster zuerst auf einen anderen DC und erneut zurück verschoben werden. Anschließend ist der Befehl ADPREP /FORESTPREP nochmals auszuführen.
-
Befindet sich das Benutzerkonto beim ausführen von ADPREP hingegen nicht in den entsprechenden Gruppen, kommt es zu diesem Fehler: Adprep encountered a Win32 error. Error code: 0x5 Error message: Access is denied
Das Benutzerkonto muss zum ausführen von ADPREP /FORESTPREP Mitglied in den folgenden Gruppen sein:
- Schema-Admins - Organisations-Admins - Domänen-Admin in der Domäne, in der sich der Schemamaster befindet. Zum ausführen von ADPREP /DOMAINPREP /GPPREP muss das Benutzerkonto Mitglied in der Gruppe Domänen-Admins in der Domäne sein, in der dieser Befehl auf dem Infrastrukturmaster ausgeführt wird.
-
Kommt es beim ausführen von ADPREP /FORESTPREP zu diesem Fehler:
Es war Adprep nicht möglich, das Schema zu erweitern.
[Status/Folgen]
Der Schemamaster schloss einen Replikationszyklus nach dem letzten Neu-Start nicht ab. Der Schemamaster muss mindestens einen Replikationszyklus, bevor das Schema erweitert werden kann, abschließen.
[Benutzeraktion]
Überprüfen Sie, dass der Schemamaster mit dem Netzwerk verbunden ist, und mit anderen Domäne-Controllern kommunizieren kann…
liegt ein AD-Replikationsproblem vor. Es ist zwingend, dass zuerst das Replikationsproblem behoben wird, bevor das Ausführen von ADPREP erfolgreich durchgeführt werden kann. Einen ersten Ansatz zur Fehlersuche bei der AD-Replikation sollte neben dem Eventlog, auch das Schweizer Messer der AD-Replikation REPADMIN zum Vorschein bringen. Mit ausführen von Repadmin /Showreps bzw. Repadmin /Showrepl auf dem Schemamaster sieht man recht schnell, mit welchen DCs der Schemamaster nicht replizieren kann.
Wenn die DCs identifiziert wurden mit denen der Schemamaster nicht replizieren kann, sollte man versuchen sich per UNC auf die DCs zu verbinden. Bekommt man auf dem Schemamaster mit \\DC-Computername und \\FQDNdesDCs keine Verbindung zu den betroffenen DCs hin, liegt entweder ein Netzwerkproblem, ein DNS Problem, ein gebrochener sicherer Kanal (secure channel) oder ein Zeitunterschied von mindestens fünf Minuten zwischen den DCs vor. Gerade das DNS ist für eine AD-Umgebung von großer Bedeutung! Ein Ping sowohl auf die IP-Adresse als auch auf den Computernamen sollte von und zu den betroffenen DCs erfolgreich sein. Funktioniert ein Ping auf die IP-Adresse nicht, liegt höchstwahrscheinlich ein Netzwerkproblem vor. Es sollte der Weg vom Schemamaster zum betroffenen DC untersucht werden.
Funktioniert hingegen ein Ping auf den Computernamen oder FQDN des DCs nicht, liegt höchstwahrscheinlich ein DNS-Problem vor. In den TCP/IP-Einstellungen des DCs sollte ein zentraler DNS-Server als primärer DNS-Server eingetragen werden. Des Weiteren sollte in der Forward Lookup Zone überprüft werden, ob die SRV-Einträge existieren. Mit Repadmin /KCC <DC> sollte anschließend die eingehende Replikationstopologie auf den DCs neu berechnet werden.
-
Auch durch Schemakonflikte kann ADPREP Fehler verursachen. Wurden benutzerdefinierte Schemaänderungen vorgenommen oder Schemaänderungen durch Drittanbieterlösungen durchgeführt die mit einer Schemaaktualisierung durch ADPREP in Konflikt stehen, kann es ebenfalls zu Fehlern kommen. Die Fehler die angezeigt werden können darauf hindeuten, dass der Object Identifier (OID) nicht geändert wurde und somit keine neuen Klassen dem AD-Schema hinzugefügt werden können. Das Konfliktobjekt wird im ADPREP-Protokoll protokolliert. Wenn das Objekt das den Konflikt verursacht hat durch eine Drittanbieterlösung ins AD-Schema hinzugefügt wurde, sollte man sich für eine Lösung des Problems an den Hersteller wenden. Andernfalls sollte man sich an den (kostenpflichtigen) Microsoft Produkt Support Service (MS PSS) wenden. Ein weiterer Schemakonflikt könnte entstehen, wenn eine Verknüpfungskennung (Link Identifier) für ein Attribut durch eine Drittanbieterlösung bereits vergeben ist und ADPREP beim aktualisieren von bestehenden Attributen oder beim hinzufügen von neuen, dieselbe Verknüpfungskennung ebenfalls vergeben möchte. In diesem Fall sollte der MS PSS kontaktiert werden.
- Wenn beim ausführen von ADPREP /FORESTPREP der Fehler Adprep konnte wegen eines Fehlers der Rückruffunktion nicht abgeschlossen werden erscheint, ist der Schuldige der Virenscanner. Der Echtzeitscanner (On-Access) agiert im Hintergrund als Systemdienst und scannt unsichtbar alle Dateien, Programme und den Arbeitsspeicher. Hat der Echtzeitscanner eine Datei oder ein Verzeichnis im Zugriff worauf ebenfalls beim ausführen von ADPREP /FORESTPREP der Zugriff auf dieselben Dateien oder Verzeichnisse benötigt wird, erscheint diese Fehlermeldung. Wenn dieser Fehler erscheint, muss der Virenscanner deaktiviert und anschließend erneut ADPREP /FORESTPREP ausgeführt werden. Danach kann der Virenscanner aktiviert werden.
-
Die Fehlermeldung Adprep konnte wegen eines Fehlers der Rückruffunktion nicht abgeschlossen werden kann auch erscheinen, wenn ADPREP /DOMAINPREP /GPPREP ausgeführt wurde. Dann muss der Virenscanner zuerst deaktiviert und anschließend ADPREP /DOMAINPREP /GPPREP erneut ausgeführt werden. Oder wenn im ADPREP-Protokoll der Fehler Error 0x80070020 (Error_sharing_Violation) protokolliert wird, liegt das ebenso am Virenscanner. Das Deaktivieren des Virenscanners sollte auch in diesem Fall zum Erfolg führen.
Führt das deaktivieren des Virenscanners nicht zum Ziel, könnte es noch an den folgenden Ursachen liegen:
1. Der Registry-Eintrag HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\SYSVOL ist nicht vorhanden oder zeigt nicht auf das echte SYSVOL Verzeichnis %windir%\SYSVOL\sysvol. Wenn der Eintrag fehlt, muss ein REG_SZ Eintrag mit dem Pfad zum SYSVOL-Verzeichnis erstellt werden.
2. Die Default Domain Policy (die GUID ist {31B2F340-016D-11D2-945F-00C04FB984F9} ) und Default Domain Controllers Policy (die GUID ist {6AC1786C-016F-11D2-945F-00C04fB984F9} ) fehlen im SYSVOL Verzeichnis.
3. Im SYSVOL Verzeichnis fehlt das SCRIPTS Verzeichnis. 4. Der NTFS-Bereitstellungspunkt und/oder die Bereitstellungspunkte zwischen %windir%\SYSVOL\sysvol\domain und %windir%\SYSVOL existieren nicht (mehr). Sollten die Bereitstellungspunkte fehlen, so können diese mit dem Tool LINKD erneut gesetzt werden.
Die Befehle lauten:
LINKD %windir%\SYSVOL\SYSVOL\<DNS-Domänenname> %windir%\sysvol\domain LINKD %windir%\SYSVOL\staging areas\<DNS-Domänenname> %windir%\SYSVOL\staging\domain LINKD %windir%\SYSVOL\sysvol\<FQDN>
- Wenn ADPREP /FORESTPREP ausgeführt wurde, müssen die Änderungen zuerst auf den Infrastrukturmaster in der Domäne repliziert werden, in der der neue Server als zusätzlicher DC hinzugefügt werden soll. Erst dann kann mit Domänen-Admin Rechten der Befehl ADPREP /DOMAINPREP /GPPREP auf dem Infrastrukturmaster ausgeführt werden. Wurden die Änderungen noch nicht auf den Infrastrukturmaster repliziert oder wenn ADPREP /FORESTPREP nicht ausgeführt wurde, meldet das ADPREP /DOMAINPREP /GPPREP einen Fehler der darauf hinweist, dass die Gesamtstrukturweiten Informationen zuerst aktualisiert werden müssen.
- Der Domänenfunktionsmodus muss sich im einheitlichen Modus (Windows 2000 pur, Windows Server 2003 oder Windows Server 2008) befinden. Ansonsten schlägt das Ausführen von ADPREP /DOMAINPREP /GPPREP fehl!
Domänen- und Gesamtstrukturfunktionsmodus
-
Wenn ADPREP /RODCPREP mit Organisations- und Domänen-Admin Rechten auf einem Infrastrukturmaster ausgeführt wird, kann es zu folgendem Fehler kommen:
Adprep konnte kein Replikat für Partition DC=ForestDnsZones,DC=Root-Domäne erreichen. ADPREP hat einen LDAP-Fehler festgestellt. Fehlercode: 0x0. Erweiterter Server-Fehlercode: 0x0, Server-Fehlermeldung:(null).
und
Adprep konnte kein Replikat für Partition DC=DomainDnsZones,DC=Domäne,DC=de erreichen. ADPREP hat einen LDAP-Fehler festgestellt. Fehlercode: 0x0. Erweiterter Server-Fehlercode: 0x0, Server-Fehlermeldung:(null). Dann muss der Infrastrukturmaster den entsprechenden DNS-Anwendungsverzeichnispartition idealerweise auf den aktuellen Infrastrukturmaster der Domäne verschoben werden. Wie das vonstattengeht, beschreibt der folgende Artikel:
Die Infrastrukturmaster der Anwendungsverzeichnispartitionen
Weitere Informationen: Die FSMO-Rollen verschieben
Die Information wann ein AD-Objekt erstellt wurde, ist im einwertigen (single-valued) Attribut whenCreated gespeichert. Um also das Erstellungsdatum z.B. eines Domänen-Benutzers in Erfahrung zu bringen, muss eine Abfrage des Attributs whenCreated auf irgendeinem DC erfolgen, denn das Attribut whenCreated wird sowohl zwischen den Domänencontrollern (DCs), als auch in den globalen Katalog (GC) repliziert.
Um die Abfrage jedoch State of the Art durchzuführen, ist die Wahl des Werkzeugs die AD-PowerShell.
Andere Möglichkeiten um an diese Information zu kommen, werden im folgenden Artikel erläutert:
Erstellungsdatum eines Benutzerobjekts
Das Attribut whenCreated mit der AD-PowerShell abfragen
-
Wann ein bestimmter Benutzer erstellt wurde, erfährt man mit diesem Befehl:
Get-ADUser -Filter {sAMAccountName -eq "Yusuf"} -Properties whenCreated | Select Name,whenCreated,distinguishedName | FT -Autosize -Wrap
Oder mit diesem Befehl:
$user = [ADSI]"LDAP://CN=<Benutzer>,OU=<OU>,DC=Domäne,DC=de" $user.Get("whencreated")
Oder so: $User = Get-ADUser -Filter { sAMAccountName -eq "Yusuf" } -Properties whenCreated $User.whenCreated
-
Vor wie vielen Tagen ein bestimmter Benutzer erstellt wurde, erfährt man wie folgt: $Heute = Get-Date $Damals = Get-ADUser -Filter { Name -Like "Yusuf*" } -Properties whenCreated ($Heute - $Damals.whenCreated).Days
-
Alle Benutzer die in den letzten 90 Tagen erstellt wurden, lassen sich mit diesem AD-PowerShell Befehl anzeigen:
Get-ADUser -Filter * -Properties whenCreated | where { $_.whenCreated -gt (Get-Date).AddDays(-90) } | FT Name,whenCreated,distinguishedName -Autosize -Wrap
Eine andere Variante ist:
$Date = (Get-Date) - (New-Timespan -Days 90) Get-ADUser -Filter { whencreated -gt $Date } -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap
Oder diese Abfrage:
$VorvielenTagen = (Get-Date).AddDays(-90) Get-ADUser -Filter { whenCreated -gt $VorvielenTagen } -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap
Oder wie folgt: Get-ADUser -Filter * -Properties whenCreated | ? { ((Get-Date) - $_.whenCreated).Days -lt 90} | FT Name,whenCreated,Name,distinguishedName -Autosize -Wrap
-
Alle Benutzer die ab einem bestimmten Datum, in diesem Beispiel ab dem 01.01.2010 erstellt wurden, werden mit diesem AD-PowerShell Befehl angezeigt:
$Date = New-Object DateTime(2010,01,01,0,0,0) Get-ADUser -Filter { whenCreated -gt $date } -Properties whenCreated | Select Name,whenCreated,distinguishedName | FT -Autosize -Wrap
Oder mit diesem Befehl:
$Date = New-Object System.Datetime -ArgumentList @(2010,01,01,0,0,0) Get-ADUser -Filter { whenCreated -gt $date } -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap
Auch mit diesem Befehl werden alle Benutzer die ab dem 01.01.2010 erstellt wurden angezeigt: Get-ADUser -LDAPFilter "(&(objectCategory=person)(whenCreated>=20100101000000.0Z))" -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap
-
Alle Benutzer die bis vor 10 Tagen und früher erstellt wurden werden mit diesem Befehl angezeigt: $Date = Get-Date Get-ADUser -Filter * -Properties whenCreated | ? { ($date - $_.whenCreated).days -gt 10 } | FT Name,whenCreated,distinguishedName -Autosize -Wrap
-
Alle Benutzer die in einem bestimmten Zeitraum, hier zwischen dem 01.09.2009 und 30.09.2009 erstellt wurden, werden wie folgt angezeigt: $Anfang = Get-Date -Day 01 -Month 09 -Year 2009 -Hour 00 $Ende = Get-Date -Day 30 -Month 09 -Year 2009 -Hour 23 -Minute 59 Get-ADUser -Filter * -Properties whenCreated | ? { ($_.whenCreated -gt $Anfang) -and ($_.whenCreated -le $Ende) } | FT Name,whenCreated,distinguishedName -Autosize -Wrap
-
In den oben genannten AD-PowerShellbefehlen handelt es sich um Benutzerabfragen. Möchte man sich jedoch statt Benutzer --> Gruppen anzeigen lassen, so muss man lediglich in den Abfragen das Cmdlet Get-ADUser durch das Cmdlet Get-ADGroup ersetzen, mit dem man gezielt Gruppen abfragen kann.
Demnach sieht die Abfrage nach einer bestimmten Gruppe so aus:
Get-ADGroup -Filter {sAMAccountName -eq "ADConsultants"} -Properties whenCreated | Select Name,whenCreated,distinguishedName | FT -Autosize -Wrap
Die Abfrage welche Gruppen in den letzten 90 Tagen erstellt wurden lautet so:
Get-ADGroup -Filter * -Properties whenCreated | where { $_.whenCreated -gt (Get-Date).AddDays(-90) } | FT Name,whenCreated,distinguishedName -Autosize -Wrap
Und welche Gruppen ab dem 01.01.2010 erstellt wurden, werden wie folgt angezeigt: $Date = New-Object DateTime(2010,01,01,0,0,0) Get-ADGroup -Filter { whenCreated -gt $date } -Properties whenCreated | Select Name,whenCreated,distinguishedName | FT -Autosize -Wrap
-
Sollen hingegen Computer abgefragt werden, so muss das Cmdlet Get-ADComputer angegeben werden, anstelle vom Cmdlet Get-ADUser.
Alle Computerkonten die in den letzten 90 Tagen im AD erstellt wurden (wenn ein Client zur Domäne hinzugefügt wird), lassen sich mit diesem Befehl anzeigen:
Get-ADComputer -Filter * -Properties whenCreated | ? { ((Get-Date) - $_.whenCreated).Days -lt 90} | FT Name,whenCreated,Name,distinguishedName -Autosize -Wrap
Alle Computerkonten die ab dem 01.01.2010 im AD erstellt wurden abfragen:
Get-ADComputer -LDAPFilter "(&(objectCategory=person)(whenCreated>=20100101000000.0Z))" -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap
Alle Computerkonten die in einem bestimmten Zeitraum, hier zwischen dem 01.11.2009 und 30.11.2009 im AD erstellt wurden, werden wie folgt angezeigt: $Anfang = Get-Date -Day 01 -Month 11 -Year 2009 -Hour 00 $Ende = Get-Date -Day 30 -Month 11 -Year 2009 -Hour 23 -Minute 59 Get-ADComputer -Filter * -Properties whenCreated | ? { ($_.whenCreated -gt $Anfang) -and ($_.whenCreated -le $Ende) } | FT Name,whenCreated,distinguishedName -Autosize -Wrap
-
Oder wenn man Organisationseinheiten (OUs) anzeigen lassen möchte, muss man in den o.g. Befehlen Get-ADOrganizationalUnit angeben anstatt Get-ADUser.
Alle OUs die ab dem 01.01.2010 erstellt wurden, werden folgendermaßen angezeigt: $Date = New-Object System.Datetime -ArgumentList @(2010,01,01,0,0,0) Get-ADOrganizationalUnit -Filter { whenCreated -gt $date } -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap
-
Sollen hingegen alle und nicht nur bestimmte AD-Objekte angezeigt werden, so muss in den o.g. Befehlen das Cmdlet Get-ADObject angeben werden.
Alle AD-Objekte (Benutzer, Gruppen, Computer, OUs, Drucker etc.) die seit dem 01.01.2010 erstellt wurden, werden folgendermaßen angezeigt: Get-ADObject -LDAPFilter "(&(objectClass=*)(whenCreated>=20100101000000.0Z))" -Properties whenCreated | FT Name,whenCreated,distinguishedName -Autosize -Wrap
-
Möchte man statt den neu erstellten Objekten die geänderten Objekte abfragen, so muss statt whenCreated, das Attribut whenChanged abgefragt werden. Dazu muss in den o.g. Befehlen nur das Attribut whenCreated, durch das ebenfalls einwertige Attribut whenChanged ersetzt werden. Auch whenChanged wird zum einen zwischen den DCs und zum anderen in den GC repliziert.
Weitere Informationen: AD-PowerShell Befehle Die Active Directory-Attribute hinter den Feldnamen Gespeicherte Abfragen für dsa.msc Alle Gruppenmitgliedschaften eines Benutzers exportieren Den OS- und SP-Stand abfragen Wie finde ich heraus wo sich ein Objekt befindet? Die AD-Powershell im Windows Server 2008 R2
Dem Administrator steht seit Windows Server 2003 die gespeicherte Abfrage im Snap-In Active Directory-Benutzer und -Computer (dsa.msc) zur Verfügung. Mit dieser Funktion hat man die Möglichkeit, Suchanfragen zu speichern. Die gespeicherten Abfragen stehen dann für erneute Suchanfragen zu einem späteren Zeitpunkt zur Verfügung. Komplexe Abfragen müssen somit nicht jedesmal neu erstellt werden und können bei gleichbleibenden Bedingungen jedesmal genutzt werden. Mit einer gespeicherten Abfrage können auch benutzerdefinierte Abfragen erstellt werden, die einen LDAP-Suchfilter enthalten.
Alle erstellten Abfragen werden im Ordner Gespeicherte Abfragen gespeichert. Dort können sie bearbeitet und gelöscht werden. Die gespeicherten Abfragen werden jedoch nur in der MMC gespeichert, in der sie durchgeführt wurden und dort auch nur unter dem angemeldeten Benutzer. Fügt man die dsa.msc in eine neue MMC (Start-Ausführen-MMC) hinzu, kann dieses Snap-In als MSC-Datei mit samt den gespeicherten Abfragen gespeichert und auf einer anderen Maschine verwendet bzw. den IT-Kollegen zur Verfügung gestellt werden.
Die gespeicherten Abfragen kann man aber auch als XML-Datei exportieren und auf einer anderen Maschine importieren. Mit einem Rechtsklick auf die gespeicherte Abfrage kann aus dem Kontextmenü die Abfrage mit der Option Abfragedefinition exportieren… als XML-Datei exportiert werden. Auf einer anderen Maschine lässt sich anschließend mit einem Rechtsklick auf den Ordner Gespeicherte Abfrage oder auf einem selbst erstellen Ordner die Option Abfragedefinition importieren… auswählen, um danach die XML-Datei zu importieren.
In der folgenden ZIP-Datei sind 72 gespeicherte Abfragen, sortiert nach Benutzer-, Gruppen-, Computer-, Drucker und Exchange-Abfragen als XML-Datei gespeichert.
Gespeicherte-Abfragen.zip (55,66 KB)
Weitere Informationen: Wie finde ich heraus wo sich ein Objekt befindet? Die Active Directory-Attribute hinter den Feldnamen Active Directory - Abfrage AD-PowerShell Befehle
Den Security Descriptor (SD - die erweiterten Sicherheitseinstellungen) vom Container Deleted Objects, den es in der Domänen-, Konfigurations- sowie den beiden DNS-Anwendungsverzeichnispartitionen DomainDNSZones sowie ForestDNSZones gibt, kann man nicht so ohne weiteres abfragen bzw. auslesen.
Doch ab Windows Vista und Windows Server 2008 können mit LDP, das sich in den Remote Server Administration Tools (kurz RSAT) befindet, die Access Control Entries (ACEs) vom Deleted Objects Container angezeigt werden.
Nach dem man sich in LDP mit einem Domänencontroller verbunden und mit dem AD gebinded hat, trägt man unter Ansicht – Struktur entweder den Distinguished Name (DN) der Verzeichnispartition ein oder gibt direkt den LDAP-Pfad des Deleted Objects Container aus der gewünschten Verzeichnispartition an.
Anschließend ruft man mit einem Rechtsklick den Security Descriptor von Deleted Objects auf. Wie im Screenshot dargestellt muss man dazu auf Schwer – Sicherheitsbeschreibung klicken.

Im darauffolgenden Fenster muss bestätigt werden, dass man den SD von Deleted Objects aufrufen möchte.

Als Besitzer wird <null> angezeigt, was ein gewünschtes Verhalten ist. Denn bevor man sich die ACEs anzeigen lassen kann, muss man vorher die Besitzrechte von Deleted Objects übernehmen.

Gibt man im Feld „Besitzer“ z.B. nicht explizit den „Administrator“ (also den Domänen-Admin) an, wird als Besitzer die Gruppe „Domäne\Domänen-Admins“ für den Deleted Objects Container in der Domänenpartition eingetragen.

Nach der Besitzübernahme sieht man die eingetragenen ACEs. Es gibt lediglich zwei ACEs. Die Gruppe Builtin\Administratoren die das Leserecht besitzt und NT-AUTORITÄT\System, das den Vollzugriff besitzt.
Da in der Builtin\Administratoren Gruppe standardmäßig der Administrator und die beiden Gruppen „Domänen-Admins“ sowie „Organisations-Admins“ Mitglied sind, haben automatisch diese Konten das Leserecht auf den Container Deleted Objects. Selbstverständlich sollten nicht nur die bestehenden ACEs nicht verändert werden, sondern die gesamte Zugriffssteuerungsliste sollte nicht verändert und die Standardeinträge beibehalten werden.
Weitere Informationen: Der Container Deleted Objects Der Active Directory-Papierkorb im Windows Server 2008 R2
Neben dem CSVDE das seit Windows 2000 „on Bord“ existiert, kann mit der AD-PowerShell und einer Comma-Separated Value (CSV)-Datei ebenfalls ein Massenimport- sowie -export von Objekten durchgeführt werden. CSVDE steht bis einschließlich Windows Server 2003 nur auf einem Serverbetriebssystem zur Verfügung. Erst ab Windows Vista steht das CSVDE in den Remote Server Administration Tools (kurz RSAT) auf dem Client zur Verfügung. Doch auch unter Windows 2000 und Windows XP ist es möglich die Csvde.exe von einem Server aus dem Verzeichnis „%windir%\system32“ auf eine Admin-Workstation zu kopieren, um das Kommandozeilentool unter diesen beiden Clientversionen zu verwenden. Denn CSVDE steht weder im Adminpak, noch in den Windows Support Tools zur Verfügung.
Die AD-PowerShell steht ab Windows Server 2008 R2 sowie Windows 7 in den RSAT (Remote Server Administration Tools) zur Verfügung und kann ab Windows Server 2003 und Windows XP nachinstalliert werden.
Siehe: Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0, and BITS 4.0)
Mit der AD-PowerShell lässt sich ebenfalls eine CSV-Datei mit den Cmdlets Import-CSV sowie New-ADUser (für den Import von Benutzern) ins AD importieren und mit dem Cmdlet Export-CSV, Daten aus dem AD exportieren.
Der Vorteil eines Massenimports mit einer CSV-Datei ist, dass man sich die Datei mit den zu importierenden Objekten und Daten in Excel übersichtlich erstellen und als CSV-Datei speichern kann. Nach anschließender Überarbeitung der CSV-Datei kann dann der Import ins AD stattfinden. Auch der Export von vielen Objekten in eine CSV-Datei hat seine Vorteile. Die exportierte CSV-Datei lässt sich zur weiteren Bearbeitung in Excel importieren.
CSVDE und die AD-PowerShell können mit der Dateiendung CSV und TXT einen Im- sowie Export durchführen.
CSVDE zum Im- und Export verwenden
Mit CSVDE, das im Übrigen für Comma Separated Value Data Exchange steht, können Daten im kommaseparierten Format importiert sowie exportiert werden. CSVDE liest beim Import die Informationen aus einer Datendatei und erstellt anschließend AD-Objekte entsprechend den Anweisungen in der Datendatei. Es können jedoch keine bestehenden Objekte geändert werden. Nur das Hinzufügen von neuen Objekten ist möglich! Mit CSVDE können auch keine Benutzerkennwörter gesetzt werden.
Ist neben dem Im- oder Export das Ändern von bestehenden Objekten gewünscht, kann das neben der AD-PowerShell mit LDIFDE durchgeführt werden, das sich auch seit Windows 2000 standardmäßig auf einem Server befindet. LDIFDE kann zwar ebenfalls beim Import von neuen Benutzerobjekten keine Kennwörter setzen, doch dafür kann es Kennwörter von bestehenden Benutzerobjekten ändern, wenn vorher eine 128Bit SSL-Verbindung zum DC hergestellt wurde.
LDIFDE - LDAP Data Interchange Format Data Exchange
CSVDE kann beliebige Objekte, wie beispielsweise Organisationseinheiten (OU), Benutzer-, Gruppen- und Computerkonten ins AD importieren. Damit CSVDE seine Arbeit korrekt verrichtet, müssen alle notwendigen Parameter angegeben werden.
Die Parameter die für den Im- sowie Export gelten:
-c Dieser Parameter ersetzt bestimmte Daten der Datendatei. Hat man z.B. eine Datendatei zur Hand in der der Distinguished Name der Objekte angepasst werden muss, so hat man zwei Möglichkeiten: Entweder man nutzt im Editor (Notepad) die „Ersetzen…“ Funktion oder man verwendet diesen Parameter, ohne die Datei bearbeiten zu müssen. Die Eingabe würde so aussehen: „-c <DC=alte,DC=Domäne> <DC=neue,DC=Domäne>“. -f Mit diesem Parameter wird die Datei für den Im- bzw. Export angegeben. -j Wenn ein Im- oder Export aus welchen Gründen auch immer nicht funktioniert, sollte man diesen Parameter angeben, gefolgt von einem Pfad (z.B. „-j C:\“). Im Fehlerfall werden zwei Protokolldateien erstellt „csv.log“ und „csv.err“. Bei Erfolg wird lediglich die „csv.log“ erstellt. -s Mit diesem Parameter kann man gezielt einen DC angeben, der für den Im- oder Export verwendet werden soll. -v Bei der Angabe dieses Parameters wird der ausführliche Modus aktiviert. Es werden in der CMD mehr Informationen angezeigt. -t Dieser Parameter gibt den LDAP-Port an. Standardmäßig wird der LDAP-Port 389 verwendet. Möchte man aber Daten z.B. von einem globalen Katalog exportieren, so muss der Port 3268 angegeben werden. -u Umlaute in den zu exportierenden Daten werden mit diesem Parameter korrekt dargestellt. Dieser Parameter verwendet das Unicodeformat. csvde -? In gewohnter Windows Manier zeigt dieser Befehl die Hilfe zu CSVDE an.
Die relevanten Parameter für einen Import sind:
-f Mit diesem Parameter wird die Datei für den Import angegeben. -i Dieser Parameter aktiviert den Importmodus. Standardmäßig wird CSVDE ohne Angabe dieses Parameters im Export-Modus ausgeführt. -k Damit die Fehler „Beschränkungsverletzung“ und „Objekt ist bereits vorhanden“ beim Import ignoriert werden, gilt es diesen Parameter anzugeben.
Die relevanten Parameter für einen Export sind:
-d Dieser Parameter gibt den DN für den zu exportierenden LDAP-Pfad an. -f Mit diesem Parameter wird die Datei für den Export angegeben. -g Deaktiviert die seitenweise Suche. -l Die zu exportierenden Attribute werden mit diesem Parameter angeben (durch Komma getrennt). Dieser Parameter sollte nicht zusammen mit dem Parameter -i verwendet werden, da beide Parameter für andere Szenarien gedacht sind. -m Aktiviert die SAM-Logik beim Export. Mit diesem Parameter werden die Systemattribute wie z.B. ObjectGUID, objectSID und pwdLastSet nicht exportiert. Daher ist es sinnvoll stets diesen Parameter beim Export zu verwenden. Denn wenn die gleiche Datendatei zum Import verwendet werden soll, müssen ohnehin die Systemattribute aus der Datendatei entfernt werden, da ansonsten der Import fehlschlägt. -n Exportiert keine Binärwerte. -o Die Liste der Attribute (durch Komma getrennt), die beim Export ausgelassen werden sollen, werden mit diesem Parameter angegeben. -p Den Suchbereich (Base/OneLevel/SubTree) gibt man mit diesem Parameter an. -r Mit diesem Parameter gibt man den LDAP-Suchfilter an. Wird der Parameter nicht angegeben, nimmt CSVDE standardmäßig diesen Suchfilter "(objectClass=*)".
Einen Import mit CSVDE durchführen
Für den Import wird zuerst eine Dateidatei mit den zu importierenden Attributen sowie gewünschten Werten benötigt. Diese Datei lässt sich einfach und übersichtlich in Excel erstellen.
Für den erfolgreichen Import muss die Datendatei folgenden Bedingungen entsprechen:
-
-
Zwingende- und Mindestangaben für den Import von Benutzern und Gruppen sind: DN, objectClass und sAMAccountName. Für den Import von Organisationseinheiten (OUs) sind es die beiden Attribute DN und objectClass.
-
Die Reihenfolge in der die Attribute in der ersten Zeile angegeben werden, spielt keine Rolle.
-
Die Reihenfolge der Werte bzw. Feldinhalte ab der zweiten Zeile in der Datendatei, müssen allerdings mit der ersten übereinstimmen.
-
Sollen neben Benutzern auch Gruppen importiert werden, in denen die zu importierenden Benutzer Mitglied sein sollen, so müssen die Benutzereinträge vor den Gruppeneinträgen in der Datendatei enthalten sein. Oder wenn auch die OU importiert werden soll, in der die Benutzer und Gruppen erstellt werden sollen, so muss der Eintrag zum erstellen der OU ebenfalls vor den Benutzer- und Gruppenobjekten zuerst in der Datendatei enthalten sein. Beide Fälle sind in diesem Beispiel aufgeführt.
-
Wird ein Wert für ein angegebenes Attribut nicht eingetragen, muss es dennoch in der Datendatei durch ein Komma angegeben werden.
-
Systemattribute wie z.B. die ObjectSID oder ObjectGUID können nicht importiert werden. Wie es der Name „Systemattribute“ schon verrät, sind das Attribute die vom System vergeben werden.
-
Die Exceldatei könnte z.B. so aussehen:

-
Ist die Exceldatei fertiggestellt, muss diese als CSV-Datei abgespeichert werden. Dazu klickt man in Excel in der Menüleiste auf das Diskettensymbol oder verwendet das Tastaturkürzel „STRG + S“. Das Fenster „Speichern unter“ öffnet sich. Als Dateityp wählt man die Option „CSV (Trennzeichen-getrennt)(*.csv)“ aus und vergibt einen Dateinamen. Mit einem Klick auf Speichern folgt eine Warnung die darauf hinweist, dass der gewählte Dateityp keine Arbeitsmappen mit mehreren Blättern unterstützt und deshalb nur das aktuelle Blatt gespeichert wird. Mit einem Klick auf OK erscheint eine weitere Information die darauf hinweist, dass in der CSV-Datei Merkmale enthalten sein können, die mit „CSV (Trennzeichen-getrennt)“ nicht kompatibel sind. Mit einem Klick auf „Ja“ wird nun endlich die CSV-Datei gespeichert.
-
Nun muss die CSV-Datei mit dem „Editor“ (Notepad) noch bearbeitet werden. Mit einem Rechtsklick auf die CSV-Datei wählt man à Öffnen mit à Editor. Danach öffnet sich die CSV-Datei im Editor.

-
Als Trennzeichen verwendet Excel das Semikolon (;), das durch das Komma (,) ersetzt werden muss. Dies kann man am einfachsten, wenn man im Editor auf Bearbeiten – Ersetzen… klickt. Dort gibt man dann im Feld „Suchen nach“ das Semikolon an und im Feld „Ersetzen durch“ das Komma. Anschließend werden mit einem Klick auf „Alle ersetzen“ die Änderungen durchgeführt.
-
Werte die selbst ein Komma enthalten, müssen in Anführungszeichen (im Volksmund auch als „Gänsefüßchen“ bekannt) gesetzt werden. Das kann man ebenfalls durch die Ersetzen-Funktion im Editor durchführen. In diesem Beispiel müssen die Werte von DN, displayName und Member in Anführungszeichen gesetzt werden.

Vorsicht: Importiert man so wie in diesem Beispiel auch eine Gruppe in der ebenfalls die zu importierenden Benutzer Mitglied sein sollen, müssen die DNs der Benutzer zwingend durch eine Semikolon getrennt werden. Des Weiteren darf das Anführungszeichen nur am Anfang und am Ende der Einträge stehen. Also: „<DN Benutzer1>;<DN Benutzer2>;<DN Benutzer3>“.
-
Die fertige Datendatei sieht dann wie folgt aus:

-
Die gelben Markierungen in dem Beispiel kennzeichnen die Werte die Kommas enthalten und somit in Anführungszeichen gesetzt werden müssen und die roten Markierungen kennzeichnen die nicht enthaltenen Werte, die trotzdem durch ein Komma gesetzt werden müssen.
-
Zur Vollständigkeit, hier der komplette Inhalt der Datendatei:
DN,objectClass,givenname,sn,displayname,description,sAMAccountName,userPrincipalName,Member,groupType,userAccountControl "OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",organizationalUnit,,,,,,,,, "CN=Sabine Mueller,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Sabine,Mueller,"Mueller, Sabine",Festangestellte,sabine,sabine@ad2008r2.dikmenoglu.de,,,544 "CN=Klara Tolle,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Klara,Tolle,"Tolle, Klara",,Klara,Klara@ad2008r2.dikmenoglu.de,,,544 "CN=Simone Wagner,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Simone,Wagner,"Wagner, Simone",Aushilfe,Simone,Simone@ad2008r2.dikmenoglu.de,,,544 "CN=Maria Schmitt,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Maria,Schmitt,"Schmitt, Maria",,Maria,Maria@ad2008r2.dikmenoglu.de,,,544 "CN=Bettina Bauer,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Bettina,Bauer,"Bauer, Bettina",Befristet,Bettina,Bettina@ad2008r2.dikmenoglu.de,,,544 "CN=Andrea Schmidt,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Andrea,Schmitt,"Schmitt, Andrea",,Andrea,Andrea@ad2008r2.dikmenoglu.de,,,544 "CN=Sonja Neu,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Sonja,Neu,"Neu, Sonja",Praktikant,Sonja,Sonja@ad2008r2.dikmenoglu.de,,,544 "CN=Silke Vogt,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",user,Silke,Vogt,"Vogt, Silke",Festangestellte,Silke,Silke@ad2008r2.dikmenoglu.de,,,544 "CN=AD-Consultants,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",group,,,,,AD-Consultants,,"CN=Sabine Mueller,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de;CN=Silke Vogt,OU=NeueOU,DC=ad2008r2,DC=dikmenoglu,DC=de",-2147483644,
-
Die Datendatei kann dann mit diesem Befehl importiert werden: Csvde -i -f C:\Datendatei.txt Wenn beim Import ein Fehler auftritt, sollte man den Parameter -j verwenden damit die beiden Protokolldateien erstellt werden, um dann dem Fehler auf die Schliche zu kommen. Der Befehl würde dann so aussehen: Csvde -i –v -f C:\Datendatei.txt –j C:\
Mit dem Attribut userAccountControl den Kennwortstatus der zu importierenden Benutzer steuern
Gibt man beim Import von Benutzern das Attribut userAccountControl in der Datendatei nicht oder mit dem Wert 514 an, erhält man anschließend deaktivierte Benutzer im AD. Denn wie bereits anfangs in diesem Artikel erwähnt, kann CSVDE keine Kennwörter setzen, was zwingend notwendig ist um hinterher aktive Benutzer zu erhalten. Der Wert 512 im userAccountControl würde zwar aktive Benutzer erstellen, jedoch reicht dass alleine nicht aus, da auch hierbei kein Kennwort vergeben wird. Das Deaktivieren der Kennwortrichtlinie würde zwar den gewünschten Erfolg bringen, nämlich nach dem Import aktivierte Benutzer im AD zu erhalten, jedoch ist das in einer produktiven Umgebung keineswegs empfohlen! Das ist höchstens für eine Testumgebung zulässig!
Aber das Abschalten der Kennwortrichtlinie ist auch nicht notwendig. Bekanntlich besteht das userAccountControl aus einer Bitmaske, bestehend aus mehreren Flags. Kombiniert man zwei davon, erhält man nach dem Import aktivierte Benutzer ohne ein Kennwort vergeben zu haben!
Kombiniert man die beiden Flags:
|
NORMAL_ACCOUNT |
512 |
|
PASSWD_NOTREQD |
32 |
und trägt in der Datendatei als Wert für userAccountControl 544 ein (wie im o.g. Beispiel), erhält man aktive Benutzerkonten im AD!
Die Benutzer melden sich ohne ein Kennwort an und werden direkt aufgefordert ein neues Kennwort zu vergeben. Denn das userAccountControl mit dem Wert 544 in den Benutzerobjekten aktiviert die Kontooption „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“.
How to use the UserAccountControl flags to manipulate user account properties
Gruppen mit CSVDE importieren
Die Werte die in der Datendatei für einen Import von Gruppen zwingend angegeben werden müssen sind: DN,objectClass und sAMAccountName. Somit werden aber lediglich „globale Sicherheitsgruppen“ erstellt. Daher ist es ratsam noch das Attribut groupType anzugeben, um den „Gruppenbereich“ und „Gruppentyp“ zu bestimmen.
Der Import der Datendatei erfolgt mit diesem Befehl: Csvde -i -f C:\Gruppen.txt
Beispiele einer Datendatei zum Import von Gruppen
# Eine domänenlokale Sicherheitsgruppe importieren: DN,objectClass,sAMAccountName,groupType "CN=DLSG,OU=<OU>,DC=Domäne,DC=de",group,DLSG,-2147483644
# Eine globale Sicherheitsgruppe importieren: DN,objectClass,sAMAccountName „CN=GG1,OU=<OU>,DC=Domäne,DC=de“,group,GG1
Oder: DN,objectClass,sAMAccountName,groupType „CN=GG1,OU=<OU>,DC=Domäne,DC=de“,group,GG1,-2147483646
# Eine universelle Sicherheitsgruppe importieren: DN,objectClass,sAMAccountName,groupType "CN=USG,OU=<OU>,DC= Domäne,DC=de ",group,USG,-2147483640
# Eine domänenlokale Verteilergruppe importieren: DN,objectClass,sAMAccountName,groupType "CN=DLVG,OU=<OU>,DC= Domäne,DC=de ",group,DLVG,4
# Eine globale Verteilergruppe importieren: DN,objectClass,sAMAccountName,groupType "CN=GVG,OU=<OU>,DC= Domäne,DC=de ",group,GVG,2
# Eine universelle Verteilergruppe importieren: DN,objectClass,sAMAccountName,groupType "CN=UVG,OU=<OU>,DC= Domäne,DC=de ",group,UVG,8
Einen Export mit CSVDE durchführen
CSVDE wird standardmäßig ohne die Angabe eines Parameters im Export-Modus ausgeführt. Die Kunst beim Export ist es, lediglich die Informationen zu exportieren die von Interesse sind. Daher ist das entscheidende beim Export der Filter, der mit dem Parameter -r eingeleitet wird und die Attribute, die mit dem Parameter –l angegeben werden.
Beispiel Exportbefehle:
# Alle Benutzer mit den Attributen sAMAccountName und name exportieren: Csvde -m -n -u -f C:\AlleBenutzer.txt -r "(&(objectclass=user)(objectcategory=person))" -l sAMAccountName,name
# Alle Benutzer aus einer OU mit den Attributen sAMAccountName und name exportieren: Csvde -m -n -u -f C:\ExportBenutzer.txt -s DCON01 -d "OU=<OU>,DC=Domäne,DC=TLD" –p OneLevel –r "(&(objectClass=user)(objectcategory=person))" -l sAMAccountName,name
# Alle Kontakte mit den angegebenen Attributen exportieren: Csvde -m -n -u -r "(objectClass=Contact)" -d "OU=<OU>,DC=Domäne,DC=de" -l displayname,telephoneNumber,othertelephone,mobile,homePhone,Pager,facsimileTelephoneNumber,ipPhone,otherHomePhone,otherPager,otherMobile,otherFacsimileTelephoneNumber,otherIpPhone -f C:\Kontakte.txt
# Mitglieder einer bestimmten Gruppe exportieren: Csvde -m -n -u -f C:\Benutzer.txt -r "(&(objectcategory=user)(memberof=CN=<Gruppe>,OU=<OU>,DC=Domäne,DC=de))" -l samaccountname,name
# Alle Benutzer anzeigen, die NICHT Mitglied einer bestimmten Gruppe sind: Csvde –m –n –u –f C:\Benutzer.txt -r „(&(objectCategory=person)(objectClass=user)(!memberof=CN=<Gruppe>,OU=<OU>,DC=Domäne,DC=de))“ –l name,sAMAccountName
# Alle Benutzer mit ihrem DN und dem LastLogon exportieren: Csvde -m -n -u -f C:\Benutzer.txt -r "(&(objectClass=user)(objectCategory=person))" -l DN,LastLogon
Der Wert von LastLogon kann dann folgendermaßen in unsere Zeitangabe umgerechnet werden:
Einen Large Integer Wert umrechnen
# Alle Benutzer mit ihrem Anmeldenamen und dem eingetragenen Anmeldeskript exportieren: Csvde -f C:\BenutzermitAnmeldeskript.txt -r "(&(objectClass=user)(scriptPath=*))" -l sAMAccountName,scriptPath
# Alle Benutzerobjekte exportieren, die NICHT deaktiviert sind (also aktive Benutzer): Csvde -m -n -u -f C:\AktiveBenutzer.txt -r "(&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))" –l sAMAccountName,name
# Alle Benutzer exportieren und überprüfen, bei wem die Option „Zugriff gestatten“ im Reiter „Einwählen“ aktiviert ist. Steht als Wert TRUE, ist die Option aktiviert: Csvde -f C:\Ras.txt -u -r "(&(objectClass=user)(objectCategory=person))" -l name,sAMAccountName,msNPAllowDialin
# Alle deaktivierten Computerkonten exportieren: Csvde –f C:\DeaktiviertePCs.txt –r „(&(objectclass=computer)(userAccountControl:1.2.840.113556.1.4.803:=2))“ –l DN
# Alle Public Folder exportieren: Csvde -m -n -u -f C:\PublicFolders.txt -r "(objectClass=publicFolder)" -l name
# Alle SMTP-Adressen exportieren: Csvde -m -n -u -f C:\SMTPList.txt -d "DC=Domäne,DC=de" -L proxyaddresses –r "(proxyaddresses=*smtp:*@*)"
Weitere Filter können aus diesem Artikel entnommen werden:
Gespeicherte Abfragen
Eine Datendatei mit Excel, zum Import mit der AD-PowerShell erstellen
Auch mit der AD-PowerShell können beliebige Objekte, wie beispielsweise Organisationseinheiten (OU), Benutzer-, Gruppen- und Computerkonten ins AD importiert werden. Für den erfolgreichen Import mit der AD-PowerShell wird zum einen eine Datendatei mit den korrekten Angaben benötigt und zum zweiten, der AD-PowerShell Befehl mit dem der Import durchgeführt wird.
Für das Erstellen einer Datendatei um Benutzerobjekte in Verbindung mit der AD-PowerShell zu importieren, gilt es folgendes zu beachten:
-
In der ersten Zeile müssen die Felder stehen, für die man einen Wert eintragen möchte. Möchte man Benutzer importieren, ist es hilfreich sich in der AD-PowerShell mit dem Befehl Get-Help New-ADUser -detailed die Syntax des Cmdlets anzuschauen. Dort werden die genauen Feldbezeichnungen genannt, wie es die AD-PowerShell in der Datendatei gerne hätte. Die Angaben unterscheiden sich teilweise von den unter CSVDE, da die AD-PowerShell nicht den LDAP-Display-Name eines Attributs verwendet (anstatt „sn“ für Nachname möchte die AD-PowerShell die Angabe „surname“)

-
Zwingend notwendige und die Mindestangaben für den Import von Benutzerobjekten sind: Path, Name und sAMAccountName. Für Gruppenobjekte sind es die Werte: Path, GroupScope, Name und sAMAccountName.
-
Im Gegensatz zu CSVDE darf es nicht DN (für Distinguished Name) heißen, sondern muss Path lauten. Dabei darf auch nicht das eigentliche Objekt (sprich der RDN) mit angegeben werden. Des Weiteren ist auch die Angabe von objectClass (oder userAccountControl) nicht notwendig, da durch das Cmdlet New-ADUser die Information bereits mitgegeben wird.
-
In welcher Reihenfolge die Felder in der ersten Zeile angegeben werden, spielt keine Rolle. Die Reihenfolge der Werte bzw. Feldinhalte ab der zweiten Zeile müssen jedoch mit der ersten übereinstimmen.
-
Wird ein Wert für ein angegebenes Feld nicht eingetragen, muss es dennoch in der Datendatei durch ein Komma angegeben werden.
-
Systemattribute wie z.B. die ObjectSID oder ObjectGUID können nicht importiert werden. Wie es der Name „Systemattribute“ schon verrät, sind das Attribute die vom System vergeben werden.
-
Beispielsweise könnte die Excel-Datei wie folgt aussehen:

-
Ist die Exceldatei fertiggestellt, gilt es diese als CSV-Datei abzuspeichern. Dazu klickt man in Excel in der Menüleiste auf das Diskettensymbol oder verwendet das Tastaturkürzel „STRG + S“. Das Fenster „Speichern unter“ öffnet sich. Als Dateityp wählt man die Option „CSV (Trennzeichen-getrennt)(*.csv)“ aus und vergibt einen Dateinamen. Es folgt eine Warnung die darauf hinweist, dass der gewählte Dateityp keine Arbeitsmappen mit mehreren Blättern unterstützt und deshalb nur das aktuelle Blatt gespeichert wird. Mit einem Klick auf OK erscheint eine weitere Information die darauf hinweist, dass in der CSV-Datei Merkmale enthalten sein können, die mit „CSV (Trennzeichen-getrennt)“ nicht kompatibel sind. Mit einem Klick auf „Ja“ wird nun endlich die CSV-Datei gespeichert.
-
Nun muss die CSV-Datei mit dem „Editor“ (Notepad) noch bearbeitet werden. Mit einem Rechtsklick auf die CSV-Datei wählt man à Öffnen mit à Editor. Danach öffnet sich die CSV-Datei im Editor.

-
Excel verwendet nämlich als Trennzeichen das Semikolon (;), das durch das Komma (,) ersetzt werden muss. Dies kann man am einfachsten, wenn man im Editor auf Bearbeiten – Ersetzen… klickt. Dort gibt man dann im Feld „Suchen nach“ das Semikolon an und im Feld „Ersetzen durch“ das Komma. Anschließend werden mit einem Klick auf „Alle ersetzen“ die Änderungen durchgeführt.
-
Werte die selbst ein Komma enthalten, müssen in Anführungszeichen (im Volksmund auch als „Gänsefüßchen“ bekannt) gesetzt werden. Das kann man ebenfalls durch die Ersetzen-Funktion im Editor durchführen. In diesem Beispiel müssen die Werte von „Path“ sowie „Name“ in Anführungszeichen gesetzt werden.

-
Die fertige Datendatei sieht dann wie folgt aus:

-
Die gelben Markierungen in dem Beispiel kennzeichnen die Werte die Kommas enthalten und somit in Anführungszeichen gesetzt werden müssen und die roten Markierungen kennzeichnen die nicht enthaltenen Werte, die trotzdem durch ein Komma gesetzt werden müssen. In diesem Fall sind es die Felder „description“ und „HomePage“.
-
Zur Vollständigkeit, hier der komplette Inhalt der Datendatei:
Path,name,givenname,surname,displayname,description,Office,emailaddress,HomePage,streetAddress,pobox,city,state,postalCode,country,userPrincipalName,sAMAccountName,profilePath,scriptPath,title,department,company "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Mueller, Sabine",Sabine,Mueller,Sabine Mueller,Festangestellte,Buero Mainz,s.mueller@dikmenoglu.de,http://blog.dikmenoglu.de,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,sab@ad2008r2.dikmenoglu.de,sab,\\Server\Profile\smueller,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Tolle, Klara",Klara,Tolle,Klara Tolle,,Buero Frankfurt,k.tolle@dikmenoglu.de,,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,kla@ad2008r2.dikmenoglu.de,kla,\\Server\Profile\ktolle,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Wagner, Simone",Simone,Wagner,Simone Wagner,Aushilfe,Buero Istanbul,s.wagner@dikmenoglu.de,http://blog.dikmenoglu.de,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,sim@ad2008r2.dikmenoglu.de,sim,\\Server\Profile\swagner,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Schmitt, Maria",Maria,Schmitt,Maria Schmitt,,Buero Berlin,m.schmitt@dikmenoglu.de,,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,mar@ad2008r2.dikmenoglu.de,mar,\\Server\Profile\mschmitt,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Bauer, Bettina",Bettina,Bauer,Bettina Bauer,Befristet,Buero Muenchen,b.bauer@dikmenoglu.de,http://blog.dikmenoglu.de,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,bet@ad2008r2.dikmenoglu.de,bet,\\Server\Profile\bbauer,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Schmidt, Andrea",Andrea,Schmidt,Andrea Schmidt,,Buero Hamburg,a.schmidt@dikmenoglu.de,,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,and@ad2008r2.dikmenoglu.de,and,\\Server\Profile\aschmidt,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Neu, Sonja",Sonja,Neu,Sonja Neu,Praktikantin,Buero Stuttgart,s.neu@dikmenoglu.de,http://blog.dikmenoglu.de,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,son@ad2008r2.dikmenoglu.de,son,\\Server\Profile\sneu,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH "OU=IT,DC=ad2008R2,DC=dikmenoglu,DC=de","Vogt, Silke",Silke,Vogt,Silke Vogt,Festangestellte,Buero Dresden,s.vogt@dikmenoglu.de,http://blog.dikmenoglu.de,Test Strasse 1,123456,Mainz,Rheinland-Pfalz,55116,DE,sil@ad2008r2.dikmenoglu.de,sil,\\Server\Profile\svogt,Login.bat,Systems Engineer,AD-Freaks,AD Consult GmbH
Das Importieren der Datendatei mit der AD-PowerShell
Zum importieren von Benutzerobjekten mit der AD-PowerShell hat man folgende Möglichkeiten.
Variante 1
Der AD-PowerShell Befehl mit dem die Datendatei ins AD importiert wird sieht so aus:
Import-CSV C:\Massenimport.csv | New-ADUser -AccountPassword (ConvertTo-SecureString –AsPlainText “Pa$$w0rd!” -Force) -Enabled:$true -ChangePasswordAtLogon:$true
Wie unschwer aus dem Befehl zu erkennen ist, wird mit dem Cmdlet Import-CSV der Inhalt der Datendatei Massenimport.csv durch die Pipeline-Funktion (|) der AD-PowerShell, in das Cmdlet New-ADUser gepiped. Der Vorteil der AD-PowerShell gegenüber CSVDE ist, dass mit CSVDE keine Kennwörter gesetzt werden können, mit der AD-PowerShell aber sehr wohl! Mit diesem AD-PowerShell Befehl erhält jeder Benutzer das Startkennwort Pa$$w0rd!. Durch die Angabe von -Enabled:$true erhält man nach dem Import aktivierte Benutzer (wozu zwingend ein Kennwort vergeben werden muss). Die Angabe von -ChangePasswordAtLogon:$true aktiviert bei allen importierten Benutzern die Kontooption Benutzer muss Kennwort bei der nächsten Anmeldung ändern.
Variante 2
Eine andere Variante zum importieren von Benutzerobjekten mit dem gleichen Ergebnis, ist dieser Befehl:
Import-Csv C:\Massenimport.csv | Foreach { New-ADUser -Path $_.path -Name $_.name -givenname $_.givenname -surname $_.surname -displayname $_.displayname -office $_.office -emailaddress $_.emailaddress -HomePage $_.HomePage -streetaddress $_.streetaddress -pobox $_.pobox -city $_.city -state $_.state -postalCode $_.postalCode -userPrincipalName $_.userPrincipalName -sAMAccountName $_.sAMAccountName -profilePath $_.profilePath -scriptPath $_.scriptPath -title $_.title -department $_.department -company $_.company -PasswordNotRequired:$true -Enabled:$true }
Die Parameter wie z.B. „-Path $_.path“ entsprechen den Angaben aus der ersten Zeile der Datendatei. Dabei spielt die Reihenfolge bei der Angabe der Werte keine Rolle. Z.B. könnte die erste Zeile in der Datendatei so aussehen: sAMAccountName,Path,Name,… und der Befehl wie folgt: Import-Csv C:\Massenimport.csv | Foreach { New-ADUser -Name $_.name –sAMAccountName $_.sAMAccountName -Path $_.path …
Die Hauptsache ist, es werden alle Felder im Befehl angegeben, die auch in der Datendatei enthalten sind.
Auch mit diesem Befehl erhält man nach dem Import aktivierte Benutzerkonten im AD! Denn der Parameter -PasswordNotRequired:$true bewirkt nichts anderes, als das im Attribut userAccountControl im Benutzerobjekt als Wert 544 eingetragen wird. Das userAccountControl besteht nämlich aus einer Bitmaske, bestehend aus mehreren Flags.
Der Parameter -PasswordNotRequired mit dem Wert $true kombiniert diese beiden Flags:
|
NORMAL_ACCOUNT |
512 |
|
PASSWD_NOTREQD |
32 |
Doch der Eintrag -PasswordNotRequired:$true alleine reicht nicht aus, um aktivierte Benutzerkonten zu erhalten. Es muss zwingend noch der Parameter mit dem Wert -Enabled:$true eingegeben werden. Erst dadurch sind die Benutzerkonten aktiv.
Die Benutzer melden sich dann ohne ein Kennwort an und werden direkt aufgefordert ein neues Kennwort zu vergeben. Denn der Wert 544 im userAccountControl aktiviert bei jedem importierten Benutzerobjekt die Kontooption „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“.
How to use the UserAccountControl flags to manipulate user account properties
Variante 3
Eine weitere Möglichkeit und recht simpel noch dazu, stellt dieser Befehl zum importieren von Benutzerobjekten dar:
Import-Csv -Path C:\Massenimport.txt | New-ADUser -PasswordNotRequired:$true -Enabled:$true
Auch bei diesem Befehl erhält man anschließend aktive Benutzerkonten im AD. Die Benutzer melden sich dann ohne ein Kennwort an der Domäne an und werden direkt aufgefordert ein neues Kennwort zu vergeben.
Gruppen mit der AD-PowerShell importieren
Die Werte die in der Datendatei für einen Import von Gruppen zwingend angegeben werden müssen sind: Path, GroupScope, Name und sAMAccountName. Somit werden lediglich Sicherheitsgruppen erstellt. Daher ist es ratsam noch GroupCategory anzugeben, um den „Gruppentyp“ zu bestimmen.
Der Import der Datendatei erfolgt mit diesem Befehl: Import-CSV C:\Gruppen.csv | New-ADGroup
Beispiele einer Datendatei zum Import von Gruppen:
# Eine domänenlokale Sicherheitsgruppe importieren: Path,GroupCategory,GroupScope,Name,sAMAccountName,description "OU=Gruppen,DC=ad2008R2,DC=dikmenoglu,DC=de",security,domainlocal,DLSG1,DLSG1,Vertrieb
# Eine globale Sicherheitsgruppe importieren: Path,GroupCategory,GroupScope,Name,sAMAccountName,description "OU=Gruppen,DC=ad2008R2,DC=dikmenoglu,DC=de",security,global,GSG1,GSG1,Buchhaltung
# Eine universelle Sicherheitsgruppe importieren: Path,GroupCategory,GroupScope,Name,sAMAccountName,description "OU=Gruppen,DC=ad2008R2,DC=dikmenoglu,DC=de",security,universal,USG1,USG1,Einkauf
# Eine domänenlokale Verteilergruppe importieren: Path,GroupCategory,GroupScope,Name,sAMAccountName,description "OU=Gruppen,DC=ad2008R2,DC=dikmenoglu,DC=de",distribution,domainlocal,DLVG1,DLVG1,Key Account
# Eine globale Verteilergruppe importieren: Path,GroupCategory,GroupScope,Name,sAMAccountName,description "OU=Gruppen,DC=ad2008R2,DC=dikmenoglu,DC=de",distribution,global,GVG1,GVG1,Techniker
# Eine universelle Verteilergruppe importieren: Path,GroupCategory,GroupScope,Name,sAMAccountName,description "OU=Gruppen,DC=ad2008R2,DC=dikmenoglu,DC=de",distribution,universal,UVG1,UVG1,Support
Einen Export mit der AD-PowerShell durchführen
Wie mit jedem Werkzeug mit dem man einen Export durchführt, kommt es auch bei der AD-PowerShell auf die gewünschten Informationen und somit auf den Filter an. Wird ein „falscher“ Filter genutzt, bekommt man unter Umständen gar keine Informationen exportiert. Nutzt man hingegen einen „ungenauen“ Filter, erhält man diesmal ggf. zu viele Informationen die es dann mühselig zu durchforsten gilt. Die wichtigste Aufgabe beim Export ist es zu definieren, welche Informationen benötigt werden und dann den Filter (sofern möglich) zu bauen.
Die folgenden Beispiele zeigen jeweils eine LDAP-Abfrage, die dann durch die Pipeline-Funktion der AD-PowerShell an das Cmdlet Export-Csv übergeben und somit die Ausgabe exportiert wird.
Export Beispiele
# Alle Benutzer aus einer OU mit allen Eigenschaften exportieren: Get-ADUser -Filter * -Searchbase "OU=<OU>,DC=Domäne,DC=de" -Properties * | Export-Csv C:\Export.txt -NoTypeInformation
Hinweis: Nutzt man das Cmdlet Get-ADUser um Benutzerinformationen zu exportieren, werden in jedem Fall diese Attribute ausgegeben: DistinguishedName, Enabled, givenName, Name, ObjectClass, ObjectGUID, SamAccountName, ObjectSID, Surname, userPrincipalName. Gibt man beim Parameter -Properties eigene Attribute an, werden diese zusätzlich zu den bereits genannten Attributen mit ausgegeben.
# Alle Benutzerkonten exportieren, die als Vorgesetzten „Yusuf“ eingetragen haben: Get-ADUser -Filter { Manager -eq "Yusuf" } | Export-Csv C:\Export.txt -NoTypeInformation
# Alle Organisationseinheiten (OU) der Domäne exportieren: Get-ADOrganizationalUnit -Filter {Name -Like „*“} | Export-Csv C:\OUs.txt -NoTypeInformation
# Alle Objekte einer OU exportieren: Get-ADObject -Filter { Name -Like "*" } -Searchbase "OU=<OU>,DC=Domäne,DC=de” | Export-Csv -NoTypeInformation C:\AlleObjekte.txt
# Alle Attribute und Klassen eines Active Directory exportieren: Get-ADObject -Filter { Name -Like “*” } -SearchBase “CN=Schema,CN=Configuration,DC=Domäne,DC=de” | Export-Csv -NoTypeInformation C:\Schema.txt
AD-PowerShell Befehle
Eine Datendatei in Excel importieren
In Excel lässt sich eine Datendatei wie folgt importieren:
Weitere Informationen: How to use CSVDE.EXE to back up and restore connection agreements
Wenn ein Administrator ein Objekt im AD löscht, sollte er das bewusst tun und ein versehentliches löschen sollte nie vorkommen. Jedoch passieren die meisten Missgeschicke gerade im Alltag versehentlich, obwohl die Microsoft Werkzeuge (z.B. die MMCs Active Directory-Benutzer und -Computer sowie Active Directory-Standorte und -Dienste, dsrm, AD-PowerShell etc.) eine Sicherheitsabfrage stellen, ob man das Objekt auch wirklich löschen möchte. Handelt es sich bei dem zu löschenden Objekt um eine OU in dem weitere Objekte enthalten sind (Benutzer, Gruppen, OUs etc.), wird sogar noch eine weitere Sicherheitsabfrage gestellt.
Ein Objekt vor dem versehentlichen Löschen schützen
Damit ein Objekt nicht ausversehen gelöscht werden kann, sollte man ab Windows Server 2008 von der Option Objekt vor zufälligem Löschen schützen (auf Englisch: Protect object from accidental deletion) regen Gebrauch machen. Es ist empfehlenswert diesen Schutz mindestens auf OU-Ebene anzuwenden, sie vererbt sich aber nicht auf die untergeordneten Objekte wie z.B. auf untergeordnete OUs oder auf Benutzer-, Gruppen oder Computerobjekte die sich innerhalb der OU befinden. Einzelne Objekte wie Benutzerobjekte, Sicherheits- sowie Verteilergruppen- und Computerobjekte lassen sich ebenfalls vor dem versehentlichen Löschen schützen. Auch die Objekte in der MMC Active Directory-Standorte und -Dienste (AD-Standorte, Subnetze) lassen sich vor dem versehentlichen Löschen schützen.
Die Option Objekt vor zufälligem Löschen schützen lässt sich in den Eigenschaften eines Objekts im Reiter „Objekt“ aktivieren. Dieser Reiter kommt aber in der MMC „Active Directory-Benutzer und -Computer“ erst dann zum Vorschein, wenn unter „Ansicht“ die Option „Erweiterte Features“ aktiviert wurde.

Unter Windows 2000 und Windows Server 2003 existiert zwar die Möglichkeit zum aktivieren der Option „Objekt vor zufälligem Löschen schützen“ nicht, doch man kann natürlich auch unter Windows 2000 und Windows Server 2003 ein Objekt vor dem versehentlichen löschen schützen. Denn das aktivieren der Option „Objekt vor zufälligem Löschen schützen“ bewirkt nichts anderes, als das im Security-Descriptor des Objekts das "Verweigerungsrecht" zum "Löschen" für "Jeder" gesetzt wird. Genau das kann man auch unter Windows 2000 und Windows Server 2003 z.B. auf einer OU oder einem Benutzerobjekt konfigurieren.

Mit DSACLS, das sich unter Windows 2000 und Windows Server 2003 in den Windows Support Tools befindet und ab Windows Server 2008 „on Bord“ ist, lässt sich eine OU folgendermaßen vor dem versehentlichen Löschen schützen:
Dsacls „<DN der OU>“ /D Jeder:SDDT
In der Kommandozeile (CMD) lässt sich mit einer FOR-Schleife und den ds*-Tools die ab Windows Server 2003 "on Bord" sind, eine OU samt den untergeordneten OUs vor dem versehentlichen Löschen wie folgt schützen. Die Objekte wie z.B. Benutzer-, Gruppen- oder Computerobjekte die sich innerhalb dieser OUs befinden, werden dabei aber nicht vor dem versehentlichen Löschen geschützt:
FOR /F "tokens=*" %i in ('Dsquery OU "<DN der OU>" -Limit 0') do Dsacls %i /D "Jeder:SDDCDT"
Alle OUs innerhalb einer Domäne lassen sich in einer CMD mit dieser FOR-Schleife vor dem versehentlichen Löschen schützen:
FOR /F "tokens=*" %i in ('Dsquery OU -Limit 0') do Dsacls %i /D "Jeder:SDDCDT"
Über die AD-Powershell lässt sich diese Option auf einer OU wie folgt aktivieren:
Set-ADOrganizationalUnit „<DN der OU>“ –ProtectedFromAccidentialDeletion 1
bzw.
Set-ADOrganizationalUnit „<DN der OU>“ -ProtectedFromAccidentialDeletion $true
Auf allen bestehenden OUs lässt sich die Option wie folgt aktivieren:
Get-ADOrganizationalUnit -Filter * | Set-ADOrganizationalUnit –ProtectedFromAccidentialDeletion 1
Deaktivieren lässt sich die Option „Objekt vor zufälligem Löschen schützen“ in der AD-PowerShell wie folgt:
Set-ADOrganizationalUnit „<DN der OU>“ –ProtectedFromAccidentialDeletion 0
oder
Set-ADOrganizationalUnit „<DN der OU>“ -ProtectedFromAccidentialDeletion $false
Wird eine bestehende Domäne auf mindestens „Windows Server 2008“ aktualisiert, wird bei bestehenden Objekten diese Option nicht automatisch aktiviert. Auch nach dem installieren einer neuen Windows Server 2008 Domäne ist auf den bestehenden Objekten die Option „Objekt vor zufälligem Löschen schützen“ nicht aktiv. Der Schutz ist standardmäßig nur beim erstellen von neuen OUs ab Windows Server 2008 aktiviert, nicht jedoch beim erstellen von Benutzer-, Gruppen- oder Computerkonten bzw. AD-Standorten und Subnetzen.
Ist hingegen dieser Schutz auf einer OU aktiviert und man möchte diese OU verschieben, erhält man folgende Fehlermeldung. Denn zum Verschieben einer OU benötigt man das Löschrecht am Quell- und Schreibrecht am Zielort. Das Verschieben der OU ist erst dann möglich, wenn die Option deaktiviert wurde.

Das gilt natürlich auch beim löschen einer OU. Erst wenn die Option deaktiviert ist, kann die OU nach bestätigen der Sicherheitsabfrage gelöscht werden. Spätestens mit dieser Option gehört das versehentliche Löschen eines Objekts endlich der Vergangenheit an.
Wer hat den Benutzer gelöscht?
Wenn nun doch mal ausversehen z.B. das Benutzerobjekt des GFs gelöscht wurde, möchte man evtl. aufklären wer das Benutzerobjekt auf welchem DC gelöscht hat. Im Sicherheitsprotokoll des DCs auf dem das Objekt gelöscht wurde, wird unter Windows Server 2003 die EventID 630 und unter Windows Server 2008 sowie Windows Server 2008 R2 die EventID 4726 protokolliert. Denn standardmäßig wird unter Windows Server 2003 und Windows Server 2008 R2 beim Löschen eines Benutzerkontos ein Eventlogeintrag generiert, nicht jedoch unter Windows Server 2008.
Unter Windows Server 2008 muss zuerst die Unterkategorie Verzeichnisdienständerungen mit der Option Erfolgreich durch den folgenden Befehl aktiviert werden:
Auditpol /set /subcategory:Verzeichnisdienständerungen /success:enable
Erst danach wird das Löschen eines Objekts auch unter Windows Server 2008 protokolliert.
Active Directory Domain Services (AD DS) - Protokollierung
Achtung: Eine Protokollierung ist vom Betriebsrat bzw. Datenschutzbeauftragten zu genehmigen!
Die Information auf welchem DC das Objekt gelöscht wurde, wird aber nicht zwischen den DCs repliziert. Die Aufgabe besteht also darin, herauszufinden wann das Benutzerkonto auf welchem DC gelöscht wurde, um anschließend den Eventlogeintrag ausfindig zu machen. Sofern der Eventlogeintrag natürlich noch auf dem betroffenen DC existiert und nicht überschrieben wurde.
Auch das Löschen von Gruppen wird standardmäßig mit folgenden EventIDs protokolliert:
Unter Windows Server 2003
- Domänenlokale Sicherheitsgruppe = EventID 638 - Globale Sicherheitsgruppe = EventID 634 - Universelle Sicherheitsgruppe = EventID 662
- Domänenlokale Verteilergruppe = EventID 652 - Globale Verteilergruppe = EventID 657 - Universelle Verteilergruppe = EventID 667
Unter Windows Server 2008 und Windows Server 2008 R2
- Domänenlokale Sicherheitsgruppe = EventID 4734 - Globale Sicherheitsgruppe = EventID 4730 - Universelle Sicherheitsgruppe = EventID 4758
In kleineren AD-Umgebungen lassen sich die Eventlogs auf den DCs vielleicht noch schnell und vor allem manuell durchforsten, doch in großen bzw. weltweiten AD-Umgebungen ist das schier eine unmögliche Aufgabe. Zumindest nicht ohne Zusatzwerkzeuge wie z.B. SCOM, Log Parser oder EventComb.
Doch es gibt auch eine einfache Methode, um den Übeltäter ausfindig zu machen. Mit Hilfe von LDP und REPADMIN kann man in Erfahrung bringen, auf welchem DC das Objekt wann zu welcher Uhrzeit gelöscht wurde. Anschließend öffnet man das Sicherheitsprotokoll des betroffenen DCs und kann anschließend in der Beschreibung des Eventlogeintrags erkennen, wer das Objekt gelöscht hat. Es spielt auch keine Rolle ob unter Windows Server 2008 R2 der AD-Papierkorb aktiviert ist oder nicht.
Dazu sind die folgenden Schritte notwendig.
In LDP
Mit LDP gilt es zuerst herauszufinden, wie der Distinguished Name (DN) des gelöschten Objekts im Deleted Objects Container das sich in der Domänenpartition befindet lautet.
- Im ersten Schritt verbindet man sich mit einem DC aus der Domäne, in der das Objekt gelöscht wurde. Unter Windows 2000 und Windows Server 2003 wählt man im Menü „Connection – Connect…“ und unter Windows Server 2008 sowie Windows Sever 2008 R2 „Remotedesktopverbindung – Verbinden…“ und gibt den DC an, mit dem man sich verbinden möchte.
- Im zweiten Schritt binded man sich mit dem AD. Unter Windows 2000 und Windows Server 2003 wählt man dazu im Menü „Connection – Bind“ und unter Windows Server 2008 und Windows Server 2008 R2 „Remotedesktopverbindung – Gebunden…“.
- Danach wählt man im Menü unter Windows 2000 und Windows Server 2003 „Options – Controls“ sowie unter Windows Server 2008 und Windows Server 2008 R2 „Optionen – Steuerelemente“. Im darauf erscheinenden Fenster „Controls“ bzw. „Steuerelemente” fügt man das LDAP-Control „Return deleted objects“ mit der OID (Object Identifier) 1.2.840.113556.1.4.417 hinzu.

-
Als nächstes ruft man unter Windows 2000 und Windows Server 2003 im Menü „Browse - Search“ sowie unter Windows Server 2008 und Windows Server 2008 R2 „Durchsuchen - Suchen“ das Suchfenster auf. Dort gibt man als Basis-DN den „Deleted Objects“ Container in der Domänenpartition an. Dieser lautet: CN=Deleted Objects,DC=<Domäne>,DC=<de>
Im Feld Filter gibt man die Kriterien an, nach denen man die Suche im Container “Deleted Objects” durchführen möchte. Ist der Benutzeranmeldename (Prä-Windows 2000), also das Attribut sAMAccountName bekannt, trägt man in dem Feld sAMAccountName=<Benutzeranmeldename> ein. Es kann natürlich auch ein anderes Attribut angegeben werden, dass das gewünschte Benutzerobjekt identifiziert.
Als Scope/Bereich wählt man OneLevel/Eine Ebene aus. Wählt man als Suchbereich Subtree/Unterstruktur aus, funktioniert das ebenfalls. Unter Windows Server 2008 und Windows Server 2008 R2 gibt man im Feld „Attribute“ die Attribute an, die in der rechten Hälfte von LDP, im Suchergebnis zusätzlich zum DN angezeigt werden sollen. Gibt man keine Attribute an, werden alle Attribute des gelöschten Objekts angezeigt.

- Anschließend ruft man mit einem Klick auf Optionen die Suchoptionen auf und konfiguriert die Einstellungen wie folgt. Mit einem Klick auf OK übernimmt man die vorgenommenen Einstellungen.

- Unter Windows 2000 und Windows Server 2003 muss man vorher auf Options klicken, um die gewünschten Attribute und die weiteren Einstellungen vornehmen zu können.

-
Führt man die Suche nun mit einem Klick auf Run/Ausführen aus, erscheint in der rechten Hälfte von LDP unter anderem der gesuchte DN des gelöschten Benutzerobjekts. Dieser sieht z.B. so aus: Dn: CN=Yusuf Dikmenoglu\0ADEL:3e9e243e-8ba9-473a-a1ee-f1b001337923,CN=Deleted Objects,DC=ad2008R2,DC=dikmenoglu,DC=de
In REPADMIN
Da nun bekannt ist wie der DN des gelöschten Benutzerobjekts lautet, gilt es auf einem DC in der Domäne in der das Benutzerobjekt gelöscht wurde, den folgenden REPADMIN-Befehl in der Kommandozeile auszuführen. Die Ausgabe von REPADMIN wird zur besseren Übersicht in eine Textdatei exportiert.
Repadmin /showobjmeta <DC> "CN=Yusuf Dikmenoglu\0ADEL:2ffa7423-7b00-4962-96f6-69d052e08c51,CN=Deleted Objects,DC=ad2008r2,DC=dikmenoglu,DC=de" > C:\Repadmin.txt
Entscheidend in der Ausgabe ist das Attribut isDeleted.
Daraus kann man erkennen, dass das Benutzerobjekt am 14.11.2009 um 23:05:08 Uhr auf dem DC R2DCON01 gelöscht wurde. Nun kann man hoffen, dass auf dem DC der erwähnte Zeitpunkt im Sicherheitsprotokoll noch nicht überschrieben wurde. Wenn der Eintrag noch existiert, findet man in der Beschreibung des Eventlogeintrags den Übeltäter.
Weitere Informationen: Der Container Deleted Objects Repadmin /showobjmeta
In einigen Attributen wie z.B. badPasswordTime, Last-Logon, Last-Logon-TimeStamp oder pwdLastSet wird ein Large Integer Wert (im Integer8 Format) gespeichert. Da man mit solch einem Wert herzlich wenig anfangen kann, muss dieser in unser Zeitformat umgerechnet werden. Das geht mit den Windows Support Tools oder mit Bordmitteln wie folgt.
LDP
In LDP das sich unter Windows 2000 und Windows Server 2003 in den Windows Support Tools befindet und ab Windows Server 2008 „on Bord“ ist, werden Large Integer Werte bereits in unserem Zeitformat angezeigt, ohne diese umrechnen zu müssen.

REPADMIN
Eine weitere Möglichkeit einen Large Integer Wert umzurechnen, ist das Schweizer Messer Werkzeug für die AD-Replikation REPADMIN. Unter Windows 2000 und Windows Server 2003 befindet sich REPADMIN in den Windows Support Tools und ist ab Windows Server 2008 bereits „on Bord“. Bei dem REPADMIN-Befehl müssen jedoch die letzten sieben Zeichen des Integer Wert entfernt werden. Der Befehl lautet wie folgt: REPADMIN /SHOWTIME 12903275725
NLTEST
Auch mit NLTEST, das sich unter Windows 2000 und Windows Server 2003 in den Windows Support Tools befindet und ab Windows Server 2008 „on Bord“ ist, lässt sich ein Large Integer Wert umrechnen. Doch dazu muss zuerst der Large Integer Wert im Taschenrechner von Windows („Start-Programme-Zubehör-Rechner“ oder „Start-Ausführen-CALC“) in einen Hexadezimal Wert umgerechnet werden. Um das zu tun, wechselt man die Ansicht des Taschenrechners unter dem Menüpunkt „Ansicht“ von „Standard“ auf „Wissenschaftlich“. Anschließend fügt man per Copy&Paste den Integer Wert hinzu. Man muss nur darauf achten, dass der Wert als „Dezimal“ (Dez) hinzugefügt wird.

Anschließend wandelt man den eingetragenen Wert mit einem Klick auf Hex in einen Hexadezimal Wert um.
Nun gibt man in einer Kommandozeile den Befehl NLTEST /TIME:<HEX> ein. Bei dem Hexadezimal Wert gilt es zu beachten, mit einem Leerzeichen dazwischen, die rechten acht Zeichen voranzustellen. Der Befehl sieht dann so aus: NLTEST /TIME:EC821F4A 1CA6A9B

W32tm
In der Kommandozeile (CMD) lässt sich ein Large Integer Wert, ab Windows Server 2003, mit dem Befehl w32tm /ntte <Wert> in ein lesbares Format umrechnen.
Der Attribut-Editor
Ab Windows Server 2008 und Windows Vista (mit installiertem RSAT) werden die Large Integer Werte im Attribut-Editor, der in den Eigenschaften eines Benutzerobjekts in der MMC Active Directory-Benutzer und -Computer oder in ADSIEdit zu finden ist, in der Übersicht bereits in unserem Zeitformat angezeigt. Der Reiter „Attribut-Editor“ erscheint aber erst dann, wenn unter „Ansicht“ die „erweiterten Features“ aktiviert wurden.

Möchte man Rechte an ein Sicherheitsprinzipal wie z.B. an einen Benutzer oder besser an eine Gruppe im Active Directory (AD) delegieren, kann man das über den Objektdelegierungsassistenten, die Discretionary Access Control List (kurz DACL) oder mit dem Kommandozeilentool DSACLS durchführen.
Objektdelegierungen einrichten
Führt man die Delegierung über die grafische Oberfläche (GUI) mit dem Delegierungsassistenten oder über die DACL durch, ist es durchaus möglich, dass das gewünschte Attribut auf das man die entsprechenden Rechte erteilen möchte in der GUI nicht angezeigt wird. Denn standardmäßig wird nicht jedes Attribut in der GUI angezeigt, um die Liste der angezeigten Attribute übersichtlich zu halten.
Das ist aber auch nicht weiter tragisch, da es ohnehin empfohlen ist die Delegierung mit DSACLS durchzuführen. Denn somit hat man es zum einen mit der Dokumentation einfacher und zum anderen, lassen sich die erteilten Rechte im AD schnell wieder entfernen. Im Gegensatz zur GUI existieren in der Kommandozeile keine Beschränkungen und in Verbindung mit einem Skript, können Delegierungen einfach durchgeführt werden. Bei der Delegierung mit dem Kommandozeilentool muss man natürlich das Attribut kennen, auf das man Rechte erteilen möchte.
Siehe auch:
Die Active Directory-Attribute hinter den Feldnamen
Wer die Delegierung doch lieber über die GUI durchführen möchte, der kann die gefilterten Attribute die standardmäßig nicht angezeigt werden zum Vorschein bringen. Dazu muss die Datei „dssec.dat“ die sich seit Windows 2000 im Verzeichnis „%systemroot%\System32\“ befindet bearbeitet werden.
Möchte man z.B. die Attribute physicalDeliveryOfficeName (das Feld “Büro” in den Eigenschaften eines Benutzerobjekts) oder sn (Nachname eines Benutzers) zum Vorschein bringen, muss in der Datei „dssec.dat“ im Abschnitt [User] hinter den jeweiligen Attributen die Zahl 7 auf 0, 1 oder 2 geändert werden.
Die Zahlen bedeuten:
7 = Das Attribut wird in der GUI nicht angezeigt. 0 = Es werden die Eigenschaften „lesen“ und „schreiben“ für das Attribut angezeigt. 1 = Es wird nur die Schreib-Eigenschaft eines Attributs angezeigt. 2 = Es wird nur die Lese-Eigenschaft eines Attributs angezeigt.
Wurde die Datei dssec.dat bearbeitet, muss anschließend die MMC Active Directory-Benutzer und -Computer neu gestartet werden, damit das gewünschte Attribut angezeigt wird.
Eine andere Variante ist, dass man bei der Objektdelegierung über die GUI beim erstellen eines benutzerdefinierten Tasks nicht beim "Zuweisen der Verwaltung von" die Option "Benutzer"-Objekte auswählt, sondern die Objektklasse "InetOrgPerson"-Objekte. Danach hat man auch Zugriff und die standardmäßig nicht eingeblendeten Attribute und kann diese an die entsprechende Gruppe delegieren.
Mit DSACLS könnte man das Schreibrecht auf das Attribut physicalDeliveryOfficeName (Feldname: Büro) einer Gruppe wie folgt erteilen:
DSACLS "<DN der OU>" /G "<Gruppe>:WP;physicalDeliveryOfficeName;user" /I:S
Das Schreibrecht auf die Nachnamen aller Benutzer die sich in einer OU befinden, lässt sich einer Gruppe folgendermaßen delegieren:
DSACLS "<DN der OU>" /G "<Gruppe>:WP;sn;user" /I:S
Weitere Informationen: Der Objektdelegierungsassistent Das aktivieren/deaktivieren eines Benutzerkontos delegieren Delegierte AD-Berechtigungen anzeigen und entfernen How to modify the filtered properties of an object
Mit dem Kommandozeilentool Whoami das sich unter Windows 2000 im Ressource Kit befindet und ab Windows Server 2003 on Bord ist, lässt sich der komplette Inhalt des Access-Tokens des aktuell angemeldeten Benutzers anzeigen und exportieren. Im Accesss-Token ist die SID des Benutzers, die SIDs der SID-History (ab Windows Server 2003) und die SID's aller Gruppen in denen der angemeldete Benutzer innerhalb der Domäne direkt oder verschachtelt Mitglied ist enthalten. Whoami zeigt auch direkte oder verschachtelte domänenübergreifende universelle Gruppenmitgliedschaften an.
Führt man in einer CMD den Befehl Whoami /all > C:\Temp\Whoami.txt aus, wird solch eine Datei im angegebenen Pfad erstellt:
Die Hilfe zu Whoami lässt sich in gewohnter Windows-Manier mit Whoami /? anzeigen.
In welcher Situation ist es sinnvoll Whoami auszuführen?
Wenn ein Benutzer zu einer Gruppe hinzugefügt und dieser Gruppe die entsprechenden Rechte auf eine Ressource (Dateien, Drucker etc.) erteilt wurde, der Benutzer aber immer noch keinen Zugriff auf die Ressource hat, sollten zwei Punkte sichergestellt werden:
-
Hat sich der Benutzer nach dem hinzufügen zur Gruppen erneut an seinem Client angemeldet? Denn Gruppenmitgliedschaften werden nicht während einer Benutzersitzung ausgewertet, sondern nur bei der Anmeldung.
-
Hat sich der Benutzer bereits neu angemeldet, kann mit Whoami /all das Access-Token ausgewertet werden. Damit kann man überprüfen, ob sich der Benutzer auch tatsächlich in der entsprechenden Gruppe befindet.
Die Gruppenmitgliedschaften eines Benutzers mit der AD-PowerShell exportieren
Das Pendant zu Whoami stellt mit „Windows Server 2008 R2“ und Windows 7 die „Active Directory-PowerShell“ dar. Wird auf einem „Windows Server 2008 R2“ DC oder auf einem Windows 7 Client mit installiertem RSAT (Remote Server Administration Tools) das Cmdlet Get-ADAccountAuthorizationGroup ausgeführt, werden ebenfalls die direkten und verschachtelten Gruppenmitgliedschaften des angegebenen Benutzerkontos angezeigt. Domänenübergreifende „domänenlokale“ Gruppenmitgliedschaften werden nicht angezeigt, aber domänenübergreifende „universelle“ Gruppenmitgliedschaften schon. Domänenübergreifende globale Gruppen sind aus technischen Gründen ohnehin nicht möglich, da eine globale Gruppe nur Mitglieder aus der eigenen Domäne enthalten kann.
Ein DC kann „domänenlokale“, „globale“ und „universelle“ Gruppenmitgliedschaften eines Benutzers, nur innerhalb seiner Domäne ermitteln. Domänenlokale- und globale Gruppen werden zwar (neben den universellen Gruppen) auch in den globalen Katalog (GC) repliziert, allerdings nicht die Mitglieder dieser Gruppen! Deshalb findet auch bei Gruppenveränderungen in domänenlokalen und globalen Gruppen keine GC-Replikation statt. Da aber ein Benutzer Mitglied einer universellen Gruppe in unterschiedlichen Domänen sein kann, ist für die Abfrage von domänenübergreifenden universellen Gruppenmitgliedschaften ein GC notwendig. Denn nur der GC kennt die domänenübergreifenden universellen Gruppenmitgliedschaften eines Benutzers, da das member Attribut von universellen Gruppen auf den GC repliziert wird. Wenn sich ein Benutzer in einer Gesamtstruktur mit mehreren Domänen an einer Domäne anmeldet, muss der DC einen GC kontaktieren um die universellen Gruppenmitgliedschaften abzurufen, in denen der Benutzer evtl. in anderen Domänen Mitglied ist. Oder es ist ab Windows Server 2003 das „zwischenspeichern der universellen Gruppenmitgliedschaften“ auf einem AD-Standort aktiviert.
In einer Multidomänen-Gesamtstruktur ist es zwingend erforderlich, dass zum Zeitpunkt der Abfrage mit dem Cmdlet Get-ADAccountAuthorizationGroup ein GC erreichbar ist. Denn schließlich wird für die Auswertung der domänenübergreifenden universellen Gruppenmitgliedschaften ein GC benötigt. Wenn zum Zeitpunkt der Abfrage kein GC erreicht werden kann schlägt die Abfrage fehl. Allerdings schlägt die Abfrage nur dann fehl, wenn es sich um eine Multidomänen-Gesamtstruktur handelt!
Die Option „Das zwischenspeichern von universellen Gruppenmitgliedschaften“ bringt nicht den gewünschten Erfolg. Die Abfrage mit dem Cmdlet in einer Gesamtstruktur mit mehreren Domänen schlägt auch in diesem Fall fehl.
Ein GC oder das zwischenspeichern von universellen Gruppenmitgliedschaften ist für die Benutzeranmeldung nur in einer Gesamtstruktur mit mehreren Domänen notwendig. Handelt es sich um eine Einzeldomänen-Gesamtstruktur (Single-Domänen Forest), wird weder ein GC, noch das zwischenspeichern von universellen Gruppenmitgliedschaften benötigt. Es existieren ohnehin keine domänenübergreifenden Gruppenmitgliedschaften, wozu ein GC oder das zwischenspeichern von universellen Gruppenmitgliedschaften notwendig wäre.
In einer Einzeldomänen-Gesamtstruktur benötigt das Cmdlet deshalb auch keinen GC. Schließlich kennt in einer Einzeldomänen-Gesamtstruktur der DC alle Gruppenmitgliedschaften eines Benutzers. Auch der Benutzer kann sich in einer Einzeldomänen-Gesamtstruktur ohne einen GC erfolgreich an der Domäne anmelden.
In einer Windows Server 2003 oder Windows Server 2008 Umgebung lässt sich die AD-PowerShell ebenfalls z.B. von einem Windows 7 Client nutzen. Dazu muss jedoch das „AD MGS“ auf mindestens einem DC installiert werden:
Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008
Das Cmdlet Get-ADAccountAuthorizationGroup liest das Attribut tokenGroups des angegebenen Sicherheitsprinzipals aus. Dabei kann ein Benutzer oder Computer angegeben werden, aber keine Gruppe! Es werden zum einen alle direkten und verschachtelten Sicherheits-Gruppenmitgliedschaften (domänenlokale, globale und universelle Gruppen) innerhalb der Domäne und zum anderen die direkten und verschachtelten domänenübergreifenden universellen Gruppenmitgliedschaften eines Benutzers angezeigt. Es werden jedoch keine Verteilergruppen angezeigt!
Das mehrwertige Attribut tokenGroups ist zwar im Schema definiert, es enthält jedoch selbst keinen Wert. Die Attributwerte werden erst im Moment der Abfrage errechnet. Diese Art von Attribut bezeichnet man als Constructed Attribute oder auch Computed Attribute. Da das Attribut tokenGroups "constructed" ist, kann es nicht repliziert werden. Sein Wert wird auch nicht in den GC übertragen.
Siehe auch: Die konstruierten Attribute abfragen
Die Gruppenmitgliedschaften eines Benutzers werden wie folgt in eine CSV-Datei exportiert: Get-ADAccountAuthorizationGroup Yusuf | Export-CSV C:\Yusuf.csv -NoTypeInformation
Soll die Ausgabe bis auf wenige Attribute gekürzt werden, lautet der Befehl wie folgt: Get-ADAccountAuthorizationGroup Yusuf | Select distinguishedName,sAMAccountName,GroupCategory,GroupScope,objectClass | Export-CSV C:\Yusuf.csv -NoTypeInformation
Die Ausgabe sieht wie folgt aus:

Die Hilfe zu dem Cmdlet lässt sich mit diesem Befehl anzeigen: Get-Help Get-ADAccountAuthorizationGroup -Full
Die Gruppenmitgliedschaften eines Benutzers mit den ds*-Tools exportieren
Mit den beiden Kommandozeilentools dsquery und dsget die sich seit Windows Server 2003 "on Bord" befinden, lassen sich ebenfalls die Gruppenmitgliedschaften eines Benutzers exportieren. Möchte man die direkten Gruppenmitgliedschaften eines Benutzers exportieren, so kann dazu der folgende Befehl verwendet werden:
dsquery user -samid <Benutzername> | dsget user -memberof > C:\Temp\Gruppenmitgliedschaften.txt
oder:
dsget user "DN des Benutzerobjekts" -memberof > C:\Temp\Gruppenmitgliedschaften.txt
Sollen hingegen auch die verschachtelten Gruppenmitgliedschaften angezeigt werden, dann gilt es diesen Befehl auszuführen:
dsget user "DN des Benutzerobjekts" -memberof -expand > C:\Temp\Gruppenmitgliedschaften.txt
bzw.
dsquery user -samid <Benutzername> | dsget user -memberof -expand > C:\Temp\Gruppenmitgliedschaften.txt
Hinweis: Unter Windows Server 2008 R2 und Windows 7 liefert dsget nicht die korrekten Daten. Das lässt sich jedoch durch einen Hotfix beheben:
The "dsget user -memberof -expand" command returns incorrect results in Windows Server 2008 R2 and in Windows 7
Die Gruppenmitgliedschaften eines Benutzers mit "Net User" exportieren
Auch mit dem Kommandozeilentool NET kann man die Gruppenmitgliedschaften eines Benutzer wie folgt exportieren:
Net User <sAMAccountName> /Domain > C:\Temp\Gruppenmitgliedschaften.txt
Weitere Informationen: Delegierte Berechtigungen im AD verstehen Active Directory – Abfrage AD-PowerShell Befehle Token-Groups Attribute (Windows) How to enumerate a user's security group membership using Visual Basic or Visual Basic Script
Im Active Directory-Schema sind verschiedene Arten von Attribute definiert. Die meisten davon sind in der Active Directory-Datenbank (NTDS.dit) gespeichert und können einen festen Wert enthalten.
Aber längst nicht alle Attribute für ein Objekt sind in der AD-Datenbank gespeichert. Diese Art von Attribut bezeichnet man als Constructed Attribute, auch bekannt als Computed Attribute.
Die Merkmale eines solchen Attributs sind:
-
Constructed Attribute, zu Deutsch „konstruierte Attribute“ sind zwar im Schema definiert, sie enthalten jedoch selbst keinen Wert. Die Attributwerte werden erst von einem Domänencontroller im Moment der LDAP-Anfrage gebildet.
-
Da diese Attribute "constructed" sind, können sie auch nicht repliziert werden. Die Werte können auch nicht in den globalen Katalog (GC) übertragen werden.
-
Wird eine Abfrage nach solch einem Attribut durchgeführt, bildet jeder DC eigenständig den Wert.
-
Ein Wert eines konstruierten Attributs kann nicht vergeben bzw. geschrieben werden. Diese Art von Attribut wird lediglich für eine gezielte Abfrage vom DC zusammengesetzt.
-
Konstruierte Attribute können in der Regel nicht für Abfragen verwendet werden (die Ausnahme stellt das Attribut aNR oder memberOf dar).
-
In einigen Fällen muss bei der Abfrage im Parameter -Scope die Option BASE angegeben werden, wie z.B. für das Attribut tokenGroups. Mit dieser Option wird auf ein einziges Objekt zugegriffen.
-
Eine Abfrage nach allen Objekten in einem Container, die ein konstruiertes Attribut der Objekte die sich in dem Container befinden anzeigt, bringt kein Ergebnis.
Ein konstruiertes Attribut wird durch das dritte Bit im System-Flags Attribut definiert. Verbindet man sich in LDP z.B. mit dem konstruierten Attribut CN=Token-Groups,CN=Schema,CN=Configuration,DC=Root-Domäne lässt sich das System-Flag folgendermaßen kontrollieren:

Die konstruierten Attribute einer Gesamtstruktur anzeigen
In der AD-Powershell
Get-ADObject -LDAPFilter “(&(objectClass=attributeSchema)(systemflags:1.2.840.113556.1.4.803:=4))” -Searchbase “CN=Schema,CN=Configuration,DC=Root-Domäne” | Select Name
Oder:
Get-ADObject -LDAPFilter "(objectClass=attributeSchema)" -Searchbase "CN=Schema,CN=Configuration,DC=Root-Domäne" -Properties Systemflags | Where {$_.Systemflags -band 4} | Select Name
Mit LDP
-
Nach dem Starten von LDP gilt es zuerst eine Verbindung zu einem DC herzustellen.
-
Im zweiten Schritt muss man sich mit dem AD binden.
-
Anschließend gibt man im Suchfenster (unter Browse/Durchsuchen-Search/Suchen) als Basis-DN CN=Schema,CN=Configuration,DC=Root-Domäne ein und verwendet als Filter (&(objectcategory=attributeSchema)(systemFlags:1.2.840.113556.1.4.803:=4)).
-
Als Scope/Bereich gilt es One Level/Eine Ebene zu wählen.
-
Im Feld Attribute können dann die gewünschten Attribute angegeben werden.

In der Kommandozeile mit Dsquery, ab Windows Server 2003
dsquery * “CN=Schema,CN=Configuration,DC=Root-Domäne” -Scope Onelevel -attr Name -Filter "(&(objectcategory=attributeSchema)(systemFlags:1.2.840.113556.1.4.803:=4))"
Weitere Informationen: AD-PowerShell Befehle
Microsoft Windows 2000 Scripting Guide - Operational Attributes
How to query Active Directory by using a bitwise filter
System-Flags Attribute
Der RID-Master ist neben der Rolle des PDC-Emulators und Infrastrukturmasters die Rolle, die in jeder Domäne einer Gesamtstruktur existiert. Diese Betriebsmasterrolle weist einen eindeutigen Pool von 500 „relative identifier“ (RIDs) an jeden Domänencontroller innerhalb einer Domäne, für das Erstellen von Objekten zu. Der RID-Master kann keine RIDs domänenübergreifend verteilen. Wozu auch? Denn jede Domäne hat schließlich seinen eigenen RID-Master.
Jeder Domänencontroller (DC) verwendet RIDs um Sicherheitsprinzipale wie z.B. Benutzer-, Gruppen- oder Computerkonten (also SIDs) etc. zu erstellen. Ein „security identifier“ (kurz SID) setzt sich aus der Domänen-SID, diese SID ist für alle Objekte innerhalb einer Domäne identisch und einer eindeutigen „relativen ID“ (kurz RID) zusammen.

SIDs müssen in der Domäne (und in der Gesamtstruktur) eindeutig sein, um die Zugriffe auf die Netzwerkressourcen (Dateien, Drucker etc.) klar zu definieren. Da Sicherheitsprinzipale von jedem DC erstellt werden können, stellt der RID-Master sicher, dass ein RID nicht von zwei DCs gleichzeitig ausgestellt werden kann, in dem jeder DC einen eindeutigen RID-Pool erhält.
Wann fordert ein DC einen neuen RID-Pool an?
Hat ein DC bis einschließlich „Windows 2000 SP3“ 80% (also 400 RIDs) seines RID-Pools aufgebraucht, fordert der DC vom RID-Master aus seiner Domäne einen neuen Block von 500 RIDs an. Das bedeutet, dass jeder DC stets einen RID-Pool zwischen 100 und 600 RIDs zur Verfügung hat.
Ab „Windows 2000 SP4“ fordern die DCs bereits bei 50% (250 RIDs) verbrauchten RIDs einen neuen RID-Pool an. Das bietet eine bessere Flexibilität, wenn der RID-Master für eine gewisse Zeit offline sein sollte. Daher stehen einem DC ab „Windows 2000 SP4“ stets zwischen 250 und 750 RIDs zur Verfügung.
Ein DC fordert einen neuen RID-Pool an wenn:
Wenn ein DC seinen RID-Pool aufgebraucht hat und bzgl. eines etwaigen Problems vom RID-Master keinen neuen RID-Pool erhalten konnte, kann der DC keine Objekte im AD mehr erstellen. Im Verzeichnisdienstprotokoll des DCs werden die EventIDs 16645 sowie 16651 protokolliert die darauf hinweisen, dass der RID-Pool des DCs aufgebraucht ist und kein neuer RID-Pool angefordert werden konnte (z.B. weil der RID-Master offline ist oder Netzwerkprobleme bestehen).
RID Pool Request
Wo wird der RID-Master definiert?
Der RID-Master wird im Attribut fSMORoleOwner festgelegt, dass sich in den Eigenschaften des folgenden Objekts befindet: CN=RID Manager$,CN=System,DC=Domäne,DC=de
Im Attribut fSMORoleOwner wird als Wert der LDAP-Pfad zum „NTDS Settings“ Objekt des RID-Masters gespeichert: CN=NTDS Settings,CN=MZDCON01,CN=Servers,CN=Mainz,CN=Sites,CN=Configuration,DC=ad2008R2,DC=Dikmenoglu,DC=de
Verbindet man sich nun in LDP, das sich bis einschließlich „Windows Server 2003“ in den Windows Support Tools befindet und ab „Windows Server 2008“ bereits „on Bord“ ist, mit dem Objekt „CN=RID Manager$,CN=System,DC=Domäne,DC=de“ werden einem diese Informationen angezeigt:

Das Interessante an diesem Screenshot ist das Attribut rIDAvailablePool. In diesem Attribut ist ein Large Integer Wert mit einem „hohen“ und „niedrigen“ Wert gespeichert. Nur wie lässt sich der Wert 4611686014132422208 umrechnen und somit die beiden Bereiche zum Vorschein bringen? LDP schafft Abhilfe. In LDP hat Redmond ein Tool eingebaut, das einem das Umrechnen abnimmt. Unter Windows 2000 und Windows Server 2003 findet man das Umrechnungstool in LDP unter Utilities – Large Integer Converter. Ab Windows Server 2008 heißt es in LDP Dienstprogramme - Konvertierung großer Ganzzahlen. Wenn man dort den Wert aus dem Attribut rIDAvailablePool eingibt und umrechnen lässt, erhält man solch eine ähnliche Ausgabe:

Der „hohe Bereich“ gibt die maximale Anzahl der RIDs und somit der Sicherheitsprinzipale innerhalb einer Domäne an, die erstellt werden können. Es können in einer Domäne also 1 Milliarde Sicherheitsprinzipale erstellt werden. Dieser Wert lässt sich nicht ändern und ist auch einer der maximalen Limits des Active Directory!
Siehe auch: Die Grenzen des Active Directory
Der niedrige Bereich gibt den Anfang des nächsten RID-Pools an. Der nächste DC der vom RID-Master einen neuen RID-Pool anfordert, erhält einen RID-Pool von 1600 bis 2099. Der erste RID-Pool einer Domäne ist von 1100 bis 1599 (+/- zwei-drei RIDs, abhängig von der Serverversion).
Die noch zur Verfügung stehenden RIDs innerhalb einer Domäne, lassen sich auch in der Kommandozeile mit DCDIAG anzeigen. Der Befehl mit dem man den hohen und niedrigen Bereich anzeigen kann, lautet: DCDIAG /Test:RIDManager /v | Find /i „Available RID“

Ein weiterer Befehl mit dem man den bereits umgerechneten Wert aus dem Attribut rIDAvailablePool in der Kommandozeile sich anzeigen lassen kann, ist: DCDIAG /Test:RIDManager /v
Was passiert mit den ungenutzten RIDs?
Das Limit von einer Milliarde Sicherheitsprinzipalen werden die meisten Unternehmen nicht erreichen. Doch man sollte sich folgendem bewusst sein:
-
RIDs werden niemals an den RID-Master zurückgegeben. Wird ein Benutzer gelöscht, wird somit auch der SID gelöscht. Wenn z.B. der Benutzer „Yusuf“ gelöscht und ein neuer Benutzer mit dem gleichen Namen erstellt wird, so ist es nicht der identische Benutzer denn das neue Benutzerkonto erhält eine neue SID (und somit auch eine neue RID). Der gelöschte RID wandert nicht in den RID-Pool zurück.
-
Wenn ein DC heruntergestuft wird, ist sein RID-Pool egal wie viele RIDs verbraucht wurden, ebenfalls verloren.
-
Crasht ein DC, ist der RID-Pool auf dem DC auch dahin.
Neigt sich innerhalb einer Domäne die maximale Anzahl an RIDs dem Ende zu, muss entweder eine zusätzliche Domäne erstellt oder migriert werden!
Die RID-Attribute
In den Eigenschaften aller DC-Objekte befindet sich das Attribut rIDSetReferences. Darin ist als Wert der Distinguished Name des Objekts RID Set gespeichert. Jeder DC speichert seine RID-Pool Informationen in diesem Objekt: CN=RID Set,CN=<DC>,OU=Domain Controllers,DC=Domäne,DC=de
Diese kann man sich mit Bordmitteln in LDP oder ADSIEdit ansehen. Ab Windows Server 2008 kann man auch zuerst in der MMC Active Directory-Benutzer und Computer unter Ansicht die Optionen „Benutzer, Kontakte, Gruppen und Computer als Container“ und die „erweiterten Features“ aktivieren. Anschließend erscheint nach Auswahl des DC-Objekts das Objekt RID Set. Mit einem Doppelklick auf das Objekt kann man sich die RID-Pool Informationen im Reiter Attribut-Editor anzeigen lassen.
In den Eigenschaften des Objekts RID Set findet man die Attribute rIDAllocationPool, rIDNextRID, rIDPreviousAllocationPool und rIDUsedPool.

Jeder DC verfügt über zwei RID-Pools. Der RID-Pool den die DCs aktuell zum erstellen von Sicherheitsprinzipalen nutzen ist im Attribut rIDPreviousAllocationPool gespeichert. Im Attribut rIDAllocationPool wird ein neuer RID-Pool gespeichert den ein DC anfordert, wenn der aktuelle Pool den o.g. Schwellenwert erreicht hat. Ist in beiden Attributen der gleiche Wert gespeichert, hat der DC im Attribut rIDPreviousAllocationPool noch nicht den Schwellenwert erreicht. Rechnet man den Integer Wert im Attribut rIDPreviousAllocationPool mit dem Umrechnungstool in LDP um, erhält man den aktuellen RID-Pool der zurzeit genutzt wird:

Im Attribut rIDNextRID wird nicht wie es der Name erwarten lässt, der „nächste“ RID der beim erstellen des nächsten Sicherheitsprinzipals dem neuen Objekt zugewiesen wird gespeichert. Stattdessen ist im Attribut der letzte RID der dem „zuletzt“ erstellten Objekt vergeben wurde gespeichert.

Da die RID-Pool Informationen DC-spezifisch sind, werden die Attribute rIDAllocationPool, rIDNextRID und rIDPreviousAllocationPool logischerweise nicht repliziert. Jeder DC hat seine eigenen Werte in den Attributen gespeichert.
Das Attribut rIDUsedPool hingegen wird nicht verwendet.
Den RID-Pool erhöhen
Der RID-Pool von 500 RIDs, der vom RID-Master an die DCs und an sich selbst verteilt wird kann erhöht werden. Dazu gilt es auf dem RID-Master im folgenden Registry-Schlüssel, der seit Windows 2000 existiert, den entsprechenden Wert einzutragen: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\RID Values\RID Block Size
Wurde ein gewünschter Wert (in Dezimal, z.B. 10000) konfiguriert, muss zwingend der RID-Master neu gestartet werden ehe der neue Wert aktiv wird. Das verteilen eines größeren RID-Pools durch den RID-Master ist nur durch diese Registry-Änderung möglich. Trägt man dort einen kleineren Wert als 500 ein, wird der Wert ignoriert und stattdessen der Standardwert von 500 weiter verwendet.
Doch das vergrößern des RID-Pools ist in der Praxis in den allermeisten Fällen nicht notwendig! Wenn der RID-Pool auf einem DC den o.g. Schwellenwert erreicht, wird automatisch vom RID-Master ein neuer Pool angefordert. Ist dies nicht möglich, besteht ein Problem mit dem RID-Master oder es besteht ein Netzwerk bzw. Konnektivitätsproblem. Dies können DNS-, AD-Replikations- oder Netzwerkprobleme sein.
Die doppelte Vergabe einer SID
Es gibt Situationen in denen es zur doppelten Vergabe einer SID kommen kann. In Situationen wo der RID-Master „mit Gewalt“ von einem anderen DC übernommen wurde, ein DC von einem Image rückgesichert wurde oder zwei RID-Master in der Domäne existieren, kann es beim erstellen eines Sicherheitsprinzipals zur erneuten Vergabe einer bereits vergebenen RID kommen.
Um die Möglichkeit das zwei RID-Master in der Domäne existieren können zu minimieren, werden folgende Überprüfungen durchgeführt:
-
Es findet eine Replikation statt bevor der RID-Master „mit Gewalt“ von einem anderen DC übernommen wird.
-
Das Attribut rIDAvailablePool wird über die „dringende Replikation“ (urgent replication) repliziert, um den zukünftigen RID-Master möglichst auf dem aktuellsten Stand zu bringen.
-
Wenn der RID-Master einen RID-Pool einem DC zuweist und dieser sich mit einem anderen Pool auf einem anderen DC überschneidet, verwirft der DC den neuen RID-Pool den er erhalten hat und fordert einen neuen Pool an. Das macht der DC erst dann, wenn er die Information der Überschneidung über die AD-Replikation erfahren hat. Diese Vorgehensweise hindert die DCs eine bereits vergebene SID erneut zu vergeben und sorgt dafür, dass die DCs die einen RID-Pool haben der sich mit einem anderen Pool überschneidet, vom RID-Master einen neuen RID-Pool anfordern.
Wenn der Fall doch einmal eintreffen sollte und doppelte SIDs (aus welchen Gründen auch immer) vergeben wurden, kann man diese mit NTDSUTIL aufspüren und entfernen. Die Vorgehensweise ist wie folgt:
-
Zuerst gilt es unter Start – Ausführen das NTDSUTIL zu starten.
-
Danach muss man sich mit einem DC verbinden. Dazu gibt man den folgenden Befehl ein: connect to server <Computername>
-
Mit dem Befehl check duplicate sid wird nach doppelten SIDs in der Domäne gesucht. Ist die Suche beendet, wird die Log-Datei dupsid.log auf der Ebene erstellt, in der auch das NTDSUTIL aufgerufen wurde. In der Log-Datei sind die doppelten SIDs (falls vorhanden) protokolliert.
-
Wurden doppelte SIDs gefunden, kann man auf der gleichen NTDSUTIL-Ebene mit dem Befehl cleanup duplicate sid die duplizierten SIDs entfernen.
-
Anschließend kann man mit „q“ oder „quit“ (zwei mal) das NTDSUTIL verlassen.
Das erstellen der Log-Datei kann auch mit einem Einzeiler in der CMD erstellt werden. Der Befehl dazu lautet: C:\Users\Administrator> NTDSUTIL "sec acc man" "co to se DCNAME" "check dup sid" q q
Doppelte SIDs können mit diesem Einzeiler entfernt werden: C:\Users\Administrator> NTDSUTIL "sec acc man" "co to se DCNAME" "clean dup sid" q q
Weitere Informationen: Die FSMO-Rollen verschieben Event ID 16650: The account-identifier allocator failed to initialize in Windows 2000 and in Windows Server 2003 Description of RID Attributes in Active Directory "Domain controller has failed to obtain a new identifier pool" error event in Windows 2000 Server SP3 and earlier Active Directory attributes that refer to a prefix may not be stored in the local copy of Active Directory on a computer that is running Microsoft Windows Server 2003 FSMOs HOW TO: Find and Clean Up Duplicate Security Identifiers with Ntdsutil in Windows Server 2003 How To Find and Clean Up Duplicate Security Identifiers with Ntdsutil in Windows 2000
Bisher konnte der Domänen- sowie Gesamtstrukturfunktionsmodus über die grafische Oberfläche, zum einen über die MMC Active Directory-Benutzer und -Computer und zum anderen über die MMC Active Directory-Domänen und -Vertrauensstellung hochgestuft werden. Der Domänenfunktionsmodus lässt sich entweder in der MMC Active Directory-Benutzer und -Computer oder Active Directory-Domänen und -Vertrauensstellung hochstufen. Der Gesamtstrukturfunktionsmodus hingegen lässt sich ausschließlich in der MMC Active Directory-Domänen und -Vertrauensstellung hochstufen.
Beide Funktionsebenen lassen sich (neben LDIFDE und VBSkript) auch mit LDP und ADSIEdit heraufstufen. Dazu muss für den Domänenfunktionsmodus im Attribut msDS-Behavior-Version, das sich in der Domänenpartition in den Eigenschaften des Containers <DC=Domäne,DC=TLD> befindet, der entsprechende Wert eingetragen werden.
Für den Gesamtstrukturfunktionsmodus ist ebenfalls im Attribut msDS-Behavior-Version, das sich in der Konfigurationspartition in den Eigenschaften des Containers <CN=Partitions,CN=Configuration,DC=Root-Domäne,DC=TLD> befindet, der entsprechende Wert einzutragen.
Die MMCs oder die AD-PowerShell machen auch nichts anderes, als den Wert im Attribut msDS-Behavior-Version an entsprechender Stelle zu ändern.
Der Wert im Attribut msDS-Behavior-Version das sich in den Eigenschaften der Domänenpartition befindet, entspricht dem folgenden Domänenfunktionsmodus:
0 = Domänenfunktionsmodus: Windows 2000 gemischt und Windows 2000 pur 1 = Domänenfunktionsmodus: Windows Server 2003 Interim 2 = Domänenfunktionsmodus: Windows Server 2003 3 = Domänenfunktionsmodus: Windows Server 2008 4 = Domänenfunktionsmodus: Windows Server 2008 R2
Der Wert im Attribut msDS-Behavior-Version das sich in der Konfigurationspartition in den Eigenschaften des Objekts CN=Partitions befindet, entspricht dem folgenden Gesamtstrukturfunktionsmodus:
0 = Gesamtstrukturfunktionsmodus: Windows 2000 1 = Gesamtstrukturfunktionsmodus: Windows Server 2003 Interim 2 = Gesamtstrukturfunktionsmodus: Windows Server 2003 3 = Gesamtstrukturfunktionsmodus: Windows Server 2008 4 = Gesamtstrukturfunktionsmodus: Windows Server 2008 R2
Weitere Details werden im folgenden Artikel erläutert:
Domänen- und Gesamtstrukturfunktionsmodus
Mit der Einführung des Windows Server 2008 R2 und der AD-PowerShell lässt sich der Domänen- und Gesamtstrukturfunktionsmodus nun auch über die AD-PowerShell hochstufen.
Den Domänenfunktionsmodus mit der AD-PowerShell heraufstufen
Der Domänenfunktionsmodus lässt sich mit Domänen-Admin Rechten mit diesem Befehl heraufstufen:
Set-ADDomainMode -Identity <Domäne> -DomainMode <Modus>
Der Identity-Parameter gibt die AD-Domäne an, die in den höheren Modus gestuft werden soll. Die Domäne kann dabei durch den:
Mit der Angabe des definierten Namen der Domäne sieht der Befehl so aus: Set-ADDomainMode -Identity „DC=blog,DC=dikmenoglu,DC=de“ -DomainMode <Modus>
Durch die Angabe der ObjectGUID der Domäne sieht der Befehl wie folgt aus: Set-ADDomainMode -Identity e7057501-108f-4320-9f55-d40a400acbe7 -DomainMode <Modus>
Der Befehl zum Heraufstufen in einen höheren Domänenfunktionsmodus mit der Angabe der Object-SID ist folgender: Set-ADDomainMode -Identity S-1-5-21-4256209546-3580370902-1950063504 -DomainMode <Modus>
Mit der Angabe des DNS-Domänennamen lautet der Befehl so: Set-ADDomainMode -Identity „blog.dikmenoglu.de“ -DomainMode <Modus>
Zum Heraufstufen des Domänenfunktionsmodus mit der Angabe des NetBIOS-Domänennamen gilt es diesen Befehl anzugeben: Set-ADDomainMode -Identity „blog-dikmenoglu“ -DomainMode <Modus>
Da die AD-PowerShell Pipeline-fähig ist, kann ein Domänenobjekt über die Pipeline an den Identity-Parameter übergeben werden. Z. B. kann mit dem Cmdlet Get-ADDomain ein Domänenobjekt abgerufen und dieses anschließend über die Pipeline an das Cmdlet Set-ADDomainMode übergeben werden. Der Befehl würde so aussehen:
Get-ADDomain | Set-ADDomainMode -Identity <Domäne> -DomainMode <Modus>
Der Parameter -DomainMode gibt den Domänenfunktionsmodus an, auf den die angegebene Domäne hochgestuft werden soll. Bei der Angabe von <Modus> können folgende Werte angegeben werden:
- Windows2000Domain oder 0 - Windows2003InterimDomain oder 1 - Windows2003Domain oder 2 - Windows2008Domain oder 3 - Windows2008R2Domain oder 4
Die Domäne “blog.dikmenoglu.de” lässt sich wie folgt auf den Domänenfunktionsmodus “Windows Server 2008 R2” heraufstufen: Set-ADDomainMode -Identity blog.dikmenoglu.de -DomainMode 4
Das Heraufstufen einer Domäne kann auch z.B. von einem Windows 7 Client worauf die RSAT installiert sind erfolgen, das Mitglied einer anderen Domäne ist. Natürlich funktioniert das nur, wenn das Benutzerkonto mit dem das Heraufstufen durchgeführt wird, Domänen-Admin Rechte in der Zieldomäne hat oder dem Benutzer die entsprechenden Rechte delegiert wurden.
Den Gesamtstrukturfunktionsmodus mit der AD-PowerShell heraufstufen
Der Gesamtstrukturfunktionsmodus lässt sich mit Organisations-Admin Rechten mit diesem Befehl heraufstufen:
Set-ADForestMode -Identity <Wert> -ForestMode <Modus>
Der -identity Parameter gibt die Root-Domäne der Gesamtstruktur an. Als Wert kann der:
Verwendet man den vollqualifizierten Domänennamen, sieht der Befehl so aus: Set-ADForestMode -Identity „Root-Domäne.de“ -ForestMode <Modus>
Die Gesamtstruktur kann durch die Angabe der ObjectGUID der Root-Domäne wie folgt heraufgestuft werden: Set-ADForestMode -Identity e7057501-108f-4320-9f55-d40a400acbe7 -ForestMode <Modus>
Mit der Angabe des NetBIOS-Namen der Root-Domäne wird die Gesamtstruktur folgendermaßen heraufgestuft: Set-ADForestMode -Identity „Root-Domäne“ -ForestMode <Modus>
Mit Angabe des DNS-Hostnamen (FQDN) wird die Gesamtstruktur so heraufgestuft: Set-ADForestMode –Identity “DCON01.Root-Domäne.de” -ForestMode <Modus>
Eine weitere Möglichkeit die Gesamtstruktur in den höheren Modus zu stufen, ist durch die Pipeline-Fähigkeit der AD-PowerShell möglich. Mit dem Cmdlet Get-ADForest können zuerst die Gesamtstrukturinformationen abgerufen und anschließend über die Pipeline an das Cmdlet Set-ADForestMode übergeben werden:
Get-ADForest | Set-ADForestMode -Identity <Wert> -ForestMode <Modus>
Der Parameter -ForestMode gibt den Gesamtstrukturfunktionsmodus an, auf den die angegebene Gesamtstruktur hochgestuft werden soll. Bei der Angabe von <Modus> können folgende Werte angegeben werden:
- Windows2000Forest oder 0 - Windows2003InterimForest oder 1 - Windows2003Forest oder 2 - Windows2008Forest oder 3 - Windows2008R2Forest oder 4
Der Gesamtstrukturfunktionsmodus lässt sich wie folgt auf „Windows Server 2008 R2“ heraufstufen: Set-ADForestMode -Identity „root.dikmenoglu.de“ -ForestMode Windows2008R2Forest
Erstmals kann der Domänen- sowie Gesamtstrukturfunktionsmodus unter gewissen Umständen sogar zurückgestuft werden. Was das genau auf sich hat, wird in diesem Artikel beschrieben:
Den Domänen- und Gesamtstrukturfunktionsmodus zurückstufen
Den Domänen- und Gesamtstrukturfunktionsmodus anzeigen
Neben den MMCs Active Directory-Benutzer und -Computer sowie Active Directory-Domänen und -Vertrauensstellung lässt sich der Domänen- und Gesamtstrukturfunktionsmodus unter anderem mit der AD-PowerShell, LDP und Dsquery wie folgt anzeigen.
Die Funktionsebenen in der AD-PowerShell anzeigen
-
Den Domänenfunktionsmodus kann man sich mit diesem Befehl anzeigen lassen: Get-ADDomain | Select DomainMode | FL
-
Der Gesamtstrukturfunktionsmodus lässt sich mit diesem Befehl anzeigen: Get-ADForest | Select ForestMode | FL
-
Man kann sich aber auch mit dem RootDSE-Objekt verbinden und die Informationen aus den beiden Attributen ForestFunctionality und DomainFunctionality entnehmen. Der Befehl lautet so (alles in einer Zeile): [ADSI]"LDAP://RootDSE" | Select ForestFunctionality,DomainFunctionality
LDP
Startet man das LDP und verbindet sich mit einem DC, werden die Attribute vom RootDSE-Objekt angezeigt. Dort kann man ebenfalls den Domänen- sowie Gesamtstrukturfunktionsmodus entnehmen.

Dsquery
-
Das Attribut msDS-Behavior-Version lässt sich für den Domänenfunktionsmodus wie folgt abfragen: dsquery * “DC=Domäne,DC=de” -Scope Base -attr msDS-Behavior-Version
-
Die Abfrage für den Gesamtstrukturfunktionsmodus lautet folgendermaßen: dsquery * “CN=Partitions,CN=Configuration,DC=Root-Domäne” -Scope Base -attr msDS-Behavior-Version
Weitere Informationen: How to raise domain and forest functional levels in Windows Server 2003 3.1.1.3.2 rootDSE Attributes
Was bis Windows Server 2003 möglich ist, funktioniert ab Windows Server 2008 nicht mehr. Bis Windows Server 2003 ist es möglich einen zusätzlichen Server in einer Subdomäne zum Domänencontroller (DC) zu stufen, ohne das eine Verbindung zwischen der Sub- und Root-Domäne besteht.
Ab Windows Server 2008 ist das nicht mehr möglich. Existiert zum Zeitpunkt des Heraufstufens zwischen der Sub- und Root-Domäne keine (VPN-) Verbindung, kann ein Server nicht als zusätzlicher DC in einer Subdomäne heraufgestuft werden. Dabei spielt es keine Rolle, ob es sich um einen Standalone- oder Mitgliedsserver handelt!
Das Heraufstufen eines zusätzlichen DCs schlägt über die grafische Oberfläche mit dem DCPROMO-Assistenten und in der Kommandozeile (CMD) mit der Unattendedvariante (unbeaufsichtigte DC-Installation) fehl. Es schlägt auch dann fehl, wenn lediglich die DNS- und LDAP-Kommunikation zwischen der Sub- und Root-Domäne gestört ist.
Die irreführende Fehlermeldung über den DCPROMO-Assistenten lautet wie folgt:

Auch die Fehlermeldung mit der Unattendedvariante in der Kommandozeile ist nicht Aufschlussreich:

Die Ursache für dieses Fehlverhalten ab Windows Server 2008 liegt darin begründet, dass das DCPROMO versucht einen DC aus der Root-Domäne zu erreichen, um Gesamtstrukturinformationen abzurufen. Leider weisen die Fehlermeldungen keineswegs darauf hin. Die Gesamtstrukturinformationen können aber von jedem DC egal aus welcher Domäne geliefert werden.
Nun hat Microsoft reagiert und einen Hotfix veröffentlicht. Der Hotfix kann von diesem KB-Artikel aus angefordert werden:
You cannot install Active Directory Domain Services on a member server that is running Windows Server 2008 in a branch office if the DNS and LDAP communication between the branch office and the forest root domain is blocked
Nach der Installation des Hotfixes ist kein Neustart notwendig. Anschließend ist das Heraufstufen über die grafische Oberfläche und in der CMD möglich, ohne das eine Verbindung zwischen der Sub- und Root-Domäne existiert.
Das Problem besteht leider auch unter Windows Server 2008 R2! Auch für die „2008 R2“ Version wird Microsoft einen Hotfix veröffentlichen. Sobald dieser verfügbar ist, wird ein entsprechender Hinweis an dieser Stelle erfolgen.
16.10.2009: Leider gibt es zur Zeit mit der x32Bit Version des Hotfixes ein Problem. Microsoft ist bereits informiert und wird es schnellstmöglich beheben. Die x64 Version funktioniert ohne Probleme.
Seit Windows Server 2008 gibt es ein neues Feature, das bei der Domänenanmeldung den Zeitpunkt der letzten interaktiven Anmeldung anzeigt.
Bisher hat man seit der Einführung des Active Directory mit Windows 2000 die Möglichkeit den Zeitpunkt der letzten Domänenanmeldung eines Benutzers, durch das Attribut Last-Logon herauszufinden. Der Nachteil an diesem Attribut ist, dass es nicht zwischen den Domänencontrollern (DCs) repliziert wird. Somit muss man jeden DC in der Domäne einzeln abfragen um das aktuellste Datum zu erhalten. Mit Windows Server 2003 hat Microsoft dann das Attribut Last-Logon-Timestamp eingeführt, das sogar zwischen den DCs repliziert wird. Weitere Einzelheiten werden im folgenden Artikel erläutert:
Die letzte Benutzeranmeldung herausfinden
Für das Anzeigen der „letzten interaktiven Domänenanmeldung“ wurden dem AD-Schema ab Windows Server 2008 vier Attribute hinzugefügt, als die wären:
- msDS-FailedInteractiveLogonCount: In diesem Attribut wird die Anzahl der fehlgeschlagenen Anmeldeversuche seit der Aktivierung dieser Funktion gespeichert.
- msDS-FailedInteractiveLogonCountAtLastSuccessfulLogon: Die Anzahl der fehlgeschlagenen interaktiven Anmeldeversuche bis zur letzten erfolgreichen Anmeldung werden in diesem Attribut gespeichert.
- msDS-LastFailedInteractiveLogonTime: Der Zeitpunkt des letzten fehlgeschlagenen Anmeldeversuchs wird in diesem Attribut gespeichert.
- msDS-LastSuccessfulInteractiveLogonTime: Wann die letzte erfolgreiche Anmeldung und somit die korrekte Kombination aus Benutzername und Kennwort eingegeben wurde, wird in diesem Attribut gespeichert.
Mit dieser neuen Funktion kann der Mitarbeiter einfach erkennen, ob evtl. sein Benutzerkonto kompromittiert wurde oder dieser ein Opfer einer Brute-Force Attacke ist.
Ist diese Funktion aktiviert, kann man die letzte erfolgreiche Benutzeranmeldung neben dem Attribut Last-Logon und Last-Logon-TimeStamp, auch durch das Attribut msDS-LastSuccessfulInteractiveLogonTime herausfinden.
Die letzte erfolgreiche Anmeldung aller Benutzer einer bestimmten OU kann man z.B. mit diesem Befehl abfragen:
dsquery * "OU=<OU>,DC=Domäne,DC=de" -attr name msDS-LastSuccessfulInteractiveLogonTime
Als Ergebnis wird ein 8 Byte bzw. 64 Bit Integer8 Wert geliefert. Diesen kann man dann in der Kommandozeile mit dem folgenden Befehl in ein leserliches Datumsformat konvertieren: w32tm /ntte <Wert>.
Falls die Daten einer bestimmten OU z.B. in Excel weiterverarbeitet werden sollen, könnte mit CSVDE ein Export der Werte mit diesem Befehl durchgeführt werden:
CSVDE -f Benutzer.csv -r "(&(objectClass=user)(objectCategory=person))" –d "OU=<OU>,DC=Domäne,DC=de" –p onelevel -l "name,sAMAccountName,msDS-LastSuccessfulInteractiveLogonTime"
Wo wird dieses Feature aktiviert?
Diese neue Funktion steht in Form einer neuen GPO zur Verfügung:
Computerkonfiguration\Richtlinien\Administrative Vorlagen\Windows-Komponenten\Windows-Anmeldeoptionen\Informationen zu vorherigen Anmeldungen bei der Benutzeranmeldung anzeigen
Sollen die Informationen nur beim anmelden an DCs angezeigt werden, gilt es diese Richtlinie nur auf die DCs zu verlinken (genauer: Auf die OU „Domain Controllers“). Dazu kann man entweder die Default Domain Controllers Richtlinie oder eine neu erstellte GPO verwenden. Ist es hingegen gewünscht die Infos auch auf den Clients z.B. der Finanzbuchabteilung anzuzeigen, gilt es zusätzlich die GPO auf die Clients der Finanzbuchabteilung (auf einer eigenen OU) zu verlinken.
Wie es unschwer zu erkennen ist, handelt es sich dabei um eine Computerrichtlinie die auf Clients, Mitgliedsserver und DCs verlinkt werden muss und nicht auf OUs, in denen sich ausschließlich Benutzer oder Gruppen befinden!
Die Voraussetzungen
- Der Domänenfunktionsmodus muss sich auf Windows Server 2008 oder höher befinden.
- Auf der Client Seite wird diese Funktion erst ab Windows Vista unterstützt. Ältere Betriebssysteme ignorieren diese Funktion.
- Möchte man die Infos auf den Clients einer bestimmten OU angezeigt bekommen (z.B. auf den Clients der Finanzbuchabteilung), muss die GPO zwingend auch auf die DCs angewendet werden. Somit bekommt man dann die Infos auch bei der Anmeldung an den DCs angezeigt. Das die Infos nur auf den Clients und nicht noch zusätzlich auf den DCs angezeigt werden, ist leider nicht möglich.
Die Funktionsweise der „letzten interaktiven Anmeldung“
Ist das Anzeigen der letzten interaktiven Domänenanmeldung aktiviert, erhält der Domänenbenutzer bei seiner ersten Domänenanmeldung nach Aktivierung dieser Funktion zuerst folgende Information angezeigt, ehe er den Desktop zu Gesicht bekommt:

Ab der zweiten Anmeldung werden dem Benutzer dann die folgenden Informationen angezeigt:
- Den Zeitpunkt der letzten erfolgreichen interaktiven Anmeldung.
- Den Zeitpunkt des letzten fehlgeschlagenen interaktiven Anmeldeversuchs.
- Die Anzahl der fehlgeschlagenen Anmeldeversuche seit der letzten erfolgreichen interaktiven Anmeldung.

Die o.g. vier Attribute werden zwischen den DCs innerhalb einer Domäne repliziert. Sie werden jedoch nicht in den globalen Katalog repliziert und werden auch nicht indiziert (was sich beides in den jeweiligen Attributen ändern lässt).
Hat sich der Benutzer „einmal“ an einem Computer angemeldet auf dem die GPO angewendet wird, werden die Werte in den o.g. Attributen auch dann aktualisiert, wenn sich der Benutzer an Computern anmeldet auf denen die GPO nicht wirkt. Aber die Informationen über die letzte interaktive Anmeldung und über die letzten Anmeldeversuche werden logischerweise dann nicht angezeigt.
Bei der letzten interaktiven Anmeldung wird auch kein Hinweis angezeigt, von welchem Computer aus der Anmeldeversuch durchgeführt wurde. Schließlich sind die Informationen in den Eigenschaften des Benutzer- und nicht Computerobjekts hinterlegt. Um festzustellen von welchem Computer der Anmeldeversuch durchgeführt wurde, müssen dazu die Sicherheitsprotokolle aller DCs innerhalb der Domäne überprüft werden.
Die Besonderheiten bei diesem Feature
Wenn die Voraussetzungen für dieses Feature nicht erfüllt sind, erhält man bei der Anmeldung folgende Meldung:
Aufgrund der Sicherheitsrichtlinien auf diesem Computer werden Informationen über die letzte interaktive Anmeldung angezeigt. Die Informationen konnten nicht ermittelt werden. Wenden Sie sich an den Netzwerkadministrator, um weitere Unterstützung zu erhalten.
Anschließend gelangt man erneut zum Anmeldebildschirm. Eine interaktive Anmeldung (STRG+ALT+ENTF) lokal an dem Computer ist nicht möglich!
Das nicht Erfüllen der Voraussetzungen sind:
- Ist der Domänenfunktionsmodus nicht auf mindestens „Windows Server 2008“ und die GPO wird aktiviert und auf eine OU verlinkt, können sich die Benutzer an den Computern die sich in dieser OU befinden nicht anmelden. Das bedeutet, wenn die GPO z.B. auf die OU „Domain Controllers“ verlinkt wird, kann man sich anschließend nicht mehr interaktiv (STRG+ALT+ENTF) an den DCs anmelden!
- Wird die GPO nur auf eine OU verlinkt in der sich Windows Server 2008 Mitgliedsserver, Windows Vista oder Windows 7 Clients befinden und nicht noch zusätzlich auf die OU „Domain Controllers“, so bleibt den Benutzern ebenfalls die Anmeldung an den betroffenen Computern verwehrt.
Es sollte unbedingt vor dem Einsatz dieser Funktion ein ausgiebiger Test in einer Testumgebung durchgeführt werden!
Es gibt verschiedene Möglichkeiten nach Computern die ein bestimmtes Betriebssystem sowie Service Pack installiert haben zu suchen. Die Attribute in denen diese Informationen enthalten sind wären: OperatingSystem, OperatingSystemVersion und OperatingSystemServicePack.
Es ist empfehlenswert das Attribut OperatingSystem bei der Abfrage zu verwenden und nicht nur(!) das Attribut OperatingSystemVersion. Denn die Versionsnummer lautet je nach Betriebssystem sowie Service Pack zwischen Servern und Clients gleich.
Z.B. lautet die Versionsnummer zwischen „Windows Vista SP1“ und „Windows Server 2008 SP1“ bei beiden Betriebssystemen „6.0 (6001)“. Auf einem „Windows Vista SP2“ und einem „Windows Server 2008 SP2“ lautet die Versionsnummer bei beiden Betriebssystemen „6.0 (6002)“. Oder zwischen einem „Windows Server 2008 R2“ und „Windows 7“ jeweils ohne Service Pack, lautet die Versionsnummer bei beiden Betriebssystemen gleich „6.1 (7600)“.
Hinweis: Die genaue Schreibweise welches Betriebssystem sowie Service Pack installiert ist, erfährt man neben der Versionsnummer in der MMC Active Directory-Benutzer und -Computer (dsa.msc). Dort werden die Informationen in den Eigenschaften eines Computerkontos im Reiter „Betriebssystem“ angezeigt.
In der AD-PowerShell unter Windows Server 2008 R2 und Windows 7
# Alle Computerobjekte zusätzlich mit den Werten Betriebssystem, Version und Service Pack anzeigen: Get-ADComputer –Filter {Name –Like „*“} –Properties OperatingSystem, OperatingSystemVersion, OperatingSystemServicePack
# Es ist auch möglich die Ausgabe in eine CSV-Datei zu exportieren, um diese z.B. in Excel weiterzuverarbeiten. Exportieren lässt sich das Ergebnis dank der Pipeline-Fähigkeit der AD-PowerShell und dem Cmdlet Export-CSV wie folgt: Get-ADComputer –Filter {Name –Like „*“} –Properties OperatingSystem, OperatingSystemVersion, OperatingSystemServicePack | Export-CSV Computer.csv
Nach Windows Server 2008 R2 suchen
# Alle Computerobjekte in der Domäne mit dem Betriebssystem „Windows Server 2008 R2“ (alle Versionen) anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Server 2008 R2*“}
# Alle Computerobjekte in der Domäne nur mit dem Betriebssystem „Windows Server 2008 R2 Standard“ anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows Server 2008 R2 Standard“}
# Alle Computerobjekte mit dem Betriebssystem „Windows Server 2008 R2“ (alle Versionen) aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Server 2008 R2*“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
# Alle „Windows Server 2008 R2“ (alle Versionen) Computerobjekte mit einem bestimmten Service Pack aus einer OU anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Server 2008 R2*“ –and OperatingSystemServicePack –eq „Service Pack x“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
Nach Windows Server 2008 suchen
# Um lediglich „Windows Server® 2008 Standard“ Computerobjekte mit Service Pack 1 einer Domäne anzuzeigen, kann dieser Befehl verwendet werden: Get-ADComputer –Filter {OperatingSystem –eq „Windows Server® 2008 Standard“ –and OperatingSystemServicePack –eq „Service Pack 1“}
Hinweis: Das ® Symbol kann per Copy&Paste in die AD-PowerShell kopiert werden.
# Alle “Windows Server 2008” (alle Versionen) Computerobjekte, egal welches Service Pack installiert ist einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Server*“ –and OperatingSystemVersion –Like „6.0*“}
# Alle “Windows Server 2008” (alle Versionen) Computerobjekte mit Service Pack 1 einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Server*“ –and OperatingSystemVersion –eq „6.0 (6001)“}
# Alle „Windows Server 2008“ (alle Versionen) Computerobjekte mit „Service Pack 2“ einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows Server*“ –and OperatingSystemVersion –eq „6.0 (6002)“}
# Alle Computerobjekte mit dem Betriebssystem „Windows Server 2008“ (alle Versionen), egal welches Service Pack installiert ist aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Server*“ –and OperatingSystemVersion –Like „6.0*“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
# Alle „Windows Server® 2008 Standard“ Computerobjekte mit „Service Pack 2“ aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows Server® 2008 Standard“ –and OperatingSystemServicePack –eq „Service Pack 2“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
# Alle „Windows Server 2008“ (alle Versionen) Computerobjekte mit „Service Pack 1“ aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Server*“ –and OperatingSystemVersion –eq „6.0 (6001)“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
# Alle „Windows Server 2008“ (alle Versionen) Computerobjekte mit „Service Pack 2“ aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Server*“ –and OperatingSystemVersion –eq „6.0 (6002)“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
Nach Windows Server 2003 suchen
# Um lediglich „Windows Server 2003“ Computerobjekte einer Domäne anzuzeigen, kann dieser Befehl verwendet werden: Get-ADComputer –Filter {OperatingSystem –eq „Windows Server 2003“}
Hinweis: Unter „Windows Server 2003“ unterscheidet Microsoft im Attribut OperatingSystem nicht zwischen „Standard“ oder „Enterprise“.
# Alle Computerobjekte mit „Windows Server 2003“ und dem „Service Pack 2“ einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows Server 2003“ –and OperatingSystemServicePack –eq „Service Pack 2“}
# Alle Computerobjekte mit dem Betriebssystem „Windows Server 2003“ aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Server 2003“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
# Alle Computerobjekte mit „Windows Server 2003“ und dem „Service Pack 2“ aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows Server 2003“ –and OperatingSystemServicePack –eq „Service Pack 2“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
Nach Windows 2000 Server oder Clients suchen
# Alle „Windows 2000“ Computerobjekte (Clients und Server) einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows 2000*“}
# Alle „Windows 2000 Server“ einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Server“}
# Alle „Windows 2000 Server“ mit „Service Pack 4“ einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Server“ –and OperatingSystemServicePack –eq „Service Pack 4“}
# Alle „Windows 2000 Server“ aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Server“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
# Alle “Windows 2000 Server“ mit „Service Pack 4“ aus einer OU anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Server“ –and OperatingSystemServicePack –eq „Service Pack 4“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
# Alle „Windows 2000 Professional“ Clients einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Professional“}
# Alle „Windows 2000 Professional“ mit „Service Pack 4“ einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Professional“ –and OperatingSystemServicePack –eq „Service Pack 4“}
# Alle „Windows 2000 Professional“ aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Professional“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
# Alle „Windows 2000 Professional“ mit „Service Pack 4“ aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows 2000 Professional“ –and OperatingSystemServicePack –eq „Service Pack 4“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
Nach Windows XP suchen
# Alle Windows XP Clients einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows XP*“}
# Alle Windows XP Clients mit „Service Pack 2“ einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows XP*“ –and OperatingSystemServicePack –eq „Service Pack 2“}
# Alle Windows XP Clients aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows XP*“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
# Alle Windows XP Clients mit “Service Pack 3” aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows XP*“ –and OperatingSystemServicePack –eq „Service Pack 3“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
Nach Windows Vista suchen
# Alle Windows Vista Clients einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Vista*“}
# Alle Windows Vista Clients mit „Service Pack 1“ einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Vista*“ –and OperatingSystemServicePack –eq „Service Pack 1“}
# Alle Windows Vista Ultimate Clients mit „Service Pack 1“ einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Vista* Ultimate“ –and OperatingSystemServicePack –eq „Service Pack 1“}
# Alle Windows Vista Clients aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Vista*“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
# Alle Windows Vista Clients mit “Service Pack 2” aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows Vista*“ –and OperatingSystemServicePack –eq „Service Pack 2“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
Nach Windows 7 suchen
# Alle Windows 7 Clients einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows 7*“}
# Alle Windows 7 Ultimate Clients einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –eq „Windows 7 Ultimate“}
# Alle Windows 7 Clients mit einem bestimmten Service Pack einer Domäne anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows 7*“ –and OperatingSystemServicePack –eq „Service Pack x“}
# Alle Windows 7 Clients aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows 7*“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
# Alle Windows 7 Clients mit “Service Pack 2” aus einer bestimmten OU anzeigen: Get-ADComputer –Filter {OperatingSystem –Like „Windows 7*“ –and OperatingSystemServicePack –eq „Service Pack x“} –SearchBase „OU=<OU>,DC=Domäne,DC=de“ –SearchScope OneLevel
CSVDE
In der Kommandozeile lassen sich die gewünschten Informationen mit CSVDE exportieren. Der Vorteil des Exports mit CSVDE ist, das man die exportierte CSV-Datei mit Excel öffnen und weiterverarbeiten kann.
Windows Server 2008 R2 exportieren
# Alle Windows Server 2008 R2 aus der Domäne exportieren: Csvde –f Win2008R2.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows Server 2008 R2 mit einem bestimmten Service Pack aus der Domäne exportieren: Csvde –f Win2008R2.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x))" -l name,dNSHostName
# Alle Windows Server 2008 R2 aus einer OU exportieren: Csvde -f Win2008R2.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows Server 2008 R2 mit einem bestimmten Service Pack aus einer OU exportieren: Csvde –f Win2008R2.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x))" -l name,dNSHostName
Windows Server 2008 exportieren
# Alle Windows Server 2008 (und nicht “Windows Server 2008 R2”) aus der Domäne exportieren: Csvde –f Win2008.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(!OperatingSystem=Windows Server 2008 R2*))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows Server 2008 mit Service Pack 1 aus der Domäne exportieren: Csvde –f Win2008.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(OperatingSystemServicePack=Service Pack 1)(!OperatingSystem=Windows Server 2008 R2*))" -l name,dNSHostName
# Alle Windows Server 2008 aus einer OU exportieren: Csvde -f Win2008.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(!OperatingSystem=Windows Server 2008 R2*))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows Server 2008 mit Service Pack 1 aus einer OU exportieren: Csvde –f Win2008.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(OperatingSystemServicePack=Service Pack 1)(!OperatingSystem=Windows Server 2008 R2*))" -l name,dNSHostName
Windows Server 2003 exportieren
# Alle Windows Server 2003 aus der Domäne exportieren: Csvde –f Win2003.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2003))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows Server 2003 mit Service Pack 1 aus der Domäne exportieren: Csvde –f Win2003.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2003)(OperatingSystemServicePack=Service Pack 1))" -l name,dNSHostName
# Alle Windows Server 2003 aus einer OU exportieren: Csvde -f Win2003.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2003))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows Server 2003 mit Service Pack 1 aus einer OU exportieren: Csvde –f Win2003.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows Server 2003)(OperatingSystemServicePack=Service Pack 1))" -l name,dNSHostName
Windows 2000 Clients und Server exportieren
# Alle Windows 2000 Clients und Server aus der Domäne exportieren: Csvde –f Win2000.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000*))" -l name,dNSHostName,OperatingSystemServicePack
# Nur Windows 2000 Clients und Server mit Service Pack 3 aus der Domäne exportieren: Csvde –f Win2000.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000*)(OperatingSystemServicePack=Service Pack 3))" -l name,dNSHostName
# Alle Windows 2000 Clients und Server aus einer OU exportieren: Csvde –f Win2000.csv –s <DC> –d "OU=<OU>,DC=Domäne,DC=TLD" –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000*))" -l name,dNSHostName,OperatingSystemServicePack
# Nur Windows 2000 Clients und Server mit Service Pack 3 aus einer OU exportieren: Csvde –f Win2000.csv –s <DC> –d "OU=<OU>,DC=Domäne,DC=TLD" –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000*)(OperatingSystemServicePack=Service Pack 3))" -l name,dNSHostName
# Nur Windows 2000 Server aus der Domäne exportieren: Csvde –f Win2000.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows 2000 Server mit Service Pack 3 aus der Domäne exportieren: Csvde –f Win2000.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server)(OperatingSystemServicePack=Service Pack 3))" -l name,dNSHostName
# Alle Windows 2000 Server aus einer OU exportieren: Csvde -f Win2000.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows 2000 Server mit Service Pack 3 aus einer OU exportieren: Csvde –f Win2000.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server)(OperatingSystemServicePack=Service Pack 3))" -l name,dNSHostName
# Nur Windows 2000 Clients aus der Domäne exportieren: Csvde –f Win2000.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional))" -l name,dNSHostName,OperatingSystemServicePack
# Nur Windows 2000 Clients mit Service Pack 3 aus der Domäne exportieren: Csvde –f Win2000.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional)(OperatingSystemServicePack=Service Pack 3))" -l name,dNSHostName
# Alle Windows 2000 Clients aus einer OU exportieren: Csvde -f Win2000.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows 2000 Clients mit Service Pack 3 aus einer OU exportieren: Csvde –f Win2000.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional)(OperatingSystemServicePack=Service Pack 3))" -l name,dNSHostName
Windows XP Clients exportieren
# Alle Windows XP Clients aus der Domäne exportieren: Csvde –f WinXP.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows XP*))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows XP Clients mit einem bestimmten Service Pack aus der Domäne exportieren: Csvde -f WinXP.csv -s <DC> -r "(&(objectcategory=computer)(OperatingSystem=Windows XP*)(OperatingSystemServicePack=Service Pack 2))" -l name,dNSHostName
# Alle Windows XP Clients aus einer OU exportieren: Csvde -f WinXP.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows XP*))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows XP Clients mit Service Pack 2 aus einer OU exportieren: Csvde –f WinXP.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows XP*)(OperatingSystemServicePack=Service Pack 2))" -l name,dNSHostName
Windows Vista Clients exportieren
# Alle Windows Vista Clients aus der Domäne exportieren: Csvde –f Vista.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Vista*))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows Vista Ultimate Clients aus der Domäne exportieren: Csvde –f Vista.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Vista* Ultimate))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows Vista Clients mit Service Pack 1 aus der Domäne exportieren: Csvde –f Vista.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1))" -l name,dNSHostName
# Alle Windows Vista Clients aus einer OU exportieren: Csvde -f Vista.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows Vista*))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows Vista Clients mit Service Pack 1 aus einer OU exportieren: Csvde –f Vista.csv –s <DC> -d "OU=<OU>,DC=Domäne,DC=de" –r "(&(objectcategory=computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1))" -l name,dNSHostName
Windows 7 Clients exportieren
# Alle Windows 7 Clients aus der Domäne exportieren: Csvde –f Win7.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 7*))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows 7 Ultimate Clients aus der Domäne exportieren: Csvde –f Win7.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 7 Ultimate))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows 7 Clients mit einem bestimmten Service Pack aus der Domäne exportieren: Csvde –f Win7.csv –s <DC> –r "(&(objectcategory=computer)(OperatingSystem=Windows 7*)(OperatingSystemServicePack=Service Pack x))" -l name,dNSHostName
# Alle Windows 7 Clients aus einer OU exportieren: Csvde -f Win7.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows 7*))" -l name,dNSHostName,OperatingSystemServicePack
# Alle Windows 7 Clients mit einem bestimmten Service Pack aus einer OU exportieren: Csvde -f Win7.csv -s <DC> -d "OU=<OU>,DC=Domäne,DC=de" -r "(&(objectcategory=computer)(OperatingSystem=Windows 7*)(OperatingSystemServicePack=Service Pack x))" -l name,dNSHostName
REPADMIN
Die Suche nach Computerobjekten lässt sich auch mit REPADMIN durchführen. Unter Windows 2000 und Windows Server 2003 müssen vorher die Windows Support Tools installiert werden. Ab Windows Server 2008 ist das REPADMIN bereits „on Bord“.
# Das Betriebsystem sowie das Service Pack aller DCs einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(primaryGroupID=516))" /subtree /atts:name,OperatingSystem,OperatingSystemVersion,OperatingSystemServicePack
# Das Betriebssystem sowie das Service Pack aller Clients und Mitgliedsserver einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(primaryGroupID=515))" /subtree /atts:name,OperatingSystem,OperatingSystemVersion,OperatingSystemServicePack
Windows Server 2008 R2
# Alle Windows Server 2008 R2 mit ihren installierten SPs einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows Server 2008 R2 mit einem bestimmten SP einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x))" /subtree /atts:name
# Sollen die Computerobjekte aus einer bestimmten OU angezeigt werden, so muss anstelle von „ncobj:domain:“ der Distinguished Name der entsprechenden OU angegeben werden. Mit dem folgenden Befehl werden alle Windows Server 2008 R2 mit ihren installierten SPs aus einer OU angezeigt: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows Server 2008 R2 mit einem bestimmten SP aus einer OU anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x))" /subtree /atts:name
Windows Server 2008
# Alle Windows Server 2008 mit ihren installierten SPs einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(!OperatingSystem=Windows Server 2008 R2*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
Oder: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server*)(OperatingSystemVersion=6.0*))" /subtree /atts:name,OperatingSystemServicePack
# Alle Windows Server 2008 mit Service Pack 1 einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(OperatingSystemServicePack=Service Pack 1)(!OperatingSystem=Windows Server 2008 R2*))" /subtree /atts:name
# Alle Windows Server 2008 mit ihren installierten SPs aus einer OU anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(!OperatingSystem=Windows Server 2008 R2*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows Server 2008 mit Service Pack 1 aus einer OU anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server* 2008*)(OperatingSystemServicePack=Service Pack 1)(!OperatingSystem=Windows Server 2008 R2*))" /subtree /atts:name
Windows Server 2003
# Alle Windows Server 2003 mit ihren installierten SPs einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2003))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows Server 2003 mit Service Pack 1 einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2003)(OperatingSystemServicePack=Service Pack 1))" /subtree /atts:name
# Mit dem folgenden Befehl werden alle Windows Server 2003 mit ihren installierten SPs aus einer OU angezeigt: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ „/filter:(&(objectcategory=computer)(OperatingSystem=Windows Server 2003))“ /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows Server 2003 mit Service Pack 1 aus einer OU anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:&(objectcategory=computer)(OperatingSystem=Windows Server 2003)(OperatingSystemServicePack=Service Pack 1))" /subtree /atts:name
Windows 2000 Server
# Alle Windows 2000 Server mit ihren installierten SPs einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows 2000 Server mit Service Pack 3 einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server)(OperatingSystemServicePack=Service Pack 3))" /subtree /atts:name
# Mit dem folgenden Befehl werden alle Windows 2000 Server mit ihren installierten SPs aus einer OU angezeigt: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ „/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server))“ /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows 2000 Server mit Service Pack 4 aus einer OU anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server)(OperatingSystemServicePack=Service Pack 4))" /subtree /atts:name
Windows 7
# Alle Windows 7 Clients mit ihren installierten SPs einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 7*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows 7 Enterprise Clients mit ihren installierten SPs einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 7 Enterprise))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows 7 Clients mit einem bestimmten Service Pack einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 7*)(OperatingSystemServicePack=Service Pack x))" /subtree /atts:name
# Mit dem folgenden Befehl werden alle Windows 7 Clients mit ihren installierten SPs aus einer OU angezeigt: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ „/filter:(&(objectcategory=computer)(OperatingSystem=Windows 7*))“ /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows 7 Clients mit einem bestimmten Service Pack aus einer OU anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 7*)(OperatingSystemServicePack=Service Pack x))" /subtree /atts:name
Windows Vista
# Alle Windows Vista Clients mit ihren installierten SPs einer Domäne anzeigen Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Vista*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows Vista Clients mit Service Pack 1 einer Domäne anzeigen Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1))" /subtree /atts:name
# Mit dem folgenden Befehl werden alle Vista Clients aus einer OU angezeigt: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ „/filter:(&(objectcategory=computer)(OperatingSystem=Windows Vista*))“ /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows Vista Clients mit Service Pack 1 aus einer OU anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1))" /subtree /atts:name
Windows XP
# Alle Windows XP Clients mit ihren installierten SPs einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows XP*))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows XP Clients mit Service Pack 2 einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows XP*)(OperatingSystemServicePack=Service Pack 2))" /subtree /atts:name
# Mit dem folgenden Befehl werden alle Windows XP Clients mit ihren installierten SPs aus einer OU angezeigt: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ „/filter:(&(objectcategory=computer)(OperatingSystem=Windows XP*))“ /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows XP Clients mit Service Pack 2 aus einer OU anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows XP*)(OperatingSystemServicePack=Service Pack 2))" /subtree /atts:name
Windows 2000 Professional
# Alle Windows 2000 Clients mit ihren installierten SPs einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional))" /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows 2000 Clients mit Service Pack 4 einer Domäne anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> ncobj:domain: "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional)(OperatingSystemServicePack=Service Pack 4))" /subtree /atts:name
# Mit dem folgenden Befehl werden alle Windows 2000 Clients mit ihren installierten SPs aus einer OU angezeigt: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ „/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional))“ /subtree /atts:name,OperatingSystemVersion,OperatingSystemServicePack
# Alle Windows 2000 Clients mit Service Pack 4 aus einer OU anzeigen: Repadmin /showattr <DNS-Domänenname oder DC> „OU=<OU>,DC=Domäne,DC=de“ "/filter:(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional)(OperatingSystemServicePack=Service Pack 4))" /subtree /atts:name
DSQUERY
Mit dsquery das erst ab Windows Server 2003 “on Bord” ist, lassen sich ebenfalls die gesuchten Computerobjekte ausfindig machen und zeitgleich auch exportieren.
Windows Server 2008 R2
# Alle Windows Server 2008 R2 einer Domäne exportieren: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*))" -attr name OperatingSystemServicePack distinguishedname –Limit 0 > C:\dsquery.txt
# Alle Windows Server 2008 R2 mit einem bestimmten Service Pack einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x))" -attr name distinguishedname –Limit 0
# Alle Windows Server 2008 R2 aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Server 2008 R2*))" -attr name OperatingSystemServicePack distinguishedName -Limit 0
# Alle Windows Server 2008 R2 mit einem bestimmten Serice Pack aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x))" -attr name distinguishedName -Limit 0
Windows Server 2008
# Alle Windows Server 2008 einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Server*)(OperatingSystemVersion=6.0*))" -attr name OperatingSystemServicePack distinguishedname –Limit 0
# Alle Windows Server 2008 mit Service Pack 1 einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Server*)(OperatingSystemVersion=6.0 (6001)))" -attr name distinguishedname –Limit 0
# Alle Windows Server 2008 aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Server*)(OperatingSystemVersion=6.0*))" -attr name OperatingSystemServicePack distinguishedName -Limit 0
# Alle Windows Server 2008 mit Serice Pack 1 aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Server*)(OperatingSystemVersion=6.0 (6001)))" -attr name distinguishedName -Limit 0
Windows Server 2003
# Alle Windows Server 2003 einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Server 2003))" -attr name OperatingSystemServicePack distinguishedname –Limit 0
# Alle Windows Server 2003 mit Service Pack 1 einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Server 2003)(OperatingSystemServicePack=Service Pack 1))" -attr name distinguishedname –Limit 0
# Alle Windows Server 2003 aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Server 2003))" -attr name OperatingSystemServicePack distinguishedName -Limit 0
# Alle Windows Server 2003 mit Serice Pack 1 aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Server 2003) (OperatingSystemServicePack=Service Pack 1))" -attr name distinguishedName -Limit 0
Windows 2000
# Alle Windows 2000 Server und Clients einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows 2000*))" -attr name OperatingSystemServicePack distinguishedname –Limit 0
# Alle Windows 2000 Server und Clients mit dem Service Pack 3 einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows 2000*)(OperatingSystemServicePack=Service Pack 3))" -attr name distinguishedname –Limit 0
# Alle Windows 2000 Server und Clients aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows 2000*))" -attr name OperatingSystemServicePack distinguishedName -Limit 0
# Nur Windows 2000 Server mit dem Service Pack 3 einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Server)(OperatingSystemServicePack=Service Pack 3))" -attr name distinguishedname –Limit 0
# Nur Windows 2000 Clients mit dem Service Pack 3 einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows 2000 Professional)(OperatingSystemServicePack=Service Pack 3))" -attr name distinguishedname –Limit 0
Windows XP
# Alle Windows XP Clients einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows XP*))" -attr name OperatingSystemServicePack distinguishedname –Limit 0
# Alle Windows XP Clients mit Service Pack 2 einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows XP*)(OperatingSystemServicePack=Service Pack 2))" -attr name distinguishedname –Limit 0
# Alle Windows XP Clients aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows XP*))" -attr name OperatingSystemServicePack distinguishedName -Limit 0
# Alle Windows XP Clients mit Serice Pack 2 aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows XP*)(OperatingSystemServicePack=Service Pack 2))" -attr name distinguishedName -Limit 0
Windows Vista
# Alle Windows Vista Clients einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Vista*))" -attr name OperatingSystemServicePack distinguishedname –Limit 0
# Alle Windows Vista Clients mit Service Pack 1 einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1))" -attr name distinguishedname –Limit 0
# Alle Windows Vista Clients aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Vista*))" -attr name OperatingSystemServicePack distinguishedName -Limit 0
# Alle Windows Vista Clients mit Serice Pack 1 aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1))" -attr name distinguishedName -Limit 0
Windows 7
# Alle Windows 7 Clients einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows 7*))" -attr name OperatingSystemServicePack distinguishedname –Limit 0
# Alle Windows 7 Clients mit einem bestimmten Service Pack einer Domäne anzeigen: dsquery * domainroot -Filter "(&(objectcategory=computer)(OperatingSystem=Windows 7*)(OperatingSystemServicePack=Service Pack x))" -attr name distinguishedname –Limit 0
# Alle Windows 7 Clients aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows 7*))" -attr name OperatingSystemServicePack distinguishedName -Limit 0
# Alle Windows 7 Clients mit einem bestimmten Serice Pack aus einer OU anzeigen: dsquery * “OU=<OU>,DC=Domäne,DC=de” -Filter “(&(objectCategory=Computer)(OperatingSystem=Windows 7*)(OperatingSystemServicePack=Service Pack x))" -attr name distinguishedName -Limit 0
Die Active Directory-Suche
Auch in der grafischen Oberfläche kann man nach den gewünschten Computerobjekten suchen. In der MMC Active Directory-Benutzer und -Computer klickt man mit rechts entweder auf den Domänennamen um über alle Container hinweg zu suchen oder auf eine OU, um lediglich in dieser OU zu suchen. Danach ruft man mit einem Klick auf Suchen… das Suchfenster auf.
Im Übrigen ist es auch möglich die AD-Suche direkt aufzurufen, ohne die MMC Active Directory-Benutzer und -Computer zu öffnen. Dazu gilt es mit einem Rechtsklick auf einer freien Fläche auf dem Desktop die Option Neu und anschließend Verknüpfung auszuwählen. Als "Speicherort des Elements" gilt es diesen Eintrag hinzuzufügen: %windir%\System32\rundll32.exe dsquery.dll,OpenQueryWindow (<-- ACHTUNG: Die Schreibweise von "OpenQueryWindow" ist - warum auch immer - "case sensitive"). Im nächsten Schritt gilt es lediglich noch einen Namen für die Verknüpfung zu vergeben und fertig ist die direkte Verknüpfung zur AD-Suche.
Im Suchfenster wählt man als erstes im Feld „Suchen:“ den Eintrag Computer aus. Danach wählt man im Reiter Erweitert mit einem Klick auf Feld z.B. die Option Betriebssystem aus. Anschließend behält man im Feld Bedingung: die Option „Beginnt mit“ bei und gibt im Feld Wert: das gesuchte Betriebssystem ein.
Als Werte könnte man z.B. folgendes eintragen:
- Windows Server 2008 R2* - Windows Server* 2008* - Windows Server 2003 - Windows 2000 Server
- Windows 7* - Windows Vista* - Windows XP* - Windows 2000 Professional
Ist die AD-Suche abgeschlossen, sollte man unter Ansicht – Spalten auswählen… die Spalte „Veröffentlicht auf“ hinzufügen. Denn dadurch lässt sich der Container in dem sich das jeweilige Computerobjekt befindet ableiten.
Der Nachteil bei der AD-Suche ist, dass die Ergebnisse nicht exportiert werden können. Wer darauf Wert legt, sollte seine Suche über die „gespeicherte Abfrage“ durchführen.
Die gespeicherte Abfrage
Ab Windows Server 2003 besteht die Möglichkeit die Suche nach bestimmten Computerobjekten, in der MMC Active Directory-Benutzer und -Computer durch eine „gespeichert Abfrage“ durchzuführen.
Weitere Details über die gespeicherten Abfragen erhält man im folgenden Artikel:
Gespeicherte Abfragen
Neben der gleichen Suchmöglichkeit wie bei der AD-Suche, kann man hier eine benutzerdefinierte Suche in der Domäne durchführen. Bei der benutzerdefinierten Suche könnte man z.B. solche LDAP-Filter verwenden:
- (objectCategory=computer)(OperatingSystem=Windows Server 2008 R2*) - (objectCategory=computer)(OperatingSystem=Windows Server 2008 R2*)(OperatingSystemServicePack=Service Pack x) - (objectCategory=computer)(OperatingSystem=Windows Server* 2008*)(OperatingSystemServicePack=Service Pack 1) - (objectCategory=computer)(OperatingSystem=Windows Server*)(OperatingSystemVersion=6.0*) - (objectCategory=computer)(OperatingSystem=Windows Server 2003)(OperatingSystemServicePack=Service Pack 1) - (objectCategory=computer)(OperatingSystem=Windows 2000 Server)(OperatingSystemServicePack=Service Pack 3)
- (objectCategory=computer)(OperatingSystem=Windows 7*) - (objectCategory=computer)(OperatingSystem=Windows Vista*)(OperatingSystemServicePack=Service Pack 1) - (objectCategory=computer)(OperatingSystem=Windows XP*) - (objectCategory=computer)(OperatingSystem=Windows 2000 Professional)(OperatingSystemServicePack=Service Pack 3)
Ist die Suche abgeschlossen, lässt sich das Ergebnis im Menü über Aktion -> Liste exportieren in eine TXT- oder CSV-Datei speichern.
Weitere Informationen: AD-PowerShell Befehle Wie finde ich heraus wo sich ein Objekt befindet?
In kleineren AD-Umgebungen wie sie in „kleineren und mittleren Unternehmen (kurz KMU)“ existieren, weiß der Administrator in welchen Containern im AD sich die entsprechenden AD-Objekte befinden. Doch in größeren und verteilten AD-Umgebungen mit mehreren AD-Administratoren lässt sich das nicht jederzeit sagen.
Um ein AD-Objekt ausfindig zu machen gibt es je nach Betriebssystem verschiedene Möglichkeiten den Distinguished Name (DN) und somit den LDAP-Pfad des gesuchten Objekts mit Bordmitteln anzuzeigen. Der DN gibt dabei den Speicherort des Objekts im AD an.
Die Active Directory Suche in der MMC Active Directory-Benutzer und -Computer (dsa.msc)
Bei der AD-Suche hat man zwei Möglichkeiten den Speicherort des Objekts herauszufinden.
Erste Möglichkeit
In der MMC dsa.msc ruft man mit einem Rechtsklick auf den Domänennamen das Suchfenster auf und gibt z.B. den Common Name (CN) oder sAMAccountName (falls bekannt) des Objekts ein. Es reichen bereits die Anfangsbuchstaben aus wie z.B. „Yus“, um Objekte aufzufinden die mit "Yus" anfangen, da bei der Suche die Ambiguous Name Resolution (ANR) angewendet wird. Die ANR durchforstet bei der Suche unter anderem die folgenden Felder: Vorname, Nachname, Anzeigename sowie den Benutzeranmeldename (Prä-Windows 2000).
Ist die Suche beendet, gilt es im Suchfenster unter Ansicht - Spalten auswählen… eine weitere Spalte hinzuzufügen. Der Name dieser Spalte unterscheidet sich jedoch zwischen den Betriebssystemen.
Unter Windows 2000 und Windows Server 2003 heißt die Spalte X500-definierter Name, unter Windows Server 2008 Definierter Name und unter Windows Server 2008 R2 Distinguished Name. Nach dem hinzufügen der Spalte erscheint im Suchergebnis der DN des Objekts.

Es ist auch möglich die AD-Suche direkt aufzurufen, ohne die MMC Active Directory-Benutzer und -Computer zu öffnen. Dazu gilt es mit einem Rechtsklick auf einer freien Fläche auf dem Desktop die Option Neu und anschließend Verknüpfung auszuwählen. Als "Speicherort des Elements" gilt es diesen Eintrag hinzuzufügen: %windir%\System32\rundll32.exe dsquery.dll,OpenQueryWindow (<-- ACHTUNG: Die Schreibweise von "OpenQueryWindow" ist "case sensitive"). Im nächsten Schritt gilt es lediglich noch einen Namen für die Verknüpfung zu vergeben und fertig ist die direkte Verknüpfung zur AD-Suche.
Zweite Möglichkeit
Im ersten Schritt ist in der MMC dsa.msc unter Ansicht die Option Erweiterte Funktionen zu aktivieren. Danach gilt es wie in der ersten Möglichkeit im Suchfenster nach dem gewünschten Objekt zu suchen. Ist die Suche beendet, ruft man im zweiten Schritt mit einem Doppelklick auf das Objekt die Eigenschaften auf und wechselt zum Reiter Objekt. Dort wird der kanonische Name des Objekts angezeigt. Liest man diesen in umgekehrter Reihenfolge (von rechts nach links), so lässt sich der DN des Objekts ableiten.

Das Kommandozeilentool: DSQUERY
Mit dsquery das erst ab Windows Server 2003 „on Bord“ zur Verfügung steht, lässt sich der DN eines Objekts wie folgt anzeigen:
dsquery computer -name <CN des Computers>
dsquery user -name <CN des Benutzers> dsquery group -name <CN der Gruppe>
dsquery contact -name <CN des Kontaktobjekts>
Auch bei dsquery können Wildcards verwendet werden.
Lautet der Common Name (CN) eines Benutzerobjekts “Yusuf Dikmenoglu”, so kann der Befehl folgendermaßen aussehen:
dsquery user -name *us*f*
Standardmäßig durchsucht das dsquery die Domäne in der man den Befehl ausführt. Gibt man den folgenden Befehl an, so durchsucht das dsquery mit Hilfe eines globalen Katalogs (GC) nach dem gewünschten Objekt innerhalb der Gesamtstruktur, also über alle Domänen hinweg:
dsquery user Forestroot -name Yusuf*
Wenn der sAMAccountName des gesuchten Benutzerobjekts bekannt ist (Benutzeranmeldename Prä-Windows 2000), lautet die Abfrage wie folgt:
dsquery user -samid Yusuf
Ist der userPrincipalName (UPN) eines Benutzerkontos bekannt, so gilt es diese Abfrage durchzuführen um den DN anzuzeigen:
dsquery user -upn Yusuf@blog.dikmenoglu.de
Die AD-PowerShell unter Windows Server 2008 R2
In der AD-PowerShell die ab Windows Server 2008 R2 on Bord ist, lässt sich der DN des gesuchten Objekts mit diesem Befehl anzeigen:
Get-ADComputer <Computername> Get-ADUser <sAMAccountName> Get-ADGroup <Gruppe>
Die AD-PowerShell steht auch auf einem Windows 7 zur Verfügung, aber erst nach der Installation der Remote Server Administration Tools (RSAT).
Das Active Directory-Verwaltungscenter unter Windows Server 2008 R2
Führt man im AD-Verwaltungscenter (ADAC) eine globale Suche nach einem Objekt durch, wird im Suchergebnis ebenfalls direkt der DN mit angezeigt. Auch im ADAC kann man eine Suche mit Hilfe eines GC durchführen und so nach einem Objekt innerhalb der Gesamtstruktur suchen.
Weitere Informationen: Gespeicherte Abfragen Active Directory - Abfrage AD-PowerShell Befehle Das Active Directory-Verwaltungscenter Die Active Directory-Attribute hinter den Feldnamen Ambiguous Name Resolution for LDAP in Windows 2000 Remoteserver-Verwaltungstools für Windows 7
Die FSMO-Rollen lassen sich ab Windows Server 2008 R2 neben der grafischen Oberfläche (GUI) und neben der Kommandozeile (CMD) mit NTDSUTIL, auch über die AD-Powershell auf einen anderen DC verschieben.
Das Verschieben der FSMO-Rollen mit der AD-Powershell hat folgende Vorteile:
- Es muss nicht wie in der GUI oder in der Kommandozeile mit NTDSUTIL zuerst eine Verbindung zum zukünftigen Rolleninhaber hergestellt werden.
- Mit dem gleichen AD-Powershell Befehl, lediglich beim „seizen“ (Rolleninhaber ist offline) der FSMO-Rollen wird ein zusätzlicher Parameter benötigt, können die FSMO-Rollen „online“ sowie „offline“ an einen anderen DC übergeben werden.
- Das verschieben der FSMO-Rollen muss nicht zwingend vom Rolleninhaber oder dem zukünftigen Rolleninhaber durchgeführt werden. Stattdessen kann das Verschieben der Rollen von einem Windows 7 Client oder Windows Server 2008 R2 Mitgliedsserver durchgeführt werden, worauf das RSAT installiert ist.
Die FSMO-Rollen werden mit dem Cmdlet Move-ADDirectoryServerOperationMasterRole auf einen anderen DC verschoben.
Wenn der Rolleninhaber funktionstüchtig und online ist, können die FSMO-Rollen mit dem folgenden AD-Powershell Befehl an den angegebenen DC übertragen werden. Übertragen bedeutet in diesem Zusammenhang, dass der ursprüngliche Rolleninhaber funktionsfähig und online ist.
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole SchemaMaster,RIDMaster,InfrastructureMaster,DomainNamingMaster,PDCEmulator
Bei der Angabe des Ziel-DCs muss ausschließlich der Computername angegeben werden. Anstatt die Namen der Betriebsmasterrollen einzugeben, können auch Zahlen angegeben werden. Also entweder:
PDCEmulator oder 0 RIDMaster oder 1 InfrastructureMaster oder 2 SchemaMaster oder 3 DomainNamingMaster oder 4
Demnach kann man auch mit diesem Befehl alle FSMO-Rollen auf einen anderen DC übertragen:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 0,1,2,3,4
Falls jedoch der aktuelle Rolleninhaber ausfällt und das Übertragen der FSMO-Rollen „online“ nicht mehr durchgeführt werden kann, können mit der AD-Powershell die ausgefallenen Betriebsmasterrollen ebenfalls mit dem gleichen Powershell-Befehl, nur zusätzlich mit dem Parameter /Force (sprich „mit Gewalt“) von einem anderen DC übernommen werden. Mit einem der folgenden Befehle werden alle FSMO-Rollen von dem angegebenen DC übernommen:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole SchemaMaster,RIDMaster,InfrastructureMaster,DomainNamingMaster,PDCEmulator -Force
Bzw.:
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 0,1,2,3,4 -Force
Die beiden Gesamtstrukturmasterrollen „Schemamaster“ sowie „Domänennamenmaster“ können auch auf einen DC einer Subdomäne übertragen oder von einem DC einer Subdomäne übernommen werden. Zum verschieben der FSMO-Rollen muss das Benutzerkonto Mitglied in den folgenden Gruppen sein:
- Schemamasterrolle: Mitglied in der Gruppe „Schema-Admins“ - Domänennamenmaster: Mitglied in der Gruppe „Organisations-Admins“. - RID-Master: Mitglied in der Gruppe „Domänen-Admins“. - PDC-Emulator: Mitglied in der Gruppe „Domänen-Admins“. - Infrastrukturmaster: Mitglied in der Gruppe „Domänen-Admins“.
Den PDC-Emulator über die AD-Powershell verschieben
- Ist der Rolleninhaber online, so kann die Rolle des PDC-Emulators wie folgt verschoben werden: Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole PDCEmulator
Oder mit: Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 0
- Wenn jedoch der Rolleninhaber nicht mehr zur Verfügung steht (z.B. bei einem DC-Crash), so kann die PDC-Emulatorrolle folgendermaßen von dem angegebenen DC übernommen werden: Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole PDCEmulator -Force
Bzw. mit: Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 0 -Force
Den RID-Master über die AD-Powershell verschieben
- Die Betriebsmasterrolle „RID-Master“ wird mit einem der folgenden Befehle auf einen anderen DC übertragen, sofern der aktuelle Rolleninhaber online ist: Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole RIDMaster
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 1
- Ist dagegen der aktuelle Rolleninhaber offline, so wird die Rolle des RID-Masters mit einem dieser Befehle von einem anderen DC übernommen: Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole RIDMaster -Force
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 1 –Force
Den Infrastrukturmaster über die AD-Powershell verschieben
- Die Infrastrukturmasterrolle kann mit einem der folgenden Befehle online auf einen anderen DC übertragen werden: Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole InfrastructureMaster
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 2
- Offline kann der Infrastrukturmaster wie folgt von einem anderen DC mit einem dieser Befehle übernommen werden: Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole InfrastructureMaster -Force
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 2 -Force
Der Infrastrukturmaster der Anwendungsverzeichnispartitionen muss zusätzlich noch auf einen anderen DC verschoben oder von einem anderen DC übernommen werden.
Die Infrastrukturmaster der Anwendungsverzeichnispartitionen
Den Schemamaster über die AD-Powershell verschieben
- Der Schemamaster wird mit einem dieser Befehle auf einen anderen DC übertragen: Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole SchemaMaster
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 3
- Steht der Rolleninhaber nicht mehr zur Verfügung, übernimmt ein anderer DC die Schemamasterrolle mit einem dieser Befehle: Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole SchemaMaster -Force
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 3 -Force
Den Domänennamenmaster über die AD-Powershell verschieben
Die Rolle „Domänennamenmaster“ wird online mit einem dieser Befehle auf einen anderen DC übertragen: Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole DomainNamingMaster
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 4
- Der Domänennamenmaster wird mit einem dieser Befehle von einem anderen DC übernommen, wenn der aktuelle Rollenträger ausgefallen ist: Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole DomainNamingMaster -Force
Move-ADDirectoryServerOperationMasterRole -Identity <ZielDC> -OperationMasterRole 4 -Force
Ist auf einem Windows Server 2003 DC oder Windows Server 2008 DC das AD MGS installiert, können die FSMO-Rollen auch auf diese DCs übertragen bzw. von diesen übernommen werden.
Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008
Die FSMO-Rollenträger in der AD-Powershell lassen sich mit diesen Befehlen anzeigen:
Get-ADForest | select SchemaMaster,DomainNamingMaster
Get-ADDomain | select PDCEmulator,RIDMaster,Infrastructuremaster
Weitere Informationen: Die FSMO-Rollen verschieben Die FSMO-Rollen mit DCPROMO verschieben Die Metadaten des Active Directory unter Windows Server 2008 bereinigen Active Directory Administration with Windows PowerShell
Neben den grafischen Werkzeugen wie z.B. Active Directory-Benutzer und -Computer (dsa.msc), Active Directory-Standorte und -Dienste (dssite.msc) etc. oder den ds*-Kommandozeilentools (dsadd, dsget, dsquery…) steht im Windows Server 2008 R2 erstmals die AD-PowerShell zur Verfügung. In der AD-PowerShell werden dem Administrator 76 AD-Cmdlets mit geliefert.
Die AD-PowerShell ist nicht von der RPC- oder LDAP-Schnittstelle abhängig, sondern von dem Dienst Active Directory-Webdienste (ADWS) (wie auch das AD-Verwaltungscenter), das erst ab Windows Server 2008 R2 zur Verfügung steht.
Mit der AD-PowerShell lässt sich eine Active Directory-Umgebung unter Windows Server 2003, Windows Server 2008 und Windows Server 2008 R2 administrieren. Des Weiteren kann man AD LDS-Instanzen oder „configuration sets“ und AD-Snapshots mit der AD-PowerShell verwalten.
Doch bevor eine Windows Server 2003 oder Windows Server 2008 Domäne mit der AD-PowerShell von einem Windows 7 Client oder Windows Server 2008 R2 worauf jeweils das RSAT installiert ist, administriert werden kann, muss vorher das Active Directory Management Gateway Service (AD MGS) auf einem Windows Server 2003 DC oder Windows Server 2008 DC installiert werden. Das AD MGS ist das ADWS für Windows Server 2003 und Windows Server 2008.
Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008
Zu finden ist die AD-PowerShell unter Start – Verwaltung – Active Directory Module for Windows PowerShell. Für die Freunde der grafischen Oberfläche hat Redmond ebenfalls vorgesorgt. Im Server Manager existiert das Feature Windows PowerShell Integrated Scripting Environment (ISE), mit dem dem Administrator eine PowerShell-Entwicklungsumgebung zur Verfügung steht. Nach der Installation steht die Powershell-Entwicklungsumgebung unter Start - Alle Programme - Zubehör - Windows Powershell zur Verfügung. Doch bevor mit dem ISE auf das AD zugegriffen werden kann, müssen vorher mit dem Befehl import-module activedirectory die AD-Cmdlets geladen werden. Anschließend kann der Administrator im ISE seine AD-PowerShell-Skripte erstellen, die mit der Endung „.ps1“ zu speichern sind.
Dadurch das die AD-PowerShell pipeline-fähig ist und sich so verschiedene Cmdlets miteinander verbinden lassen, stellt die AD-PowerShell ein mächtiges Werkzeug dar. Sei es zur täglichen Administration oder bei immer wiederkehrenden Automatisierungsaufgaben, die AD-PowerShell eignet sich in jedem Fall. Mit der AD-PowerShell können in einer einzigen Konsole viele Aufgaben durchgeführt werden, wozu in früheren Betriebssystemversionen mehrere Werkzeuge bzw. MMCs notwendig waren. Mit der AD-PowerShell ist es auch möglich, wie in einer Kommandozeile (CMD) in der man durch die Verzeichnisse navigiert, durch das AD zu navigieren. In der AD-PowerShell wechselt man mit cd AD: in die AD-Ebene. Dort kann man dann mit dem Befehl cd „DC=blog,DC=dikmenoglu,DC=de“ auf die Domänenpartitionsebene wechseln und mit dir sich die Container die sich darunter befinden anzeigen lassen. Natürlich kann man auch auf jede andere Verzeichnispartition wie z.B. die Konfigurations- oder Schemapartition durch die Angabe des Distinguished Names (DN) der entsprechenden Verzeichnispartition wechseln.

Auch kann man auf diesem Weg z.B. eine neue OU erstellen. Mit dem Befehl md „OU=Neue OU“ kann man auf der Ebene auf der man sich befindet eine neue OU erstellen.

Wenn man in der AD-PowerShell Skripte einsetzen möchte, wird das unter Umständen fehlschlagen. Denn das Ausführen von Skripten wird von der Ausführungsrichtlinie, der sogenannten Execution Policy bestimmt. Damit Skripte ausgeführt werden dürfen, muss mit dem PowerShell-Befehl Set-ExecutionPolicy Remotesigned die Ausführungsrichtlinie angepasst werden. Mit dem Parameter Remotesigned wird definiert, dass Skripte die aus dem Internet oder von anderen öffentlichen Orten stammen, signiert sein müssen. Jedoch dürfen lokal gespeicherte Skripte ohne Signatur ausgeführt werden.
Weitere Informationen zum digitalen signieren von Skripten werden im folgenden Artikel beschrieben:
http://technet.microsoft.com/en-us/magazine/2008.04.powershell.aspx?pr=blog
Weitere Informationen zur AD-PowerShell: Die AD-Powershell im Windows Server 2008 R2
Die AD-Commandlets (kurz Cmdlets) die zur Verfügung stehen
Die Cmdlets sind durch ihre Namen weitestgehend selbsterklärend. Die unten aufgeführten Cmdlets kann man sich mit dem Befehl get-command anzeigen lassen, wie z.B. get-command get-ad*, get-command new-ad* oder get-command remove-ad* usw. Alle AD-Cmdlets werden mit diesem Befehl angezeigt: Get-Command *-ad*
Eine ausführliche und detaillierte Hilfe zu den folgenden Cmdlets lässt sich wie folgt anzeigen:
- Get-Help <Cmdlet Name> -Detailed (z.B. Get-Help Search-ADAccount -Detailed) - Get-Help <Cmdlet Name> -Examples - Get-Help <Cmdlet Name> -Full
Die Hilfe zu den Filtermöglichkeiten lässt sich mit diesem Befehl aufrufen:
get-help about_ActiveDirectory_Filter
AD-Objekte abrufen (22 Cmdlets)
- Get-ADAccountAuthorizationGroup - Get-ADAccountResultantPasswordReplicationPolicy - Get-ADComputer - Get-ADComputerServiceAccount - Get-ADDefaultDomainPasswordPolicy - Get-ADDomain - Get-ADDomainController - Get-ADDomainControllerPasswordReplicationPolicy - Get-ADDomainControllerPasswordReplicationPolicyUsage - Get-ADFineGrainedPasswordPolicy - Get-ADFineGrainedPasswordPolicySubject - Get-ADForest - Get-ADGroup - Get-ADGroupMember - Get-ADObject - Get-ADOptionalFeature - Get-ADOrganizationalUnit - Get-ADPrincipalGroupMembership - Get-ADRootDSE - Get-ADServiceAccount - Get-ADUser - Get-ADUserResultantPasswordPolicy
AD-Objekte erstellen (7 Cmdlets)
- New-ADComputer - New-ADFineGrainedPasswordPolicy - New-ADGroup - New-ADObject - New-ADOrganizationalUnit - New-ADServiceAccount - New-ADUser
AD-Objekte entfernen (12 Cmdlets)
- Remove-ADComputer - Remove-ADComputerServiceAccount - Remove-ADDomainControllerPasswordReplicationPolicy - Remove-ADFineGrainedPasswordPolicy - Remove-ADFineGrainedPasswordPolicySubject - Remove-ADGroup - Remove-ADGroupMember - Remove-ADObject - Remove-ADOrganizationalUnit - Remove-ADPrincipalGroupMembership - Remove-ADServiceAccount - Remove-ADUser
AD-Schreibvorgänge durchführen (15 Cmdlets)
- Set-ADAccountControl - Set-ADAccountExpiration - Set-ADAccountPassword - Set-ADComputer - Set-ADDefaultDomainPasswordPolicy - Set-ADDomain - Set-ADDomainMode - Set-ADFineGrainedPasswordPolicy - Set-ADForest - Set-ADForestMode - Set-ADGroup - Set-ADObject - Set-ADOrganizationalUnit - Set-ADServiceAccount - Set-ADUser
AD-Objekte hinzufügen (5 Cmdlets)
- Add-ADComputerServiceAccount - Add-ADDomainControllerPasswordReplicationPolicy - Add-ADFineGrainedPasswordPolicySubject - Add-ADGroupMember - Add-ADPrincipalGroupMembership
AD-Objekte und optionale AD-Funktionen deaktivieren (2 Cmdlets)
- Disable-ADAccount - Disable-ADOptionalFeature
AD-Objekte und optionale AD-Funktionen aktivieren (2 Cmdlets)
- Enable-ADAccount - Enable-ADOptionalFeature
AD-Objekte verschieben (3 Cmdlets)
- Move-ADDirectoryServer - Move-ADDirectoryServerOperationMasterRole - Move-ADObject
AD-Objekte umbenennen (1 Cmdlet)
- Rename-ADObject
AD-Dienstkontenkennwörter zurücksetzen (1 Cmdlet)
- Reset-ADServiceAccountPassword
AD-Objekte wiederherstellen (1 Cmdlet)
- Restore-ADObject
AD-Objekte suchen (1 Cmdlet)
- Search-ADAccount
AD-Dienstkonto deinstallieren (1 Cmdlet)
- Uninstall-ADServiceAccount
AD-Objekt entsperren (1 Cmdlet)
- Unlock-ADAccount
AD-Kontoablaufdatum zurücksetzen (1 Cmdlet)
- Clear-ADAccountExpiration
AD-Dienstkonto installieren (1 Cmdlet)
- Install-ADServiceAccount
AD-PowerShell „Benutzerobjekt“ Befehle
Mit dem Cmdlet Get-ADUser lassen sich Benutzerinformationen abfragen. Je nach Angabe der Suchkriterien werden bei der Abfrage ein oder mehrere Benutzerobjekte mit den gewünschten Attributen angezeigt. Mit dem Befehl Get-ADUser Yusuf werden standardmäßig die folgenden Werte angezeigt: DistinguishedName, Enabled, givenName, Name, ObjectClass, ObjectGUID, SamAccountName, ObjectSID, Surname, userPrincipalName
Bei allen PowerShell-Befehlen kann bei der Angabe von <Benutzer> zwischen den folgenden Angaben gewählt werden:
- sAMAccountName - Distinguished Name (DN) - ObjectSID - ObjectGUID
Die Abfrage Get-ADUser „CN=Yusuf,OU=IT,DC=blog,DC=dikmenoglu,DC=de“, Get-ADUser S-1-5-21-2225156702-1871195563-4034089934-1101 oder Get-ADUser 6e90b6c6-0fc6-4aab-af7f-73b74f937980 liefern alle das gleiche Ergebnis.
Hinweis: Um die Funktion der Befehle sicherzustellen, ist es empfehlenswert die Befehle händisch einzutippen anstatt sie zu kopieren!
# Soll sich die Abfrage auf eine bestimmte OU (samt Unter-OUs) beschränken, so kann das mit dem Parameter –Searchbase und der Angabe des DN der OU durchgeführt werden. Get-ADUser –LDAPFilter „(givenName=Yusuf)“ –SearchBase „OU=IT,DC=Domäne,DC=de“
# Zum Erhöhen der Suchleistung sollte man den Suchbereich auf ein einziges Objekt oder auf eine Objektteilmenge beschränken. Für diese Aufgabe stellt die DirectorySearcher-Klasse die SearchScope-Eigenschaft bereit. Der Suchbereich lässt sich auf eine der folgenden drei Einstellungen festlegen:
- Base: Hier wird das Objekt durchsucht, mit dem man verbunden ist. Wenn man sich z.B. mit einer OU verbunden hat, wird nur diese eine OU durchsucht und nicht noch zusätzlich die evtl. bestehenden Unter-OUs.
- OneLevel: Mit dieser Option werden alle Objekte die sich direkt, also eine Ebene tiefer, unter der Suchbasis befinden durchsucht.
- Subtree: Durchsucht alle Objekte, die in der Teilstruktur des verbundenen Objekts enthalten sind. Dabei werden alle Container im aktuellen Pfad und unterhalb der Suchbasis durchsucht.
Mit der Angabe des Parameters –SearchScope, lässt sich die Abfrage im vorherigen Beispiel ausschließlich auf die angegebene OU beschränken: Get-ADUser –LDAPFilter „(givenName=Yusuf)“ –SearchBase „OU=IT,DC=Domäne,DC=de“ –SearchScope OneLevel
# Welche Benutzerkontoeigenschaften angezeigt werden, lässt sich mit dem Parameter –Properties beeinflussen. Wird beim Parameter –Properties als Wert ein Wildcard „*“ verwendet, so lassen sich alle Benutzerkontoeigenschaften anzeigen die im Benutzerobjekt enthalten sind: Get-ADuser <Benutzer> -Properties *
# Möchte man sich bei einem bestimmten Benutzer neben den standardmäßig angezeigten Werten lediglich als weitere Benutzereigenschaft die Personalnummer, die Attribute employeeID und employeeNumber anzeigen lassen, so lautet der Befehl Get-ADUser <Benutzer> –Properties employeeID,employeeNumber
# Alle Benutzerkonten in der Domäne anzeigen Get-ADUser –Filter *
# Alle AD-Objekte anzeigen Get-ADObject –Filter { ObjectClass –Like „*“ }
# Alle Benutzerkonten einer bestimmten OU im Spaltenformat anzeigen Get-ADUser –Filter * -Searchbase „OU=<OU>,DC=Domäne,DC=de“ | FT
# Alle Benutzer in der Domäne mit dem Vornamen „Yusuf“ anzeigen Get-ADUser –LDAPFilter „(givenName=Yusuf)“
# Alle Benutzerkonten in der Domäne mit der Personalnummer im Spaltenformat anzeigen Get-ADUser -Filter * -Properties employeeID,employeeNumber | FT
# Mit einer Ambiguous Name Resolution (kurz ANR) die Benutzer anzeigen, die im Vornamen, Nachnamen oder sAMAccountName den Eintrag „Yus“ enthalten Get-ADUser –Filter { ANR –eq „Yus“ }
# Alle Benutzerkonten aus „Mainz“ anzeigen Get-ADUser –Filter {City –Like „Mainz“}
# Alle Benutzerkonten mit dem Vornamen „Yusuf“ anzeigen Get-ADUser –Filter {givenName –Like „Yusuf“} | FT
# Alle Benutzerkonten mit dem Nachnamen „Dikmenoglu“ anzeigen Get-ADUser –Filter {Surname –Like „Dikmenoglu“}
# Alle Benutzerkonten aus der Abteilung „EDV“ anzeigen Get-ADUser –Filter {Department –Like „EDV“}
# Alle Benutzerkonten anzeigen die in ihrem „Common Name“ irgendwo den Eintrag „Yus“ haben Get-ADUser –Filter { CN –Like „*Yus*“ }
# Alle Benutzer die einen Wert im Attribut mail eingetragen haben anzeigen Get-ADUser –Filter { mail –Like „*“ }
oder
Get-ADObject –Filter { mail –Like „*“ –and ObjectClass –eq “user” }
# Alle Benutzer die einen Wert im Attribut mail eingetragen haben und mit Nachname „Dikmenoglu“ lauten anzeigen Get-ADUser –Filter { mail –Like „*“ –and Surname –eq „dikmenoglu“ }
oder
Get-ADUser –Filter { mail –Like „*“ –and sn –eq „dikmenoglu“ }
# Alle Benutzerkonten die keinen Wert im Attribut mail eingetragen haben anzeigen Get-ADUser –Filter { mail –notlike „*“ }
Oder Get-ADUser –LDAPFilter „(!(email=*))“
# Alle Benutzerkonten die im Common Name mit „Yusuf“ oder „Kaan“ beginnen anzeigen
Get-ADUser -Filter { CN -like "Yusuf*" -or CN -eq "Kaan"
oder
Get-ADObject -Filter { objectClass -eq "user" -and (CN -like "Yusuf*" -or CN -eq "Kaan") }
# Die Gruppenmitgliedschaften eines Benutzers anzeigen Get-ADPrincipalGroupMembership Yusuf
# Alle Benutzerkonten anzeigen, die als Vorgesetzten „Yusuf“ eingetragen haben Get-ADUser -Filter { Manager -eq "Yusuf" }
# Die direkten Gruppenmitgliedschaften samt der „primären Gruppe“ eines Benutzers anzeigen Get-ADUser Yusuf –Properties primarygroupID,memberof
# Den Benutzer aus einer Gruppe entfernen Remove-ADPrincipalGroupMembership Yusuf –MemberOf „Gruppe“
# Den Benutzer bis auf die primäre Gruppe, aus allen Gruppen entfernen Get-ADPrincipalGroupMembership Yusuf | % {Remove-ADPrincipalGroupMembership Yusuf -MemberOf $_}
# Den Benutzer Kaan zu den gleichen Gruppen hinzufügen, in denen Yusuf Mitglied ist Get-ADPrincipalGroupMembership Yusuf | % {Add-ADPrincipalGroupMembership Kaan -MemberOf $_}
# Alle Benutzerkonten anzeigen, die sich in den letzten 10 Tagen angemeldet haben $date = (get-date) – (new-timespan –days 10) Get-ADUser –Filter { lastlogon –gt $date }
Ein anderer Befehl mit dem die Benutzer angezeigt werden, die sich in den letzten 5 Tagen an der Domäne angemeldet haben ist dieser: Get-ADUser –LDAPFilter „(&(LastLogon>=128812906535515110)(objectCategory=user))“
# Alle Benutzer anzeigen die sich in den letzten 50 Tagen nicht angemeldet haben $Vorvielentagen = (Get-Date).AddDays(-50) Get-ADUser -Filter { lastLogonTimeStamp -notlike "*" -or lastLogonTimeStamp -le $Vorvielentagen }
# Alle Benutzerkonten die mehr als vier Mal ihr Kennwort falsch eingegeben haben anzeigen Get-ADUser –LDAPFilter „(badPwdCount>=4)“
Oder Get-ADUser –Filter {badPwdCount –ge 4}
# Einen Benutzer deaktivieren Disable-ADAccount Yusuf
# Einen Benutzer aktivieren Enable-ADAccount Yusuf
# Einen deaktivierten Benutzer im Container USERS erstellen New-ADUser Yusuf
# Einen aktivierten Benutzer in der angegebenen OU mit mehreren Werten erstellen New-ADUser –sAMAccountName „Yusuf“ –UserPrincipalName Yusuf@ad.dikmenoglu.de –givenname “Yusuf” –Surname “Dikmenoglu” –displayName “Yusuf Dikmenoglu” –Name “Yusuf Dikmenoglu” –scriptpath “login.bat” –Enabled $true –Path “OU=<OU>,DC=Domäne,DC=DE” –AccountPassword (ConvertTo-Securestring “Pa$$w0rd!” –asplaintext –Force)
# Ein Benutzerkonto mit allen Eigenschaften kopieren und im Container USERS erstellen PS C:\> $Groups = Get-ADPrincipalGroupMembership "Yusuf" PS C:\> Get-ADUser "Yusuf" -Properties * | New-ADUser -Name "Benutzer2" -Displayname "Benutzer2" -samaccountname "Benutzer2" -accountpassword (ConvertTo-SecureString "Pa$$w0rd!" -AsPlainText –Force) PS C:\>Add-ADPrincipalGroupMembership "Benutzer2" -memberOf $Groups
# Ein Benutzerkonto nur mit bestimmten Attributen kopieren und im Container USERS erstellen PS C:\> $Groups = Get-ADPrincipalGroupMembership "Yusuf" PS C:\> Get-ADUser "Yusuf" -Properties profilPath, scriptPath, accountExpires | New-ADUser -Name "Benutzer2" -Displayname "Benutzer2" -samaccountname "Benutzer2" -accountpassword (ConvertTo-SecureString "Pa$$w0rd!" -AsPlainText –Force) PS C:\>Add-ADPrincipalGroupMembership "Benutzer2" -memberOf $Groups
# 50 aktivierte Benutzerkonten in einer bestimmten OU erstellen (1..50) | Foreach-Object {New-ADUser –sAMAccountname "Benutzer$_" -Name "Benutzer$_" -AccountPassword (ConvertTo-SecureString -AsPlainText "Pa$$w0rd!" -Force) –Enabled $true –Path „OU=<OU>,DC=Domäne,DC=de“}
# Allen Benutzern einer bestimmten OU einen Wert im Feld „Beschreibung“ setzen Get-ADUser –Filter * -Searchbase „OU=<OU>,DC=Domäne,DC=DE“ | Set-ADUser –description „Wert“
# Die Option „Konto läuft ab am:“ auf den 31. Oktober 2009 setzen Set-ADUser Yusuf –AccountExpirationDate 01/11/2009
# Die Option „Konto läuft ab“ auf „Nie“ setzen Clear-ADAccountExpiration Yusuf
# Den Profilpfad, das Anmeldeskript und ein Homelaufwerk für einen bestimmten Benutzer eintragen Set-ADUser „Yusuf“ –ProfilePath \\Server01\Profiles\%username% -Scriptpath „Login.bat“ –Homedrive „X“ –HomeDirectory „\\Server01\home\Yusuf“
# Einen Benutzer in eine andere OU verschieben Get-ADUser Yusuf | Move-ADObject –TargetPath „OU=NeueOU,DC=Domäne,DC=de“
# Den relative distinguished name (RDN) eines Benutzers ändern Rename-ADObject „CN=Yusuf Dikmenoglu,OU=IT,DC=Domäne,DC=de“ –NewName „Yusuf Cool“
# Einen Benutzer löschen Remove-ADUser Yusuf
# Einen Benutzer ohne Sicherheitsabfrage löschen Remove-ADUser Yusuf -Confirm:$False
# Mehrere Benutzer anhand eines gemeinsamen Kriteriums löschen
Get-ADUser –Filter {Name –Like „*Dikmenoglu*“} | Remove-ADUser
# Mit dem folgenden Befehl wird die Voreinstellung für neue Benutzer auf einem deutschen DC (auf einem englischen System lautet der LDAP-Pfad ...,CN=409,...) auf „Nachname, Vorname“ geändert (die Ansicht im Attribut name). Bestehende Objekte sind davon nicht betroffen. Set-ADObject "CN=user-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=Domäne,DC=de" -Partition „CN=Configuration,DC=Domäne,DC=de“ -Replace @{CreateDialog="%<sn>, %<givenName>"}
Die Voreinstellung für Kontakte wird wie folgt geändert: Set-ADObject "CN=contact-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=Domäne,DC=de" -Partition „CN=Configuration,DC=Domäne,DC=de“ -Replace @{CreateDialog="%<sn>, %<givenName>"}
# Benutzer muss Kennwort bei der nächsten Anmeldung ändern Set-ADUser –identity Yusuf –ChangePasswordAtLogon $true
# Die Kontooption „Benutzer kann Kennwort nicht ändern“ setzen Set-ADAccountControl Yusuf -CannotChangePassword $true
Achtung: Ist die Kontooption „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“ aktiviert, kann über dsa.msc nicht zusätzlich die Kontooption „Benutzer kann Kennwort nicht ändern“ aktiviert werden. Was auch verständlich ist, denn diese beiden Optionen widersprechen sich. Ist jedoch die Kontooption „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“ aktiviert und die Kontooption „Benutzer kann Kennwort nicht ändern“ wird über die AD-PowerShell aktiviert, sind anschließend beide Optionen aktiviert!
# Einem Benutzer ein neues Kennwort vergeben Set-ADAccountPassword –Identity Yusuf -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "Pa$$w0rd!" –Force)
# Die Kontooption „Kennwort läuft nie ab“ bei einem Benutzer- oder Dienstkonto aktivieren Set-ADAccountControl Yusuf -PasswordNeverExpires $true
# Alle Benutzerkonten innerhalb einer bestimmten OU anzeigen, die die Kontooption „Kennwort läuft nie ab“ aktiviert haben Search-ADAccount -PasswordNeverExpires -SearchBase “OU=EDV,DC=blog,DC=dikmenoglu,DC=de”
Hinweis: Bei Nutzung des Cmdlets Search-ADAccount kann durch die Angabe des Parameters –UsersOnly oder –ComputersOnly die Abfrage entweder nur auf Benutzer- oder Computerkonten beschränkt werden.
# Liefert alle Konten die ein abgelaufenes Kennwort besitzen Search-ADAccount -PasswordExpired | FT Name,ObjectClass
# Alle Benutzer-, Computer- und Dienstkonten anzeigen, die deaktiviert sind Search-ADAccount -AccountDisabled | FT Name
# Nur deaktivierte Benutzerkonten einer Domäne anzeigen Search-ADAccount –AccountDisabled –Usersonly | FT Name
# Lediglich deaktivierte Computerkonten anzeigen. Wenn Clients aus der Domäne entfernt und in eine Arbeitsgruppe hinzugefügt werden, wird das Computerkonto im AD deaktiviert und nicht gelöscht. Search-ADAccount -AccountDisabled -ComputersOnly | FT Name
# Alle deaktivierten Benutzer einer bestimmten Organisationseinheit (OU) anzeigen Search-ADAccount -AccountDisabled –Searchbase „OU=<OU>,DC=Domäne,DC=DE | where {$_.ObjectClass -eq 'user'} | FT Name
# Abgelaufene Benutzerkonten anzeigen Search-ADAccount –AccountExpired | FT Name
# Alle Benutzerkonten anzeigen, die in den nächsten 60 Tagen ablaufen Search-ADAccount –AccountExpiring -TimeSpan 60.00:00:00 | FT Name
# Alle Konten anzeigen (auch Computer) die sich in den letzten 60 Tagen nicht angemeldet haben. Bei dieser Abfrage muss sich der Domänenfunktionsmodus mindestens auf der Ebene „Windows Server 2003“ befinden Search-ADAccount -AccountInactive -TimeSpan 60.00:00:00 | FT Name
# Alle gesperrten Benutzer anzeigen Search-ADAccount -LockedOut –Usersonly | FT Name
# Einen bestimmten Benutzer entsperren Unlock-ADAccount –identity <DN des Benutzers>
# Alle Benutzerkonten anzeigen die am 30.08.2009 ablaufen Search-ADAccount -AccountExpiring -Usersonly -DateTime "8/30/2009" | FT Name
AD-PowerShell „Gruppenobjekt“ Befehle
Bei der Angabe des <Gruppennamen> können folgende Werte verwendet werden:
- sAMAccountName - Distinguished Name (DN) - ObjectSID - ObjectGUID
Mit dem Cmdlet Get-ADGroup werden standardmäßig folgende Werte angezeigt: DistinguishedName, GroupCategory, GroupScope, Name, ObjectClass, ObjectGUID, sAMAccountName, ObjectSID. Sollen neben diesen Werten noch weitere angezeigt werden, müssen diese mit dem Parameter –Properties angegeben werden. Z.B.: Get-ADGroup <Gruppe> -Properties groupType,member,memberOf,whenCreated,whenchanged
# Alle Eigenschaften einer Gruppe werden mit der Angabe von dem Stern (Wildcard) angezeigt Get-ADGroup <Gruppe> -Properties *
# Eine globale Sicherheitsgruppe im Container Users erstellen New-ADGroup -Name "Neue Gruppe" -sAMAccountName NeueGruppe -GroupCategory Security -GroupScope Global -DisplayName "Neue Gruppe" -Path "CN=Users,DC=Domäne,DC=de" # Eine domänenlokale Sicherheitsgruppe in einer OU erstellen New-ADGroup -Name "Gruppe" -sAMAccountName Gruppe -GroupCategory Security -GroupScope DomainLocal -DisplayName "Gruppe" -Path "OU=<OU>,DC=Domäne,DC=de"# Eine universelle Sicherheitsgruppe in einer OU erstellen New-ADGroup -Name "Gruppe" -sAMAccountName Gruppe -GroupCategory Security -GroupScope Universal -DisplayName "Gruppe" -Path "OU=<OU>,DC=Domäne,DC=de"# Eine globale Verteilergruppe in der angegebenen OU erstellen
New-ADGroup -Name <Gruppe> -sAMAccountName <Gruppe> -GroupScope Global -GroupCategory Distribution –DisplayName <Gruppe> –Path “OU=<OU>,DC=Domäne,DC=de”
# Alle Gruppen mit dem Gruppentyp “Sicherheit” anzeigen Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2147483648))“
Oder Get-ADGroup –Filter „groupType –band 0x80000000“
# Alle Gruppen mit dem Gruppentyp “Verteiler” anzeigen Get-ADGroup –LDAPFilter „(&(objectCategory=group)(!groupType:1.2.840.113556.1.4.803:=2147483648))“
# Nur universelle Sicherheitsgruppen anzeigen Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=-2147483640))“
# Nur domänenlokale Sicherheitsgruppen anzeigen Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=-2147483644))“
# Nur globale Sicherheitsgruppen anzeigen Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=-2147483646))“
# Globale Sicherheits- und Verteilergruppen werden mit diesem Befehl angezeigt Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2))“
# Domänenlokale Sicherheits- und Verteilergruppen zeigt dieser Befehl an Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=4))“
# Universelle Sicherheits- und Verteilergruppen anzeigen Get-ADGroup –LDAPFilter „(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=8))“
# Alle Benutzer anzeigen die als primäre Gruppe „Domänen-Benutzer“ eingetragen haben Get-ADUser –LDAPFilter „(&(objectCategory=person)(objectClass=user)(primaryGroupID=513))“
# Alle Benutzer anzeigen die als primäre Gruppe NICHT „Domänen-Benutzer“ eingetragen haben Get-ADUser –LDAPFilter „(&(objectCategory=person)(objectClass=user)(!primaryGroupID=513))“
# Alle direkten und verschachtelten Gruppenmitgliedschaften eines Benutzers anzeigen Get-ADAccountAuthorizationGroup Yusuf
# Alle direkten Mitglieder einer Gruppe anzeigen Get-ADGroupMember <Gruppe> | FT Name
# Alle direkten und verschachtelten Mitglieder einer Gruppe anzeigen Get-ADGroupMember <Gruppe> -Recursive | FT Name -A
# Alle für das System wichtigen Gruppen anzeigen Get-ADGroup -Filter { isCriticalSystemObject -eq $true }
# Eine Gruppe verschieben Move-ADObject "CN=Gruppe,OU=Techniker,DC=Domäne,DC=de" -TargetPath "OU=NeueOU,DC=Domäne,DC=de"
# Eine Beschreibung für eine Gruppe setzen Set-ADGroup <Gruppe> -Description "Diese Gruppe darf Benutzer im AD erstellen"
# Eine Verteilergruppe in eine Sicherheitsgruppe ändern Set-ADGroup <Gruppe> -groupCategory Security
# Den Gruppenbereich einer Gruppe auf Global ändern Set-ADGroup <Gruppe> –groupScope Global
# Den Gruppenbereich und den Gruppentyp einer Gruppe ändern Set-ADGroup <Gruppe> –groupScope Universal -groupCategory Security
Anstatt Universal kann Global oder DomainLocal angegeben werden.
# Mitglieder zu einer Gruppe hinzufügen Add-ADGroupmember <Gruppe> -Member Yusuf,Kaan
# Eine Gruppe löschen Remove-ADGroup <Gruppe>
# Einen Benutzer aus einer Gruppe entfernen Remove-ADGroupMember <Gruppe> -Member Yusuf
# Alle direkten Gruppenmitgliedschaften eines Sicherheitsprinzipals (Benutzer, Gruppe, Computer) anzeigen Get-ADPrincipalGroupMembership <Objekt>
AD-PowerShell „Organisationseinheit“ Befehle
# Mit dem Cmdlet Get-ADOrganizationalUnit werden folgende Werte angezeigt: City, Country, DistinguishedName, LinkedGroupPolicyObjects, ManagedBy, Name, ObjectClass, ObjectGUID, PostalCode, State, StreetAddress. Alle Eigenschaften einer OU lassen sich mit dem Parameter –Properties * anzeigen.
# Alle OUs in einer Domäne anzeigen Get-ADOrganizationalUnit -Filter {Name -like „*“} | FT Name, DistinguishedName -A
# Den Inhalt einer bestimmten OU anzeigen Get-ADObject -Filter {Name -Like "*"} -Searchbase „OU=<OU>,DC=Domäne,DC=de“
# Eine OU erstellen. Dabei ist die Option Objekt vor zufälligem Löschen schützen automatisch aktiviert. New-ADOrganizationalUnit -Name Techniker -Path "OU=IT,DC=Domäne,DC=de"
# Die Option Objekt vor zufälligem Löschen schützen von einer OU entfernen Set-ADOrganizationalUnit „<DN der OU>“ –ProtectedFromAccidentialDeletion $false
# Die Option Objekt vor zufälligem Löschen schützen auf einer OU aktivieren Set-ADOrganizationalUnit „<DN der OU>“ –ProtectedFromAccidentialDeletion $true
# Die Option Objekt vor zufälligem Löschen schützen auf allen OUs einer Domäne aktivieren Get-ADOrganizationalUnit -Filter 'Name -like "*"' | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $true
# Eine OU verschieben Move-ADObject "aktuelle DN der OU" -TargetPath "Ziel-DN"
Ist die Option Objekt vor zufälligem Löschen schützen aktiviert, erhält man eine Fehlermeldung.
# Eine OU samt dem kompletten Inhalt löschen Remove-ADOrganizationalUnit Test -Recursive
Ist die Option Objekt vor zufälligem Löschen schützen aktiviert, erhält man eine Fehlermeldung.
# Einen Benutzer aus einer OU löschen Remove-ADObject „CN=Yusuf Dikmenoglu,OU=IT,DC=Domäne,DC=de“
# Alle Objekte innerhalb einer OU in eine andere OU verschieben Get-ADObject -Filter {Name -Like "*"} -Searchbase „OU=AlteOU,DC=Domäne,DC=de“ -SearchScope OneLevel | Move-ADObject -TargetPath "OU=NeueOU,DC=Domäne,DC=de"
# Eine OU umbenennen Rename-ADObject "OU=AlterName,DC=Domäne,DC=de" -NewName <Neuername>
# Eine Beschreibung für eine OU vergeben Set-ADOrganizationalUnit <DN zur OU> -description <Beschreibung>
AD-PowerShell „Computerobjekt“ Befehle
# Mit dem Cmdlet Get-ADComputer werden diese Werte angezeigt: DistinguishedName, DNSHostName, Enabled, Name, ObjectClass, ObjectGUID, sAMAccountName, ObjectSID, userPrincipalName.
# Alle Computerkonten innerhalb einer Domäne auflisten Get-ADComputer –Filter {Name –Like “*”}
# Ein Computerobjekt in eine andere OU verschieben Get-ADComputer <Computername> | Move-ADObject -TargetPath „DN von Ziel-OU“
# Alle Computer anzeigen, die sich seit 180 Tagen nicht am AD angemeldet haben: Search-ADaccount -AccountInactive -Timespan 180 -ComputersOnly
# Mit dem folgenden Befehl wird die maximale Anzahl an Clients die ein Domänen-Benutzer zur Domäne hinzufügen kann erhöht
Set-ADDomain blog.dikmenoglu.de -Replace @{"ms-ds-MachineAccountQuota"="333"}
Siehe auch:
Clients in die Domäne hinzufügen
Weitere Informationen: Active Directory Administration with Windows PowerShell Die Active Directory-Attribute hinter den Feldnamen
Wenn im Active Directory (AD) Objekte gelöscht werden, verschwinden diese nicht sofort aus der AD-Datenbank (NTDS.dit). Das AD markiert das Objekt als gelöscht, indem das Attribut Is-Deleted des Objekts auf den Wert TRUE (Wahr) gesetzt wird. Dabei werden von dem Objekt die meisten Attribute für immer entfernt. Anschließend wandert das Objekt in den Container „Deleted Objects“ (der in fast allen Verzeichnispartitionen existiert) und wird ab diesem Zeitpunkt als Tombstone (zu deutsch: Grabstein) bezeichnet. Im Container Deleted Objects erhält das Tombstone einen speziellen Distinguished Name (DN), der so aussieht: „CN=<alter RDN>\0ADEL:<Object-GUID>“. Der DN des gelöschten Benutzerobjekts „Yusuf Dikmenoglu“ sieht z.B. so aus: CN=Yusuf Dikmenoglu\0ADEL:4b506a93-d721-4cbf-87dc-565939cf07af,CN=Deleted Objects,DC=blog,DC=dikmenoglu,DC=de
Das gelöschte Objekt wandert deshalb zuerst in den Container Deleted Objects, damit jeder Domänencontroller (DC) z.B. in einer weltweit verteilten Umgebung von der Löschung des Objekts in Kenntnis gesetzt wird, ehe das Objekt endgültig aus dem AD gelöscht wird. Gerade in größeren AD-Umgebungen mit einem komplexen Replikationszeitplan, ist diese Vorgehensweise für das Löschen von Objekten zwingend. Denn würde das Objekt nach dem löschen direkt aus der AD-Datenbank entfernt werden, würden die anderen DCs von dieser Löschung nichts mitbekommen und es entständen Lingering Objects (zu Deutsch: herumlungernde Objekte).
Lingering Objects (veraltete Objekte)
Das gelöschte Objekt verbleibt im Container Deleted Objects so lange, bis die Tombstone Lifetime (TSL) abgelaufen ist. Die TSL beträgt standardmäßig bei einer ursprünglich erstellten Windows 2000 sowie Windows Server 2003 Gesamtstruktur 60 Tage. Beim erstellen einer Gesamtstruktur ab Windows Server 2003 SP1 oder ab Windows Server 2003 R2 SP2 beträgt die TSL 180 Tage. Erst nach Ablauf der TSL Zeit, wird das Objekt nun endgültig vom Garbage Collection Prozess der standardmäßig alle 12 Stunden auf jedem DC läuft, aus dem AD entfernt.
Die Tombstone Lifetime
Dabei können Objekte aus der Konfigurations-, Domänen- und Anwendungsverzeichnispartition (wie z.B. ForestDNSZones und DomainDNSZones) gelöscht werden, aber nicht aus der Schemapartition! Schemaobjekte (Attribute und Klassen) können nicht entfernt werden, höchstens deaktiviert.
Ab Windows Server 2003 kann ein gelöschtes Objekt, sprich das Tombstone mit wenigen Attributen reanimiert werden. Wurde ein Objekt gelöscht, wird der DN vom Ursprungsort des Objekts im Attribut lastKnownParent eingetragen. Ein Objekt das autoritativ wiederhergestellt wurde, enthält ebenfalls im Attribut lastKnownParent den Ursprungsort. Oder wenn ein Objekt in den Container LostAndFound verschoben wird (bei einem Konflikt), der in den Verzeichnispartitionen Konfigurationspartition, Domänenpartition und Anwendungsverzeichnispartitionen wie die beiden DNS-Partitionen ForestDNSZones und DomainDNSZones existiert, wird im Attribut lastKnownParent ebenso der Ursprungsort des Konfliktobjekts eingetragen. Beim verschieben oder kopieren eines Objekts wird kein Wert im Attribut lastKnownParent eingetragen.
Wenn nun in der Domäne blog.dikmenoglu.de der Benutzer „Yusuf“ der sich in der OU „IT“ befindet gelöscht wird, enthält das Attribut lastKnownParent des gelöschten Benutzerobjekts im Container Deleted Objects der Domänenpartition den folgenden Wert: OU=IT,DC=blog,DC=dikmenoglu,DC=de
Dadurch lassen sich wiederhergestellte Tombstones, autoritativ wiederhergestellte Objekte oder Konfliktobjekte die sich im Container LostAndFound befinden ausfindig machen, in dem man eine Abfrage nach dem Attribut lastKnownParent durchführt und dabei diesen LDAP-Filter verwendet: (&(objectclass=*)(lastKnownParent=*))
Möchte man sich lediglich Benutzerkonten anzeigen lassen, so kann man z.B. bei einer benutzerdefinierten gespeicherten Abfrage diesen Filter verwenden: (objectcategory=person)(lastKnownParent=*)
Den Container Deleted Object mit LDP anzeigen
Der versteckte Container Deleted Objects wird weder in der MMC Active Directory-Benutzer und -Computer, noch in ADSIEdit.msc angezeigt. Stattdessen kann man sich mit LDP.exe oder z.B. dem AD Explorer den Container Deleted Objects anzeigen lassen. Wobei der Container in den Anwendungsverzeichnispartitionen lediglich mit LDP angezeigt werden kann und nicht mit dem AD Explorer. Natürlich können aber auch andere LDAP-Browser verwendet werden.
- Das LDP.exe befindet sich unter Windows 2000 und Windows Server 2003 in den Windows Support Tools und ist bereits ab Windows Server 2008 on Bord.
- Unter Start - Ausführen startet man als Erstes das LDP
- Danach muss man sich mit einem DC verbinden. Dazu gilt es unter Windows Server 2003 im Menüpunkt Connection die Option Connect… aufzurufen und im darauffolgenden Fenster einen DC einzutragen. Unter Windows Server 2008 heißt der Menüpunkt Remotedesktopverbindung und die Option Verbinden…
- Nun gilt es unter Connection/Remotedesktopverbindung - Bind…/Gebunden… ein entsprechendes Benutzerkonto (z.B. den Domänen-Admin) anzugeben, um sich mit diesem Benutzer an das AD zu „binden“.
- Anschließend muss der Distinguished Name (DN) des entsprechenden Deleted Objects Container unter View/Ansicht - Tree/Struktur angegeben werden.
Der DN des Container Deleted Objects in der Konfigurationspartition lautet: CN=Deleted Objects,CN=Configuration,DC=Root-Domäne
In der Domänenpartition lautet der DN von Deleted Objects wie folgt: CN=Deleted Objects,DC=blog,DC=dikmenoglu,DC=de
Der DN von Deleted Objects in den beiden DNS-Anwendungsverzeichnispartitionen lautet folgendermaßen: CN=Deleted Objects,DC=ForestDNSZones,DC=Root-Domäne CN=Deleted Objects,DC=DomainDNSZones,DC=Domäne,DC=de
- Nach dem man sich mit dem Container Deleted Objects verbunden hat, sieht man den Eintrag zwar auf der linken Seite im LDP-Fenster, jedoch erscheinen unter dem Eintrag keine weiteren Einträge, sprich die gelöschten Objekte bzw. Tombstones kommen nicht zum Vorschein. Diese erscheinen erst, wenn unter dem Menüpunkt Options/Optionen der Menüeintrag Controls/Steuerelemente ausgewählt und das LDAP-Control Return deleted objects (1.2.840.113556.1.4.417) als aktives Steuerelement eingecheckt wurde.

- Um nun ein Tombstone mit LDP zu reanimieren, müssen zwei Attribute im Tombstone verändert werden. Dazu klickt man mit rechts auf das zu wiederherstellende Objekt und wählt die Option Modify/Ändern. Danach muss zum einen der Wert im Attribut isDeleted gelöscht werden (den Wert aus FALSE zu setzen reicht nicht aus) und zum anderen, muss der DN des Objekts geändert werden. Dabei muss das Tombstone auch nicht zwingend an seinem Ursprungsort, der im Attribut lastKnownParent eingetragen ist, wiederhergestellt werden. Mit einem Klick auf Run/Ausführen wird das Tombstone dann wiederhergestellt.

-
In größeren AD-Umgebungen kann es im Container Deleted Objects das sich in der Domänenpartition befindet, durch die vielen gelöschten Objekte sehr unübersichtlich werden. Um sich lediglich die gelöschten Objekte eines bestimmten Zeitraums auf der rechten Seite im LDP anzeigen zu lassen, muss nach einem bestimmten Attribut in den gelöschten Objekten (den Tombstones) gesucht werden. Das Attribut in dem das Löschdatum enthalten ist lautet whenChanged.
Möchte man sich z.B. die Objekte die in den letzten 10 Tagen gelöscht wurden anzeigen, so klickt man auf der linken Seite im LDP mit rechts auf den Eintrag CN=Deleted Objects,DC=Domäne,DC=de und wählt die Option Search/Suchen. Als Filter könnte dieser eingesetzt werden: (&(objectclass=user)(whenchanged>=20090724023000.0Z)). Im Feld Attribute können die gewünschten Attribute des Tombstones angegeben werden, die ebenfalls angezeigt werden sollen. Oder es wird ein Wildcard (das Sternchen *) angegeben, um alle Attribute die im Tombstone enthalten sind anzuzeigen. Dabei muss der Wert, sprich das Datum und die Uhrzeit im Attribut whenChanged in folgender Notation angegeben werden: 2009(Jahr) 07(Monat) 24(Tag) 02(Stunden) 30(Minuten) 00(Sekunden).0Z

Man beachte bei der Zeitangabe, dass das Attribut whenChanged nicht zwischen den DCs repliziert wird. Das bedeutet, dass der Wert im Attribut whenChanged sich von DC zu DC unterscheidet.
- Schaut man sich die LDAP-Controls im LDP unter Windows Server 2008 R2 genauer an, entdeckt man zwei neue Einträge. Die beiden neuen Einträge sind:


Mit dem LDAP-Control Return deactivated links (1.2.840.113556.1.4.2065) werden die verknüpften Attribute bei aktiviertem AD-Papierkorb eines Objekts angezeigt (z.B. das memberOf Attribut eines Benutzerobjekts). Denn wenn der AD-Papierkorb im Windows Server 2008 R2 aktiviert wurde, werden die verknüpften Attribute (Forward- und Backlink) beim Löschen eines Objekts nicht entfernt. Somit ist auch das Geheimnis des AD-Papierkorbs entlüftet, wie es mit den verknüpften Attributen umgeht.
Weitere Informationen: Last-Known-Parent Attribute (Windows) When-Changed Attribute (Windows) Der Active Directory-Papierkorb im Windows Server 2008 R2 Verknüpfte Attribute Viewing deleted objects in Active Directory How to let non-administrators view the Active Directory deleted objects container in Windows Server 2003 and in Windows 2000 Server Searching for Deleted Objects
Soll der erste Read-Only Domänencontroller (kurz RODC) zu einer Windows Server 2003 Gesamtstruktur hinzugefügt werden, müssen bestimmte Voraussetzungen erfüllt sein. Eine davon ist, dass das ADPREP mit dem Parameter /RODCPREP mit „Organisations-Admin“ Rechten auf irgendeinem DC auszuführen gilt. In einer Gesamtstruktur mit mehreren Domänen kontaktiert das ADPREP jeden Infrastrukturmaster um die Berechtigungen der Anwendungsverzeichnispartitionen DomainDNSZones und ForestDNSZones zu aktualisieren. Mit Ausführen von ADPREP /RODCPREP werden die Security Descriptor der Anwendungsverzeichnispartitionen "DomainDNSZones" sowie "ForestDNSZones" angepasst. Nach Ausführen des Befehls wird der Gruppe NT-AUTORITÄT\DOMÄNENCONTROLLER DER ORGANISATION auf den beiden DNS-Anwendungsverzeichnispartitionen die entsprechenden Zugriffsberechtigungen auf die Replikation erteilt. Ist die Gesamtstruktur mit Windows Server 2008 erstellt worden, ist das Ausführen von ADPREP nicht notwendig.
Beim aktualisieren des security descriptor der einzelnen DNS-Anwendungsverzeichnispartitionen mit ADPREP /RODCPREP kann es jedoch zu dem Problem kommen, dass der Infrastrukturmaster einer DNS-Anwendungsverzeichnispartition nicht erreichbar ist.
Die Fehlermeldungen in der Kommandozeile lauten:
Adprep konnte kein Replikat für Partition DC=ForestDnsZones,DC=Root-Domäne erreichen. ADPREP hat einen LDAP-Fehler festgestellt. Fehlercode: 0x0. Erweiterter Server-Fehlercode: 0x0, Server-Fehlermeldung:(null).
und
Adprep konnte kein Replikat für Partition DC=DomainDnsZones,DC=Domäne,DC=de erreichen. ADPREP hat einen LDAP-Fehler festgestellt. Fehlercode: 0x0. Erweiterter Server-Fehlercode: 0x0, Server-Fehlermeldung:(null).
Der Grund dafür ist, dass ab Windows Server 2003 eine Besonderheit was die Rolle des Infrastrukturmasters anbetrifft existiert. Denn mit Windows Server 2003 wurden erstmals die Anwendungsverzeichnispartitionen eingeführt, wie z.B. im DNS die ForestDNSZones- und DomainDNSZones-Partitionen. Ab Windows Server 2003 existiert nämlich zusätzlich je ein Infrastrukturmaster pro Anwendungsverzeichnispartition. Als Infrastrukturmaster einer Anwendungsverzeichnispartition kann irgendein DC aus der jeweiligen Domäne ausgewählt werden und dieser muss nicht der Träger der Infrastrukturmasterrolle für die Domänenpartition sein.
Es existiert also ein Infrastrukturmaster für die Gesamtstrukturweite Anwendungsverzeichnispartition „ForestDNSZones“ und je ein Infrastrukturmaster pro „DomainDNSZones“. Das bedeutet für eine Gesamtstruktur mit zehn Domänen in der lediglich die Standard-Anwendungsverzeichnispartition im DNS genutzt werden und die DNS-Informationen pro Domäne in der DomainDNSZones gespeichert wird, folgende Aufteilung der FSMO-Rollen:
- Ein Schemamaster
- Ein Domänennamenmaster
- Zehn RID-Master (Relative ID)
- Zehn PDC-Emulatoren
- Zehn Infrastrukturmaster für die Domänen bzw. Domänenpartitionen
- Ein Infrastrukturmaster für die Anwendungsverzeichnispartition "ForestDNSZones"
- Zehn Infrastrukturmaster für die Anwendungsverzeichnispartition "DomainDNSZones"
Es existieren also insgesamt 21 Infrastrukturmaster in der Gesamtstruktur.
In allen Unternehmen die seit mehreren Jahren eine AD-Umgebung betreiben, müssen mit der Zeit auch die Hardware der Betriebsmasterrollen ausgetauscht werden. Wird die Hardware des FSMO-Rolleninhabers ausgetauscht, müssen alle Rollen die der DC innehat auf einen anderen DC verschoben werden. Dies kann händisch oder automatisch während dem DCPROMO-Vorgang erfolgen. Natürlich müssen auch bei einem Hardware-Crash des Rolleninhabers die gecrashten Rollen auf einem anderen DC erneut bereitgestellt werden.
Die FSMO-Rollen verschieben Die FSMO-Rollen mit DCPROMO verschieben
Und genau bei dem Übertragen oder Übernehmen der FSMO-Rollen gehen die Infrastrukturmaster der Anwendungsverzeichnispartitionen in Vergessenheit. In den meisten Umgebungen handelt es sich dabei um den Infrastrukturmaster der beiden DNS-Anwendungsverzeichnispartitionen „ForestDNSZones“ sowie „DomainDNSZones“. Andere Anwendungsverzeichnispartitionen sind in vielen Umgebungen nicht im Einsatz.
Leider werden die Infrastrukturmasterrollen der Anwendungsverzeichnispartitionen unter Windows Server 2003 sowie Windows Server 2008 beim Übertragen (Rolleninhaber ist online) auf einen anderen DC weder über die GUI, noch in der Kommandozeile mit NTDSUTIL (NTDSUTIL - Transfer) "verschoben". Diese müssen zusätzlich noch händisch auf einen anderen DC übertragen werden. Auch beim Übernehmen (Rolleninhaber ist offline, z.B. bei einem DC-Crash) der FSMO-Rollen auf einen anderen DC, müssen zusätzlich die Infrastrukturmaster der Anwendungsverzeichnispartitionen händisch verschoben werden.
Bedauerlich das Microsoft an die Infrastrukturmaster der Anwendungsverzeichnispartitionen keine Beachtung geschenkt hat. Es erscheint weder ein Hinweis beim verschieben der FSMO-Rollen, noch wird ein Eintrag in der Ereignisanzeige protokolliert, der auf das Fehlen der Infrastrukturmaster für die Anwendungsverzeichnispartitionen hinweist. Auch überprüft das DCDIAG bei dem Test KnowsOfRoleHolders nicht die Anwendungsverzeichnispartitionen nach dem Infrastrukturmaster, sondern nur den Infrastrukturmaster der Domänenpartition. Das Fehlen eines Infrastrukturmasters für eine Anwendungsverzeichnispartition bleibt somit unbemerkt.
Den Infrastrukturmaster der DNS-Anwendungsverzeichnispartitionen mit ADSIEdit ändern
Die Infrastrukturmasterrollen der Anwendungsverzeichnispartitionen "ForestDNSZones und "DomainDNSZones" sollten bevorzugt auf dem aktuellen Infrastrukturmaster wie folgt mit ADSIEdit auf einen anderen DC verschoben werden:
- Unter Windows Server 2003 gilt es zuerst die Windows Support Tools (auf der Server-CD im Verzeichnis Support\Tools) zu installieren.
- Danach startet man das ADSIEdit, was ab Windows Server 2008 bereits "on Bord" ist.
- Im ADSIEdit wählt man mit einem Rechtsklick auf den Eintrag "ADSI Edit" die Option "Connect to..." aus.
- Im darauffolgenden Fenster "Connection Settings" ist im Bereich "Connection Point" die Option "Select or type a Distinguished Name or Naming Context" auszuwählen.
- In dem Feld trägt man dann den Distinguished Name (DN) der entsprechenden Anwendungsverzeichnispartition ein, um sich mit dieser Verzeichnispartition zu verbinden. Im Fall der "ForestDNSZones" würde der DN so lauten:
DC=ForestDNSZones,DC=Root-Domäne,DC=TLD
- Anschließend verbindet man sich noch mit den einzelnen (je nach Anzahl der Domänen) "DomainDNSZones" Partitionen. Der DN lautet wie folgt:
DC=DomainDNSZones,DC=Domäne,DC=TLD
- Wenn man nun im ADSIEdit auf der linken Seite die einzelnen Verzeichnispartitionen mit denen man sich verbunden hat erweitert, findet man auf der rechten Seite das Objekt CN=Infrastructure. Mit einem Rechtsklick auf dieses Objekt ruft man die Eigenschaften des Objekts auf und ändert dort den Wert im Attribut fSMORoleOwner. An dieser Stelle muss nicht zwingend(!) der Infrastrukturmaster für die Domänenpartition angegeben werden. Es muss bloß ein verfügbarer DC der Domäne eingetragen werden.
- Der Wert im Attribut sieht z.B. so aus:
CN=NTDS Settings,CN=DCON01,CN=Servers,CN=<Standort>,CN=Sites,CN=Configuration,DC=intra,DC=dikmenoglu,DC=de
Den Infrastrukturmaster der DNS-Anwendungsverzeichnispartitionen mit LDP ändern
-
Unter Windows Server 2003 befindet sich das LDP in den Windows Support Tools und ab Windows Server 2008 ist es bereits „on Bord“.
-
Zuerst gilt es das LDP unter Start - Ausführen - LDP zu starten.
-
Als nächstes sollte man sich mit dem aktuellen Infrastrukturmaster verbinden. Dazu ruft man unter Windows Server 2003 im Menüpunkt Connection die Option „Connect…“ auf und trägt im darauf erscheinenden Fenster den DC ein und klickt auf OK. Unter Windows Server 2008 heißt der Menüpunkt Remotedesktopverbindung und die Option Verbinden…
-
Jetzt gilt es unter Connection/Remotedesktopverbindung - Bind…/Gebunden… ein entsprechendes Benutzerkonto (z.B. den Domänen-Admin) anzugeben, um sich mit diesem Benutzer an das AD zu „binden“.
-
Nun muss der Distinguished Name (DN) der entsprechenden Anwendungsverzeichnispartition unter View/Ansicht - Tree/Struktur angegeben werden. Der DN für ForestDNSZones lautet DC=ForestDNSZones,DC=Root-Domäne,DC=TLD und für DomainDNSZones DC=DomainDNSZones,DC=Domäne,DC=TLD.
-
Mit einem Rechtsklick auf den Eintrag CN=Infrastructure,DC=ForestDnsZones,DC=Root-Domäne,DC=de bzw. CN=Infrastructure,DC=DomainDnsZones,DC=Domäne,DC=de gilt es die Option Modify auszuwählen.
-
Anschließend muss als Wert im Attribut fSMORoleOwner der DN des NTDS Settings Objekts des zukünftigen Infrastrukturmaster eingetragen werden, z.B.: CN=NTDS Settings,CN=MZDCON02,CN=Servers,CN=Mainz,CN=Sites,CN=Configuration,DC=intra,DC=dikmenoglu,DC=de

Existieren evtl. noch selbst erstellte Anwendungsverzeichnispartitionen, so müssen die Infrastrukturmasterrollen dieser Verzeichnispartitionen ebenfalls auf einen anderen DC verschoben werden, wenn der Ursprungsrollenträger aus der Domäne entfernt werden soll oder nicht mehr zur Verfügung steht.
Zum ändern des Infrastrukturmasters für die Anwendungsverzeichnispartition „DomainDNSZones“ kann man auch das Skript in dem folgenden Artikel verwenden: Error message when you run the "Adprep /rodcprep" command in Windows Server 2008: "Adprep could not contact a replica for partition DC=DomainDnsZones,DC=Contoso,DC=com"
Die Verzeichnispartitionen und die Infrastrukturmasterrolle der DNS-Partitionen anzeigen
Der folgende Befehl kann dazu verwendet werden, alle Verzeichnispartitionen die in der Gesamtstruktur existieren anzeigen zu lassen: Dsquery * CN=Partitions,CN=Configuration,DC=Domäne,DC=de -attr nCName
Möchte man sich lediglich die Anwendungsverzeichnispartitionen die in der Gesamtstruktur existieren anzeigen lassen, so ist das mit diesem Befehl möglich: Dsquery * CN=Partitions,CN=Configuration,DC=Root-Domäne,DC=de -Filter "(&(objectcategory=crossRef)(systemFlags:1.2.840.113556.1.4.803:=5))" -Scope OneLevel -attr dnsRoot
Bei dieser Abfrage werden alle crossRef-Objekte im Container Partitions abgefragt, die im systemFlags Attribut als Wert 0101 (Dezimal 5) eingetragen haben. Der Befehl sieht in einer kürzeren Fassung mit dem gleichen Ergebnis so aus:
Dsquery * CN=Partitions,CN=Configuration,DC=Root-Domäne,DC=de -Filter (systemFlags=5) -Scope OneLevel -attr dnsRoot
Die Abfrage nach dem Attribut dnsRoot liefert als Ergebnis immer den DNS-Namen der Anwendungsverzeichnispartitionen, wie z.B.: DomainDNSZones.blog.dikmenoglu.de. Bei der Abfrage nach dem Attribut nCName wird als Ergebnis der „Distinguished Name“ der Partitionen geliefert. Die Abfrage sieht wie folgt aus: Dsquery * CN=Partitions,CN=Configuration,DC=Root-Domäne,DC=de -Filter (systemFlags=5) -Scope OneLevel -attr nCName
Die Infrastrukturmasterrolle der ForestDNSZones-Partition lässt sich mit diesem Befehl anzeigen: Dsquery * CN=Infrastructure,DC=ForestDNSZones,DC=Root-Domäne -attr fSMORoleOwner
Die Infrastrukturmasterrollen der jeweiligen DomainDNSZones-Partition lassen sich wie folgt herausfinden: Dsquery * CN=Infrastructure,DC=DomainDNSZones,DC=<die entsprechende Domäne>,DC=TLD -attr fSMORoleOwner
Warum beeinträchtigt ein fehlender Infrastrukturmaster einer DNS-Anwendungsverzeichnispartition nicht die Domäne?
Die Arbeit des Infrastrukturmaster besteht darin, domänenübergreifende Objektreferenzen (z.B. bei domänenübergreifenden Gruppenmitgliedschaften) innerhalb seiner Domäne stets aktuell zu halten. In den beiden DNS-Anwendungsverzeichnispartitionen werden jedoch ausschließlich die DNS-Zonen (Forward Lookup- und Reverse Lookup Zonen) gespeichert, die keine Verweise zu anderen Objekten in anderen Verzeichnispartitionen verwenden. Daher hat ein Infrastrukturmaster für die beiden DNS-Anwendungsverzeichnispartitionen nichts zu tun und wird deshalb nicht benötigt. Aus diesem Grund fällt an dieser Stelle ein fehlender Infrastrukturmaster für die DNS-Anwendungsverzeichnispartitionen im laufenden Betrieb nicht auf.
Siehe auch: Phantome im Active Directory
Erst beim ausführen von ADPREP /RODCPREP wird man auf diesen Fehler aufmerksam gemacht, der sich schnell und einfach beheben lässt.
Weitere Informationen: DCDIAG: NCSecDesc Fehler Read-Only Domain Controller (RODC) Die Installation eines RODC How many Infrastructure Masters do you have?
Phantome im Active Directory (AD) sind nichts anderes als Referenzen auf Objekte aus anderen Domänen innerhalb der Gesamtstruktur. Wird z.B. ein Domänen-Benutzer zu einer Gruppe in einer anderen Domäne hinzugefügt, erstellt der lokale Domänencontroller (DC) der den Domänen-Benutzer zur Gruppe hinzufügt automatisch ein spezielles Objekt in der Datentabelle. Das spezielle Objekt ist das Phantomobjekt für den Domänen-Benutzer. Mit einem Phantomobjekt können DCs Verweise auf Objekte die sich in anderen Domänen innerhalb der Gesamtstruktur befinden verwalten. Im Phantomobjekt wird der ObjektGUID, ObjektSID und der Distinguished Name (DN) des neuen Gruppenmitglieds gespeichert. Durch dieses Phantomobjekt wird ein Distinguished Name Tag (DNT) bereitgestellt, das im member Attribut einer Gruppe gespeichert werden kann. Ist jedoch auf dem DC der globale Katalog (GC) aktiviert, so wird kein Phantomobjekt erstellt. Denn im GC befindet sich bereits ein Eintrag in der Datentabelle für jedes Objekt in der Gesamtstruktur. Phantomobjekte sind eine spezielle Art von internen Datenbankobjekten die einzig und alleine zum nachverfolgen dienen und lassen sich deshalb weder über die LDAP- noch ADSI-Schnittstelle anzeigen.
Die Anzahl der Phantomobjekte kann man sich mit NTDSUTIL anzeigen lassen. Führt man mit NTDSUTIL eine Analyse der AD-Datenbank mit Semantic Database Analysis durch, wird eine Datei erzeugt deren Inhalt so aussieht:
Summary: Active Objects 9647 Phantoms 67 Deleted 2469
Der DC der die Rolle des Infrastrukturmasters innehat vergleicht regelmäßig die Einträge in seiner Datentabelle mit dem GC. Stellt dieser fest das ein Objekt umbenannt, verschoben oder gelöscht wurde, aktualisiert der Infrastrukturmaster automatisch das Phantomobjekt in der Datentabelle und repliziert die Änderung auf seine Replikationspartner innerhalb der Domäne. Wird das Quell-Objekt in eine andere Domäne verschoben, ändert sich der DN des Objekts und der Infrastrukturmaster aktualisiert automatisch den DN vom Phantomobjekt. Der Infrastrukturmaster überprüft standardmäßig alle zwei Tage die Verknüpfungsbeziehungen und kann auch Phantomobjekte entfernen, auf die sich keine Forward-Link Attribute in der Domäne mehr beziehen. Bei Bedarf kann das Intervall auf dem DC der die Rolle des Infrastrukturmasters innehat, mit Erstellen des folgenden Registryschlüssels angepasst werden:
Registrierungseintrag: Days per database Phantom scan
Type: DWORD
Standardwert: 2 Tage (der Mindestwert wäre ein Tag)
Ein Phantomobjekt wird letztendlich vom Garbage Collection Prozess der alle 12 Stunden auf jedem DC ausgeführt wird erst dann entfernt, wenn alle Verweise zum Quell-Objekt entfernt wurden.
Es könnte aber auch durchaus sein, dass ein Forward-Link Attribut auf Objekte außerhalb der eigenen Gesamtstruktur verweist (z.B. auf Objekte einer vertrauenswürdigen Domäne). In solch einem Fall wird vom AD in der Domänenverzeichnispartition ein Objekt im Container ForeignSecurityPrincipals erstellt. Dieses Objekt wird dann als Foreign Security Principal (kurz FSP) bezeichnet. In diesem FSP werden neben dem SID zusätzliche Attribute gespeichert, damit das Objekt in der vertrauenswürdigen Domäne eindeutig identifiziert werden kann. Ein Nachteil des FSP ist, das es keinen Prozess gibt damit der FSP stets aktuell bleibt (z.B. wenn das Quell-Objekt umbenannt wird). Muss ein FSP von einer System State-Sicherung wiederhergestellt werden, so wird das FSP wie jedes andere AD-Objekt behandelt.
Weitere Informationen: Verknüpfte Attribute Die Active Directory-Datenbank reparieren Was passiert in der AD-Datenbank wenn ein Objekt gelöscht wird? Phantoms, tombstones and the infrastructure master How the Data Store Works
Alle Active Directory (AD) Daten wie z.B. Benutzer-, Gruppen- oder Computerobjekte werden in der transaktionalen Datenbankdatei NTDS.DIT gespeichert, die sich standardmäßig im Verzeichnis %windir%\NTDS auf jedem Domänencontroller (DC) befindet. Die zugrundeliegende Datenbank-Engine ist die Extensible Storage Engine (ESE), die ebenfalls im Exchange und WINS-Umfeld zum Einsatz kommt. Die AD-Datenbank NTDS.DIT besteht intern aus drei Tabellen: Datentabelle (Data-Table), Verknüpfungstabelle (Link-Table) und (security descriptor) SD-Table. Die beiden elementarsten Tabellen in der sich die Daten des AD befinden ist die Datentabelle, die alle Objekte sowie Attribute enthält und die Verknüpfungstabelle, in der die Beziehungen zwischen den Objekten gespeichert werden.
Jedes AD-Objekt (z.B. Benutzer, Gruppen, Computer und Anwendungsspezifische Daten) wird zusammen mit seinem „Distinguished Name“ (DN) und einer eindeutigen Kennung in einer einzelnen Zeile, mit einer Spalte pro Attribut in der Datentabelle gespeichert. Oder anders ausgedrückt entspricht jede Zeile in der Datentabelle einem Objekt. Bei einem DC enthält die Datentabelle die Einträge aus der Schema-, Konfigurations-, Anwendungs- und Domänenpartition. Auf einem globalen Katalog (GC) enthält die Datentabelle Einträge für jedes Objekt in der Gesamtstruktur, denn alle Objekte aus allen Domänenpartitionen innerhalb der Gesamtstruktur werden mit den Attributen die für eine Suche relevant sind, in den GC repliziert.
Das AD verwendet als eindeutige Kennung das Distinguished Name Tag (DNT), um jede Zeile in der Datentabelle eindeutig zu identifizieren. Bei dem DNT handelt es sich um einen 32Bit Integer Wert und dieser wird zum internen Verweis auf Objekte verwendet. Der Distinguished Name Tag ist eine lokale Kennung der nicht zwischen den DCs repliziert wird und lautet bei jedem DC anders.
Das Verknüpfen von Objekten
Im AD existieren zwei Arten von Beziehungen die zwischen den Objekten verwaltet werden. Zum einen ist es die Beziehung zwischen den über- und untergeordneten Objekten und zum anderen ist es die Verknüpfungsbeziehung. Für die Beziehung zwischen den über- und untergeordneten Objekten speichert das AD in einer zusätzlichen Spalte innerhalb der Datentabelle den Parent Distinguished Name Tag (PDNT). In dieser Spalte wird der DNT vom übergeordneten Objekt gespeichert.
Die Verknüpfungsbeziehung zwischen einem Verknüpfungspaar wird in der Verknüpfungstabelle gespeichert. Die Verknüpfungstabelle verwendet nur den DNT der gespeicherten Objekte, um den DN und somit das Objekt selbst ausfindig zu machen. Diese Vorgehensweise innerhalb der AD-Datenbank stellt sicher, dass die Integrität der Objekte und den jeweiligen Links gewährleistet ist.

Im AD werden alle Attribute durch ein attributeSchema-Objekt in der Schemapartition definiert, wobei diverse Attribute im AD als Verknüpfungsattribute definiert sind. Als Verknüpfungsattribute werden Attribute bestimmt, die einen geraden Wert im LinkID Attribut des attributeSchema-Objekts enthalten.
Verknüpfte Attribute (auf Englisch: Linked Attributes) stellen eine besondere Beziehung im Active Directory zueinander dar und sind Verknüpfungspaare, die aus einem Forward-Link Attribut und einem Back-Link Attribut bestehen um eine Verknüpfung zwischen zwei AD-Objekten zu erstellen.
Der Wert des Back-Link Attributs wird basierend auf dem Wert das im Forward-Link Attribut eingetragen ist berechnet. Der Wert eines Back-Link Attributs im Zielobjekt besteht aus den Distinguished Name Einträgen aller Objekte, in denen der DN des Quellobjekts im entsprechenden Forward-Link Attribut eingetragen ist.
Z.B. stellen in den Eigenschaften eines Benutzerkontos, in der Registerkarte „Organisation“ die Attribute „manager“ (Feldname: Vorgesetzter) und das Attribut „directReports“ (Feldname: Mitarbeiter) ein Verknüpfungspaar dar. Dabei handelt es sich bei dem einwertigen (single-value) Attribut „manager“ um das Forward-Link und bei dem mehrwertigen (multivalue) Attribut „directReports“ um das Back-Link Attribut.
Ein weiteres Beispiel ist die Gruppenmitgliedschaft eines Domänen-Benutzers. Das MemberOf-Attribut im Benutzerobjekt ist das Back-Link und das Member-Attribut im Gruppenobjekt das Forward-Link Attribut. Beide Attribute sind mehrwertig und stellen eine Verknüpfung zwischen dem Gruppenobjekt und seinen Benutzerobjekten dar. Denn schließlich kann ein Domänen-Benutzer Mitglied in mehreren Gruppen sein und eine Gruppe kann mehrere Domänen-Benutzer als Gruppenmitglieder enthalten. Das member Atribut im Gruppenobjekt scheint in der MMC Active Directory-Benutzer und -Computer die DNs der Mitglieder zu enthalten, aber tatsächlich werden die DNs vom AD anders gespeichert. Wird der DN eines Benutzerobjekts dem member Attribut einer Gruppe hinzugefügt, speichert das AD den DNT des Objekts und nicht den DN. Da sich der DNT selbst beim umbenennen eines Objekts nicht ändert, kann ein Benutzerobjekt umbenannt werden ohne dass das AD alle Gruppen durchsuchen muss um den DN in jedem member Attribut zu aktualisieren.

Wird in einem Verknüpfungspaar der Wert eines Forward-Link Attributs vom Administrator verändert, aktualisiert das Active Directory automatisch das Back-Link Attribut. Das beinhaltet selbstverständlich auch das Löschen von Werten. Dabei kann lediglich der Forward-Link vom Administrator bearbeitet werden (wie z.B. das Member-Attribut eines Gruppenobjekts), der zwischen den DCs repliziert wird.
Back-Links dagegen werden von jedem DC selbst verwaltet und können auch nicht vom Administrator bearbeitet werden. Es ist ein sogenanntes system-only Attribut und wird auch nicht auf andere DCs repliziert. Ein Back-Link und sein Wert werden zum Zeitpunkt der Abfrage generiert. Solche Attribute tragen den Namen constructed.
Das LinkID Attribut im Forward-Link enthält immer einen geraden und das LinkID Attribut im verknüpften Back-Link enthält einen ungeraden Wert, nämlich den Wert „Forward-LinkID plus 1“. Beispielsweise enthält das LinkID Attribut im attributeSchema-Objekt Manager den Wert 42 und das LinkID Attribut im attributeSchema-Objekt directReports den Wert 43. Im attributeSchema-Objekt Member enthält das LinkID Attribut den Wert 2 und im attributeSchema-Objekt MemberOf enthält das LinkID Attribut den Wert 3.
Es gibt aber auch Gruppentypen die Mitglieder enthalten können, die sich in einer anderen Domäne befinden. Das AD speichert dazu ein spezielles Objekt in der Datentabelle, damit ein DNT bereitgestellt und im member Attribut der Gruppe gespeichert werden kann. Was genau das auf sich hat, wird in diesem Artikel beschrieben:
Phantome im Active Directory
Weitere Informationen: Die unterschiedliche Größe der AD-Datenbank Was passiert in der AD-Datenbank wenn ein Objekt gelöscht wird? Link-ID Attribute (Windows) Linked Attributes (Windows) How the Data Store Works: Active Directory
Wenn das DCDIAG auf einem Windows Server 2008 oder Windows Server 2008 R2 ausgeführt wird, kann es unter Umständen zu folgendem Fehler bei dem NCSecDesc Test kommen:
Starting test: NCSecDesc Fehler: NT-AUTORITÄT\DOMÄNENCONTROLLER DER ORGANISATION besitzt keine Replicating Directory Changes In Filtered Set Zugriffsrechte für den Namenskontext: DC=DomainDnsZones,DC=Domäne,DC=TLD Fehler: NT-AUTORITÄT\DOMÄNENCONTROLLER DER ORGANISATION besitzt keine Replicating Directory Changes In Filtered Set Zugriffsrechte für den Namenskontext: DC=ForestDnsZones,DC=Domäne,DC=TLD .................. DCON01 hat den Test NCSecDesc nicht bestanden.
Wird ein Windows Server 2008 oder Windows Server 2008 R2 als zusätzlicher Domänencontroller (DC) zu einer Windows 2000 oder Windows Server 2003 Domäne hinzugefügt, kann es zu diesem Fehler kommen. Das DCDIAG ab Windows Server 2008 bringt bei dem NCSecDesc Test einen Fehler, wenn der Befehl ADPREP /RODCPREP nicht ausgeführt wurde.
Denn bei diesem Test wird überprüft, ob der Security Descriptor der genannten Verzeichnispartitionen, in dem Fall die beiden Anwendungsverzeichnispartitionen "DomainDNSZones" sowie "ForestDNSZones", über die entsprechenden Berechtigungen für die Replikation verfügt. Der Fehler zeigt an, dass die Gruppe NT-AUTORITÄT\DOMÄNENCONTROLLER DER ORGANISATION keine Zugriffsberechtigung auf die Replikation der Verzeichnisänderungen für die beiden DNS-Anwendungsverzeichnispartitionen besitzt.
Falls es nicht geplant ist einen Read-Only Domänencontroller (RODC) in der Gesamtstruktur zu installieren, kann dieser Fehler getrost ignoriert werden. Aber wenn es doch geplant ist einen RODC in der Gesamtstruktur zu installieren, verschwindet dieser Fehler nach dem Ausführen von ADPREP /RODCPREP. Dabei kann das ADPREP sowohl von der Windows Server 2008 DVD als auch von der Windows Server 2008 R2 DVD auf irgendeinem DC mit „Organisations-Admin“ Rechten ausgeführt werden. Denn beide ADPREP-Versionen setzen beim Ausführen des Parameters /RODCPREP die gleichen Berechtigungen in den DNS-Anwendungsverzeichnispartitionen.
Das ADPREP kontaktiert während der Ausführung alle Infrastrukturmasterrollen der einzelnen DNS-Anwendungsverzeichnispartitionen in der Gesamtstruktur und aktualisiert die Berechtigungen. Während der Durchführung von ADPREP /RODCPREP könnte es sein, dass ein Infrastrukturmaster nicht erreichbar ist. Was genau das auf sich hat, beschreibt der folgende Artikel:
Die Infrastrukturmaster der Anwendungsverzeichnispartitionen
Weitere Informationen: Die Installation eines RODC
Möchte der Administrator eine LDAP-Abfrage durchführen oder eine Objektdelegierung im Active Directory (AD) einrichten, so muss er wissen welches Attribut hinter dem Feld z.B. in der MMC Active Directory-Benutzer und –Computer (dsa.msc) dahinter steckt, damit er seine Aufgabe durchführen kann.
Die Attribute die hier aufgezeigt werden beziehen sich auf die Felder in der MMC dsa.msc.
Die Attribute hinter den Feldern eines Benutzerkontos
Die Registerkarte: Allgemein

Die Registerkarte: Adresse

Die Registerkarte: Konto

Die Registerkarte: Profil

Die Registerkarte: Rufnummern

Die Registerkarte: Organisation

Die Registerkarte: Mitglied von

Die Übersicht in der MMC "dsa.msc"

Die Attribute hinter den Feldern eines Gruppenkontos
Die Registerkarte: Allgemein

Die Registerkarte: Mitglieder

Die Registerkarte: Mitglied von

Die Registerkarte: Verwaltet von

Die Attribute hinter den Feldern einer Organisationseinheit (OU)
Die Registerkarte: Allgemein

Die Registerkarte: Verwaltet von

Die Attribute in der Registerkarte "Objekt"
Diese Registerkarte kommt in den Eingenschaften einer OU, eines Benutzer-, Gruppen- oder Computerkontos erst dann zum Vorschein, wenn im Snap-In Active Directory-Benutzer und -Computer unter Ansicht die Option Erweiterte Funktionen aktiviert wurde.

Die Attribute hinter den Feldern eines Computerkontos
Die Registerkarte: Allgemein

Die Registerkarte: Betriebssystem

Die Registerkarte: Mitglied von

Die Registerkarte: Standort

Die Attribute hinter den Feldern eines Druckers
Die Registerkarte: Allgemein

Die Attribute hinter den Feldern eines "Kontakts"
Die Registerkarte: Allgemein
Die Registerkarte: Adresse

Die Registerkarte: Rufnummern

Die Registerkarte: Organisation

Weitere Informationen: Gespeicherte Abfragen Active Directory - Abfrage All Attributes (Windows) All Classes (Windows) Mappings for the Active Directory Users and Computers Snap-in (Windows)
In vielen Unternehmen ist ein Prozess etabliert, wie und wann ein neuer Mitarbeiter im Active Directory (AD) als Benutzer erstellt wird. Viele Firmen verwenden zum erstellen eines Benutzerkontos die Standardwerkzeuge, wie die MMC Active Directory-Benutzer und -Computer (dsa.msc) das im Windows mitgeliefert wird. Andere Firmen verwenden dagegen ihre „eigenen“ Werkzeuge in Form von Dritt-Anbieter Tools, Skripten oder selbst entwickelte Tools, weil dadurch gleich beim erstellen eines Domänen-Benutzers weitere Informationen (z.B. Büro, Rufnummer, Adressinformationen etc.) dem Benutzerkonto in einem Schritt vergeben werden.
Mit einer Unternehmensrichtlinie kann man zwar festlegen, dass ein Benutzerkonto ausschließlich über das eigene Werkzeug erstellt werden soll, doch technisch gesehen kann natürlich der Administrator weiterhin über die MMC dsa.msc Benutzerkonten erstellen.

Das kann man jedoch wie folgt unterbinden:
- Dazu ruft man zuerst das ADSIEdit.msc auf, das sich unter Windows 2000 und Windows Server 2003 in den Windows Support Tools befindet und ab Windows Server 2008 bereits im Betriebssystem integriert ist und verbindet sich mit der Schemapartition.
- Dann gilt es in den Eigenschaften des Objekts CN=User den Wert des Attributs defaulthidingvalue auf TRUE (Wahr) zu setzen. Ändert man stattdessen das Attribut im Objekt CN=Group, so lassen sich keine Gruppen mehr in der MMC dsa.msc erstellen.
- Anschließend steht der Eintrag „Benutzer“ unter „Neu“ nicht mehr zur Verfügung.
Da diese Änderung in der Schemapartition durchgeführt und auf alle DCs in der Gesamtstruktur repliziert wird, betrifft das alle Domänen in der Gesamtstruktur.
Natürlich ist es aber über andere grafische Tools oder mit Kommandozeilentools wie z.B. DSADD weiterhin möglich Benutzer im AD zu erstellen. Diese Änderung betrifft ausschließlich die MMC Active Directory-Benutzer und -Computer.
Weitere Informationen: Eigene Spalten in ADBuC integrieren
Wurde bis einschließlich Windows Server 2008 der Domänen- oder Gesamtstrukturfunktionsmodus z.B. von „Windows Server 2003“ auf „Windows Server 2008“ hochgestuft, ist es nicht möglich weder den Domänen- noch Gesamtstrukturfunktionsmodus zurückzustufen. Die einzige Möglichkeit wäre ein Forest-Recovery durchzuführen. Denn das Heraufstufen des Domänen- bzw. Gesamtstrukturfunktionsmodus ist ein irreversibler Vorgang.
Unter Windows Server 2008 R2 ist nun das zurückstufen in einen bestimmten Domänen- sowie Gesamtstrukturfunktionsmodus unter gewissen Voraussetzungen möglich.
Die Funktionsebenen bestimmen zum einen die zur Verfügung stehenden Active Directory-Funktionen innerhalb der Domäne sowie Gesamtstruktur und zum anderen werden die Betriebssystemversionen beschränkt, die auf Domänencontrollern (DCs) ausgeführt werden können.
Weitere Informationen über die Funktionsebenen liefert der folgende Artikel:
Domänen- und Gesamtstrukturfunktionsmodus
Den Domänenfunktionsmodus zurückstufen
Der Domänenfunktionsmodus lässt sich unter bestimmten Voraussetzungen wie folgt zurückstufen:
- Der aktuelle Domänenfunktionsmodus muss sich auf „Windows Server 2008 R2“ befinden.
- Der Domänenfunktionsmodus lässt sich ausschließlich auf „Windows Server 2008“ zurückstufen. Ein zurückstufen auf „Windows Server 2003“ oder früher ist unter keinen Umständen möglich.
- Der Gesamtstrukturfunktionsmodus muss den Domänenfunktionsmodus auf den die entsprechende Domäne zurückgestuft werden soll (also auf „Windows Server 2008“) unterstützen. Das bedeutet, befindet sich der Gesamtstrukturfunktionsmodus auf „Windows Server 2008 R2“, so kann die Domäne nicht auf „Windows Server 2008“ zurückgestuft werden, da der Gesamtstrukturfunktionsmodus nur „Windows Server 2008 R2“ Domänen innerhalb der Gesamtstruktur unterstützt.
- Der Gesamtstrukturfunktionsmodus muss sich also auf Windows 2000, Windows Server 2003 oder Windows Server 2008 befinden.
- Der Domänenfunktionsmodus kann zum einen in der AD-Powershell mit dem Commandlet Set-ADDomainMode und zum anderen, mit dem Attribut-Editor in der MMC Active Directory-Benutzer und -Computer (dsa.msc) oder ADSIEdit zurückgestuft werden.
- Unter Start-Verwaltung gilt es das Active Directory Module for Windows Powershell zu starten. Danach kann mit diesem AD Powershell-Befehl der Domänenfunktionsmodus zurückgestuft werden:
Set-ADDomainMode <FQDN der Domäne> -DomainMode Windows2008Domain
- Anschließend muss die Aktion mit einem „J“ bestätigt werden.

- Leider erscheint in der AD-Powershell keine Meldung das die Aktion durchgeführt wurde. Es wird aber im Verzeichnisdienstprotokoll des DCs die EventID 2039 protokolliert in der bestätigt wird, dass die Neue Domänenfunktionsebene:3 lautet.
-
Die Zahl „3“ gibt den Wert im Attribut msDS-Behavior-Version an, das sich in der Domänenpartition in den Eigenschaften des Containers <DC=Domäne,DC=TLD> befindet.
Folgende Werte können im Attribut msDS-Behavior-Version eingetragen sein: 0 = Domänenfunktionsmodus: Windows 2000 gemischt und Windows 2000 pur 1 = Domänenfunktions: Windows Server 2003 Interim 2 = Domänenfunktionsebene: Windows Server 2003 3 = Domänenfunktionsebene: Windows Server 2008 4 = Domänenfunktionsebene: Windows Server 2008 R2
- Mit dem Attribut-Editor in der MMC Active Directory-Benutzer und -Computer (dsa.msc) oder ADSIEdit lässt sich der Domänenfunktionsmodus ebenfalls zurückstufen. In der MMC dsa.msc gilt es zuerst unter Ansicht die Erweiterte Features zu aktivieren. Anschließend ruft man mit einem Rechtsklick auf den Domänennamen die Eigenschaften auf und wechselt zum Reiter Attribut-Editor. Dort angelangt, ändert man den Wert im Attribut msDS-Behavior-Version von 4 auf 3. Mit ADSIEdit ist die Vorgehensweise ähnlich. Nach dem Aufruf von ADSIEdit stellt man im ersten Schritt eine Verbindung mit der Domänenpartition (Standardmäßiger Namenskontext) her und ändert im zweiten, den Wert im Attribut msDS-Behavior-Version von 4 auf 3.
- Der Domänenfunktionsmodus kann natürlich auch in der MMC Active Directory-Benutzer und -Computer (dsa.msc) und Active Directory-Domänen und -Vertrauensstellungen (domain.msc) überprüft werden.
- In der AD-Powershell lässt sich der DomainMode mit dem Cmdlet Get-ADDomain verifizieren.
Den Gesamtstrukturfunktionsmodus zurückstufen
Der Gesamtstrukturfunktionsmodus lässt sich unter gewissen Voraussetzungen wie folgt zurückstufen:
Weitere Informationen: Der Active Directory-Papierkorb im Windows Server 2008 R2Die AD-Powershell im Windows Server 2008 R2
Eine weitere Neuheit die ab Windows Server 2008 R2 und Windows 7 eingeführt wird, ist die Möglichkeit einen Computer mit Windows Server 2008 R2 oder Windows 7 zur Domäne hinzuzufügen, ohne das die Maschine eine Verbindung zum Netzwerk hat (Offline Domain join). Diese neue Funktion kann ausschließlich ab Windows Server 2008 R2 und Windows 7 eingesetzt werden. Damit ist es möglich an entfernten Standorten die noch keine Anbindung ans Unternehmensnetzwerk haben Windows Server 2008 R2 Mitgliedserver und Windows 7 Clients zur Domäne hinzuzufügen.
Eine weitere Einsatzmöglichkeit für diese Funktion wäre, dass bereits die bestellten Windows 7 Clients direkt vom PC-Lieferanten vorinstalliert und zur Domäne hinzugefügt werden.
Oder bei der Massenanfertigung von virtuellen Maschinen können direkt nach der Betriebssysteminstallation die VMs zur Domäne hinzugefügt werden. Das ganze hat sogar den Vorteil, dass dadurch ein Neustart erspart bleibt der sonst nach dem Hinzufügen einer VM zur Domäne notwendig wäre.
Auch mit Deployment Tools, wie z.B. dem Windows-System-Image Manager (SIM) der Bestandteil des Windows Automated Installation Kit (WAIK) ist, können bereits während der unbeaufsichtigten (unattended) Installation eines Windows Server 2008 R2 und Windows 7 die Systeme zur Domäne hinzugefügt werden. Das ist möglich durch das Bereitstellen der relevanten Daten in der Unattend.xml-Datei, die für das offline domain join notwendig sind. Die Unattend.xml-Datei für Windows Server 2008 R2 und Windows 7 muss um einen weiteren Abschnitt erweitert werden, damit das Hinzufügen zur Domäne bereits während der Betriebssysteminstallation vonstattengehen kann.
Diese neue Funktion ist Dank einem neuen Kommandozeilentool Namens Djoin.exe möglich, dass nur ab Windows Server 2008 R2 und Windows 7 „on Bord“ ist. Mit diesem Kommandozeilentool lässt sich auch der sichere Kanal zwischen einem Windows Server 2008 R2 Mitgliedserver oder Windows 7 Client und einem Domänencontroller zurücksetzen.
Wie üblich bei den Windows-Kommandozeilentools lässt sich mit dem Befehl djoin /? die Hilfe aufrufen, worin die einzelnen Parameter beschrieben werden.
Einen Windows Server 2008 R2 oder Windows 7 offline zur Domäne hinzufügen
-
Im ersten Schritt muss von einem Windows Server 2008 R2 (DC oder Mitgliedserver) oder Windows 7 das Computerkonto im AD erstellt werden. Dabei wird eine Textdatei generiert, die lokal auf dem zu hinzuzufügenden Windows Server 2008 R2 oder Windows 7 benötigt wird. Diesen Vorgang bezeichnet man auch als bereitgestellte Installation oder auf englisch provision computer account.
-
Bei der bereitgestellten Installation wird das Computerkonto im AD standardmäßig im Container Computers erstellt. Der Befehl lautet so: Djoin.exe /provision /domain <Domänenname> /machine <Computername> /savefile <blob.txt>

-
Soll stattdessen das Computerkonto in einer OU erstellt werden, so müsste der folgende Befehl ausgeführt werden: Djoin.exe /provision /domain <Domänenname> /machine <Computername> /machineou <DN der OU> /savefile <blob.txt>

-
Standardmäßig wird mit Ausführen von Djoin.exe das Computerkonto im AD von einem Windows Server 2008 R2 DC erstellt. Durch die Angabe des Parameters /downlevel kann das Computerkonto von einem DC älter als Windows Server 2008 R2 bzw. in einer Windows 2000, Windows Server 2003 oder Windows Server 2008 Domäne erstellt werden: Djoin.exe /provision /domain <Domänenname> /machine <Computername> /downlevel /savefile <blob.txt>
-
Der mit diesem Befehl erstellte Base64-codierte Metadaten-Blob (Binary Large Object, die Textdatei) enthält sehr sensible Daten. Diese Datei sollte verständlicherweise sicher aufbewahrt werden, denn in dem Blob ist z.B. das Computerkontokennwort, Informationen über die Domäne einschließlich des Domänennamens, der Name eines Domänencontroller und der Security Identifier (SID) der Domäne enthalten. Daher muss zwingend darauf geachtet werden, dass wenn diese Datei physikalisch (über den Postweg) oder über das Netzwerk transportiert wird, die Sicherheit jederzeit gewährleistet ist und diese Datei nicht in fremde Hände gelangt.
Der Blob sieht wie folgt aus:

-
Im zweiten Schritt muss auf dem Windows Server 2008 R2 oder Windows 7 der zur Domäne hinzugefügt werden soll, der folgende Befehl in einer Kommandozeile eingegeben werden. Dabei ist es zwingend, dass die CMD explizit als Administrator gestartet wird: Djoin.exe /requestodj /loadfile <Pfad zur blob.txt> /windowspath %windir% /localos
-
Zum Schluss ist ein Neustart fällig. Anschließend kann der Rechner ans Netzwerk verkabelt werden und befindet sich automatisch in der Domäne.
-
Mit type blob.txt bekommt man die Datei in der Kommandozeile angezeigt.
Welche Rechte werden benötigt?
Für diese Funktion werden Domänen-Admin Rechte benötigt oder den entsprechenden Personen wurde das Recht Hinzufügen von Arbeitsstationen zur Domäne über die Gruppenrichtlinie erteilt. Besser wäre es jedoch dieses Recht per Objektdelegierung an die jeweiligen Personen zu delegieren.
Clients in die Domäne hinzufügen
Wird eine Logdatei erstellt?
Wenn ein Fehler beim ausführen von Djoin.exe auftritt, erhält man in der Protokolldatei %windir%\debug\netsetup.log weitere Informationen.
Beitreten zur Domäne während einer unbeaufsichtigten Betriebssysteminstallation
Für das Beitreten zur Domäne während der Betriebssysteminstallation muss zuerst mit Djoin.exe das Computerkonto im AD und vor allem der Base64-codierte Metadaten-Blob generiert werden. Anschließend gilt es die Unattend.xml Datei zu erzeugen und einen neuen Abschnitt in der XML zu erstellen. Der Abschnitt sieht folgendermaßen aus:
<Component> <Component name=Microsoft-Windows-UnattendedJoin> <Identification> <Provisioning> <AccountData>Inhalt des Base64codierten Metadaten-Blob</AccountData> </Provisioning> </Identification> </Component>
Nach dem fertigstellen der Unattended.xml Datei gilt es den Computer der zur Domäne hinzugefügt werden soll im Windows PE (Windows Preinstallation Environment) zu starten. Danach muss das Setup mit der Angabe der Antwortdatei ausgeführt werden:
Setup /unattend:<Pfad zur Unattended.xml>
Den sicheren Kanal (secure channel) mit Djoin.exe zurücksetzen
Wenn der sichere Kanal zwischen einem Windows Server 2008 R2 Mitgliedserver oder Windows 7 Client und einem Domänencontroller nicht mehr funktioniert, entsteht ein typisches Authentifizierungsproblem. Die Lösung für dieses Problem wäre entweder NLTEST auszuführen NLTEST /SC_RESET (NLTEST befindet sich in den Windows Support Tools und ist ab Windows Server 2008 bereits on Bord) oder die Maschine aus der Domäne zu entfernen und erneut hinzuzufügen.
Dieses Problem lässt sich nun auch mit Djoin.exe lösen. Dazu muss man sich entweder an dem betroffenen Windows Server 2008 R2 Mitgliedserver oder Windows 7 Client mit zwischengespeicherten Anmeldeinformationen oder an einem nicht betroffenen Windows Server 2008 R2 Mitgliedserver oder Windows 7 anmelden.
-
Als Erstes muss eine Eingabeaufforderung mit erhöhten Rechten (Start-Alle Programme-Zubehör-Eingabeaufforderung, Rechtsklick --> Als Administrator ausführen) gestartet werden. Danach gilt es diesen Befehl einzugeben: Djoin.exe /provision /domain <Domänenname> /reuse /machine <betroffener Computername> /savefile C:\blob.txt
-
Steht kein Windows Server 2008 R2 DC zur Verfügung, so muss der Parameter /downlevel mit angegeben werden: Djoin.exe /provision /domain <Domänenname> /reuse /machine <betroffener Computername> /downlevel /savefile C:\blob.txt
-
Wurde der Befehl auf einem nicht betroffenen System ausgeführt, muss der Blob auf das betroffene System kopiert werden.
-
Auf dem betroffenen System gilt es anschließend diesen Befehl, ebenfalls in einer CMD mit erhöhten Rechten auszuführen: Djoin.exe /requestodj /loadfile <Pfad zur blob.txt> /windowspath %windir% /localos
-
Zum Abschluss muss der Windows Server 2008 R2 oder Windows 7 neu gestartet werden.
-
Danach sollte der sichere Kanal mit dem folgenden Befehl überprüft werden: NLTEST /sc_verify:Domäne.TLD
Hinweis zum Parameter /downlevel
Das Kommandozeilentool Djoin.exe im Windows Server 2008 R2 und Windows 7 verwendet in erster Linie das LDAP-Protokoll um das Computerkonto im AD zu erstellen, was von früheren Betriebssystemversionen so nicht unterstützt wird. Wenn der Parameter /downlevel angegeben wird, wird das SAM-Protokoll verwendet falls das Erstellen des Computerkontos mit dem LDAP-Protokoll fehlschlagen sollte. Daher ist der Parameter /downlevel nur dann erforderlich, wenn kein Windows Server 2008 R2 DC in der Domäne existiert. Denn bei dem Parameter /downlevel wird die SE_MACHINE_ACCOUNT_PRIVILEGE-Berechtigung angewendet, anstatt die direkt auf dem Container erteilten Berechtigungen.
Weitere Informationen: You cannot join a Windows 7 Beta-based or a Windows Server 2008 R2 Beta-based computer to an existing domain, and you receive an error message: "The parameter is incorrect"
Im Active Directory (AD) lassen sich Berechtigungen durch die folgenden Möglichkeiten an die entsprechenden Personen delegieren:
-
Durch den Assistenten zum Zuweisen der Objektverwaltung.
-
Durch das Bearbeiten der Discretionary Access Control List (DACL) im security descriptor des Objekts.
-
Mit dem Kommandozeilentool DSACLS.
Bis auf den Delegierungsassistenten lassen sich mit den beiden anderen Methoden die vergebenen AD-Berechtigungen zum einen anzeigen und zum anderen auch entfernen. Anzeigen sowie Löschen lassen sich die Rechte auch mit dem Kommandozeilentool DSREVOKE.
Der Objektdelegierungsassistent
Ein ungeübter Administrator sollte stets den Delegierungsassistenten verwenden, um die notwendigen Berechtigungen an die gewünschten Personen zu delegieren. Doch leider lassen sich die bereits delegierten Rechte auf einem Objekt durch den Objektdelegierungsassistenten weder anzeigen, noch entfernen. Der Assistent dient einzig und alleine dem vergeben von AD-Berechtigungen.
Der Objektdelegierungsassistent
Die Discretionary Access Control List (DACL)
Über die DACL lassen sich zum einen die Zugriffsrechte auf ein bestimmtes AD-Objekt vergeben sowie entfernen und zum anderen, kann man sich die vergebenen Berechtigungen anzeigen lassen. Damit man sich die vergebenen Berechtigungen z.B. auf einer Organisationseinheit (OU) in der grafischen Oberfläche anzeigen lassen kann, muss zuerst in der MMC Active Directory-Benutzer und -Computer unter Ansicht die Option Erweiterte Funktionen aktiviert werden. Danach erscheint in den Eigenschaften der OU der Reiter Sicherheit. Anschließend kann im security descriptor, den erweiterten Sicherheitseinstellungen der OU, die Person ausgewählt und mit einem Klick auf Bearbeiten… die gesetzten Berechtigungen eingesehen werden. Sollen die vergebenen Berechtigungen dem Benutzer entzogen werden, so ist der Benutzer aus der ACL (Access Control List) im Reiter Sicherheit des Objekts, zu entfernen. Ist es hingegen erforderlich bloß eine einzelne Berechtigung z.B. auf ein einziges Attribut dem Benutzer zu entziehen, so kann lediglich der ACE (Access Control Entrie) Eintrag aus der DACL entfernt werden.

Das Kommandozeilentool DSACLS
Der versierte Administrator kann recht einfach und das sogar automatisiert in einem Skript, wiederkehrende Berechtigungen im AD und in AD LDS (Active Directory Lightweight Directory Services, ehemals ADAM) mit DSACLS delegieren. Denn über die Kommandozeile lassen sich die Berechtigungen auf einem AD-Objekt mit DSACLS, das sich unter Windows 2000 sowie Windows Server 2003 in den Windows Support Tools befindet (z.B. auf der Windows Server 2003 CD im Verzeichnis Support\Tools) und ab Windows Server 2008 bereits im Betriebssystem integriert ist, ebenfalls vergeben sowie entfernen. Der Vorteil an diesem Tool ist, dass man aufwändige Berechtigungen skriptbasiert delegieren und im Fehlerfall die vergebenen Berechtigungen leichter entfernen kann.
Mit dem folgenden Befehl werden die Berechtigungen für die OU „IT“ (im dsa.msc) in einer TXT aufgelistet:
Dsacls OU=IT,DC=kaan,DC=dikmenoglu,DC=de > C:\Dsacls.txt
Das DSACLS eignet sich auch sehr gut dazu, um die standardmäßige Sicherheitseinstellungen eines Objekts wiederherzustellen. Die standardmäßigen Sicherheitsinformationen erhält jedes Objekt durch das Active Directory-Schema. Denn jedes erstellte Objekt erhält durch das im entsprechenden classObject enthaltene Attribut Default-Security-Descriptor seine Sicherheitsinformationen.
Das bedeutet konkret, wenn z.B. ein Benutzer erstellt wird, werden die Sicherheitsinformationen vom Attribut defaultSecurityDescriptor das in der Klasse User enthalten ist, auf das Benutzerkonto angewendet. Die Klasse User befindet sich in der Schemapartition im Pfad: CN=User,CN=Schema,CN=Configuration,DC=kaan,DC=dikmenoglu,DC=de.
Dadurch erhält nun jedes Objekt bei seiner Erstellung durch den defaultSecurityDescriptor der jeweiligen Klasse seine Sicherheitsinformationen. Die Sicherheitsinformationen werden im Attribut defaultSecurityDescriptor im security descriptor definition language Format (SDDL-String) angegeben. Ausserdem bekommt das Objekt durch die darüberliegenden Einheiten (Domäne, OU) weitere Berechtigungen vererbt.
Hat man an einem AD-Objekt die Berechtigung so verändert das man den Überblick verloren hat, so lassen sich die Sicherheitseinstellungen die für diese Objektklasse im Schema des AD definiert ist wie folgt wiederherstellen: Dsacls <DN des Objekts> /S
Die Standardberechtigungen der OU IT in der Domäne kaan.dikmenoglu.de lassen sich wie folgt zurücksetzen:
Dsacls OU=IT,DC=kaan,DC=dikmenoglu,DC=de /S
Befinden sich im Distinguished Name (DN) des Objekts Leerzeichen, muss dieser in „Anführungszeichen“ gesetzt werden.
Hinweis für Windows Server 2008: Wird mit dem Parameter /S unter Windows Server 2008 die Berechtigungen eines Objekts zurückgesetzt, erhält man in der Kommandozeile die Fehlermeldung Falscher Parameter und die Meldung Der Befehl wurde nicht erfolgreich ausgeführt. Aber die Berechtigungen werden trotzdem zurückgesetzt. Der Befehl funktioniert.
Die Berechtigungen eines einzelnen Benutzers oder einer Gruppe lassen sich mit diesem Befehl entfernen: Dsacls OU=IT,DC=kaan,DC=dikmenoglu,DC=de /R <DNS- oder NetBIOS Name der Domäne>\<sAMAccountName des Benutzers oder der Gruppe>
Der Befehl mit dem DNS-Namen der Domäne sieht dann so aus:
Dsacls OU=IT,DC=kaan,DC=dikmenoglu,DC=DE /R kaan.dikmenoglu.de\Yusuf
Der Benutzer oder die Gruppe kann auch mit dem userPrincipalName (UPN) angegeben werden:
Dsacls OU=IT,DC=kaan,DC=dikmenoglu,DC=DE /R Yusuf@kaan.dikmenoglu.de
Achtung: Die Parameter in Dsacls sind case-sensitive!
Das Kommandozeilentool DSREVOKE
Die vergebenen Berechtigungen können in Form von ACEs (Access Control Entries) auch mit dem Kommandozeilentool DSREVOKE angezeigt und entfernt werden. Dieses Tool muss aber zuerst von Microsoft heruntergeladen werden und kann anschließend unter allen Serverversionen eingesetzt werden (auch unter Windows Server 2008!). ACLs werden (nicht so wie bei DSACLS) bei diesem Tool nicht berücksichtigt.
Die einzelnen ACEs eines Benutzers oder einer Gruppe lassen sich mit diesem Befehl anzeigen:
Dsrevoke /Report <DN des Objekts> <NetBIOS Name (nicht DNS-Name!) der Domäne>\<sAMAccountName eines Benutzers oder einer Gruppe>
Welche Berechtigungen der Benutzer Yusuf auf der OU IT in der Domäne kaan.dikmenoglu.de hat, lässt sich wie folgt anzeigen:
Dsrevoke /Report OU=IT,DC=kaan,DC=dikmenoglu,DC=de Kaan-Dikmenoglu\Yusuf

Die an den Benutzer Yusuf delegierten AD-Berechtigungen auf der OU IT lassen sich mit diesem Befehl entfernen: Dsrevoke /Remove OU=IT,DC=kaan,DC=dikmenoglu,DC=de Kaan-Dikmenoglu\Yusuf
Die anschließende Sicherheitsabfrage zum Löschen muss mit einem “y” bestätigt werden.
Alle Berechtigungen eines Benutzers oder einer Gruppe ab einem bestimmten Container wie z.B. einer OU und somit auch von den darunterliegenden Objekten werden mit diesem Befehl entfernt:
Dsrevoke /Remove /root:<DN der OU> <NetBIOS Name der Domäne\sAMAccountName>
Download details: DSREVOKE.EXE
Weitere Informationen:
Delegierte Berechtigungen im AD verstehen
Objektdelegierungen einrichten
Das aktivieren/deaktivieren eines Benutzerkontos delegieren
How to Use Dsacls.exe in Windows Server 2003 and Windows 2000
When you use the Dsrevoke command-line tool to report permissions for all the organizational units in a Windows Server 2003-based domain, the tool may not return all the access control entries
Das Active Directory (AD) speichert seine Daten bekanntermaßen in einer Datenbank. Das Herzstück des AD ist die Datenbankdatei, die standardmäßig im Verzeichnis %windir%\NTDS\ gespeichert wird. Diese transaktionale Datenbank und die zugehörige Datenbank-Engine „Extensible Storage Engine (ESE)“, trägt den Namen NTDS.DIT. Dabei steht das „NTDS“ für New Technology Directory Services und das „DIT“ für Directory Information Tree.
Jeder Domänencontroller (DC) in einer Einzel- und Multidomänen-Gesamtstruktur hält seine eigene Kopie dieser AD-Datenbank (NTDS.dit), die kontinuierlich durch lokale Änderungen und durch die Replikationspartner aktualisiert wird. Die AD-Datenbank verändert sich in der Größe zum einen durch die lokalen Änderungen auf dem DC selbst und zum anderen durch die Änderungen die von den Replikationspartnern repliziert werden. Es ist zwingend notwendig, dass die AD-Daten konsistent zwischen den DCs durch die AD-Replikation gehalten werden. Aber die AD-Datenbankdatei ist ohnehin nie bis auf das letzte Bit zwischen mehreren DCs identisch.
Es gibt AD-Daten, die nicht zwischen den DCs repliziert werden. Denn z.B. werden die Indizes die eine performante LDAP-Suche ermöglichen lokal auf jedem DC erstellt. Dies kann bereits zu einem gewissen Maß an Größenunterschied in jeder AD-Datenbankdatei führen. Das einzige was repliziert wird ist die Anweisung, dass ein Attribut im AD indiziert werden soll. Wird in den Eigenschaften eines Attributs im Schema Snap-In die Option Attribut in Active Directory indizieren markiert, repliziert sich diese Änderung bei der nächsten Replikation der Schemapartition auf alle DCs in der Gesamtstruktur.
Die Gründe warum auf zwei DCs die AD-Datenbank unterschiedlich groß ist, sind:
-
Der Whitespace oder zu Deutsch: Der freie Speicherplatz in der AD-Datenbank. Dies trifft dann zu, wenn ein weiterer DC zur Domäne hinzugefügt wird. Wenn ein Server als zusätzlicher DC zu einer Domäne hinzugefügt wird kann es durchaus sein, das die AD-Datenbank des neuen DCs wesentlich kleiner ist als auf den bestehenden DCs. Das ist dann ein klares Indiz für den Whitespace der in der AD-Datenbank auf den bestehenden DCs existiert. Denn wird ein weiterer DC zur Domäne hinzugefügt, wird selbstverständlich nur die Nettokapazität der AD-Datenbank auf den neuen DC repliziert und nicht zusätzlich der unnötige Whitespace.
-
AD-Replikationsprobleme. Bestehen auf einem DC Replikationsprobleme, sei es mit einer oder mit allen Verzeichnispartitionen, bekommt dieser keine Aktualisierungen von seinen Replikationspartnern mehr mit.
-
In einer Multidomänen-Gesamtstruktur ist auf einem DC der globale Katalog (GC) aktiviert und auf dem anderen nicht. Oder auf einem DC wurde der GC „unbemerkt“ deaktiviert.
Die Ursachen in der Praxis sind in der Regel der Whitespace und AD-Replikationsprobleme, die den Unterschied zwischen den AD-Datenbankdateien ausmachen.
Der Whitespace in der AD-Datenbank
Der Whitespace in der AD-Datenbank entsteht folgendermaßen.
Wenn ein AD-Objekt gelöscht wird, verschwindet es nicht sofort aus der AD-Datenbank. Das AD markiert das Objekt als gelöscht, indem das Attribut Is-Deleted des Objekts auf TRUE gesetzt wird. Dabei werden von dem Objekt die meisten Attribute für immer entfernt und wandert anschließend in den Container „Deleted Objects“ (der in fast allen Verzeichnispartitionen existiert). Ab diesem Zeitpunkt wird das gelöschte Objekt als Tombstone (zu deutsch: Grabstein) bezeichnet.
Die gelöschten Objekte bleiben nun so lange im Container „Deleted Objects“ und somit in der AD-Datenbank erhalten, bis die Tombstone-Lifetime (TSL) abgelaufen ist. Erst wenn ein gelöschtes Objekt die TSL überschritten hat wird es endgültig vom Garbage Collection Prozess aus der AD-Datenbank entfernt. Der Garbage Collection Prozess läuft standardmäßig im 12-Stunden-Takt auf jedem DC in der Gesamtstruktur. Die Zeit lässt sich zwar verändern, jedoch ist das beim täglichen Betrieb nicht notwendig.
Ändern könnte man die Zeit durch das Attribut garbageCollPeriod, welches sich in den Eigenschaften des folgenden Containers befindet (die Angabe der Zeit muss in Stunden erfolgen): CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne

Wenn die Objekte unwiderruflich aus dem AD entfernt wurden, entsteht freier Speicherplatz (der sogenannte Whitespace) in der AD-Datenbank. Die Datenbankseiten auf denen die Objekte gespeichert waren, werden als frei markiert. Physikalisch wird aber dadurch die AD-Datenbank auf der Festplatte nicht kleiner. Stattdessen werden beim Hinzufügen neuer AD-Objekte diese auf den freien Datenbankseiten geschrieben, ohne dabei eine Speicheroptimierung bei späteren Abfragen dieser Objekte zu berücksichtigen. Durch das wiederbeschreiben der freien Datenbankseiten wird die Gesamtgröße der AD-Datenbank nicht größer. Zwar findet standardmäßig alle 12-Stunden durch den Garbage Collection Prozess auf jedem DC eine Onlinedefragmentierung der AD-Datenbank im laufenden Betrieb statt, jedoch wird dabei die AD-Datenbank ebenfalls nicht kleiner. Ob die Onlinedefragmentierung zweimal am Tag auch wirklich stattfindet, kann im Verzeichnisdienstprotokoll auf jedem DC kontrolliert werden. Denn beim Starten der Onlinedefragmentierung wird die EventID 700 und wenn sie abgeschlossen wurde, die EventID 701 protokolliert.
Bei der Onlinedefragmentierung werden lediglich die leeren Datenbankseiten neu angeordnet um einen zusammenhängenden freien Speicherplatz in der AD-Datenbank zu schaffen. Somit wird die durch die endgültige Löschung der AD-Objekte bedingte Fragmentierung der AD-Datenbank beseitigt und dadurch der Zugriff auf das AD optimiert bzw. beschleunigt. Bei den heutigen Festplattenpreisen ist es aber auch keineswegs tragisch das die AD-Datenbank physikalisch nicht kleiner wird. Dennoch ist es aus Performancegründen empfehlenswert, dass die AD-Datenbank „nur“ so groß ist, damit sie noch in den Arbeitsspeicher des DCs geladen werden kann.
Wie viel freier Speicherplatz in der AD-Datenbank tatsächlich existiert, kann durch eine Registry-Einstellung herausgefunden werden. Dazu gilt es im folgenden Registry-Schlüssel diese Einstellung vorzunehmen:
HKLM\System\CurrentControlSet\Services\NTDS\Diagnostics "6 Garbage Collection" = 1 (REG_DWORD)

Anschließend wird beim nächsten Durchlauf des Garbage Collection Prozesses, im Verzeichnisdienstprotokoll des DCs die EventID 1646 protokolliert. In dem Eintrag wird der freie Speicherplatz neben der Gesamtgröße der AD-Datenbank angegeben.

Es reicht in der Regel aus diese Registry-Einstellung nur auf einem DC in der Domäne zu konfigurieren, da sicherlich der freie Speicherplatz auf allen bestehenden DCs (bei gleicher DC Konfiguration) gleich ist.
Eine andere Variante mit der man sich einen tieferen Einblick über die Größe des freien Speicherplatzes in Form von leeren Datenbankseiten sogar der einzelnen Indizes in der AD-Datenbank verschaffen kann, wäre mit Esentutl. Dazu muss jedoch das AD offline sein. Bis einschließlich Windows Server 2003 muss hierzu der DC im Modus Verzeichnisdienstwiederherstellung gestartet werden. Unter Windows Server 2008 lässt sich dagegen der Dienst Active Directory-Domänendienste samt den abhängigen Diensten im laufenden Betrieb mit dem Kommandozeilenbefehl net stop ntds /y anhalten. Danach wird mit dem Befehl Esentutl /ms <Pfad zur Ntds.dit> oder durch das Aufrufen von Esentutl aus dem NTDS-Verzeichnis C:\Windows\NTDS>Esentutl /ms ein detaillierter Auszug der Ntds.dit erstellt. Es ist auch möglich die AD-Datenbank aus einer System State-Sicherung an einer alternativen Stelle wiederherzustellen, um diese AD-Datenbank zum überprüfen des freien Speicherplatzes zu nutzen. In der AD-Datenbank wird jede Tabelle zusammen mit der Anzahl der Datenbankseiten die es besitzt, samt der Anzahl der leeren Datenbankseiten die zur Verfügung stehen aufgelistet.
Damit die AD-Datenbank physikalisch kleiner wird, ist eine Offlinedefragmentierung notwendig. Natürlich müsste die Offlinedefragmentierung auf jedem DC erfolgen, damit die AD-Datenbank auf jedem DC auch physikalisch kleiner wird. Aber in den allermeisten AD-Umgebungen ist eine Offlinedefragmentierung nicht nötig. Wobei es jedoch in größeren AD-Gesamtstrukturen wiederum des Öfteren notwendig sein kann, eine Offlinedefragmentierung durchzuführen.
Wann ist eine Offlinedefragmentierung empfehlenswert?
-
Nach einer größeren Löschaktion im AD ist es empfehlenswert, wenn nach Ablauf der Tombstone-Lifetime die gelöschten Objekte endgültig aus der AD-Datenbank entfernt wurden, eine Offlinedefragmentierung der AD-Datenbankdatei durchzuführen.
-
In einer Multidomänen-Gesamtstruktur ist es ratsam, nach der Deaktivierung des globalen Katalogs auf einem DC eine Offlinedefragmentierung der AD-Datenbank durchzuführen.
-
Des Weiteren ist nach einem Inplace-Update eines Windows 2000 DCs auf Windows Server 2003/2008 eine Offlinedefragmentierung empfehlenswert. Nach einem Inplace-Update von Windows 2000 entsteht in der AD-Datenbankdatei eine erhebliche Menge an freiem Speicherplatz. Das ist aufgrund einer Verbesserung ab Windows Server 2003 möglich, worin eindeutige „security descriptors“ nur einmal (Single Instance Store) und nicht jedes Mal wenn sie verwendet werden in der AD-Datenbank gespeichert werden.
-
Wenn die DNS-Daten aus der Domänenpartition in die Anwendungsverzeichnispartitionen (DomainDNSZones und ForestDNSZones) umgezogen werden, wie es z.B. nach einer Domänenaktualisierung von einer Windows 2000 Domäne zu einer Windows Server 2003 bzw. Windows Server 2008 Domäne der Fall sein könnte, entsteht ebenfalls freier Speicherplatz in der AD-Datenbank (genauer in der Domänenpartition). Die Größe der AD-Datenbank lässt sich dann mit einer Offlinedefragmentierung verkleinern.
Die Größe unter anderem der AD-Datenbank kann man sich mit dem folgenden Befehl anzeigen lassen: FOR /f %i IN ('Dsquery Server -Domain %userdnsdomain% -o Rdn') DO dir \\%i\Admin$\NTDS
Eine Offlinedefragmentierung durchführen
Die Gesamtgröße der AD-Datenbank wird ausschließlich nur durch eine Offlinedefragmentierung verringert. Diese sollte beim Entfernen einer größeren Anzahl an AD-Objekten, nach dem Entfernen eines globalen Katalogs in einer Multidomänen-Gesamtstruktur, nach einem Inplace-Update eines Windows 2000 DCs auf Windows Server 2003/2003R2/2008 und nach dem Umzug der DNS-Daten aus der Domänenpartition in die Anwendungsverzeichnispartition durchgeführt werden.
Die Offlinedefragmentierung wird folgendermaßen durchgeführt:
-
Zuerst sollte eine System State-Sicherung des DCs durchgeführt werden.
-
Damit eine Offlinedefragmentierung der AD-Datenbank auf einem DC durchgeführt werden kann, muss unter Windows 2000 und Windows Server 2003 der DC im Modus Verzeichnisdienstwiederherstellung gestartet werden. In diesen Modus gelangt man, wenn während der Bootphase des DCs die F8-Taste betätigt und die Option „Verzeichnisdienstwiederherstellung“ ausgewählt wird.
-
Ab Windows Server 2008 ist das Starten im Modus „Verzeichnisdienstwiederherstellung“ nicht notwendig (was aber möglich wäre). Ab einem Windows Server 2008 DC kann der Dienst Active Directory-Domänendienste im laufenden Betrieb entweder in der Dienstesteuerung (services.msc) oder in der Kommandozeile mit dem Befehl net stop ntds /y samt den abhängigen Diensten angehalten werden.
Active Directory-Domänendienste (AD-DS)
-
In der Eingabeaufforderung oder unter „Start-Ausführen“ gilt es das NTDSUTIL aufzurufen.
-
Ab Windows Server 2008 muss als erstes mit dem Befehl Activate Instance NTDS die NTDS-Instanz aktiviert werden. Unter Windows 2000 und Windows Server 2003/2003R2 muss dieser Schritt übersprungen werden.
-
Als nächstes gilt es den Befehl Files einzugeben.
-
In der „file maintenance“ Ebene werden mit dem Befehl info die aktuellen Informationen über den Pfad und der Größe der AD-Datenbank sowie der zugehörigen Protokolldateien angezeigt. Der Pfad zur AD-Datenbankdatei sollte notiert werden (zumindest sollte man ihn sich merken).
-
Mit dem Befehl compact to <Laufwerk>:\<Verzeichnis> wird eine neue, komprimierte AD-Datenbankdatei im angegebenen Verzeichnis erstellt. Es sollte ein Laufwerk und Verzeichnis an dem ausreichend Speicherplatz zur Verfügung steht ausgewählt werden, um die komprimierte neue AD-Datenbankdatei Ntds.dit zu speichern. Falls im Namen des Verzeichnispfads Leerzeichen enthalten sind, muss der Pfad in Anführungszeichen stehen. Z.B. compact to "C:\Neu NTDS".
-
Sobald die Offlinedefragmentierung abgeschlossen ist, gilt es mit der zweimaligen Eingabe von quit das NTDSUTIL zu verlassen.
-
Nun muss die neu erstellte defragmentierte Datenbankdatei "Ntds.dit" über die alte Datei "Ntds.dit" im aktuellen Pfad zur Active Directory-Datenbank (der in Schritt vier notiert bzw. gemerkt wurde), kopiert werden. Anschließend sind noch die alten Protokolldateien (*.log) zu löschen.
-
Das Kopieren der Datenbankdatei kann auch über die Kommandozeile mit folgendem Befehl erfolgen: Copy „C:\Neu NTDS\Ntds.dit“ „C:\Windows\NTDS\Ntds.dit“ Die darauffolgende Sicherheitsabfrage muss mit einem „j“ bestätigt werden.
-
Die alten Protokolldateien können in der Kommandozeile mit diesem Befehl gelöscht werden: Del „C:\Windows\NTDS\*.log“
-
Danach gilt es den DC neu zu starten. Unter Windows Server 2008 wird mit net start ntds der Dienst Active Directory-Domänendienste samt den abhängigen Diensten gestartet.
-
Zum Schluss sollte noch eine System State-Sicherung mit der neuen Größe der Ntds.dit durchgeführt werden.

AD-Replikationsprobleme
Ein weiterer Grund warum zwischen zwei DCs die AD-Datenbank unterschiedlich groß ist, könnten AD-Replikationsprobleme sein. Hinweise ob es bei der AD-Replikation Probleme gibt, liefert bereits das Verzeichnisdienstprotokoll der DCs. Ein entscheidender Faktor bei der AD-Replikation ist die Tombstone-Lifetime (TSL). Denn DCs müssen sich mindestens einmal während der TSL mit ihren Replikationspartnern repliziert haben, da ansonsten Lingering Objects (herumlungernde Objekte) in der AD-Datenbank des DCs entstehen und die Replikationspartner den „veralteten“ DC von der AD-Replikation ausschließen.
Lingering Objects (veraltete Objekte)
Oftmals handelt es sich bei Replikationsproblemen um DNS-Probleme, denn für eine AD-Umgebung ist das DNS essentiell. Bevor ein DC die AD-Replikation startet führt dieser zuerst ein DNS-Lookup durch. Somit stellt der DC zwei Dinge sicher, zum einen das sein Replikationspartner online und funktionstüchtig ist und zum anderen, das die Namensauflösung funktioniert. Daher muss bei Replikationsproblemen die Umgebung genauestens untersucht und verifiziert werden, um welche Probleme es sich tatsächlich handelt.
Das nützlichste Werkzeug für die Überprüfung und Problembehandlung bei der AD-Replikation ist für alle Serverversionen Repadmin. Bis einschließlich „Windows Server 2003“ befindet sich Repadmin noch in den Windows Support Tools (auf der Server CD im Verzeichnis Support\Tools) und ab „Windows Server 2008“ ist es „on Bord“. Dieses Tool stellt quasi das Schweizer Messer für die AD-Replikation dar. Mit diesem Kommandozeilentool lässt sich die Replikationstopologie aus der Sicht jedes einzelnen DCs anzeigen.
Den Zustand der AD-Replikation kann man z.B. mit diesem Repadmin-Befehl überprüfen: Repadmin /Replsum * /Bysrc /Bydest /Sort:Error
Die Replikationsinformationen auf einem DC lassen sich auch in eine CSV-Datei importieren, damit diese Datei z.B. in Excel geöffnet und leichter durchsucht werden kann. Der Befehl ist wie folgt:
Repadmin /showrepl * /csv > C:\Repadmin.csv
Eine andere Methode um Differenzen zwischen den AD-Datenbanken aufzudecken, ist neben Repadmin das DSASTAT. Details dazu liefert der folgende Artikel:
Domänencontroller vergleichen
Es könnte aber auch sein, dass ein Problem in der AD-Datenbank auf einem DC existiert. Dieses lässt sich mit einer Überprüfung der AD-Datenbankdatei herausfinden. Dazu sollte die Integrität der Ntds.dit mit NTDSUTIL untersucht und falls bei der Überprüfung Probleme gemeldet werden, könnten diese sich evtl. mit einem Fixup beheben lassen.
Siehe: Die Active Directory-Datenbank reparieren
Die unterschiedliche Größe der AD-Datenbank zwischen globalen Katalogen
Wenn in einer Multidomänen-Gesamtstruktur auf einem DC der globale Katalog (GC) aktiviert wird, werden alle AD-Objekte aus allen Domänen in den GC repliziert. Im GC wird die vollständige Domänenpartition (alle Objekte samt allen Attributen) der eigenen Domäne gespeichert, in der sich der GC befindet. Die Domänenpartitionen der anderen Domänen werden ebenfalls in den GC repliziert, es werden jedoch nicht alle Attribute der Objekte gespeichert. Nur die Attribute die für eine Suchoperation relevant sein könnten (z.B. der DN eines Objekts) werden gespeichert.
Wird auf einem DC der GC aktiviert, gibt sich dieser nach Beendigung der Replikation im DNS als solcher bekannt. Das der DC endgültig ein GC ist, wird im Verzeichnisdienstprotokoll mit der EventID 1119 (was zwingend erscheinen muss!) protokolliert.
Ob das Heraufstufen eines DCs zum GC erfolgreich abgeschlossen wurde, lässt sich anhand des folgenden Artikels ermitteln:
Globaler Katalog – Sein oder nicht sein
Falls das Heraufstufen zum GC ordnungsgemäß abgeschlossen wurde und sich die lokale AD-Datenbankdatei dennoch von anderen GCs in der Größe wesentlich unterscheidet (z.B. 50%), so könnte ein DNS- und/oder Replikationsproblem vorliegen. Auch hierbei muss dann ein tiefergehendes Troubleshooting betrieben und die AD-Replikation mit Repadmin untersucht werden. Bei der Fehlersuche sollte die erste Anlaufstelle die Ereignisanzeige des DCs sein, DCDIAG sollte ausgeführt werden und bei Verdacht auf DNS-Probleme könnte man neben dem DCDIAG (mit den DNS-Parametern) noch das DNSLint ausführen.
Weitere Informationen: Die Tombstone Lifetime Globaler Katalog (Global Catalog - GC) Die Protokollierung des Active Directory`s konfigurieren Extensible Storage Engine Architecture The Active Directory database garbage collection process Performing offline defragmentation of the Active Directory database
Im Windows Server 2008 R2 ist ein weiteres neues Werkzeug integriert, das sich Active Directory-Verwaltungscenter (dsac.exe) nennt. Die neue Managementkonsole mit flexiblen Filtermöglichkeiten basiert auf der Powershell Version 2 und stellt im Prinzip eine grafische Shell für die Powershell dar. Denn nach dem die auszuführende Aufgabe in der Konsole ausgewählt wurde, führt dsac.exe die entsprechenden AD-Cmdlets aus. Jede Lese- und Schreibaktion im AD-Verwaltungscenter wird über die AD-Powershell durchgeführt. Das neue Werkzeug verringert den allgemeinen administrativen Aufwand, der in einer AD-Umgebung täglich zu bewältigen ist. Mit dieser neuen aufgabenbasierten Managementkonsole, beginnt im neuen Server-Betriebssystem die MMC 4 Ära.
Die im Vergleich zu der MMC „Active Directory-Benutzer und -Computer“ abgespeckte Managementkonsole „Active Directory-Verwaltungscenter“, ist in erster Linie eher an den Systemadministrator bzw. an den First-Level Support gerichtet. Denn es stehen nicht die gleichen Funktionen wie in der MMC Active Directory-Benutzer und -Computer (dsa.msc) zur Verfügung. Daher kann der AD-Administrator nicht auf die MMC dsa.msc verzichten (auch wenn es theoretisch möglich wäre). Die Personen denen die entsprechenden Rechte im AD delegiert wurden, können mit der neuen Konsole effektiver ihren täglichen Routineaufgaben nachgehen als mit der MMC dsa.msc. Gerade in größeren AD-Umgebungen mit mehreren Domänen spielt dieses Werkzeug seine Stärken aus.
Das AD-Verwaltungscenter ist, neben der AD-Powershell, von dem Dienst Active Directory-Webdienste (ADWS) abhängig, das erst ab Windows Server 2008 R2 zur Verfügung steht. Dsac.exe ist nicht auf die RPC- oder LDAP-Schnittstelle angewiesen. Daher muss in den vertrauten Domänen oder in der vertrauten Gesamtstruktur mindestens ein Windows Server 2008 R2 DC existieren oder das AD Management Gateway Service muss auf einem Windows Server 2003 DC bzw. Windows Server 2008 DC installiert sein, damit dsac.exe remote ausgeführt werden kann. Auf dem Windows Server 2008 R2 DC auf dem dieser Dienst läuft, darf der TCP-Port 9389 von der evtl. aktivierten lokalen Windows-Firewall nicht blockiert werden. Läuft der Dienst AD-Webdienste nicht oder ist dieser wegen einer Firewall nicht erreichbar, funktioniert das dsac.exe nicht.
Damit eine Windows Server 2003 oder Windows Server 2008 Umgebung mit dem AD-Verwaltungscenter (neben der AD-Powershell) administriert werden kann, muss das AD Management Gateway Service installiert werden:
Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008
Das AD-Verwaltungscenter kann lediglich zur Verwaltung von AD DS-Domänen und nicht von AD LDS-Umgebungen eingesetzt werden!
Welche Funktionen stehen im AD-Verwaltungscenter gegenüber der MMC „AD-Benutzer und -Computer“ nicht zur Verfügung?
- Ein Drag & Drop ist nicht möglich.
- Es steht keine Delegierungsfunktion zur Verfügung.
- Die FSMO-Rollen der Domäne können nicht angezeigt werden, wie in der MMC dsa.msc.
Was kann mit dem AD-Verwaltungscenter alles durchgeführt werden?
- Mit dem AD-Verwaltungscenter können neue Benutzerkonten erstellt oder bestehende verwaltet werden.
- Es können neue Gruppenkonten erstellt oder bestehende verwaltet werden.
- Es können mehrere Objekte gleichzeitig ausgewählt und bearbeitet werden.
- Neue OUs können erstellt bzw. bestehende verwaltet werden.
- Auch neue Computerkonten können erstellt oder bestehende verwaltet werden.
- Es ist möglich in der gleichen dsac.exe Instanz, sich mit mehreren Domänen oder Domänencontrollern zu verbinden und sich die AD-Informationen anzuzeigen bzw. Änderungen durchzuführen.
- Durch die vorgegebenen oder eigens kreierten Filter (bei der globalen Suche) können lediglich die benötigten AD-Objekte angezeigt werden.
- Im Gegensatz zu dsa.msc lässt sich aus dem AD-Verwaltungscenter neben dem Domänen- nun auch der Gesamtstrukturfunktionsmodus heraufstufen.
Die Installation des AD-Verwaltungscenter
Das AD-Verwaltungscenter kann ausschließlich auf Windows Server 2008 R2 und Windows 7 Clients, auf folgende Varianten installiert werden:
- Durch das Installieren der AD DS-Rolle auf einem Windows Server 2008 R2.
- Durch das Heraufstufen eines Windows Server 2008 R2 zu einem Domänencontroller.
- Durch das Installieren der RSAT auf einem Windows Server 2008 R2.
- Durch das Installieren der RSAT auf einem Windows 7 Client.
Das AD-Verwaltungscenter wird zusammen mit dem „Active Directory-Modul“ für die Windows PowerShell und dem .NET Framework 3.5.1 installiert. Diese beiden Komponenten sind, neben dem Dienst AD-Webdienste, die Voraussetzung damit das AD-Verwaltungscenter eingesetzt werden kann.
Das Arbeiten mit dem AD-Verwaltungscenter
Wenn das AD-Verwaltungscenter gestartet wird, sticht das zurücksetzen der Benutzerkennwörter sowie das entsperren von Benutzerkonten ins Auge. Diese beiden Optionen sind einer der meisten Fehlerquellen mit denen sich der Administrator im täglichen Leben beschäftigen muss. Des Weiteren sieht man in der linken Hälfte der Managementkonsole den Navigationsbereich. Dort kann man sich durch die einzelnen Container durch hangeln. Die oft besuchten Container werden dabei für den schnellen Zugriff direkt angezeigt.

Das Erstellen eines neuen Benutzerkontos sieht wie folgt aus. Es lassen sich die Kontooptionen, Organisationsinformationen, Gruppenmitgliedschaften und Profileinstellungen in einem Schritt konfigurieren.

In der Domäne oder in einer bestimmten OU lassen sich die Objekte anhand der vorgegebenen Filtermöglichkeiten sogar mit zusätzlichen Attributen anzeigen.

Natürlich kann man auch entsprechende Suchkriterien für Computerkonten auswählen.

Bei der globalen Suche kann man sich mit den vorgegebenen oder selbst erstellten Filtermöglichkeiten die gewünschten Objekte anzeigen lassen. Dabei kann man auch nach der Auswahl der vorgegebenen Filtermöglichkeiten, den echten LDAP-Filter anzeigen lassen.

Des Weiteren ist es wie im Windows Explorer möglich, durch die Eingabe eines bestimmten LDAP-Pfads in der Adresszeile direkt in die gewünschte OU zu navigieren.

Endlich wird es in Zukunft auch einen Best Practice Analyzer (BPA) für die Active Directory Domain Services (kurz AD DS-BPA) geben. Der BPA der bereits seit längerem für verschiedene Microsoft Produkte existiert (Siehe Abschnitt „Weitere BPAs“), ist für viele Administratoren ein unverzichtbares Werkzeug. Denn mit dem BPA lassen sich Konfigurationsprobleme schnell und einfach aufspüren.
Der BPA für die AD DS-Rolle wird erstmals im Windows Server 2008 R2 eingeführt und hilft dem Administrator dabei, Best Practices bei der Konfiguration der AD DS-Umgebung zu implementieren. Ein oder mehrere DCs lassen sich gegen eine Reihe von vordefinierten Best Practices überprüfen. Der AD DS-BPA erstattet nach der Durchführung Bericht, ob der DC mit den Best Practices kompatibel oder nicht konform ist.
Wenn die AD DS-Umgebung installiert und alles Notwendige konfiguriert wurde, ist es empfehlenswert die durchgeführten Konfigurationen anschließend auf Fehler zu überprüfen. Doch dies ohne den AD DS-BPA zu verifizieren ist gar nicht so einfach und dauert unter Umständen viele Stunden. Aber mit dem neuen AD DS-BPA lassen sich schnell und einfach Konfigurationsfehler und Schwachstellen in der AD DS-Umgebung auf Knopfdruck aufspüren.
Der AD DS-BPA lässt sich zum einen über die grafische Oberfläche und zum anderen, über die Powershell-Kommandozeile ausführen. In der grafischen Oberfläche befindet sich der AD DS-BPA ausschließlich im Server Manager des Windows Server 2008 R2. Der Server Manager ist erstmals auch in den RSAT für den Windows 7 Client enthalten.
Der BPA scannt die AD DS-Rolle so wie sie auf dem Windows Server 2008 R2 DC konfiguriert ist. Nach der Durchführung werden im Server Manager in den Reitern „Nicht Kompatibel“ und „Kompatibel“ die Ergebnisse angezeigt. Ein Ergebnis kann dabei als „Schweregrad“ Fehler, Warnung oder Kompatibel enthalten.

Bei Fehlern die im Reiter „Nicht Kompatibel“ angezeigt werden und somit gegen die „Best Practices“ verstoßen (wenn z.B. kein DNS-Server für die Domäne erreichbar ist), werden in der Beschreibung die Punkte „Problem“, „Auswirkung“ und „Lösung“ angezeigt. Durch die genauen Angaben erfährt man, welche Auswirkung das gefundene Problem hat und vor allem, wie es sich lösen lässt.
Die Ergebnisse können gefiltert werden, indem einzelne Berichte für die zukünftigen Durchführungen des BPA vorübergehend ausgeschlossen und zu einem späteren Zeitpunkt erneut einbezogen werden.
Im AD DS-Umfeld steht der BPA unter Windows Server 2008 R2 vorerst für die folgenden Rollen zur Verfügung:
- Active Directory Certificate Services
- Active Directory Domain Services
- DNS Server
Der BPA wird über die “Windows Updates” stetig verbessert und erweitert.
Was ist möglich?
- Der AD DS-BPA lässt sich über den Server Manager oder über die Powershell, nur auf Windows Server 2008 R2 DCs ausführen.
- Der AD DS-BPA kann über den Server Manager oder über die Powershell lokal und remote auf einem Windows Server 2008 R2 Vollinstallation, Windows Server 2008 R2 RODC und Windows Server 2008 R2 Core ausgeführt werden.
- Auf einem Windows Server 2008 R2 Core kann lokal der AD DS-BPA ausschließlich über die Powershell ausgeführt werden, da der Server Manager in der grafischen Oberfläche auf einem Windows Server 2008 R2 Core nicht existiert.
- Von einem Windows 7 Client worauf das RSAT (Remote Server Administration Tools) installiert ist, kann der AD DS-BPA über den Server Manager oder über die Powershell remote auf einem Windows Server 2008 R2 Vollinstallation oder Windows Server 2008 R2 Core ausgeführt werden.
- Nur über die Powershell können mehrere Rollen zur gleichen Zeit überprüft werden (z.B. die AD DS- und DNS-Rolle).
Was ist nicht möglich?
- Der Server Manager vom Windows Server 2008 R2, worin sich der AD DS-BPA befindet, lässt sich nicht auf Windows 2000, Windows Server 2003/2003 R2 oder Windows Server 2008 installieren.
- Der AD DS-BPA lässt sich nicht über den Server Manager remote auf einen Windows 2000 DC, Windows Server 2003/2003 R2 DC und Windows Server 2008 DC ausführen.
- Der AD DS-BPA lässt sich nicht über die Powershell remote auf einen Windows 2000 DC, Windows Server 2003/2003 R2 DC und Windows Server 2008 DC ausführen.
Wie wird der AD DS-BPA im Server Manager installiert?
Sobald auf einem Windows Server 2008 R2 Vollinstallation die AD DS-Rolle installiert und dieser zum Domänencontroller gestuft wird, steht der AD DS-BPA automatisch im Server Manager zur Verfügung. Es ist auch nicht notwendig weitere Komponenten zu installieren um den AD DS-BPA zu nutzen.
Auf einem Windows Server 2008 R2 Core kann der AD DS-BPA lokal ausschließlich über die Powershell ausgeführt werden.
Die Bestandteile des AD DS-BPA
Der Server-Manager im Windows Server 2008 R2 beinhaltet eine Engine mit dem der AD DS-BPA ausgeführt wird. Dabei besteht der AD DS-BPA aus den folgenden Komponenten:
- AD DS-BPA PowerShell Skript: Das Skript sammelt AD DS-Konfigurationsdaten und speichert sie in ein XML-Dokument.
- XML-Schema: Das Schema definiert das Format des XML-Dokuments, das vom AD DS-BPA PowerShell Skript erzeugt wurde.
- AD DS-BPA Regeln: Die Regeln definieren die Best Practice-Konfiguration einer AD DS Umgebung.
- AD DS-BPA Leitfaden: Diese Informationen helfen dem Administrator ihre AD DS-Umgebung entsprechend den Best Practices zu konfigurieren.
Die Funktionsweise des AD DS-BPA
Wenn der AD DS-BPA auf einem DC ausgeführt wird, werden die folgenden Schritte durchgeführt:
- Die BPA Engine sammelt in der bestehenden AD DS-Umgebung mit dem „AD DS-BPA Powershell Skript“ Informationen über die AD DS-Konfiguration und speichert sie in ein XML-Dokument.
- Danach wird das XML-Dokument gegen das „XML-Schema“ validiert.
- Nach dem Anwenden der „AD DS-BPA Regeln“ auf das XML-Dokument wird anschließend ein Bericht anhand des „AD DS-BPA Leitfaden“ erstellt.
Den AD DS-BPA lokal in der grafischen Oberfläche ausführen
Der AD DS-BPA lässt sich mit der Maus im Server Manager eines Windows Server 2008 R2 DCs Vollinstallation ausführen. Dort findet man ihn nach Auswahl der Rolle Active Directoy-Domänendienste in der Zusammenfassung.
Das Ausführen des AD DS-BPA lokal auf einem Windows Server 2008 R2 DC Vollinstallation, in der AD-Powershell
In der Powershell-Kommandozeile lässt sich der AD DS-BPA ebenfalls ausführen.
- Als erstes gilt es das Server Manager-Modul mit dem folgenden Befehl in die Powershell-Sitzung zu importieren.
Import-Module ServerManager
- Im zweiten Schritt muss das BPA-Modul mit diesem Befehl importiert werden.
Import-Module BestPractices
- Mit diesem Befehl werden alle verfügbaren BPAs aufgelistet.
Get-BPAModel
- Nach der Durchführung des AD DS-BPA werden die Ergebnisse mit diesem Befehl angezeigt.
Get-BPAResult Microsoft/Windows/DirectoryServices
- Die AD DS-Rolle wird mit diesem Befehl überprüft.
Invoke-BPAModel Microsoft/Windows/DirectoryServices
- Einzelne Ergebnisse werden mit diesem Befehl ausgeschlossen bzw. erneut einbezogen.
Set-BPAResult
Den AD DS-BPA remote im Server Manager ausführen
Mit dem Server Manager lässt sich nun auch unter Windows Server 2008 R2 wie es bei MMCs üblich ist, remote eine Verbindung zu anderen Servern aufbauen. Das war vor Windows Server 2008 R2 nicht möglich. Der Server Manager steht unter Windows Server 2008 R2 sowie auf dem Windows 7 Client nach dem Installieren der RSAT zur Verfügung.

Doch bevor man sich mit dem Server Manager zu einem anderen DC verbinden kann, muss der zu verwaltende DC dies vorher zulassen. Das Zulassen für die Remoteverwaltung kann ebenfalls im Server Manager erfolgen. Die notwendigen Einstellungen werden bei aktivierter Windows-Firewall automatisch vorgenommen.

Über die Powershell muss auf dem zu verwaltenden DC zuerst der Befehl set-executionPolicy -executionPolicy remotesigned ausgeführt werden. Alle dazu benötigten Windows-Firewalleinstellungen werden durch diesen Befehl Configure-SMRemoting.ps1 -force -enable vorgenommen.
Anschließend lässt sich die AD DS-Rolle auf einem beschreibbaren Windows Server 2008 R2 DC, Windows Server 2008 R2 RODC oder Windows Server 2008 R2 Core DC von der Ferne aus überprüfen.
Den AD DS-BPA lokal auf einem Windows Server 2008 R2 Core DC ausführen
Ein lokales Ausführen des AD DS-BPA auf einem Windows Server 2008 R2 Core DC ist nur über die Powershell möglich. Die Powershell ist jedoch standardmäßig nicht installiert. Dazu müssen die folgenden Features installiert werden:
-
start /w ocsetup NetFx3-ServerCore
-
start /w ocsetup ServerCore-WOW64
-
start /w ocsetup MicrosoftWindowsPowerShell
-
start /w ocsetup MicrosoftWindowsPowerShell-WOW64
-
start /w ocsetup ActiveDirectory-PowerShell
Achtung: Die Featurenamen sind case sensitive!
Nach der Installation der Features, lässt sich die Powershell aus dem Verzeichnis %windir%\system32\windowspowershell\v1.0 mit dem Befehl powershell aufrufen. Anschließend gilt es die folgenden Powershell-Module zu laden:
- import-module activedirectory
- import-module servermanager
- import-module bestpractices
Überprüfen lässt sich danach die AD DS-Rolle mit diesem Befehl: Get-WindowsFeature AD-Domain-Services | invoke-bpamodel
Die Ergebnisse nach der Durchführung des AD DS-BPAs lassen sich mit diesem Befehl anzeigen: Get-WindowsFeature AD-Domain-Services | get-bparesult
Den AD DS-BPA remote auf einem Windows Server 2008 R2 Core DC ausführen
Bevor man den AD DS-BPA von der Ferne aus über den Server Manager oder über die AD-Powershell auf einem Windows Server 2008 R2 Core ausführen kann, muss zuerst auf dem Server Core die Fernadministration erlaubt werden. Mit dem folgenden Befehl werden die entsprechenden Konfigurationen in der Windows-Firewall vorgenommen: winrm quickconfig.
Anschließend kann man mit dem Server Manager oder über die Powershell von einem Windows Server 2008 R2 oder von einem Windows 7 Client (mit installierten RSAT) remote den AD DS-BPA auf einem Windows Server 2008 R2 Core DC ausführen.
Weitere BPAs für verschiedene Microsoft Produkte
Für Gruppenrichtlinien, Exchange, ISA, SQL und einige mehr gibt es den BPA schon seit längerer Zeit.
Immer wieder haben Administratoren Probleme mit dem Kennwort für den Verzeichnisdienstwiederherstellungsmodus. Sie gehen zu leichtfertig und unbedacht mit diesem hochsensiblen Kennwort um und wissen oftmals nicht, für was dieses Kennwort benötigt wird. Sie schreiben sich das Kennwort bei der Vergabe nicht auf und wissen es im Ernstfall nicht mehr. Das man das Kennwort seit Windows 2000 im laufenden Betrieb eines DCs ändern kann, ist ebenfalls vielen unbewusst. Um diesen Zustand bis zu einem gewissen Grad zu mildern sowie zu garantieren, dass das Kennwort konsistent bleibt, hat sich Redmond etwas einfallen lassen.
Microsoft hat ein neues Feature unter Windows Server 2008 veröffentlicht, mit dem das synchronisieren des Kennworts für den Modus „Verzeichnisdienste wiederherstellen" (im englischen „Directory Services Restore Mode“, kurz DSRM) und einem Domänen-Benutzerkonto möglich ist. Diese neue Funktion vermindert oder erhöht keineswegs die Sicherheit des Kennworts. Es dient einzig und alleine dazu, die Verwaltung des Kennworts zu vereinfachen.
Diese Funktion steht aber erst ab Windows Server 2008 und dort erst nach der Installation eines Hotfix zur Verfügung, der vorher von Microsoft von dieser Seite angefordert werden muss. Wurde der Hotfix auf einem Windows Server 2008 DC installiert, ist zwingend ein Neustart erforderlich. Der Hotfix steht ausschließlich für Windows Server 2008 zur Verfügung! Ab dem Service Pack 2 für Windows Server 2008 ist der Hotfix integriert und das installieren des Hotfix' ist nicht notwendig! Ab Windows Server 2008 R2 ist es ohnehin integriert.
Die Synchronisierung des Kennworts für den Verzeichnisdienstwiederherstellungsmodus mit dem Kennwort eines Domänen-Benutzerkontos erfolgt über das Kommandozeilentool NTDSUTIL. Dabei hat jeder DC sein „eigenes“ Kennwort für den Verzeichnisdienstwiederherstellungsmodus, das lokal gespeichert ist.
Nach der Eingabe des folgenden Befehls findet eine einseitige Synchronisation statt. Das Konto für den Verzeichnisdienstwiederherstellungsmodus erhält das Kennwort vom angegebenen Benutzerkonto. Die Vorgehensweise ist wie folgt:
- Unter „Start-Ausführen“ oder in einer Kommandozeile gilt es zuerst das NTDSUTIL aufzurufen.
- Danach ist dieser Befehl einzugeben: set dsrm password
- Anschließend wird die Synchronisierung des Kennworts mit diesem Befehl durchgeführt: sync from domain account <sAMAccountName>
- Mit der zweimaligen Eingabe von q verlässt man das NTDSUTIL.

- Man kann die Synchronisation auch mit dem folgenden Einzeiler erreichen: NTDSUTIL “set dsrm password" "sync from domain account <Benutzer>" q q
Der Befehl kann im laufenden Betrieb ausgeführt werden und das Kennwort wird dann einmalig synchronisiert! Es findet keine permanente Synchronisation statt. Daher muss der Befehl erneut ausgeführt werden, wenn sich das Kennwort vom angegebenen Benutzerkonto geändert hat.
Über die "Group Policy Preferences" und einem "geplanten Task" lässt sich die Synchronisierung des Kenworts auch automatisieren:
DS Restore Mode Password Maintenance
Weitere Informationen: How to Change the Recovery Console Administrator Password on a Domain Controller How To Reset the Directory Services Restore Mode Administrator Account Password in Windows Server 2003 Active Directory-Domänendienste (AD-DS)
Im Windows Server 2008 R2 ist erstmals die Active Directory-Powershell in der Version 2.0 Out-of-the-Box für AD DS sowie AD LDS (ehemals ADAM) im Betriebssystem integriert. Es stehen die AD-Powershell Kommandozeile sowie das Snap-In Windows PowerShell Integrated Scripting Environment (ISE) zur Verfügung. Die Powershell-Entwicklungsumgebung ISE muss im Server Manager unter den Features installiert werden, ehe diese unter Start - Alle Programme - Zubehör - Windows Powershell genutzt werden kann. Hinter der AD-Powershell verbirgt sich nichts anderes als ein Powershell-Modul Namens „ActiveDirectory“, worin bereits die AD-Cmdlets zur Verfügung stehen. Denn unter der Windows Powershell V2 sowie ISE müssen zuerst die AD-Cmdlets mit dem Befehl import-module activedirectory importiert werden. Die Bestandteile der AD-Powershell ist der AD-Powershell Provider und die insgesamt 76 AD-Powershell Commandlets (kurz Cmdlets).
Vor Windows Server 2008 R2 mussten AD-Administratoren mehrere Kommandozeilentools und AD Snap-Ins verwenden, um ihre Active Directory-Umgebung sowie die AD LDS „configuration sets“ (eine Gruppe von Replikationspartnern) zu administrieren und zu konfigurieren. Diese Vielfalt an Werkzeugen können sie zwar auch unter Windows Server 2008 R2 weiterhin nutzen, doch wer seine AD DS/AD LDS-Umgebung zentralisiert aus nur einem Werkzeug heraus administrieren bzw. konfigurieren möchte, der kann dies mit der Active Directory-Powershell realisieren.
Dadurch lassen sich viele AD-Administrations- und -Konfigurationsaufgaben nun auch über die AD-Powershell ausführen. Doch bevor die AD-Powershell genutzt werden kann, muss diese zuerst installiert werden. Die Installation der AD-Powershell kann ausschließlich auf den Betriebssystemen Windows Server 2008 R2 Vollinstallation, Server Core R2 und Windows 7 Client durchgeführt werden.
Dabei kann die Installation der AD-Powershell auf verschiedene Weise erfolgen. Diese wären:
- Die Installation der Serverrolle AD DS oder AD LDS unter Windows Server 2008 R2.
- Das Heraufstufen eines Windows Server 2008 R2 zu einem Domänencontroller (DC) mit dem Dcpromo-Assistenten.
- Bei der Installation der Remote Server Administration Tools (kurz RSAT) auf einem Windows Server 2008 R2 Servers.
- Mit der Installation der RSAT auf Windows 7 Clients.
Mit der Installation der AD-Powershell werden standardmäßig die Komponenten „Windows Powershell“ und „.NET Framework 3.5.1“ mit installiert. Diese beiden Komponenten sind die Voraussetzung ehe die AD-Powershell installiert und genutzt werden kann.
Wenn die AD-Powershell auf einem Windows 7 Client genutzt werden soll, um eine AD DS-Domäne oder AD LDS-Umgebung zu administrieren, dann ist das erst möglich wenn sich mindestens ein Windows Server 2008 R2 DC oder mindestens eine Instanz in einem AD LDS „configuration set“ auf einem Windows Server 2008 R2 läuft. Das ist notwendig, da die AD-Powershell von dem Dienst Active Directory-Webdienste abhängig ist und nicht von der RPC- bzw. LDAP-Schnittstelle. Nur wenn dieser Dienst in der Umgebung zur Verfügung steht, kann die AD-Powershell eingesetzt werden.
Damit eine Windows Server 2003 oder Windows Server 2008 Umgebung oder AD LDS-Instanzen die auf Windows Server 2008 laufen von einem Windows 7 Client oder Windows Server 2008 R2 Mitgliedsserver bzw. DC administrert werden können, muss vorher das Active Directory Management Gateway Service installiert werden:
Die AD Management Gateway Services für Windows Server 2003 und Windows Server 2008
Nach der Installation der AD-Powershell stehen alle 76 verfügbaren AD-Cmdlets zur Verfügung und man kann sich mit dem Befehl Get-Command *-ad* die Cmdlets anzeigen lassen. Mit den folgenden Powershell-Befehlen lässt sich zu dem jeweils angegebenen AD-Cmdlet eine detailierte und ausführliche Hilfe anzeigen:
- Get-Help <Cmdlet Name> -Detailed (z.B. Get-Help Disable-ADAccount -Detailed)
- Get-Help <Cmdlet Name> -Examples
- Get-Help <Cmdlet Name> -Full
Die Cmdlets lassen sich auch durch das Pipelining miteinander verbinden. Dadurch können die Daten von einem Cmdlet zum anderen weitergegeben werden. Z.B.: Search-ADAccount <Parameter/alle deaktivierten Benutzer> | Enable-ADAccount
Die AD-Cmdlets die zur Verfügung stehen sind:
ADAccount (4 Cmdlets)
-
Disable-ADAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Deaktiviert das angegebene Benutzer-, Dienst- oder Computerkonto.
-
Enable-ADAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Aktiviert das angegebene Benutzer-, Dienst- oder Computerkonto.
-
Search-ADAccount Die Suche zeigt Benutzer- oder Computerkonten anhand der angegebenen Parameter an.
-
Unlock-ADAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Entsperrt ein Domänen-Benutzerkonto.
ADAccountAuthorizationGroup (1 Cmdlet)
- Get-ADAccountAuthorizationGroup (Das Cmdlet funktioniert nicht bei einem AD-Snapshot)
Zeigt die Sicherheitsgruppen mit detailierten Informationen im AD an, in denen das angegebene Benutzer-, Dienst- oder Computerkonto Mitglied ist. Mit diesem Cmdlet wird auch die „primäre Gruppe“ eines Benutzers angezeigt!
ADAccountControl (1 Cmdlet)
- Set-ADAccountControl (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
Mit diesem Cmdlet lassen sich die Kontooptionen eines Benutzer- oder Computerkontos bearbeiten. Das Attribut „userAccountControl“ das sich aus einer Bitmaske zusammensetzt, lässt sich somit auch in der AD-Powershell bearbeiten.
ADAccountExpiration (2 Cmdlet)
- Clear-ADAccountExpiration (Dieses Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
Mit diesem Cmdlet lässt sich in den Eigenschaften eines Benutzerkontos, im Reiter Konto die Option “Konto läuft ab” auf „Nie“ einstellen.
-
Set-ADAccountExpiration (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Das Ablaufdatum eines Benutzerkontos lässt sich mit diesem Cmdlet konfigurieren.
ADAccountPassword (1 Cmdlet)
- Set-ADAccountPassword (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
Das Kennwort eines Benutzer- oder Dienstkonto kann mit diesem Cmdlet bearbeitet bzw. ein neues vergeben werden.
ADAccountResultantPasswordReplicationPolicy (1 Cmdlet)
-
Get-ADAccountResultantPasswordReplicationPolicy (Das Cmdlet funktioniert nicht bei den AD LDS) Mit diesem Cmdlet kann man sich die Kennwortreplikationsrichtlinie eines Benutzer-, Dienst- oder Computerkontos, an dem angegebenen RODC anzeigen lassen.
ADComputer (4 Cmdlet)
- Get-ADComputer (Das Cmdlet funktioniert nicht bei den AD LDS)
Eine Abfrage über Computerkonten anhand bestimmter Kriterien lässt sich mir diesem Cmdlet durchführen.
-
New-ADComputer (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Hiermit können Computerkonten im AD erstellt werden. Darunter fällt auch die neue Funktion „Offline Domain Join“ oder ein RODC-Computerkonto.
-
Remove-ADComputer (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Dieses Cmdlet entfernt Computerkonten aus dem AD.
-
Set-ADComputer (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Die Eigenschaften eines Computerkontos lassen sich mit diesem Cmdlet bearbeiten.
ADComputerServiceAccount (3 Cmdlets)
-
Add-ADComputerServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Ein oder mehrere Computer-Dienstkonten werden mit diesem Cmdlet auf einem Server hinzugefügt.
-
Get-ADComputerServiceAccount (Das Cmdlet funktioniert nicht bei den AD LDS) Die auf einem Server verfügbaren Computer-Dienstkonten zeigt dieses Cmdlet an.
-
Remove-ADComputerServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Entfernen lassen sich ein oder mehrere Computer-Dienstkonten mit diesem Cmdlet.
ADDefaultDomainPasswordPolicy (2 Cmdlets)
- Get-ADDefaultDomainPasswordPolicy (Das Cmdlet funktioniert nicht bei den AD LDS)
Dieses Cmdlet zeigt die Domänen-Kennwortrichtlinie an und nicht die “Password Settings Objects (PSO)”.
- Set-ADDefaultDomainPasswordPolicy (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
Mit diesem Cmdlet lassen sich die Kennwortvorgaben (minimales und maximales Kennwortalter usw.) in der Domänen-Kennwortrichtlinie konfigurieren.
ADDirectoryServer (1 Cmdlet)
-
Move-ADDirectoryServer (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Ein Domänencontroller kann mit diesem Cmdlet an einen anderen AD-Standort verschoben werden.
ADDirectoryServerOperationMasterRole (1 Cmdlet)
ADDomain (2 Cmdlets)
-
Get-ADDomain (Das Cmdlet funktioniert nicht bei den AD LDS) Mit diesem Cmdlet und den entsprechenden Parametern lassen sich Domäneninformationen ausgeben.
-
Set-ADDomain (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Dieses Cmdlet lässt sich zum Bearbeiten diverser Domäneninformationen verwenden.
ADDomainController (1 Cmdlet)
-
Get-ADDomainController (Das Cmdlet funktioniert nicht bei den AD LDS) Ausführliche Informationen über einen Domänencontroller erhält man mit diesem Cmdlet.
ADDomainControllerPasswordReplicationPolicy (3 Cmdlets)
-
Add-ADDomainControllerPasswordReplicationPolicy (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Ein oder mehrere Benutzer, Gruppen oder Computer können mit diesem Cmdlet in die Sicherheitsgruppe „Abgelehnte RODC-Kennwortreplikationsgruppe” oder „Zulässige RODC-Kennwortreplikationsgruppe” hinzugefügt werden.
-
Get-ADDomainControllerPasswordReplicationPolicy (Das Cmdlet funktioniert nicht bei den AD LDS) Die Mitglieder (Benutzer, Gruppen oder Computer) der Sicherheitsgruppe „Zulässige RODC-Kennwortreplikationsgruppe” oder „Abgelehnte RODC-Kennwortreplikationsgruppe” werden mit diesem Cmdlet angezeigt.
-
Remove-ADDomainControllerPasswordReplicationPolicy (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Dieses Cmdlet entfernt einzelne oder mehrere Benutzer, Gruppen oder Computer von der Sicherheitsgruppe „Abgelehnte RODC-Kennwortreplikationsgruppe” oder „Zulässige RODC-Kennwortreplikationsgruppe”.
ADDomainControllerPasswordReplicationPolicyUsage (1 Cmdlet)
-
Get-ADDomainControllerPasswordReplicationPolicyUsage (Das Cmdlet funktioniert nicht bei den AD LDS) In welcher RODC-Kennwortreplikationsgruppe (zulässige oder abgelehnte) der angegebene Benutzer auf dem angegebenen RODC Mitglied ist, zeigt dieses Cmdlet.
ADDomainMode (1 Cmdlet)
ADFineGrainedPasswordPolicy (4 Cmdlets)
-
Get-ADFineGrainedPasswordPolicy (Das Cmdlet funktioniert nicht bei den AD LDS) Dieses Cmdlet zeigt die konfigurierten Optionen einer oder mehrerer “Password Settings Objects (PSO)” an.
-
New-ADFineGrainedPasswordPolicy (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Neue PSOs können mit diesem Cmdlet erstellt werden.
-
Remove-ADFineGrainedPasswordPolicy (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Entfernen lässt sich ein PSO mit diesem Cmdlet.
-
Set-ADFineGrainedPasswordPolicy (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Die konfigurierten Optionen einer PSO können mit diesem Cmdlet überarbeitet werden.
ADFineGrainedPasswordPolicySubject (3 Cmdlets)
-
Add-ADFineGrainedPasswordPolicySubject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Mit diesem Cmdlet wird eine bereits bestehende PSO mit einem oder mehreren Benutzern bzw. einer Gruppe verknüpft.
-
Get-ADFineGrainedPasswordPolicySubject (Das Cmdlet funktioniert nicht bei den AD LDS) Welche Benutzer oder Gruppen mit einem bestimmten PSO verknüpft sind, zeigt dieses Cmdlet.
-
Remove-ADFineGrainedPasswordPolicySubject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Eine oder mehre Benutzer bzw. Gruppen werden mit diesem Cmdlet von einer PSO entfernt.
ADForest (2 Cmdlets)
-
Get-ADForest (Das Cmdlet funktioniert nicht bei den AD LDS) Weiterreichende Informationen über die Gesamtstruktur erhält man durch dieses Cmdlet.
-
Set-ADForest (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Dieses Cmdlet lässt sich zum Hochstufen des Gesamtstrukturfunktionsmodus oder zum Bearbeiten gesamtstrukturweiter Informationen (z.B. Hinzufügen oder Bearbeiten des UPNSuffix) verwenden.
ADForestMode (1 Cmdlet)
-
Set-ADForestMode (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Der Gesamtstrukturfunktionsmodus lässt sich mit diesem Cmdlet Hochstufen.
ADGroup (4 Cmdlets)
-
Get-ADGroup Sollen die Benutzer einer speziellen Gruppe ermittelt werden, eine Gruppe mit detailierten Informationen angezeigt oder alle Gruppen anhand bestimmter Kriterien ermittelt werden, so kann man dieses Cmdlet dafür verwenden.
-
New-ADGroup (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Sicherheit- oder Verteilergruppen können in der AD-Powershell mit diesem Cmdlet erstellen werden.
-
Remove-ADGroup (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Gruppentypen der Kategorie „Sicherheit“ oder „Verteilung“ werden mit diesem Cmdlet entfernt.
-
Set-ADGroup (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Bestehende Gruppen lassen sich mit diesem Cmdlet bearbeiten.
ADGroupMember (3 Cmdlets)
-
Add-ADGroupMember (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Ein oder mehrere Benutzer-, Gruppen-, Dienst- oder Computerkonten können mit diesem Cmdlet einer bestimmten Gruppe hinzugefügt werden.
-
Get-ADGroupMember (Das Cmdlet funktioniert nicht bei einem AD-Snapshot) Die Mitglieder (Benutzer, Gruppen, Clients) einer bestimmten Gruppe werden mit diesem Cmdlet angezeigt.
-
Remove-ADGroupMember (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Mit diesem Cmdlet ist es möglich, ein oder mehrere Benutzer, Gruppen oder Clients aus einer bestimmten Gruppe zu entfernen.
ADObject (7 Cmdlets)
-
Get-ADObject Jegliche Active Directory-Abfrage kann anhand der angegebenen Parameter mit diesem Cmdlet durchgeführt werden.
-
Move-ADObject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Active Directory-Objekte oder OUs können entweder innerhalb oder zwischen Domänen mit diesem Cmdlet verschieben werden.
-
New-ADObject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Neue Active Directory-Objekte jeder Art, sei es z.B. neue Benutzer, OUs oder Subnetze werden mit diesem Cmdlet erstellt.
-
Remove-ADObject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Jede Art von Active Directory-Objekten, wie z.B. Benutzer oder OUs, können mit diesem Cmdlet entfernt werden.
-
Rename-ADObject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Das umbenennen von AD-Objekten kann mit diesem Cmdlet durchgeführt werden.
-
Restore-ADObject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Dieses Cmdlet stellt ein gelöschtes ADObjekt aus dem Container „Deleted Objects“ wieder her.
-
Set-ADObject (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Jegliche Art von AD-Objekten lassen sich mit diesem Cmdlet bearbeiten.
ADOptionalFeature (3 Cmdlets)
-
Disable-ADOptionalFeature (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Ein Active Directory „Optional Feature“ lässt sich mit diesem Cmdlet deaktivieren.
-
Enable-ADOptionalFeature (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Aktivieren lässt sich ein „Optional Feature“, wie z.B. der AD-Papierkorb, mit diesem Cmdlet.
-
Get-ADOptionalFeature Die optionalen Features innerhalb einer Gesamtstruktur werden mit diesem Cmdlet angezeigt.
ADOrganizationalUnit (4 Cmdlets)
-
Get-ADOrganizationalUnit Eine oder mehrere Organisationseinheiten (OU) können anhand der angegebenen Parameter, mit diesem Cmdlet ermittelt werden.
-
New-ADOrganizationalUnit (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Erstellen lässt sich eine neue OU mit diesem Cmdlet.
-
Remove-ADOrganizationalUnit (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Soll eine OU (ohne oder mit Objekten) entfernt werden, so lässt sich das Löschen mit dieser Cmdlet durchführen. Ist allerdings die OU vor dem „versehentlichen“ löschen geschützt, so erscheint eine Fehlermeldung.
-
Set-ADOrganizationalUnit (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Die Eigenschaften einer OU (Adressinformationen oder die Einstellung „Objekt vor zufälligem Löschen schützen“ etc.) lassen sich mit diesem Cmdlet bearbeiten.
ADPrincipalGroupMembership (3 Cmdlets)
- Add-ADPrincipalGroupMembership (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC)
Dieses Cmdlet fügt einen oder mehrere Benutzer, Gruppen oder Computer zu einer oder mehreren Gruppen hinzu.
-
Get-ADPrincipalGroupMembership (Das Cmdlet funktioniert nicht bei einem AD-Snapshot) Alle Gruppenmitgliedschaften eines Benutzers, einer Gruppe oder eines Clients werden mit diesem Cmdlet angezeigt.
-
Remove-ADPrincipalGroupMembership (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Ein oder mehrere Benutzer, Gruppen oder Clients werden mit diesem Cmdlet aus einer oder mehreren Gruppen entfernt.
ADRootDSE (1 Cmdlet)
-
Get-ADRootDSE Die Informationen des Einstiegpunkts eines Active Directory (RootDSE) zeigt dieses Cmdlet an.
ADServiceAccount (6 Cmdlets)
-
Get-ADServiceAccount (Das Cmdlet funktioniert nicht bei den AD LDS) Die im Windows Server 2008 R2 eingeführten AD-Dienstkonten („Managed Service Account“) lassen sich anhand der angegeben Parameter, mit diesem Cmdlet anzeigen.
-
Install-ADServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Ein neues AD-Dienstkonto lässt sich mit diesem Cmdlet installieren.
-
New-ADServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Dieses Cmdlet erstellt ein neues AD-Dienstkonto.
-
Remove-ADServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Entfernen kann man ein AD-Dienstkonto mit diesem Cmdlet.
-
Set-ADServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Mit diesem Cmdlet lässt sich ein bestehendes AD-Dienstkonto bearbeiten.
-
Uninstall-ADServiceAccount (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC) Deinstallieren lässt sich ein AD-Dienstkonto mit diesem Cmdlet.
ADServiceAccountPassword (1 Cmdlet)
- Reset-ADServiceAccountPassword (Das Cmdlet funktioniert nicht bei einem AD-Snapshot, AD LDS und auch nicht bei einem RODC)
Das Kennwort eines AD-Dienstkontos kann mit diesem Cmdlet zurückgesetzt werden.
ADUser (4 Cmdlets)
- Get-ADUser
Ist man auf der Suche nach einem bestimmten oder nach mehreren Benutzern die alle ein bestimmtes Kriterium erfüllen, so lässt sich die Abfrage mit diesem Cmdlet durchführen.
-
New-ADUser (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Ein Benutzerkonto (samt Kennwort) lässt sich mit diesem Cmdlet erstellen.
-
Remove-ADUser (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Dieses Cmdlet entfernt ein oder mehrere Benutzerkonten.
-
Set-ADUser (Das Cmdlet funktioniert nicht bei einem AD-Snapshot und auch nicht bei einem RODC) Bearbeiten kann man ein Benutzerkonto mit diesem Cmdlet.
ADUserResultantPasswordPolicy (1 Cmdlet)
-
Get-ADUserResultantPasswordPolicy (Das Cmdlet funktioniert nicht bei den AD LDS) Die mit einem Benutzer- oder Gruppenkonto verknüpften “Password Settings Objects“ (PSO) werden mit diesem Cmdlet angezeigt.
Weitere Informationen: AD-PowerShell Befehle Active Directory Powershell Overview Active Directory Module for Windows PowerShell Cookbook Den ersten Windows Server 2008 R2 DC zur Gesamtstruktur hinzufügen Der Active Directory-Papierkorb im Windows Server 2008 R2
Das versehentliche Löschen von Active Directory-Objekten ist in Active Directory (AD) bzw. Active Directory Domain Services (AD DS), als auch in Active Directory Lightweight Directory Services (AD LDS, ehemals Active Directory Application Mode, kurz ADAM) Umgebungen mehr als ärgerlich. Denn schnell sind mit zwei Mausklicks ein oder mehrere Objekte gelöscht. Hoffentlich existiert in so einem Fall eine aktuelle und vor allem funktionierende Sicherung, mit dem das verlorene Objekt wiederhergestellt werden kann. Bis jedoch das passende Sicherungsband gefunden, eingelegt und das Objekt letztenendes wiederhergestellt ist, können diese Arbeiten sehr zeitintensiv und aufwändig sein.
Die Möglichkeiten die einem bei der Wiederherstellung zur Verfügung stehen, sind unter:
-
Windows 2000 = Autoritative Wiederherstellung
-
Windows Server 2003 = Autoritative Wiederherstellung, Tombstone reanimieren
-
Windows Server 2003 R2 = Autoritative Wiederherstellung, Tombstone reanimieren
-
Windows Server 2008 = Autoritative Wiederherstellung, Tombstone reanimieren
-
Windows Server 2008 R2 = AD-Papierkorb, Autoritative Wiederherstellung, Tombstone reanimieren (bei deaktiviertem und aktiviertem AD-Papierkorb)
Die autoritative Wiederherstellung
Existiert eine aktuelle und funktionierende System State-Sicherung, kann mit einer autoritativen Wiederherstellung das Objekt mit all seinen Informationen die es zum Zeitpunkt der Sicherung hatte, wiederhergestellt werden. Dabei darf die Systemstatus-Sicherung (auf englisch: System State) nicht älter als die Tombstone-Lifetime (TSL) sein, denn ansonsten entstehen Lingering Objects. Die TSL einer Gesamtstruktur gibt das maximale Alter einer Systemstatus-Sicherung an, die für eine Rücksicherung verwendet werden darf.
Ein AD-Objekt wird in der Kommandozeile mit dem Befehl Ntdsutil-authoritative restore hergestellt. Dabei wird die Versionsnummer um 100.000 erhöht, damit das rückgesicherte Objekt nach der AD-Replikation auf die Replikationspartner erhalten bleibt und nicht von einem anderen DC direkt wieder gelöscht wird.
Problematisch ist allerdings die Wiederherstellung der Gruppenmitgliedschaften eines gelöschten Benutzers, die sogenannten Backlinks. Zur Wiederherstellung von Gruppenmitgliedschaften sind weitere aufwändige Schritte notwendig. Das hat sich zwar mit Windows Server 2003 SP1 etwas entschärft, jedoch ist weiterhin der Aufwand zum Rücksichern dieser Backlinks recht hoch.
Der Nachteil einer autoritativen Wiederherstellung wäre, dass der Domänencontroller (DC) im Modus Verzeichnisdienste wiederherstellen gestartet werden muss und dadurch zwei Neustarts notwendig sind. Somit würde der DC während der ganzen Zeit der Wiederherstellung nicht zur Verfügung stehen.
Diese Vorgehensweise ist seit der Einführung des Active Directory mit Windows 2000 gleich geblieben.
Weitere Details stehen in dem Artikel:
Active Directory Wiederherstellung
Ist eine Wiederherstellung in einer AD LDS-Umgebung notwendig, so ist es erforderlich die AD LDS-Instanz vorher zu stoppen. Allerdings muss für die Wiederherstellung der Server nicht im Modus Verzeichnisdienste wiederherstellen gestartet werden.
Wiederherstellen von AD LDS-Instanzdaten
Die Tombstone-Reanimierung
Eine andere Variante die seit Windows Server 2003 zur Verfügung steht, ist das reanimieren des Tombstones (zu Deutsch: Grabstein). Diese Art der Wiederherstellung hat den Vorteil, dass das Tombstone online ohne, dass der DC neu gestartet werden muss, jederzeit wiederhergestellt werden kann. Auch in einer AD LDS-Umgebung muss dazu die AD LDS-Instanz nicht offline genommen werden. Das gelöschte Objekt (das Tombstone) kann natürlich nur reanimiert werden, solange die Tombstone Lifetime nicht abgelaufen ist. Der Nachteil dieser Variante wiederum wäre, dass beim Wiederbeleben des Tombstones nicht alle Informationen eines Objekts automatisch wiederhergestellt werden.
Denn wenn ein Objekt gelöscht wird, verschwindet es nicht sofort aus der Active Directory-Datenbank (NTDS.dit). Das Objekt wird stattdessen vom Active Directory als gelöscht markiert, indem das Attribut Is-Deleted des Objekts auf den Wert True gesetzt wird. Aber es werden die meisten Attribute von dem Objekt für immer entfernt. Danach wird das Objekt in den versteckten Container Deleted Objects (der in jeder Verzeichnispartitionen existiert) verschoben und wird ab diesem Zeitpunkt als Tombstone bezeichnet. Wird also ein Benutzer gelöscht, so landet das Benutzerkonto mit wenigen Werten im Container „Deleted Objects“ der Domänenpartition und wird erst nach Ablauf der TSL vom Garbage Collection Prozess ein für allemal aus dem AD entfernt.
Landet das Tombstone im Container „Deleted Objects“, erhält es einen speziellen Relative Distinguished Name (RDN) der so aussieht: „CN=<Alter RDN>\0ADEL:<Object-GUID>“. Beim Wiederbeleben des Tombstone wird das Objekt dann nur noch mit einigen wenigen Werten (z.B. ObjectGUID oder ObjectSID) wiederhergestellt.
Der Container „Deleted Objects“ wird aber nicht in den AD Snap-Ins oder im ADSIEdit angezeigt. Stattdessen können die Tombstones mit ADRestore.Net, ADRestore oder LDP.exe angezeigt sowie wiederhergestellt werden.
ADRestore.NET
ADRestore
Die restlichen Werte die in einem wiederhergestellten Tombstone fehlen, könnten mit einem der folgenden Tools, von einem zuvor erstellten AD-Snapshot unter Windows Server 2008 bzw. Windows Server 2008 R2 wiederhergestellt werden.
Directory Service Comparison Tool 1.3.2.X
AD Explorer
Die Grabstein-Lebenszeit (Tombstone Lifetime)
Die Tombstone Lifetime wird mit dem Installieren des allerersten DCs für die komplette Gesamtstruktur festgelegt. Dabei ist es entscheidend welches Server-Betriebssystem mit welchem Service-Pack auf dem Server installiert ist, mit dem die Gesamtstruktur erstellt wird. Das Installieren eines Service-Packs auf bestehenden DCs, verändert niemals die Tombstone Lifetime. Es müsste schon die Gesamtstruktur neu installiert werden.
Wie und wo man die TSL überprüfen kann, steht neben weiteren Details in dem folgenden Artikel.
Die Tombstone Lifetime
Die Tombstone-Lifetime beträgt unter den Betriebssystemen:
-
Windows 2000 (mit allen SPs) = 60 Tage
-
Windows Server 2003 ohne SP = 60 Tage
-
Windows Server 2003 ab Service Pack 1 = 180 Tage
-
Windows Server 2003 R2 mit Service Pack 1, installiert mit beiden R2-CDs = 60 Tage
-
Windows Server 2003 R2 mit Service Pack 1, installiert nur mit der ersten R2-CD = 180 Tage
-
Windows Server 2003 R2 ab Service Pack 2 (installiert mit der ersten oder beiden R2-CDs) = 180 Tage
-
Windows Server 2008 (mit allen SPs) = 180 Tage
-
Windows Server 2008 R2 (mit allen SPs) = 180 Tage
Der Vorgang eines gelöschten AD-Objekts sowie seine Wiederherstellung unter Windows Server 2003/2003 R2, Windows Server 2008 und Windows Server 2008 R2, bei deaktiviertem AD-Papierkorb

Der Active Directory-Papierkorb unter Windows Server 2008 R2
Ein absolutes Highlight im Windows Server 2008 R2 ist der Papierkorb für gelöschte Active Directory-Objekte. Wird ein Active Directory-Objekt in den Active Directory Domain Services (AD DS) oder Active Directory Lightweight Directory Services (AD LDS) gelöscht, kann es Dank des AD-Papierkorbs schnell wiederhergestellt werden. Der AD-Papierkorb steht in AD DS und AD LDS-Umgebungen zur Verfügung. Der große Vorteil des AD-Papierkorbs ist, dass das Objekt mit all seinen Informationen die es zum Zeitpunkt der Löschung hatte wiederhergestellt wird. Das bedeutet, alle Attribute samt allen Backlinks und somit z.B. den Gruppenmitgliedschaften eines Benutzers, werden hergestellt. Nach der Wiederherstellung ist auch der Zugriff auf die bestehenden Objekte und Ressourcen wieder gegeben.
Dafür wird weder eine System-State Sicherung benötigt, noch muss der DC im Verzeichnisdienste wiederherstellen Modus gestartet werden. Die Wiederherstellung findet im laufenden Betrieb statt.
Diese neue Technik steht ausschließlich in den folgenden Server-Versionen zur Verfügung:
-
Windows Server 2008 R2 Standard
-
Windows Server 2008 R2 Enterprise
-
Windows Server 2008 R2 Datacenter
Der AD-Papierkorb steht in den folgenden Versionen nicht zur Verfügung:
- Windows Server 2008 R2 für Itanium basierte Systeme
- Windows Web Server 2008 R2
Jedoch ersetzt diese Funktion niemals eine regelmäßige System State-Sicherung!
Die Voraussetzungen um den Active Directory-Papierkorb unter Windows Server 2008 R2 zu nutzen
Die Voraussetzungen um den AD-Papierkorb zu nutzen sind:
-
Der AD-Papierkorb steht in den AD DS und AD LDS-Umgebungen erst im Gesamtstrukturfunktionsmodus Windows Server 2008 R2 zur Verfügung. Es müssen also alle Domänencontroller aus allen Domänen der Gesamtstruktur oder alle Server auf denen eine AD LDS-Instanz konfiguriert ist, unter Windows Server 2008 R2 laufen!
Den ersten Windows Server 2008 R2 DC zur Gesamtstruktur hinzufügen
-
Der AD-Papierkorb ist standardmäßig deaktiviert, sowohl bei einer Domänenaktualisierung oder dem neu Aufsetzen einer Windows Server 2008 R2 Gesamtstruktur im Gesamtstrukturfunktionsmodus „Windows Server 2008 R2“. Der AD-Papierkorb muss explizit in der AD-Powershell aktiviert werden. Dieser Schritt ist ein irreversibler Vorgang und kann danach nicht mehr rückgängig gemacht werden!
Nach dem Aktivieren des AD-Papierkorbs lässt sich dieses Feature mit Bordmitteln über die AD-Powershell und LDP.exe nutzen. Es existiert keine grafische Oberfläche in der man mit der Maus die Funktion aktivieren kann. Jedoch lassen sich mit dem Tool LDP oder den beiden Tools ADRestore.Net und ADRestore, ebenfalls die gelöschten Objekte im AD-Papierkorb anzeigen sowie wiederherstellen.
Kann der AD-Papierkorb für eine einzige Domäne in der Gesamtstruktur aktiviert werden?
So wie bei der Tombstone Lifetime ist es nicht möglich, den AD-Papierkorb „pro Domäne“ zu aktivieren. Wenn die Voraussetzungen erfüllt sind, kann diese Funktion nur auf der Gesamtstrukturebene mit „Organisations-Admin“ Rechten für alle Domänen aktiviert werden. Anschließend steht jeder Domäne sein eigener AD-Papierkorb zur Verfügung. Der AD-Papierkorb existiert also "pro Domäne" und nicht "pro Gesamtstruktur"!
Die Funktionsweise des Active Directory-Papierkorbs unter Windows Server 2008 R2
Der AD-Papierkorb baut auf der Technik der Tombstone-Reanimierung auf. Jedoch werden vom gelöschten Objekt dafür keine Attribute vom System entfernt und es bleiben alle Attribute erhalten. Das Objekt wird logisch gelöscht bzw. inaktiv gesetzt, was ein neues Stadium eines gelöschten Objekts ist, das mit Windows Server 2008 R2 eingeführt wurde. In der AD-Datenbank wurde dazu das Speicherformat der Objektlinks geändert. Wird ein Objekt gelöscht, so erhält das Attribut isDeleted im Objekt den Wert TRUE. Das gelöschte Objekt wird nach wie vor in den versteckten Container Deleted Objects verschoben und sein Distinguished Name (DN) erhält dadurch einen neuen Wert. Das Objekt in „Deleted Objects“ behält seinen logischen Löschzustand solange bei, bis die Deleted Object Lifetime (DOL) abgelaufen ist. Nach Ablauf der DOL wandelt sich das gelöschte Objekt zu einem "recycled Objekt". Das recycled Objekt wird dann endgültig vom Garbage Collection Prozess nach Ablauf der Recycled Object Lifetime (ROL) aus der AD-Datenbank entfernt. Unter Windows Server 2008 R2 gibt es nun neben der Tombstone Lifetime zusätzlich die Deleted Object Lifetime (kurz DOL) und Recycled Object Lifetime (kurz ROL).
Die Deleted Object Lifetime wird durch den Wert im neuen Attribut msDS-DeletedObjectLifetime bestimmt. Denn bei einer Domänenaktualisierung auf Windows Server 2008 R2 ist eines der Schema-Aktualisierungen mit Adprep /Forestprep (von der Windows Server 2008 R2 DVD) das Hinzufügen des neuen Attributs msDS-DeletedObjectLifetime. Wenn jedoch eine Gesamtstruktur auf Basis von Windows Server 2008 R2 erstellt wird, befinden sich bereits alle benötigten Attribute im Schema und das Adprep muss in keinster Weise ausgeführt werden. Die Recycled Object Lifetime hingegen, erhält seinen Wert aus dem Attribut tombstoneLifetime.
Ist die Zeit des im Attribut msDS-DeletedObjectLifetime definierten Werts abgelaufen, wandelt sich das logisch gelöschte Objekt zum „recycled Objekt“. Zusätzlich erhält das Attribut isRecycled im Objekt den Wert TRUE. Dabei werden die gleichen Attribute vom Objekt entfernt, wie es seit Windows Server 2003 bei einem Tombstone der Fall ist. Oder anders ausgedrückt, im recycled Objekt bleiben standardmäßig die gleichen Attribute erhalten wie bei einem Tombstone unter Windows Server 2003, Windows Server 2008 oder Windows Server 2008 R2 bei deaktiviertem AD-Papierkorb. Von der Begrifflichkeit her entspricht ein „recycled Objekt“ einem klassischen Tombstone.
Auch können in einem recycled Objekt durch das vierte Bit im searchFlags (in Dezimal 8) des gewünschten Attributs, weitere Attribute gespeichert werden. Daher das ein "recycled Object" nichts anderes als ein Tombstone ist, lässt es sich natürlich auch mit wenigen Attributen mit z.B. LDP, ADRestore oder ADRestore.NET reanimieren. Des Weiteren kann ein gelöschtes Objekt das sich nach Ablauf der DOL zu einem recycled Objekt gewandelt hat, auch nicht mehr aus dem AD-Papierkorb mit allen Werten wiederhergestellt sondern lediglich als Tombstone reanimiert werden.
Das recycled Objekt bleibt weiterhin in dem Container Deleted Objects, bis die im Attribut tombstoneLifetime definierte Zeit abläuft. Anschließend wird das Objekt vom Garbage Collection Prozess unwiderruflich aus dem AD entfernt.
Das bedeutet im Klartext, bei aktiviertem AD-Papierkorb lässt sich ein gelöschtes Objekt nur während der DOL mit allen Werten wiederherstellen. Die Möglichkeiten zum Wiederherstellen sind dabei:
-
Das Wiederherstellen aus dem AD-Papierkorb mit der AD-Powershell, LDP, ADRestore.NET oder ADRestore.
-
Eine autoritative Wiederherstellung.
Achtung: Wird der AD-Papierkorb aktiviert, wandeln sich alle AD-Objekte die bis zum Aktivieren des AD-Papierkorbs gelöscht wurden (also alle Tombstones), zu recycled Objekten. Diese Objekte können in der AD-Powershell mit einem bestimmten Befehl angezeigt werden (siehe unten). Jedoch können diese Objekte nicht mit Hilfe des AD-Papierkorbs bzw. der Tombstone-Reanimierung wiederhergestellt werden. Die beiden Tools ADRestore.NET und ADRestore zeigen ebenfalls diese Tombstones nicht an. Das Tool LDP zeigt zwar ebenfalls die Objekte an, ist aber auch nicht in der Lage die Objekte wiederherzustellen. Der einzige Weg diese Objekte herzustellen, ist eine autoritative Wiederherstellung von einer Systemstatus-Sicherung, die vor dem aktivieren des AD-Papierkorbs durchgeführt wurde.
Die Deleted Object Lifetime (DOL) und Recycled Object Lifetime (ROL)
Standardmäßig enthält das Attribut msDS-DeletedObjectLifetime keinen Wert. Es ist <Nicht festgelegt>. In diesem Fall wird der Wert aus der Recycled Object Lifetime festgelegt. Man kann aber natürlich auch jederzeit manuell einen Wert im Attribut msDS-DeletedObjectLifetime definieren.
Die ROL wiederum erhält seinen Wert aus dem Attribut tombstoneLifetime, denn die ROL hat kein eigenes Attribut wie die DOL. Das bedeutet, wenn ein Objekt gelöscht wird und im Attribut msDS-DeletedObjectLifetime ist kein Wert definiert, behält das Objekt für 60/180 Tage seinen logischen Löschzustand bei und wird anschließend zum recycled Objekt umgewandelt. Nach weiteren 60/180 Tagen (nach Ablauf der Tombstone Lifetime) wird es dann endgültig vom Garbage Collection Prozess aus der AD-Datenbank entfernt. Das Objekt bleibt somit über den gesamten Zeitraum der DOL und ROL im AD erhalten, ehe es definitiv aus dem AD gelöscht wird.
Ist hingegen im Attribut msDS-DeletedObjectLifetime ein Wert definiert, so beträgt die DOL den eingetragenen Wert in Tagen und es wird nicht der Wert aus dem Attribut tombstoneLifetime angenommen. Wenn daher der Bedarf besteht, ein gelöschtes Objekt länger als die Zeit das im Attribut tombstoneLifetime eingetragen ist aus dem AD-Papierkorb wiederherzustellen, so gilt es einen eigenen Wert im Attribut msDS-DeletedObjectLifetime zu definieren.
Enthält z.B. das Attribut tombstoneLifetime als Wert 180 und ist im Attribut msDS-DeletedObjectLifetime kein Wert eingetragen, so wird ein gelöschtes Objekt erst nach 360 Tagen vom Garbage Collection Prozess für immer aus dem AD entfernt.
Der Vorgang eines gelöschten AD-Objekts sowie seine Wiederherstellung, bei aktiviertem AD-Papierkorb unter Windows Server 2008 R2

Die Deleted Object Lifetime (DOL) und Recycled Object Lifetime (ROL) überprüfen und bearbeiten
-
Das Attribut msDS-DeletedObjectLifetime befindet sich im gleichen Container wie das Attribut tombstoneLifetime, nämlich in den Eigenschaften des Containers: CN=Directory Services,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne
-
Kontrollieren kann man das Attribut msDS-DeletedObjectLifetime z.B. mit Dsquery.
Der Befehl lautet:
Dsquery * "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Domäne" -attr msDS-DeletedObjectLifetime
Falls kein Wert angezeigt wird, gilt der Standardwert aus dem Attribut tombstoneLifetime von 60/180 Tagen (sofern nicht manuell geändert). Ansonsten gilt der angezeigte Wert in Tagen.
-
Das Attribut tombstoneLifetime lässt sich mit Dsquery folgendermaßen abfragen: Dsquery * "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne" -attr tombstoneLifetime
Falls kein Wert angezeigt wird, gilt als Wert 60 Tage. Ansonsten gilt auch hier der angezeigte Wert in Tagen.
-
Die DOL und das Attribut tombstoneLifetime lassen sich auch mit ADSIEdit überprüfen und bearbeiten. Dazu gilt es zuerst zum folgenden Container zu navigieren:
CN=Directory Services,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne
Dort befindet sich in den Eigenschaften des Containers zum einen das Attribut msDS-DeletedObjectLifetime und zum anderen das Attribut tombstoneLifetime. Ist im Attribut msDS-DeletedObjectLifetime ein Wert gesetzt, beträgt die DOL den eingetragenen Wert in Tagen. Steht im Attribut als Wert hingegen <Nicht festgelegt>, so beträgt die DOL den Wert aus dem Attribut tombstoneLifetime. Wenn im Attribut tombstoneLifetime als Wert <Nicht festgelegt> ist, so gilt als Wert 60 Tage. Ansonsten beträgt die Zeit den eingetragenen Wert in Tagen.
-
Die DOL lässt sich auch über die AD-Powershell bearbeiten. Dazu ist die AD-Powershell explizit als Administrator aufzurufen und der folgende Befehl einzugeben:
Set-ADObject -Identity “CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Domäne,DC=de” –Partition “CN=Configuration,DC=Domäne,DC=de” –Replace:@{“msDS-DeletedObjectLifetime” = Wert}
Das Attribut tombstoneLifetime lässt sich im Übrigen auch auf die gleiche Weise verändern: Set-ADObject -Identity “CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Domäne,DC=de” –Partition “CN=Configuration,DC=Domäne,DC=de” –Replace:@{“tombstoneLifetime” = Wert}
Aktivieren und nutzen des AD-Papierkorbs in der Active Directory-Powershell
Nach Ausführen von Dcpromo steht die Active Directore-Powershell mit 76 AD-Cmdlets auf dem DC zur Verfügung. Mit den beiden AD-Powershell Cmdlets Get-ADObject und Restore-ADObject ist es möglich, gelöschte AD-Objekte anzuzeigen sowie wiederherzustellen. Dabei ruft man mit Get-ADObject das gelöschte Objekt auf und übergibt es durch die Pipeline dem Restore-ADObject Cmdlet.
Zum Aktivieren des AD-Papierkorbs ist die folgende Vorgehensweise notwendig:
-
Im ersten Schritt muss mit „Organisations-Admin“ Rechten der AD-Papierkorb in der Root-Domäne und zwar für alle Domänen in der Gesamtstruktur aktiviert werden. Der Befehl dazu lautet:
Enable-ADOptionalFeature „Recycle Bin Feature“ -Scope ForestorConfigurationset -Target “Root-Domäne*” (*DNS- oder NetBIOS-Name der Root-Domäne)
Es folgt eine Warnung die besagt, dass bei Bestätigen der Meldung dieser Vorgang irreversibel ist. Nach dem Aktivieren des AD-Papierkorbs, lässt es sich nicht mehr deaktivieren!

-
Wenn der AD-Papierkorb aktiviert wurde, wird im Attribut msDS-EnabledFeature das sich in den Eigenschaften des Containers "CN=Partitions,CN=Configuration,DC=Root-Domäne" befindet, als Wert "CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne" eingetragen.
-
Der folgende Befehl zeigt detaillierte Informationen über die zur Verfügung stehenden Optional Feature im Active Directory an: Get-ADOptionalFeature -Filter * oder Get-ADOptionalFeature -Filter {Name -Like "*"}
-
Wurde ein Benutzerkonto aus Versehen gelöscht, so kann man sich das Konto wenn der sAMAccountName bekannt ist, auf diese Art anzeigen lassen: Get-ADObject -Filter {sAMAccountname –eq „Yusuf“} -Includedeletedobjects
Wiederherstellen lässt sich das Benutzerkonto dann mit diesem Befehl:
Get-ADObject -Filter {sAMAccountname –eq „Yusuf“} –Includedeletedobjects | Restore-ADObject
-
Ist der „Anzeigename“ eines Benutzerkontos bekannt, so lautet die Abfrage wie folgt. Aber Vorsicht, der „Anzeigename“ ist nicht der Name, der in der MMC Active Directory-Benutzer und -Computer in der Spalte „Name“ angezeigt wird. Denn dieser Wert wiederum, wird im Attribut name gespeichert.
Get-AdObject –Filter {displayname –eq “Yusuf Dikmenoglu”} –Includedeletedobjects
Wiederherstellen lässt sich das Benutzerkonto dann so:
Get-AdObject –Filter {displayname –eq “Yusuf Dikmenoglu”} –Includedeletedobjects | Restore-ADObject
-
Ein bestimmtes Benutzerkonto wird auf diese Weise angezeigt:
Get-ADObject -Filter {Name -Like “*Name*”} –Includedeletedobjects
Oder so:
Get-ADOject -Filter 'Name -Like "Yusuf*"' -Searchscope Subtree -Includedeletedobjects | ft -a
Wiederherstellen kann man dann das Benutzerkonto so: Get-ADObject -Filter {Name -Like “*Name*”} –Includedeletedobjects | Restore-ADObject
-
Dieser Befehl zeigt die gelöschten Objekte im Container "Deleted Objects" an: Get-ADObject -ldapFilter:”(msDS-LastKnownRDN=*)" -Includedeletedobjects
Wiederherstellen kann man ein Benutzerkonto auch wie folgt: Get-ADObject -ldapFilter:"(msDS-LastKnownRDN=<Benutzer>)" -Includedeletedobjects | Restore-ADObject
-
Der nachfolgende Befehl zeigt die gelöschten sowie recycelten Objekte mit detailierten Informationen an, die in einer bestimmten OU waren. Mit diesem Befehl können auch die recycelten Objekte angezeigt werden, die vor dem aktivieren des AD-Papierkorbs gelöscht wurden: Get-ADObject -Filter {Lastknownparent -eq "OU=<OU>,DC=Domäne,DC=de"} -Searchbase "CN=Deleted Objects,DC=Domäne,DC=de" -includedeletedobjects -properties *
-
Mit dem folgenden Befehl kann man sich alle gelöschten Objekte, egal welcher Klasse, aus dem versteckten Container „Deleted Objects“ der Domänenpartition anzeigen lassen: Get-ADObject –Searchbase „CN=Deleted Objects,DC=Domäne,DC=de“ –LdapFilter „(objectclass=*)“ –Includedeletedobjects | Format-List
-
Oder wer die Objekte jeglicher Klassen im schnellen Überblick haben möchte, verwendet diesen Befehl: Get-ADObject –Searchbase „CN=Deleted Objects,DC=Domäne,DC=de“ –LdapFilter „(objectclass=*)“ –Includedeletedobjects
-
Die gelöschten AD-Objekte der Klasse „User“ (z.B. Benutzerkonten) lassen sich wie folgt anzeigen:
Get-ADObject –Searchbase „CN=Deleted Objects,DC=Domäne,DC=de“ –LdapFilter „(objectclass=User)“ –IncludedeletedObjects
-
Wurde ausversehen eine OU mit etlichen Benutzern gelöscht, so muss zuerst die OU wiederhergestellt werden, ehe dann die Benutzer wiederhergestellt werden können. Doch bevor die OU wiederhergestellt werden kann, wird die GUID der gelöschten OU benötigt. Diese erfährt man durch das Attribut lastknownparent eines Benutzers, das sich in der OU befand. Der Befehl würde so aussehen: Get-ADOject -filter 'name -like "Yusuf*"' -searchscope subtree -Includedeletedobjects -properties lastknownparent
Dann kann mit diesem Befehl zuerst die OU wiederhergestellt werden:
Restore-ADObject -identity <GUID der OU>
Alle Objekte die sich in der OU befanden, können mit diesem Befehl wiederhergestellt werden: Get-ADObject -ldapfilter "(lastknownparent=OU=<OU>,DC=Domäne,DC=TLD)" -Includedeletedobjects | Restore-ADObject
Die AD-Powershell im Windows Server 2008 R2
Anzeigen und Wiederherstellen der gelöschten Objekte aus dem AD-Papierkorb mit ADRestore.NET und ADRestore
-
Das Tool ADRestore.NET muss zuerst installiert werden, lässt sich dann aber sehr simpel mit der Maus bedienen und ist vor allem selbsterklärend. Die gelöschten Objekte lassen sich mit einem Mausklick anzeigen und mit einem weiteren wiederherstellen.
ADRestore.NET
-
Das Kommandozeilentool ADRestore lässt sich nach dem Download ohne eine Installation in einer Kommandozeile ausführen. Auch dieses Tool ist selbsterklärend.
ADRestore
-
Ein weiteres kostenloses Tool ist das ADRecycleBin. Es zeigt die gelöschten Objekte an und stellt diese wieder her.
ADRecycleBin
Anzeigen und Wiederherstellen der gelöschten Objekte aus dem AD-Papierkorb mit LDP
Die gelöschten Objekte im Container Deleted Objects lassen sich ebenfalls mit dem im Betriebssystem integrierten LDAP-Tool LDP anzeigen sowie wiederherstellen lassen.
Die Vorgehensweise wäre wie folgt:
-
Zuerst gilt es auf dem DC unter Start-Ausführen-LDP.exe das Tool aufzurufen.
-
Unter Optionen ist dann in den Steuerelementen im Feld Vordefiniert laden die Option Return deleted objects auszuwählen. Wählt man an dieser Stelle stattdessen die Option Return recycled objects aus, kann man sich bei gleicher Vorgehensweise die „recycelten Objekte“ anzeigen lassen.
-
Danach wählt man unter Remotedesktopverbindung den Punkt Gebunden... aus. Grandiose Bezeichnungen.
-
Anschließend gibt man unter Ansicht-Struktur den Distinguished Name (DN) der entsprechenden (meistens) Domänenpartition an, z.B. DC=blog,DC=dikmenoglu,DC=de
-
Nun erweitert man zuerst auf der linken Seite die entsprechende Verzeichnispartition und erweitert auch den Eintrag Deleted Objects mit einem Doppelklick. Jetzt erscheinen die gelöschten Objekte.
-
Mit einem Rechtsklick auf das wiederzuherstellende Objekt, wählt man den Punkt Ändern aus.
-
Unter Eingabe bearbeiten gibt man im Feld Attribut isDeleted ein.
-
Das Feld Werte bleibt leer.
-
Unter Vorgang wählt man Löschen und klickt auf Eingabe.
-
Jetzt müssen die gleichen Schritte mit dem Attribut distinguishedName durchgeführt werden.
-
Im Feld Werte ist nun der original DN des Objekts einzugeben. Daher ist es stets sinnvoll, eine Liste mit allen Objekten und deren DN zu besitzen.
-
Unter Vorgang wählt man Ersetzen und klickt auf Eingabe.
-
Nach dem aktivieren von Erweitert führt man die Wiederherstellung mit einem Klick auf Ausführen durch.
Fallbeispiele
-
Wenn z.B. ein Benutzer Mitglied der Gruppe1 ist, beide Objekte nacheinander gelöscht werden, aber nur das Benutzerkonto aus dem AD-Papierkorb wiederhergestellt wird, befindet sich anschließend das Benutzerkonto logischerweise nicht mehr in der Gruppe1. Wird jedoch die Gruppe1 ebenfalls aus dem AD-Papierkorb wiederhergestellt, werden automatisch Forward- und Back-Link wiederhergestellt. Das Benutzerkonto ist wieder Mitglied der Gruppe1.
-
Existiert eine Gruppenverschachtelung, so das also GG1 Mitglied von GG2, diese wiederum Mitglied in GG3 ist und GG2 gelöscht wird, verschwinden ebenfalls die Gruppenzugehörigkeiten. Auch hier werden beim wiederherstellen der GG2 aus dem AD-Papierkorb, die Gruppenzugehörigkeiten und somit das Forward- und Back-Link automatisch wiederhergestellt.
Weitere Informationen:
2.175 Attribute msDS-DeletedObjectLifetime 2.109 Attribute isDeleted 2.112 Attribute isRecycled 2.179 Attribute msDS-EnabledFeature The Active Directory database garbage collection process Useful shelf life of a system-state backup of Active Directory Viewing deleted objects in Active Directory
Microsoft veröffentlicht im Herbst 2009 sein nächstes Serverbetriebssystem namens Windows Server 2008 R2. Das Minor Release wird ausschließlich in der x64-Bit Version und nicht mehr wie bisher in der 32-Bit Version erscheinen.
Ein Highlight-Feature im neuen Serverbetriebssystem stellt der Active Directory-Papierkorb dar, mit dem gelöschte Objekte samt allen Informationen (inklusive der Backlinks, wie z.B. die Gruppenmitgliedschaften eines Benutzers) wiederhergestellt werden können. Somit hat ein versehentliches löschen von Active Directory-Objekten in den Active Directory Domain Services (AD DS) und Active Directory Lightweight Directory Services (AD LDS, ehemals Active Directory Application Mode, kurz ADAM) keine weiteren Folgen. Weder entsteht bei der Wiederherstellung ein Verlust von Informationen, noch muss dafür der DC im Modus Verzeichnisdienstwiederherstellung gestartet werden.
Die Voraussetzung um dieses Feature nutzen zu können, ist der Gesamtstrukturfunktionsmodus Windows Server 2008 R2. Das bedeutet, alle Domänencontroller (DC) in allen Domänen einer Gesamtstruktur müssen unter Windows Server 2008 R2 betrieben werden.

Was ist möglich
-
Ein Windows Server 2008 R2 DC kann als zusätzlicher Domänencontroller zu einer Windows 2000 32bit Domäne hinzugefügt werden.
-
Ein Windows Server 2008 R2 DC kann als zusätzlicher Domänencontroller einer Windows Server 2003 bzw. Windows Server 2003 R2 Domäne hinzugefügt werden. Dabei können die bestehenden DCs sowohl unter einem 32bit, 64bit als auch iA64 Serverbetriebssystem betrieben werden.
-
Ein Windows Server 2008 R2 DC kann als zusätzlicher Domänencontroller einer Windows Server 2008 Domäne hinzugefügt werden. Die bereits existierenden DCs können ebenfalls unter 32bit, 64bit oder iA64 laufen.
-
Ein Windows Server 2003 ab SP2 64bit DC oder Windows Server 2003 R2 mit SP2 64bit DC kann per Inplace-Update auf Windows Server 2008 R2 aktualisiert werden.
-
Ein 64bit Windows Server 2008 DC kann per Inplace-Update auf Windows Server 2008 R2 aktualisiert werden.
-
Ein 64bit Windows Server 2008 Core DC kann per Inplace-Update auf einen Windows Server 2008 R2 Core aktualisiert werden.
Hinweis 1: Auch wenn die Mindestvoraussetzung für ein Inplace-Update ein Windows Server 2003 SP2 ist, sollte das System natürlich vor dem Update auf dem aktuellen Service Pack- sowie Patch-Stand sein. Wobei es ohnehin ratsam wäre, die Domänenaktualisierung durch einen zusätzlichen DC durchzuführen.
Hinweis 2: Vor einem Inplace-Update muss überprüft werden, ob auf dem DC die installierten Applikationen auch weiterhin unter Windows Server 2008 R2 noch funktionieren. Ein Telefonat mit dem Hersteller der Applikation sollte das schnell klären.
Was ist nicht möglich
- Ein Inplace-Update von Windows NT auf Windows Server 2008 R2 wird nicht unterstützt. Es müsste zuerst ein Inplace-Update des NT-PDCs auf Windows Server 2003 SP1/SP2/2003 R2 und anschließend auf Windows Server 2008 R2 durchgeführt werden. Oder man migriert mit ADMT in eine Windows Server 2008 R2 Domäne.
Durch die Änderung des Secure Channel (die Option "Secure channel: Require strong (Windows 2000 or later) session key" wurde nun mit Windwos Server 2008 R2 hard coded und lässt sich nicht mehr abschwächen wie es noch unter Windows Server 2008 möglich ist) zugunsten der Sicherheit ist es nicht mal möglich, Windows NT Clients sowie NT Mitgliedsserver in einer Windows Server 2008 R2 Domäne zu betreiben! Des Weiteren kann auch keine Vertrauensstellung zwischen einer Windows Server 2008 R2 und einer Windows NT Domäne erstellt werden.
- Ein DC älter als ein Windows Server 2003 SP2 x64-System, kann nicht per Inplace-Update auf Windows Server 2008 R2 aktualisiert werden.
- Ein Inplace-Update von Windows Server 2003 SP1/SP2/2003 R2 x64 oder Windows Server 2008 x64 Vollinstallation (kein Server Core), ist auf den Windows Server 2008 R2 Core nicht möglich.
- Ein Inplace-Update eines x64 Windows Server 2008 Core DCs kann nicht auf Windows Server 2008 R2 Vollinstallation durchgeführt werden.
Windows Server 2008 Core
- Ein Cross-Update von einem x86 auf x64 System wird nicht unterstützt. Ebenso wenig wie von einem iA64 auf x64 System. Das bedeutet, es ist nicht möglich auf einem 32bit Windows Server 2003 SP1/SP2/2003 R2/2008 DC eine Windows Server 2008 R2 DVD einzulegen, um das System per Inplace-Update zu aktualisieren.
- Ein Cross-Update auf eine andere Betriebssystem-Sprache wird nicht unterstützt. Als Beispiel: Auf einem deutschen Windows Server 2003 SP2 x64 DC wird die englische Windows Server 2008 R2 DVD eingelegt um den DC, auf einen englischen Windows Server 2008 R2 DC zu aktualisieren.
Die Voraussetzungen für eine Windows 2000/2003/2003 R2/2008 Gesamtstruktur, damit der erste Windows Server 2008 R2 DC hinzugefügt werden kann
- Die Domäne in der man den Windows Server 2008 R2 DC hinzufügen möchte, muss sich im einheitlichen Domänenfunktionsmodus (entweder Windows 2000 pur, Windows Server 2003 oder Windows Server 2008) befinden. Denn wenn sich die Domäne nicht im einheitlichen Domänenfunktionsmodus befindet, lässt sich der Befehl Adprep /Domainprep /Gpprep nicht ausführen. In welchem Modus sich der Gesamtstrukturfunktionsmodus befindet, spielt dabei keine Rolle.
- Ist jedoch der Einsatz eines Windows Server 2008 oder Windows Server 2008 R2 RODCs in der Gesamtstruktur geplant, so ist das erst ab der Gesamtstrukturfunktionsebene Windows Server 2003 möglich. Des Weiteren muss sich bereits ein Windows Server 2008 DC oder Windows Server 2008 R2 DC in der Domäne befinden, in der man den RODC hinzufügen möchte.
- Alle Domänencontroller in der Gesamtstruktur sollten sich mindestens auf Windows 2000 Server mit Service Pack 4 oder höher befinden.
Schritt für Schritt-Anleitung für eine 32bit oder x64 Windows 2000/2003/2003 R2/2008 Gesamtstruktur, damit der erste Windows Server 2008 R2 DC hinzugefügt werden kann
-
Zuerst muss das Active Directory Preparation Tool (kurz ADPREP), das sich auf der Windows Server 2008 R2 DVD im Verzeichnis <DVD-Laufwerk>:\Support\Adprep befindet, mit dem Parameter /Forestprep auf dem Schema-Master ausgeführt werden. Allerdings befinden sich im Adprep-Verzeichnis zwei ADPREP-Dateien. Eine „Adprep.exe“ für x64-DCs und eine „Adprep32.exe“ für 32bit-DCs. Mit ausführen von Adprep32 /Forestprep auf einem 32bit Schema-Master, wird die Gesamtstruktur auf Windows Server 2008 R2 aktualisiert. Befindet sich der Schema-Master auf einem x64 DC, so lautet der Befehl Adprep /Forestprep.
Hinweis: Im weiteren Verlauf des Artikels wird die x32Bit Version des Adpreps angegeben, da sicherlich in den meisten Unternehmen noch hauptsächlich 32bit DCs existieren.
Der Parameter /Forestprep muss und kann nur ein einziges Mal in der Gesamtstruktur ausgeführt werden. Dabei muss das Benutzerkonto mit dem das ADPREP ausgeführt wird, Mitglied der folgenden drei Gruppen sein:
- Organisations-Admins - Schema-Admins - Domänen-Admins in der Domäne, in der der Schema-Master Mitglied ist Ruft man das Adprep32 /Forestprep nicht auf dem Schema-Master auf, bringt das Tool den Hinweis, dass die Gesamtstrukturaktualisierung nur auf dem Schema-Master durchgeführt werden kann und bricht den Vorgang ab. Microsoft empfiehlt das Verzeichnis „Adprep“ (mit dem kompletten Inhalt!) vorher auf den DC zu kopieren, um z.B. Lesefehler des DVD-Laufwerks während der Ausführung von Adprep zu vermeiden.
An error occurs when you run the ADPREP/FORESTPREP command on a Windows Server 2003-based or Windows Server 2008-based computer: "An attribute with the same link identifier already exists"
-
Das Adprep32 /Forestprep aktualisiert die Gesamtstruktur auf Windows Server 2008 R2, in dem neue Attribute sowie Klassen dem Schema hinzugefügt bzw. bestehende (z.B. die Berechtigungen) geändert werden. Nach dem Aufruf von Adprep32 /Forestprep werden abhängig von der Schema-Version die LDF-Dateien, die zur Schema-Aktualisierung benötigt werden, aus dem Verzeichnis „Support\Adprep“ auf dem DC in das Verzeichnis „%windir%\system32“ kopiert.
In einer Windows 2000 Gesamtstruktur werden die LDF-Dateien ab sch14.ldf, in einer Windows Server 2003 ab sch31.ldf, in einer Windows Server 2003 R2 ab sch32.ldf und in einer Windows Server 2008 Umgebung ab sch45.ldf bis zur sch47.ldf in das Schema importiert. Das Schema wird somit auf die Version 47 aktualisiert.
Die Schema-Versionen sind (in Dezimal):
- Schema-Version 13 = Windows 2000 RTM mit allen Service Packs - Schema-Version 30 = Windows Server 2003 RTM mit allen Service Packs - Schema-Version 31 = Windows Server 2003 R2 RTM mit allen Service Packs - Schema-Version 44 = Windows Server 2008 RTM mit allen Service Packs - Schema-Version 47 = Windows Server 2008 R2 mit allen Service Packs
Die Schema-Version kann man sich auf jedem DC in der Gesamtstruktur zum einen in der Registry in dem folgenden Pfad ansehen:
HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\<Schema Version> Zum anderen lässt sich im Attribut objectVersion, das sich in den Eigenschaften der Schema-Partition CN=Schema,CN=Configuration,DC=<Root-Domäne>,DC=<TLD> befindet, die Schemaversion anzeigen (z.B. mit ADSIEdit.msc oder LDP.exe).
Auch mit Dsquery lässt sich die Schema-Version abfragen. Der Befehl lautet wie folgt: dsquery * CN=Schema,CN=Configuration,DC=Root-Domäne -Scope Base -attr objectVersion
-
Wenn das Adprep32 /Forestprep durchgeführt wurde, wird in der Konfigurationspartition der Container CN=ActiveDirectoryUpdate,CN=ForestUpdates,CN=Configuration,DC=<Root-Domäne> erstellt. Der Container selbst bleibt leer. Das Attribut Revision in den Eigenschaften des Containers CN=ActiveDirectoryUpdate erhält den Wert 5. Danach sollte sichergestellt werden, dass sich dieser Container zuerst auf alle DCs der Gesamtstruktur repliziert, um dann den nächsten Schritt mit Adprep durchzuführen.
In erster Linie sollten die DC`s der einzelnen Domänen die Aktualisierung empfangen haben, die die FSMO-Rolle des Infrastruktur-Master innehaben. Dazu gilt es den nächsten Punkt zu beachten.
Hinweis für Windows Server 2008 Umgebungen: Falls schon ein Windows Server 2008 DC in der (z.B. Windows 2000 oder Windows Server 2003) Domäne besteht oder es sich um eine reine Windows Server 2008 Umgebung handelt, existiert bereits der Container CN=ActiveDirectoryUpdate. Das Attribut Revision enthält dagegen als Wert 2. Wird nun das Adprep32 /Forestprep von der Windows Server 2008 R2 DVD ausgeführt, wird der Wert auf 5 geändert.
Hinweis: Im Gegensatz zu Windows Server 2008 Zeiten kann nun auch auf einem deutschen Schemamaster das ADPREP von einer englischen Windows Server 2008 R2 DVD ausgeführt werden. Zu Zeiten Windows Server 2008 gab es an dieser Stelle ein Sprach-Problem und nach dem Ausführen von ADPREP passierte einfach nichts, es erschien noch nicht einmal eine Fehlermeldung. Aber: Existiert ein englischer Schemamaster und man führt das ADPREP von einer deutschen Windows Server 2008 R2 DVD aus, besteht der Fehler weiterhin. Der Cursor blinkt in der nächsten Zeile ohne das irgendetwas passiert. Besteht ein englischer Schemamaster, kann man entweder den Schemamaster auf einen deutschen DC verschieben und danach das ADPREP von einer deutschen DVD ausführen oder man führt das ADPREP gleich von einer englischen DVD aus! ADPREP "multi-language"
-
Im zweiten Schritt muss das Adprep32 mit den Parametern /Domainprep /Gpprep auf dem Infrastruktur-Master in der Domäne, in der man den Windows Server 2008 R2 als DC hinzufügen möchte, ausgeführt werden. Das Benutzerkonto, mit dem dieser Befehl ausgeführt wird, muss Mitglied der Sicherheitsgruppe Domänen-Admins sein. Mit Ausführen von /Domainprep /Gpprep wird die Domäne auf Windows Server 2008 R2 aktualisiert. Der Parameter /Domainprep bewirkt, dass neue Objekte erstellt sowie die ACLs an diversen Objekten in der Domänenpartition geändert werden. Der Parameter /Gpprep sorgt dafür, dass die Berechtigungen der Gruppenrichtlinienobjekte die sich im Sysvol-Verzeichnis befinden, angepasst werden. Führt man diesen Befehl aus, noch bevor die Gesamtstrukturaktualisierung auf den Infrastruktur-Master repliziert wurde, bricht der Vorgang ab. Dieser bricht auch dann ab, wenn der Befehl nicht auf dem Infrastruktur-Master ausgeführt wird. Durch Ausführen dieses Befehls wird der folgende Container in der Domänenpartition erstellt: CN=ActiveDirectoryUpdate,CN=DomainUpdates,CN=System,DC=<Domäne>
Auch dieser Container bleibt leer. Das Attribut Revision das sich in den Eigenschaften des Containers CN=ActiveDirectoryUpdate befindet, bekommt ebenfalls den Wert 5. Es ist möglich zuerst das Adprep lediglich mit dem Parameter /Domainprep auszuführen und zu einem späteren Zeitpunkt die Berechtigungen der GPOs, mit Adprep /Domainprep /Gpprep zu aktualisieren. Empfehlenswert ist jedoch, beide Parameter in einem Schritt durchzuführen.
Hinweis für Windows Server 2008 Umgebungen: Wenn sich aber bereits ein Windows Server 2008 DC in der (z.B. Windows 2000 oder Windows Server 2003) Domäne befindet oder es sich um eine reine Windows Server 2008 Umgebung handelt, besteht bereits der Container CN=ActiveDirectoryUpdate in der Domänenpartition. Der Wert im Attribut Revision wird dann von 3 auf 5 geändert. In den Umgebungen wo bereits ein Windows Server 2008 DC existiert, ist es auch nicht notwendig den Parameter /Gpprep auszuführen, da bereits die Berechtigungen der GPOs im Sysvol-Verzeichnis angepasst wurden. Das gilt aber nur für die Umgebungen, in denen bereits beim hinzufügen des zusätzlichen Windows Server 2008 DCs der Parameter /Gpprep mit angegeben wurde. In einer Windows Server 2008 Domäne ist der Parameter /Gpprep ohnehin nicht notwendig. Es ist aber nicht weiter tragisch wenn der Parameter doch mit angegeben werden sollte, denn der Assistent bringt lediglich den Hinweis, dass die Berechtigungen der GPOs bereits angepasst wurden.
-
Wenn der Einsatz eines Read-Only Domain Controllers (RODC) in irgendeiner Domäne der Gesamtstruktur geplant ist, dann ist das Adprep32 mit dem Parameter /Rodcprep lediglich einmalig aufzurufen. Der DC, auf dem dieser Befehl ausgeführt wird, muss auch nicht der Träger der FSMO-Rollen sein. Beim Ausführen dieses Befehls werden die einzelnen Infrastruktur-Master der Domänen kontaktiert, um die Berechtigungen (Security Descriptor, SD) der Domänen- sowie Anwendungsverzeichnispartitionen DomainDNSZones und ForestDNSZones zu aktualisieren.
Es reicht völlig aus, diesen Befehl erst vor dem Hinzufügen des ersten RODC`s in der Gesamtstruktur auszuführen. Das Benutzerkonto, mit dem dieser Befehl ausgeführt wird, muss Mitglied in der Sicherheitsgruppe Organisations-Admins sein. Nach Ausführung von /Rodcprep wird der folgende Container, der ebenfalls leer bleibt, erstellt: CN=ActiveDirectoryRodcUpdate,CN=ForestUpdates,CN=Configuration,DC=<Root-Domäne>.
Das Attribut Revision in den Eigenschaften des Containers, erhält als Wert 2.
Hinweis für Windows Server 2008 Umgebungen: Existiert bereits ein Windows Server 2008 DC in der (z.B. Windows 2000 oder Windows Server 2003) Domäne oder handelt es sich um eine reine Windows Server 2008 Umgebung, so kann ein Windows Server 2008 R2 als RODC zur Domäne hinzugefügt werden. Es ist nicht unbedingt notwendig, dass bereits ein Windows Server 2008 R2 DC in der Domäne besteht um einen Windows 2008 R2 als RODC zur Domäne hinzuzufügen. Denn die Voraussetzungen um einen RODC zur Domäne hinzuzufügen sind schließlich, dass sich der Gesamtstrukturfunktionsmodus mindestens auf „Windows Server 2003“ befindet, sich bereits ein Windows Server 2008 DC in der Domäne befindet und das Adprep32 /Rodcprep ausgeführt wurde.
Read-Only Domain Controller (RODC) Die Installation eines RODC
-
Wird eine neue Gesamtstruktur unter Windows Server 2008 R2 erstellt, so ist das Ausführen von Adprep/Adprep32 keineswegs notwendig. Weder der Parameter /Forestprep, noch /Domainprep /Gpprep oder /Rodcprep müssen angewendet werden.
-
Es wird bei jedem Ausführen von Adprep im Verzeichnis %Systemroot%\Debug\Adprep\Logs ein Ordner erstellt, dass als Namen das aktuelle Datum sowie die Uhrzeit erhält. Darin befindet sich (neben anderen) das Adprep-Protokoll mit dem Namen ADPrep.log, welches einen detaillierten Bericht zum Vorgang liefert. Wenn Adprep abbrechen oder einen Fehler melden sollte, ist dieses Protokoll bei der Fehlersuche hilfreich.
Debug Protokollierung
-
Nach der Domänenaktualisierung auf Windows Server 2008 R2, kann nun der neue Server als "zusätzlicher DC der bestehenden Domäne" hinzugefügt werden. Während dem Heraufstufen zum DC sollte an entsprechender Stelle, dass DNS mit installiert und zusätzlich der globale Katalog aktiviert werden. Anschließend sollten noch die FSMO-Rollen auf den Windows Server 2008 R2 DC verschoben werden.
Globaler Katalog (Global Catalog – GC) Der PDC-Emulator Die FSMO-Rollen verschieben
Szenario 1
Eine Domänenaktualisierung von Windows 2000 auf Windows Server 2008 R2 durchführen
- In einer Windows 2000 Active Directory Umgebung kann die Domänenaktualisierung auf Windows Server 2008 R2 über einen zusätzlichen Windows Server 2008 R2 DC realisiert werden. Dazu ist zuerst die Schritt für Schritt-Anleitung die am Anfang dieses Artikels beschrieben ist durchzuführen. Anschließend kann ein Windows Server 2008 R2 als zusätzlicher Domänencontroller der bereits bestehenden Domäne hinzugefügt werden.
- Es ist zuerst ein Inplace-Update von Windows 2000 auf Windows Server 2003 mit mindestens dem Service Pack 2 (besser aktueller) durchzuführen. Erst dann kann per Inplace-Update auf Windows Server 2008 R2 aktualisiert werden, natürlich auch erst nach Ausführung der Schritt für Schritt-Anleitung.
Szenario 2
Eine Domänenaktualisierung von Windows Server 2003 auf Windows Server 2008 R2 durchführen
- Wie in einer Windows 2000 Gesamtstruktur sollte auch in einer Windows Server 2003 Gesamtstruktur die Domänenaktualisierung über einen zusätzlichen Windows Server 2008 R2 Domänencontroller erfolgen. Selbstverständlich auch nur dann, wenn die Schritt für Schritt-Anleitung durchgeführt wurde.
- Ist mindestens das Service Pack 2 für den Windows Server 2003 auf dem DC installiert, so kann mit einem Inplace-Update der Windows Server 2003 DC auf Windows Server 2008 R2 aktualisiert werden. Die Schritt für Schritt-Anleitung die am Anfang dieses Artikels beschrieben wird, ist dabei zuerst durchzuführen.
Szenario 3
Eine Domänenaktualisierung von Windows Server 2003 R2 auf Windows Server 2008 R2 durchführen
- Da in einem Windows Server 2003 R2 ein Windows Server 2003 mit mindestens dem Service Pack 2 enthalten ist, kann nach vorheriger Ausführung der Schritt für Schritt-Anleitung ein zusätzlicher Windows Server 2008 R2 DC zur bestehenden Domäne hinzugefügt werden.
- Des Weiteren kann ein Windows Server 2003 R2 SP2 DC per Inplace-Update auf Windows Server 2008 R2 aktualisiert werden, wenn vorher die Schritt für Schritt-Anleitung durchgeführt wurde.
Szenario 4
Eine Domänenaktualisierung von Windows Server 2008 auf Windows Server 2008 R2 durchführen
- Eine Domänenaktualisierung kann durch hinzufügen eines zusätzlichen Windows Server 2008 R2 DCs durchgeführt werden. Die Schritt für Schritt-Anleitung am Anfang des Artikels gilt es zuerst durchzuführen. Hier in Kurzform: Zuerst muss auf dem Schema-Master das Adprep32 /Forestprep und auf dem Infrastruktur-Master das Adprep32 /Domainprep ausgeführt werden.
- Ein Windows Server 2008 DC kann auch per Inplace-Update auf Windows Server 2008 R2 aktualisiert werden. Vorher muss ebenfalls auf dem Schema-Master das Adprep32 /Forestprep und auf dem Infrastruktur-Master das Adprep32 /Domainprep durchgeführt werden.
Szenario 5
Eine Domänenaktualisierung von einem x64Bit Windows Server 2008 Core auf Windows Server 2008 R2 Core durchführen
-
Die Domänenaktualisierung kann hier ebenfalls durch hinzufügen eines zusätzlichen Windows Server 2008 R2 Core DCs erfolgen. Natürlich muss auch in diesem Fall vorher das ausführen von Adprep32 /Forestprep auf dem Schema-Master und das Adprep32 /Domainprep auf dem Infrastruktur-Master erfolgen.
-
Der x64Bit Windows Server 2008 Core DC lässt sich per Inplace-Update auf einen Windows Server 2008 R2 Core aktualisieren. Auch hier gilt es im ersten Schritt auf dem Schema-Master das Adprep /Forestprep und im zweiten, auf dem Infrastruktur-Master das Adprep /Domainprep auszuführen.
Szenario 6
Eine Windows Server 2008 R2-Subdomäne in einer Windows 2000/2003/2003 R2/2008 Gesamtstruktur erstellen
- Soll in einer Gesamtstruktur die erste Windows Server 2008 R2-Domäne und somit der erste Windows Server 2008 R2-DC zur Gesamtstruktur hinzugefügt werden, so muss lediglich auf dem Schema-Master das Adprep /Forestprep ausgeführt werden. Anschließend kann mit dem Windows Server 2008 R2 die Subdomäne erstellt werden.
Befindet sich in einer Windows 2000 Umgebung die FSMO-Rolle des Domänennamenmasters auf einem Windows 2000 DC, wird das Attribut msDS-BehaviorVersion im entsprechenden crossRef-Objekt nicht aktualisiert, wenn eine Subdomäne bzw. eine neue Domänenstruktur (Tree) unter Windows Server 2008 oder Windows Server 2008 R2 erstellt wird. In diesem Fall kann es bei einigen Anwendungen zu Kompatibilitätsproblemen kommen. Insbesondere wenn mit DCDIAG die AD-Replikation überprüft werden soll, schlägt der Replikationstest fehl. Die Abhilfe dieses Problems ist, die Rolle des Domänennamenmasters entweder auf einen Windows Server 2003, Windows Server 2008 oder Windows Server 2008 R2 DC zu übertragen, bevor eine neue Subdomäne bzw. eine neue Domänenstruktur (Tree) erstellt wird.
Weitere Informationen: Den ersten Windows Server 2008 DC zu einer Windows 2000/2003/R2 Gesamtstruktur hinzufügen Migration von Windows Server 2000 auf Windows Server 2003 (Inplace-Update) Schemaupdate beim Windows Server 2003 R2 Einen zusätzlichen DC in die Domäne hinzufügen Die AD-Powershell im Windows Server 2008 R2 Das Active Directory Preparation Tool – ADPREP Domänen- und Gesamtstrukturfunktionsmodus Windows Server 2008 R2 Upgrade Paths Upgrading Active Directory Domains to Windows Server 2008 and Windows Server 2008 R2 AD DS Domains
Microsoft hat auf 563 Seiten den Active Directory Domain Services Operations Guide veröffentlicht.
Darin erhält man Informationen über die Administration und Verwaltung einer Active Directory Domain Services (AD DS) Umgebung unter Windows Server 2008.
Den Download zum Whitepaper findet ihr hier:
Active Directory Domain Services Operations Guide
Viel Spass beim lesen.
So einfach wie die Frage im ersten Moment klingt, so schwierig ist sie zu beantworten. Gleich vorweg, letztendlich lässt sich diese Frage nicht pauschal beantworten, denn es gibt keine Faustformel dazu, die Anzahl der benötigten DCs zu berechnen.
Aber eins kann man mit Gewissheit empfehlen, jede Domäne sollte (um nicht zu sagen müsste) wegen der Ausfallsicherheit und Verfügbarkeit mindestens zwei Domänencontroller enthalten.
Damit ist zumindest sichergestellt, dass bei einem DC-Crash der andere DC die Domäne noch am Leben erhält. In vielen Umgebungen wird die Anzahl der DCs an der Ausfallsicherheit, der Standortverteilung oder der Anzahl der Benutzer pro Standort bestimmt. Die Bandbreitenanbindung bei bestehen von mehreren Standorten ist für die Anzahl an DCs, ebenfalls von elementarer Bedeutung.
Es kommt bei der Ermittlung der genauen Anzahl an DCs immer auf die Umgebung an.
Wie viele DCs in der Domäne benötigt werden, hängt außerdem von den Ansprüchen des Unternehmens ab. Natürlich hat ein großes Unternehmen mit vielen Standorten andere Ansprüche bzgl. der hohen Verfügbarkeit, Fehlertoleranz sowie Redundanz, als kleinere und mittlere Unternehmen (KMU) mit vielleicht nur einem Standort.
Die folgenden Kriterien helfen bei der Definition der Anzahl an DCs pro Domäne:
-
Wie viele AD-Standorte existieren?
-
In wie vielen Ländern?
-
Mit welcher (stabilen?) Bandbreite?
-
Wie viele Benutzer existieren pro Standort?
-
Wie viel Last besteht auf den DCs während der Benutzerauthentifizierungen?
-
Existiert eine Exchange-Umgebung?
-
Existieren Applikationen die vom AD abhängig sind?
-
Gibt es Standorte, die besonders AD-lastig arbeiten?
-
Existieren Standorte, in denen mehr gesamtstrukturweite Abfragen, sprich der globale Katalog überwiegend beansprucht wird?
-
Besteht aktuelle Hardware für die Domänencontroller?
Alle diese Faktoren helfen die Anzahl der DCs innerhalb einer AD-Domäne festzulegen. Jedoch schließt das Installieren von mehreren DCs natürlich keineswegs eine regelmäßige Datensicherung des System-State aus. Diese muss ohnehin durchgeführt werden. Die Sicherung des Systemstatus ist das Mindeste, was auf einem DC gesichert werden muss!
Bei der Hardware der DCs kommt es insbesonders auf die CPU (welcher Prozessor und wie viele existieren?), Festplattenspeicher und vor allem dem Arbeitsspeicher an. Denn idealerweise sollte die Active Directory-Datenbank „NTDS.dit“ in den Arbeitsspeicher geladen werden können. Dabei läuft das Active Directory in dem LSASS Prozess.
Microsoft stellt auf der folgenden Seite seine Tests dar, die sie vor einigen Jahren mit HP-Proliant Servern durchgeführt hatten. Dort gewinnt man ebenfalls einige Anhaltspunkte zu der benötigten Anzahl an DCs.
Determining the Minimum Number of Domain Controllers Required
Weitere Ansätze über die Anzahl und Hardwareausstattung der DCs, liefern diese Seiten:
Step B2: Determine the Number of Domain Controllers Planning Domain Controller Capacity: Active Directory
Größere Unternehmen mit mehreren Standorten sollten sich dieses Whitepaper durchlesen:
Windows Server 2003 Active Directory Branch Office Guide
Oftmals ist es gerade in kleineren und mittleren Unternehmen so, das die Maschine die als einziger DC fungiert, nicht nur die Funktion eines DCs wahrnimmt. Dieser ist Datei- sowie Applikationsserver und wenn nicht sogar noch Mailserver zugleich (SBS). In diesen Umgebungen kann man sich oftmals keinen dedizierten zweiten DC leisten. Dabei reicht schon eine nicht ganz veraltete Client-Hardware aus, um auf diesem einen weiteren DC zu installieren (natürlich wird eine weitere Server-Lizenz benötigt). Falls dennoch kein zweiter DC installiert werden kann, ist umso mehr auf die regelmäßige und funktionierende System-State Sicherung zu achten.
Wenn es aber auf dem einzigen DC zu Performanceproblemen kommt, sollte eine Auslastungsanalyse über einen längeren Zeitraum durchgeführt werden (z.B. eine Woche). Dabei ist ein besonderes Augenmerk auf den Speicherverbrauch der Lsass.exe zu werfen. Erst nach der Analyse lässt sich ableiten, ob der DC überlastet bzw. die Hardware nicht ausreichend ist. Die Lösung könnte dann z.B. eine aktuelle Hardware, ein x64-DC oder ein weiterer DC sein. Wobei mit Blick auf das nächste Serverbetriebssystem, der Windows Server 2008 R2 ohnehin nur noch als x64-Bit Version ausgeliefert wird.
Weitere Informationen: Memory usage by the Lsass.exe process on domain controllers that are running Windows Server 2003 or Windows 2000 Server
Die Unternehmen entwickeln sich und ihre Produkte weiter. Stetig müssen sich die Firmen an die Marktansprüche und an die Kundenwünsche anpassen, um ihr Business zu betreiben. So wie sich die Unternehmen an die Marktansprüche anpassen müssen, so muss sich auch die IT innerhalb eines Unternehmens anpassen, um den wirtschaftlichen Interessen des Unternehmens auch aus der IT-Sicht gerecht zu werden.
Die Firmen die bereits schon seit längerem eine Active Directory-Umgebung betreiben, denken vielleicht darüber nach ihre Gesamtstruktur zu verändern. Ihre schon in die Jahre gekommene Struktur spiegelt evtl. die heutigen Ansprüche des Unternehmens nicht wieder. Für die damalige Zeit war das gewählte Multidomänenmodell vielleicht notwendig und das richtige Domänenmodell. Aber heute ist das damals gewählte Domänendesign in die Jahre gekommen und genügt evtl. weder den heutigen Ansprüchen, noch ist es zeitgerecht.
Es kann viele Gründe dafür geben, warum eine Umstrukturierung der Gesamtstruktur sinnvoll wäre. Ein weiterer Grund für das Re-Design der Umgebung wäre z.B. der Domänenname. Eine Migration in eine neue Gesamtstruktur ist in vielen Umgebungen sinnvoller, als den Domänennamen zu ändern. Oder wenn Firmen fusionieren und die eine Firma in die andere migriert werden soll.
Ist erst mal die Entscheidung getroffen den Schritt einer Umstrukturierung zu gehen, sei es innerhalb einer Gesamtstruktur (Intra-Forest) oder in eine neue Gesamtstruktur zu migrieren (Inter-Forest, zwischen zwei Gesamtstrukturen), so gilt es als einer der nächsten Schritte das richtige Migrationswerkzeug zu wählen.
Auf der Suche im Internet nach einem Migrationstool stößt man recht schnell auf das kostenlose Werkzeug von Microsoft. Das Tool nennt sich Active Directory Migration Tool - ADMT. Aber neben dem ADMT stolpert man unter anderem über das kommerzielle Werkzeug aus dem Hause Quest. Der Quest Migration Manager for Active Directory (kurz QMMAD) ist das Pendant zu ADMT und kann einiges mehr als das wohlgemerkt kostenlose Tool von Microsoft. Aber neben Quest wäre noch das Migrationswerkzeug von NetIQ zu erwähnen (was hier jedoch nicht berücksichtigt wird).
Migrationsmöglichkeiten
Eine Domänenmigration kann auf verschiedene Wege mit verschiedenen Werkzeugen erfolgen. Viele Unternehmen nehmen eine Domänenmigration auch zum Anlass, ihre Daten neu zu organisieren. Denn durch die Jahre entstand auf manchen Fileservern evtl. diverser Daten-Wildwuchs, den es neu zu strukturieren gilt. Die Migration muss natürlich ohne größere Auswirkungen auf die produktiven Einheiten und möglichst unauffällig verlaufen.
1. Die Migration mit Hilfe von Skripten
Einige Unternehmen migrieren ihre Benutzer-, Gruppen- sowie Computerkonten mit ADMT in die neue Domäne. Die File- bzw. Ressourcenserver fügen sie händisch der Ziel-Domäne hinzu und führen anschließend das sogenannte Re-ACLing (=Rechte neu setzen) ihrer Netzwerkressourcen (Dateien, Drucker etc.), mit Skripten durch. Dabei kommt oft ein Computer-Startupskript zum Einsatz.
2. Die Migration mit der SIDHistory
Je nach Größe bzw. Dauer der Migration ist es evtl. notwendig, dass die bereits migrierten Benutzer noch auf die Ressourcen in der Quell-Domäne zugreifen können. Damit während der Migrationsphase die bereits migrierten Benutzer, sei es bei einer Intra- oder Inter-Forest Migration, weiterhin Zugriff auf die Ressourcen der alten Domäne haben, wäre einer der gängigsten Varianten die während einer Migration zum Einsatz kommen, die Migration mit der SIDHistory. Dadurch kann das neue Benutzerkonto aus der neuen Domäne, auf die Ressourcen der alten Domäne zugreifen. Das Attribut SIDHistory ist ein mehrwertiges Attribut in dem eine Liste der SIDs, die zuvor einem Benutzer oder einer Gruppe zugewiesen wurden, eingetragen wird.
Mit den entsprechenden Migrationswerkzeugen, wie z.B. den im weiteren Verlauf vorgestellten Tools, können die Benutzer- und Gruppenkonten mit ihrer SID migriert werden. Dabei wird ein neues Sicherheitsprinzipal (Benutzer- oder Gruppenkonto) in der neuen Domäne erstellt und die SID des alten Sicherheitsprinzipals an das neue Konto der neuen Domäne im Attribut SIDHistory hinzugefügt. Dadurch wäre das neue Benutzerkonto in der Lage, die alte SID als "Ausweis" vorzuzeigen, wenn die neue SID des Benutzerkontos keinen Zugriff bekommt. Möchte also das "neue" Benutzerkonto aus der neuen Domäne, auf die Ressourcen der "alten" Domäne zugreifen, tritt hier die SIDHistory in Aktion.
Wird ein Benutzer von einer Domäne in eine andere migriert, so wird seine SID nicht mit übernommen, denn der mittlere Part der SID ist die Nummer der Domäne. Bei der Benutzer-Migration mit den herkömmlichen Migrationswerkzeugen wird jedesmal ein neues Benutzerkonto mit einer neuen SID in der Ziel-Domäne eingerichtet. Da das neue Benutzerkonto eine neue SID bekommen hat, bekommt das Konto nicht die gleichen Berechtigungen wie es das alte Benutzerkonto hatte, auch wenn der Benutzername gleich lautet. Denn bekanntlich sind Namen in der IT "Schall und Rauch". Dank der SIDHistory aber, müssen die Berechtigungen in der alten Domäne nicht gleich angepasst werden, denn dadurch hat das neue Benutzerkonto Zugriff auf die Ressourcen der alten Domäne.
Die SIDHistory funktioniert sogar wenn die alte Domäne nicht mehr existiert! Wenn die Verbindung zur alten Domäne aufgelöst wurde (Domäne wurde entfernt oder die Verbindung ist getrennt), werden die Berechtigungseinträge auf den Ressourcen nicht mehr im Klartext als Namen angezeigt, sondern es erscheint die SID (S-1-5-21-…). Die Berechtigungen funktionieren aber wie bereits erwähnt weiterhin. Dafür erschwert sich aber die Administration, da man nicht mehr so einfach beurteilen kann, um welches Konto es sich dabei handelt. Wie denn auch, wenn niemand mehr weiß wie die Konten hießen.
Wenn die Migration abgeschlossen ist, wäre es ohnehin empfehlenswert die SIDHistory zu bereinigen. Nach dem bereinigen der SIDHistory kann der Benutzer lediglich mit der "neuen" SID auf die Ressourcen zugreifen. Die ACL-Umsetzung sollte natürlich zu diesem Zeitpunkt bereits abgeschlossen sein.
Denn wenn sich nämlich ein Benutzer anmeldet, bekommt er ein Access-Token in dem seine richtige SID, die SIDs der SIDHistory (samt der SIDHistory aller Gruppen) und die SID's aller Gruppen, denen der Benutzer angehört (direkt oder verschachtelt), enthalten ist. Das Access-Token kann aber max. 1024 Einträge enthalten und von daher, sollte nach einer Migration die SIDHistory stets bereinigt werden. Ansonsten könnte es bei zukünftigen Migrationen zu Problemen kommen.
Zum entfernen der SIDHistory kann dazu das folgende VBSkript verwendet werden. How To Use Visual Basic Script to Clear SidHistory
Leider ist die Handhabung mit dem Skript eher umständlich, denn die Objekte bei denen die SIDHistory entfernt werden soll, müssen einzeln angegeben werden. Aber mit etwas Skriptingkenntnisse lässt sich das Skript an die eigenen Bedürfnisse anpassen. Alternativ lässt sich die SIDHistory auch mit ADModify entfernen.
3. Die Migration mit Dual-ACL
Neben der Variante mit der SIDHistory, kommt als weitere gängige Migrationsvariante Dual-ACL häufig zum Einsatz. Auch hierbei können während der Migrationsphase die bereits migrierten Benutzer, sei es bei einer Intra- oder Inter-Forest Migration, weiterhin auf die Ressourcen der alten Domäne zugreifen. Dadurch kann das neue Benutzerkonto aus der neuen Domäne, auf die Ressourcen der alten Domäne zugreifen.
Die in diesem Artikel erwähnten Migrationstools können auch die vorhandenen Berechtigungen auf Clients oder Servern bearbeiten. Die bereits migrierten „neuen“ Benutzer- und Gruppenkonten können zusätzlich zu den vorhandenen Berechtigungen eingetragen werden (Dual ACL) oder die alten Berechtigungen auf den Ressourcen ersetzen. Mit ADMT kann das der Assistent zur Computermigration durchführen, während im QMMAD das Ressource Updating dafür zuständig ist.
Weitere hilfreiche Tools für die Migration
Je nachdem welche Migrationsstrategie und welches Migrationswerkzeug man gewählt hat, können im Nachhinein die Tools wie SUBINACL oder SIDWALK dabei helfen, die Berechtigungen zu bereinigen. Auch das ADModify kann bei Massenänderungen, die bei einer Migration notwendig sein könnten, hilfreich sein.
Die SID-Filterung bei der Inter-Forest Migration
Die SID-Filterung ist dazu gedacht, die Benutzer an der Nutzung der im Attribut SIDHistory eingetragenen SIDs daran zu hindern, um auf Ressourcen einer separaten Gesamtstruktur zuzugreifen. Die SID-Filterung zu deaktivieren stellt aber ein gewisses Sicherheitsrisiko dar, denn ein Angreifer mit Administratorrechten könnte administrative SIDs in der vertrauenden Gesamtstruktur dem Attribut SIDHistory eines Sicherheitsprinzipals in der vertrauten Gesamtstruktur hinzufügen. Damit ist es dem Konto möglich, administrativen Zugriff auf die vertraute Gesamtstruktur zu erlangen.
Mit der SID-Filterung kann die Verwendung des Attributs SIDHistory in der gesamten Gesamtstrukturvertrauensstellung bzw. externen Vertrauensstellung blockiert werden. Wenn aber das neue Benutzerkonto auf die Ressourcen der alten Domäne zugreifen möchte, muss bei einer Inter-Forest Migration die SID-Filterung ausgeschaltet sein. Die SID-Filterung sollte aber nur für einen begrenzten Zeitraum deaktiviert werden.
Die SID-Filterung lässt sich mit NETDOM, welches sich in den Windows Support Tools befindet, deaktivieren. Der Befehl lautet wie folgt: Netdom Trust TrustingDomainName /domain:TrustedDomainName /quarantine:No /userD:Domänen-Administrator /passwordD:Domänen-Admin-Kennwort
Disable SID filter quarantining
Es wäre auch möglich, die auf die Gesamtstrukturvertrauensstellung angewendete Standard-SID-Filterung mit der Option /enablesidhistory:yes abzuschwächen. Der genaue Befehl lautet folgendermaßen: Netdom Trust TrustingDomainName /domain:TrustedDomainName /enablesidhistory:Yes /usero:Domänenadministratorkonto /passwordo:Domänenadministratorkennwort
Was sind die Voraussetzungen für eine Migration mit ADMT oder dem QMMAD?
- Natürlich muss zuerst auf IP-Ebene das Routing zwischen der Quell- und Ziel-Domäne funktionieren.
- Als nächstes muss die Namensauflösung zwischen der Quell- und Ziel-Domäne sichergestellt sein. Dazu könnte man im DNS entweder eine sekundäre Zone der jeweils anderen Domäne einrichten oder ab Windows Server 2003 eine bedingte Weiterleitung einrichten. Neben der DNS-Namensauflösung könnte man zusätzlich noch die NetBIOS-Namensauflösung z.B. durch eine WINS-Replikation sicherstellen.
- Idealerweise sollte eine (einseitige oder bidirektionale) Vertrauensstellung zwischen der Quell- sowie Ziel-Domäne existieren.
- Die Ziel-Domäne muss sich sowohl bei einer Intra-Forest als auch Inter-Forest Migration im einheitlichen Modus befinden. Der Grund dafür ist, da das Attribut SIDHistory in Benutzer- sowie Gruppenkonten nur im einheitlichen Modus verfügbar ist. Nur wenn sich die Ziel-Domäne im Domänenfunktionsmodus „Windows 2000 pur“, „Windows Server 2003“ oder „Windows Server 2008“ befindet, kann die SIDHistory mit Werten gefüllt werden. Wobei eine Inter-Forest Migration auch ohne die SIDHistory stattfinden kann, jedoch stellt die SIDHistory eine Art doppelter Boden dar. Denn die Migration an sich ist kompliziert und aufwändig genug, wenn man da nicht an jede Berechtigung denkt erhöht sich der administrative Aufwand im nachhinein unnötig.
Die Migration mit dem Active Directory Migration Tool - ADMT
Das ADMT existiert in der Version 2.0, 3.0 sowie 3.1. Die Installation des ADMT v2.0 kann auf Windows 2000 Server oder Windows Server 2003 erfolgen. Wobei das ADMT v3.0 nur auf Windows Server 2003 und die ADMT v3.1 nur auf Windows Server 2008 (aber nicht auf einem RODC oder Server Core) installiert werden kann.
Während der Installation von ADMT wird auch die Microsoft SQL Server Desktop Engine (MSDE) mit installiert. Das Tool kann aber so konfiguriert werden, dass es entweder die MSDE oder einen bereits bestehenden SQL-Server verwendet. Das ADMT besteht aus einer Reihe von Assistenten, die für die Migration der Objekte verwendet werden können.
Nach der Installation steht das Tool als MMC unter Start-Programme-Verwaltung-Active Directory Migration Tool zur Verfügung.
Das Benutzerkonto mit dem das ADMT ausgeführt wird, sollte Administratorrechte in der Quell-sowie Ziel-Domäne haben. Es muss bei der Migration der Computerkonten ein Agent auf den Clients installiert werden und das funktioniert natürlich nur, wenn das Konto lokale Adminrechte hat.
Das ADMT kann für eine Intra-Forest (innerhalb der Gesamtstruktur) oder Inter-Forest (zwischen zwei Gesamtstrukturen) Migration eingesetzt werden. Das Werkzeug kann über die grafische Oberfläche oder als Kommandozeilentool eingesetzt werden. Es stellt auch eine Skriptingschnittstelle bereit.
Bevor es an die produktive Migration mit ADMT geht, gilt es unbedingt vorher das Whitepaper zum Tool zu lesen und idealerweise eine Testmigration in einer Testumgebung durchzuführen.
Active Directory Migration Tool v.2.0 Active Directory Migration Tool v3.0 ADMT v3 Migration Guide Active Directory Migration Tool version 3.1 ADMT v3.1 Guide: Migrating and Restructuring Active Directory Domains How to troubleshoot inter-forest sIDHistory migration with ADMTv2 You find that several custom attributes are missing when you use ADMT to migrate users between two forests
Quest Migration Manager for Active Directory - QMMAD
Der Hersteller wirbt mit den Worten Zero Impact für sein Werkzeug und in der Tat fallen einem je nach Migration die Vorteile recht fix ins Auge. Das Tool welches zur Zeit in der Version 8.3 zur Verfügung steht, lässt sich einfach bedienen und es fällt schnell auf das sich vieles bei einer Intra- oder Inter-Forest Migration im Hintergrund bereits migrieren lässt, ohne dass die Benutzer etwas davon merken. Egal welche Migration durchgeführt wird, die Arbeiten können weitestgehend und ohne große Auswirkungen auf die Benutzer, im laufenden Betrieb erfolgen.
Natürlich möchte Quest bei seinen Migrationswerkzeugen sicherstellen, dass ihre Werkzeuge nur von Fachleuten, am liebsten aber (verständlicherweise) von seinen eigenen Consultants oder qualifizierten Partnern eingesetzt wird. Letztenendes aber möchte Quest seine Software schließlich an den Kunden bringen. Daher kommt es auf das Gespräch mit Quest an. Quest verkauft seinen QMMAD auch ohne Dienstleistung, möchte vorher aber vom Kunden schriftlich bestätigt bekommen, dass dieser das Werkzeug ausgiebig getestet hat. Es ist auch möglich, mit dem Hersteller einen privaten interaktiven Webcast über das Werkzeug zu veranstalten.
Damit man das Tool einsetzen kann, wird ein Lizenzfile benötigt. Das Lizenzfile kostet pro zu migrierender Benutzer 13 Euro. Je nach Anzahl sind ca. 10% Rabatt möglich. Es zählen nur die zu migrierenden Benutzerkonten. Gruppen- bzw. Computerkonten sind davon nicht betroffen. Nach einer Registrierung auf der Quest-Webseite kann man sich ein Test-Lizenzfile (begrenzt für einen bestimmten Zeitraum und für eine begrenzte Anzahl an Benutzer) zumailen lassen.
Der QMMAD setzt eine Active Directory Application Mode (ADAM)-Instanz und den IIS für ausführlichere Statistiken voraus. Bei der Standardinstallation wird ADAM gleich mit installiert und konfiguriert. Wird bei der Installation des QMMAD die benutzerdefinierte Variante gewählt, so kann eine bereits bestehende und vorbereitete ADAM-Instanz angegeben werden.
Das Quest-Tool kann sowohl bei einer Intra- als auch Inter-Forest Migration eingesetzt werden. Im Gegensatz zu ADMT kann dieses Werkzeug weitaus mehr Objekte migrieren und ist in der Anwendung komfortabler. Die ohnehin stressige Migration wird dadurch für den Administrator effizienter und flexibler. Bei den einzelnen Migrationsphasen kann ein entsprechendes Benutzerkonto das die benötigten Rechte für die jeweils auszuführende Aufgabe besitzt hinterlegt werden.
Active Directory Migration managed with Active Directory Migration Tools from Quest Software
ADMT vs. QMMAD
|
Funktion |
ADMT |
QMMAD |
Bemerkung |
|
Intra- und Inter-Forest Migration |
Bei einer Intra-Forest Migration werden die Objekte aus der Quell-Domäne entfernt. Das Objekt existiert nach der Migration nur noch in der Ziel- und nicht zusätzlich in der Quell-Domäne. Bei der Inter-Forest Migration bleiben die Objekte hingegen weiterhin in der Quell-Domäne bestehen, die deaktiviert werden können. |
Die Objekte bleiben sowohl bei einer Intra-als auch bei einer Inter-Forest Migration in der Quell-Domäne bestehen. Die Quell-Objekte können hier bei der Intra- sowie Inter-Forest Migration deaktiviert werden. |
Bei der Migration mit dem QMMAD ist man flexibler und kann vieles im Hintergrund bereits durchführen. |
|
Migration von Benutzer- und Gruppenkonten |
Ist bei einer Intra- sowie Inter-Forest Migration möglich. |
Das Quest-Tool kann ebenfalls beide Arten von Konten bei der Intra- als auch Inter-Forest Migration migrieren. |
Die Migration von Benutzer- und Gruppenkonten gehört bei beiden Tools zu den grundlegendsten Funktionen. |
|
Gesperrte Benutzerkonten migrieren |
Der Zustand eines gesperrten Benutzerkontos wird mit ADMT mit migriert. |
Nach der Migration eines gesperrten Benutzerkontos mit dem QMMAD ist das Konto anschließend nicht mehr gesperrt. |
Hierbei hat der QMMAD einen klaren Nachteil. |
|
SIDHistory |
Bei der Intra-Forest Migration ist die SIDHistory erforderlich und wird automatisch übernommen. Die SIDHistory ist bei der Inter-Forest Migration optional. |
Auch der QMMAD kann bei einer Intra- und Inter-Forest Migration mit der SIDHistory migrieren. |
Auch diese Funktion gehört zu den grundlegendsten Funktionen beider Tools. |
|
Entfernen der SIDHistory |
Das ADMT kann die SIDHistory von den Objekten nicht entfernen. |
Mit dem QMMAD kann recht einfach die SIDHistory von den Objekten entfernt werden. |
Mit dem QMMAD kann mit wenigen Mausklicks die SIDHistory von den Objekten entfernt werden (durch einen extra Durchlauf). |
|
Das lösen von Konflikten |
Mit ADMT ist die Konfliktlösung abhängig ob Intra- oder Inter-Forest Migration sehr beschränkt. |
Der QMMAD kann Konflikte z.B. durch hinzufügen eines Präfix lösen. |
Bei der Konfliktlösung (z.B. doppelter sAMAccountName) löst der QMMAD gegenüber dem ADMT einen Konflikt eleganter durch hinzufügen eines Präfix. |
|
Migration von Computerkonten |
Die Migration von Computerkonten ist bei der Intra- und Inter-Forest Migration möglich. |
Auch der QMMAD kann Computerkonten bei einer Intra- und Inter-Forest Migration migrieren. |
Auch die Migration von Computerkonten ist bei beiden Tools eines der grundlegendsten Funktionen. Beide Tools können Clients und Mitgliedsserver migrieren, aber KEINE DCs. DCs müssen aus der alten Domäne herunter- und in der neuen Domäne heraufgestuft werden. |
|
Migration der OU Hierarchie |
Das ADMT kann die OU Hierarchie aus der Quell-Domäne nicht migrieren. Die OUs müssen in der Ziel-Domäne manuell erstellt werden. Delegierungen müssten neu eingerichtet werden. |
Das Quest-Tool kann die OU Hierarchie, optional sogar mit dem Security Descriptor (sprich den Delegierungen), mit migrieren. |
Der QMMAD kann an dieser Stelle mehr als das ADMT. |
|
Verändern von Objekteigenschaften während der Migration |
ADMT kann während der Migration keine zusätzlichen Daten zu den Objekten einbinden. |
Der QMMAD kann während der Migration zusätzliche Daten zu den Objekten einbinden. |
Mit dem QMMAD könnten während der Migration zusätzliche Informationen z.B. in die Benutzerkonten eingepflegt werden. |
|
Migration der Active Directory Standort-Topologie |
AD-Standorte können mit dem ADMT nicht migriert werden. |
Mit dem QMMAD können AD-Standorte, Subnetze sowie Standortverknüpfungen migriert werden. |
Auch hier können mit dem Quest Werkzeug mehrere Objekte migriert werden. |
|
Migration der Benutzerkennwörter |
Die Kennwörter bleiben automatisch bei der Intra-Forest Migration erhalten, jedoch wird der Benutzer bei der ersten Anmeldung in der neuen Domäne aufgefordert, sein Kennwort zu ändern. Oder das Kennwort wird mit dem Password Export Server (PES) ebenfalls migriert, dann bleibt das alte Kennwort erhalten. Bei einer Inter-Forest Migration können die Kennwörter mit dem Password Export Server optional migriert werden. |
Die Benutzerkennwörter können mit dem QMMAD bei einer Intra- oder Inter-Forest Migration einfach migriert werden. |
Die Migration der Benutzerkennwörter lässt sich mit dem QMMAD einfacher als mit dem ADMT bzw. PES durchführen. |
|
Benutzerprofile |
Die Benutzerprofile bleiben erhalten. |
Die Profile der Benutzer bleiben auch hier ebenfalls erhalten. |
Die Profile werden bei der Migration der Clients übernommen. |
|
Komfortable Auswahl der Objekte |
Mit ADMT ist die Auswahl der Objekte eher eingeschränkt. |
Der QMMAD bietet starke Filtermöglichkeiten um die entsprechenden Objekte auszuwählen. |
Auch hier spielt das Quest-Werkzeug seine Stärken aus. |
|
Statistiken über Fortschritt |
Keine. |
Der QMMAD bringt ein Statistikportal mit. |
Mit dem QMMAD werden detaillierte Informationen über das Statistikportal geliefert. |
|
Undo Funktion |
Das ADMT kann nur den letzten Directory-Lauf rückgängig machen (Migration von AD-Objekten), aber nicht das Ressource Updating (RE-ACLing). |
Das Quest-Tool bietet komplette Undo-Funktionen. Jede Aktion kann rückgängig gemacht werden. |
Auch hierbei ist das Quest Werkzeug umfangreicher. |
|
Kontinuierliche Synchronisation |
Ist mit ADMT so nicht möglich. Höchstens aufwändig und eher umständlich mit Skripten und der ADMT-Skriptingschnittstelle. |
Mit dem QMMAD kann eine Synchronisation zwischen dem alten und neuen Objekt eingerichtet werden. Somit kann bei einer lang andauernden Migration ein Abgleich zwischen dem alten und neuen Objekt stattfinden. |
Gerade bei längeren Migrationsphasen ist die kontinuierliche automatische Echtzeitsynchronisation bei längeren Koexistenzphasen sehr wichtig. |
|
Konsolidiertes Ressourcen Updating |
Nicht möglich. |
Ist mit dem QMMAD möglich. |
Beim zusammenfügen von mehreren Quell-Domänen benötigt der QMMAD nur einen Durchlauf, während das ADMT pro Domäne einen Durchlauf benötigt. |
|
Client Update |
Eingeschränkt. |
Der QMMAD aktualisiert sogar die geplanten Tasks und Zertifikate auf dem Client. Zusätzlich wird die default Domäne für die Anmeldung umgestellt (im Anmeldefenster das Feld „Anmelden an“). |
Ein weiterer Vorteil bei dem Quest Werkzeug. |
|
Mitgliedsserver Aktualisierung |
Das ADMT kann das Ressource Updating für Exchange 5.5 durchführen. |
Der QMMAD kann die Berechtigungen von den folgenden Applikationen anpassen: Exchange 5.5/2000/2003. IIS. SQL 6.5/7.0/2000. SMS 2.3/2003. System Center 2007. NAS/SAN. Sharepoint 2003 und 2007. |
Das Quest-Tool kann die Berechtigungen von mehreren Applikationen anpassen. |
|
Test-Migration |
Seit ADMT 3.0 ist die Testmigration nicht mehr möglich. |
Mit dem QMMAD kann man die Migrationseinstellungen vor der produktiven Migration in einem Testlauf testen. |
Mit der Testmigration können Konfigurationsfehler aufgedeckt werden. Dies erleichtert die Fehlersuche. |
|
Auswahl von Objekten |
Das ADMT bietet einen Standard Dialogfenster, in dem die Benutzer und Gruppen als flache Liste angezeigt werden. Die Filterung nach deaktivierten, abgelaufenen oder Systemkonten ist nicht möglich. |
Der QMMAD bietet erweiterte Filtermöglichkeiten bei der Auswahl der Objekte. Z.B. können deaktivierte und/oder abgelaufene Benutzerkonten von vornherein ausgeblendet werden. |
Gerade in größeren Umgebungen gestaltet sich die Auswahl der zu migrierenden Objekte einfacher als mit ADMT. |
|
Berechtigungen anpassen |
Das ADMT kann die folgenden Berechtigungen anpassen: NTFS-Berechtigungen, Freigabeberechtigungen, Drucker, Registry, Profile. |
Der QMMAD kann folgende Berechtigungen anpassen: Lokale Gruppenmitgliedschaften, Benutzer Berechtigungen, Dienste, Geplante Tasks, Registry, lokale und servergespeicherte Profile, Freigaben, Drucker, NTFS-Berechtigungen, DCOM, COM+ |
Die nötigsten Berechtigungen können beide Werkzeuge anpassen, wobei der QMMAD einiges mehr anpassen kann. |
|
Migration von Vertrauensstellungen |
Nicht möglich. |
Ist möglich. |
Ein weiteres nettes Feature des QMMAD. |
|
Fehler Analyse während der Migration |
Mit ADMT kann nach der Migration manuell ein Bericht über Konflikte erstellt werden. |
Der QMMAD gibt einen detaillierten Bericht über fehlgeschlagene Objekte, Verzeichnis Fehler, Konflikte, nicht aufgelöst Objekte (z.B. Gruppenmitglieder) sowie abgeschlossene Migrationen und Synchronisationen. |
Der detaillierte Bericht beim QMMAD erleichtert im Fehlerfall dem Administrator die Fehlersuche. |
Fazit
Mit dem ADMT lässt sich jede Umgebung, egal wie groß sie ist, sowohl bei einer Intra- als auch Inter-Forest Migration über jeden Zeitraum migrieren. Die einzelnen Migrationsschritte mit ADMT müssen insbesonders bei der Intra-Forest Migration genauer geplant werden. Zwar hat das ADMT gegenüber dem Quest-Werkzeug klar seine Einschränkungen, jedoch ist dafür das ADMT kostenlos! Die Restarbeiten können mit etwas Handarbeit (oder mit Skripten) durchgeführt werden.
Das Quest-Werkzeug bietet gerade in seinem Umfang mehr Vorteile als das ADMT. Es kann weitaus mehr Objekte migrieren als das ADMT und man kann vieles im laufenden Betrieb migrieren, ohne das die Benutzer etwas davon merken. Auch bei länger andauernden Migrationen spielt der QMMAD dank seiner Synchronisation seine Stärken aus. Des Weiteren kann dieses Werkzeug die Berechtigungen von mehreren Applikationen anpassen.
Weitere Informationen: Microsoft Online Migration Toolkit NetIQ Migration Suite
Wenn ein Domänencontroller (DC) ausgetauscht wird, ist darauf zu achten, dass alle Dienste sowie Daten von einem anderen Server bzw. DC übernommen werden. Das trifft auch für die FSMO-Rollen zu. Falls der FSMO-Rolleninhaber ausgetauscht werden sollte, gilt es die FSMO-Rollen entweder durch die grafische Oberfläche oder durch das im Betriebssystem enthaltene Kommandozeilentool NTDSUTIL manuell zu verschieben.
Das händische verschieben der Rollen hat den Vorteil, dass der Administrator bestimmen kann auf welchen DC die Rollen verschoben werden. Somit weiß der Administrator genau, auf welchem DC sich die Rollen befinden. Ein weiterer Vorteil des manuellen Verschiebens wäre, falls ein Unternehmen AD-lastig arbeitet und die FSMO-Rollen somit mehr beansprucht werden, kann der Administrator die Rollen auf eine leistungsfähige Maschine verschieben oder ggf. auf mehrere DCs verteilen.
Die Rollen müssen aber nicht beim Herunterstufen des Rolleninhabers zwingend manuell verschoben werden. Denn die FSMO-Rollen werden mit Ausführen von DCPROMO seit Windows 2000 RTM, also seit der Einführung des Active Directory, während des DCPROMO-Vorgangs automatisch auf einen anderen DC übertragen. Die Rollen können aber nur dann einem anderen DC übergeben werden, wenn das DNS ordnungsgemäß funktioniert, sowie der Rolleninhaber Verbindung zur Domäne und somit zu seinen Replikationspartnern hat. Dabei geht der Rolleninhaber folgendermaßen vor:
-
Wurden die FSMO-Rollen vor dem herunterstufen nicht manuell verschoben, wird das „Operational Attribute“ GiveAwayAllFsmoRoles gesetzt. Das veranlasst den Rolleninhaber dazu, andere DCs ausfindig zu machen damit die Rollen die er trägt, auf einen anderen DC übertragen werden können.
-
Für die Wahl des zukünftigen Rolleninhabers werden die folgenden Regeln angewendet:
- Bevorzugt wird ein DC am gleichen Standort ausgewählt. - Es wird ein DC zu dem eine RPC-Verbindung besteht gesucht. - Es wird ein Server verwendet, zu dem eine asynchrone Verbindung (z.B. über das SMTP-Protokoll) existiert.
-
Natürlich können dabei die drei domänenspezifischen Rollen RID-Master, PDC-Emulator sowie Infrastrukturmaster nur innerhalb der Domäne verschoben werden.
-
Die beiden gesamtstrukturweiten Rollen Schemamaster sowie Domänennamenmaster können auf jeden DC in der Gesamtstruktur verschoben werden. Dabei spielt es keine Rolle, in welcher Domäne sie sich befinden.
Erreicht der Rolleninhaber während des Herunterstufens keinen weiteren DC, so schlägt zum einen das automatische Verschieben der Rollen und zum anderen das Herunterstufen fehl.
Wird der Rolleninhaber durch die erzwungene Herabstufung mit DCPROMO /Forceremoval heruntergestuft, so erhält der Administrator ab Windows Server 2003 SP1 für jede Rolle die der DC inne hat, eine Warnmeldung. Diese Rollen müssen dann im Nachhinein auf einem anderen DC offline übertragen werden.
Der Nachteil des automatischen Verschiebens der Rollen ist die nicht Vorhersagbarkeit der Ziel-DCs auf die die FSMO-Rollen verschoben werden (Ausnahme es existieren nur genau zwei DCs).
Doch auch bei dieser Variante müssen die Infrastrukturmasterrollen der Anwendungsverzeichnispartitionen ab Windows Server 2003 (wie z.B. ForestDNSZones und DomainDNSZones) manuell auf einen anderen DC verschoben werden. Diese werden nicht automatisch auf einen anderen DC übertragen. Näheres dazu erläutert der folgende Artikel:
Die Infrastrukturmaster der Anwendungsverzeichnispartitionen
Weitere Informationen: Die FSMO-Rollen verschieben How Operations Masters Work: Active Directory Flexible Single Master Operation Transfer and Seizure Process
Es gab einmal ein 32Bit Serverbetriebssystem…
Im Herbst 2009 erscheint das nächste Serverbetriebssystem (Codename Windows Server 7) aus dem Hause Microsoft Namens Windows Server 2008 R2. Somit bleibt Microsoft seiner Roadmap treu und veröffentlicht alle vier Jahre ein Major Release sowie dazwischen nach zwei Jahren ein Minor Release. Dabei wurden die R2-Versionen erstmals mit Windows Server 2003 R2 eingeführt, wobei damals das R2 auf zwei CDs ausgeliefert wurde und es im nächsten Serverbetriebssystem eine DVD ist.
Wie bereits im Vorfeld angekündigt, setzt Microsoft seine Ankündigung nun um. Es heißt: Ade 32Bit Serverbetriebssystem. Das nächste Serverbetriebssystem Windows Server 2008 R2 wird es ausschließlich nur in der x64Bit Version geben. Die Administratoren müssen sich dabei aber keine großen Gedanken machen, denn die Hardware der letzten drei bis vier Jahre ist x64bittig.
Was sind die Active Directory-Neuerungen im Windows Server 2008 R2?
Welche Neuerungen es im Allgemeinen bisher im Windows Server 2008 R2 geben wird, kann bereits hier nachgelesen werden. Windows Server 2008 R2 Reviewers Guide
Weitere Informationen: Windows Server 2008: R2 Windows Server 2008 R2 Active Directory: What's Coming Up?
Mit der Tombstone Lifetime (zu Deutsch Grabstein Lebenszeit) wird bestimmt, wie lange ein gelöschtes Objekt noch in der Active Directory-Datenbank (NTDS.dit) gespeichert wird. Wenn ein Objekt gelöscht wird, verschwindet es nicht sofort aus der AD-Datenbank. Stattdessen wird das Objekt als gelöscht markiert, in dem das Attribut is-Deleted auf True gesetzt wird. Des Weiteren werden die meisten Attribute entfernt und das Objekt wird wie folgt umbenannt: CN=<alter RDN>\0ADEL:<Object-GUID>.
Nach dem umbenennen wird das Objekt in den versteckten Container Deleted Objects der entsprechenden Verzeichnispartition verschoben. Ab diesem Zeitpunkt wird das gelöschte Objekt als Tombstone (Grabstein) bezeichnet. Anschließend werden diese Änderungen auf alle anderen Domänencontroller (DC) repliziert. Erst wenn die Tombstone Lifetime (TSL) überschritten wurde, wird das Objekt endgültig aus der AD-Datenbank entfernt.
Dieser Prozess ist deshalb notwendig, damit sichergestellt ist das auch jeder DC bei einer aufwändigen (weltweiten) Replikationstopologie, von dieser Löschung informiert wird. Endgültig gelöscht wird das Objekt dann nach Ablauf der TSL von dem Garbage Collection Prozess, der standardmäßig auf allen Domänencontrollern (DC) alle 12 Stunden läuft. Diese Zeit kann zwar verändert werden, jedoch besteht in der Praxis i.d.R. kein Bedarf dies zu tun.
Weiterhin bestimmt die TSL auch, wann sich spätestens ein DC einmal mit seinen Replikationspartnern repliziert haben muss, ehe Replikationsprobleme entstehen.
Wann wird die Tombstone Lifetime festgelegt?
Die TSL wird mit dem Installieren des ersten DCs in einer Gesamtstruktur und zwar für alle Domänen festgelegt. Die TSL kann nicht pro Domäne konfiguriert werden. Der Wert der TSL kann aber jederzeit manuell verändert werden (wozu Organisations-Admins Rechte benötigt werden), was jedoch begründet sein sollte. Dabei spielt weder der Domänenfunktionsmodus, noch der Gesamtstrukturfunktionsmodus eine Rolle.
Der Active Directory-Installationsassistent DCPROMO erzeugt aus der Datei schema.ini die TSL für die Gesamtstruktur. Unter Windows 2000 sowie Windows Server 2003 befindet sich diese Datei im Verzeichnis %systemroot%\system32 und unter Windows Server 2008 im Verzeichnis %systemroot%\winsxs\x86_microsoft-windows-d..rvices-domain-files_31bf3856ad364e35_6.0.6001.18000_none_9b0b0e3a43600e0c Der DCPROMO-Assistent nutzt diese Datei als Vorlage und entnimmt daraus seine Angaben, um das Basisschema entsprechend dem Serverbetriebssystem zu erstellen.
Vor dem Heraufstufen des ersten DCs, kann man die TSL in der schema.ini kontrollieren. Der Eintrag in der Datei lautet: tombstoneLifetime=<Wert in Tagen>.
Die TSL beträgt unter:
-
Windows 2000 (mit allen SPs) = 60 Tage
-
Windows Server 2003 ohne SP = 60 Tage
-
Windows Server 2003 mit Service Pack 1 = 180 Tage
-
Windows Server 2003 R2 mit Service Pack 1, installiert mit beiden R2-CDs = 60 Tage
-
Windows Server 2003 R2 mit Service Pack 1, installiert nur mit der ersten R2-CD = 180 Tage
-
Windows Server 2003 mit Service Pack 2 = 180 Tage
-
Windows Server 2003 R2 mit Service Pack 2 = 180 Tage
-
Windows Server 2008 = 180 Tage
-
Windows Server 2008 R2 = 180 Tage
Überprüfen der Tombstone Lifetime
Kontrollieren kann man das Attribut tombstoneLifeTime mit Dsquery. Der Befehl lautet: Dsquery * "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne" -attr tombstoneLifetime
Falls kein Wert angezeigt wird, dann gilt der Standardwert von 60 Tagen. Ansonsten gilt der angezeigte Wert in Tagen.
Die TSL lässt sich auch mit ADSIEdit überprüfen und bearbeiten. Dazu gilt es, zuerst zum folgenden Container zu navigieren: CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=Root-Domäne
Dort befindet sich in den Eigenschaften des Containers das Attribut tombstoneLifetime. Ist dort ein Wert gesetzt, beträgt die TSL den eingetragenen Wert in Tagen. Steht im Attribut als Wert hingegen <Not Set>, so beträgt die TSL den Standardwert von 60 Tagen.
Hinweis: Das installieren eines Service Packs oder das Aktualisieren des Serverbetriebssystems verändert niemals den Wert der Tombstone Lifetime!
Auf was ist zu achten?
-
Die TSL darf keinen niedrigeren Wert enthalten, als die Replikation benötigt um alle DCs über einen Löschvorgang zu informieren. Ansonsten entfernt der Garbage Collection Prozess das gelöschte Objekt endgültig aus der AD-Datenbank, bevor alle Replikationspartner von der Löschung informiert wurden. Dies würde zu Inkonsistenzen in der AD-Datenbank führen.
-
Eine System State-Sicherung die älter als die TSL ist, darf nicht mehr verwendet werden. Die TSL gibt das maximale Alter einer Systemstatus-Sicherung an. Wird ein DC während der TSL mit einer Systemstatus-Sicherung die das Benutzerobjekt Yusuf enthält wiederhergestellt, nachdem das Objekt Yusuf gelöscht wurde, so würde der gelöschte Status von dem Objekt Yusuf auf den wiederhergestellten DC repliziert werden. Das Benutzerobjekt Yusuf wäre weiterhin nicht vorhanden, da die Wiederherstellung während der TSL durchgeführt wurde. Falls der DC nach der TSL wiederhergestellt werden würde, wäre das Benutzerobjekt Yusuf jedoch vorhanden. Denn auf den anderen DCs wäre das Objekt bereits aus der AD-Datenbank vom Garbage Collection Prozess entfernt worden. Das Benutzerkonto würde aber nur auf dem wiederhergestellten DC existieren. Dieser Zustand führt zu Inkonsistenzen in der AD-Datenbank und das Benutzerobjekt Yusuf wäre ein Lingering Object (herumlungerndes Objekt).
-
Ein DC darf nicht länger als die TSL offline sein. Wenn dies der Fall sein sollte, bekommt der nicht erreichbare DC von den mittlerweile gelöschten Objekten nichts mit und so kommt es dann zu Lingering Objects.
Welche Auswirkung hat das Erhöhen der Tombstone Lifetime?
-
Eine Systemstatus-Sicherung hat eine längere Nutzungsdauer.
-
Das Heraufstufen eines Servers durch die IFM-Funktion (Install from Media) zu einem DC hat durch das erhöhen der TSL, ebenfalls eine höhere Nutzungsdauer.
-
Ein DC kann länger offline bleiben und kann dadurch, nach einer längeren Offlinezeit wieder erfolgreich zur Domäne hinzugefügt werden.
-
Die gelöschten Objekte (Tombstones) bleiben länger auf den DCs erhalten und können dadurch ab Windows Server 2003, länger wiederhergestellt werden. Dadurch erhöht sich aber auch die Größe der AD-Datenbank.
Fazit: Die TSL sollte wenn möglich nicht verändert werden. Falls ein triftiger Grund besteht die TSL doch zu ändern, sollte der Wert nicht allzu groß gewählt werden.
Weitere Informationen: The default tombstone lifetime (TSL) value remains at 60 days instead of increasing to 180 days in Windows Server 2003 R2 The Active Directory database garbage collection process
Es ist empfehlenswert, dass jedes Unternehmen eine Kennwortrichtlinie einsetzt, die entsprechend konfiguriert ist (Komplexität, Kennwortchronik, Kennwortlänge, Kennwortalter etc.).
Kennwortrichtlinien, die für Domänen-Benutzer gelten sollen, müssen auf Domänenebene verlinkt werden. Wenn eine Kennwortrichtlinie auf einer Organisationseinheit (OU) verlinkt wird, betrifft das lediglich die lokalen Benutzerkonten auf den Clients. Bis Windows Server 2003 kann es dabei pro Domäne nur eine Kennwortrichtlinie geben. Besteht der Bedarf für einen Standort eine eigene Kennwortrichtlinie zu definieren, so musste für diesen Standort eine Sub-Domäne erstellt werden. Anders war dieses Ziel mit Bordmitteln nicht lösbar. Erst ab Windows Server 2008 lassen sich mehrere Kennwortrichtlinien pro Domäne mit Bordmitteln einrichten und nennen sich dort "Password Settings Objects" kurz PSO. In einer Windows Server 2003 Umgebung kann man mehrere Kennwortrichtlinien pro Domäne nur mit Dritt-Anbieter Tools realisieren, wie z.B. Specops Password Policy oder nFront Password Filter.
Möchte ein Unternehmen das bisher keine Kennwortrichtlinie im Einsatz hatte, dieses nun nachholen, sollte die Einführung einer Kennwortrichtlinie sorgfältig geplant und die Benutzer ausführlich informiert werden. Es ist ratsam nach der Konfiguration der Kennwortrichtlinie, im Reiter Konto die Kontooption „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“ in allen Benutzerkonten zu aktivieren. Denn schließlich existierte bisher keine Sicherheitsanforderung bei der Kennwortwahl, so dass es höchste Zeit wird dieses schnellstmöglich zu aktivieren.
Ist allerdings eines der Flags im userAccountControl Attribut, nämlich die Option „Kennwort läuft nie ab“ aktiviert, so ist ein zusätzliches aktivieren der Option Benutzer muss Kennwort bei der nächsten Anmeldung ändern nicht möglich. Es dürfte jedem klar sein, dass sich diese beiden Optionen widersprechen. Wird die Option „Kennwort läuft nie ab“ aktiviert, so wird mit einem Hinweis die evtl. bereits aktivierte Option „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“ deaktiviert.
Wird in den Kennwortrichtlinien die Einstellung „Maximales Kennwortalter“ konfiguriert, so kann es passieren, dass die Benutzer bei ihrer nächsten Anmeldung aufgefordert werden ihr Kennwort zu ändern, ohne dass die Option „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“ gesetzt ist. Denn angenommen ein Benutzer verwendet sein Kennwort, das bereits 200 Tage alt ist und es wird ein maximales Kennwortalter von 180 Tagen definiert, so erhält dieser Benutzer bei seiner nächsten Domänenanmeldung die Aufforderung sein Kennwort zu ändern. Das Alter des Kennworts wird vom Attribut Pwd-Last-Set errechnet. In dem Attribut wird ein 64Bit Integer Wert des Zeitpunkts der letzten Kennwortänderung gespeichert. Umrechnen lässt sich dieser Wert mit dem Befehl: w32tm /ntte <Wert>.
Es gibt aber eine Option, die verhindert, dass nach der Konfiguration eines maximalen Kennwortalters die Benutzer mit einem älteren Kennwort dies nicht bei der nächsten Domänenanmeldung ändern müssen.
Dazu ist folgendes zu tun:
-
In den Benutzerkonten ist zuerst die Kontooption Benutzer muss Kennwort bei der nächsten Anmeldung ändern zu aktivieren.
-
Danach gilt es die gewählte Option mit Übernehmen zu bestätigen.
-
Anschließend muss die soeben aktivierte Kontooption erneut deaktiviert und mit Übernehmen oder OK bestätigt werden.
Wird in den Eigenschaften eines Benutzerkontos im Reiter Konto die Kontooption „Benutzer muss Kennwort bei der nächsten Anmeldung ändern“ gesetzt, so erhält das Attribut pwdLastSet im entsprechenden Benutzerobjekt den Wert „0“. Wenn anschließend der Haken wieder entfernt wird, erhält das Attribut als Wert, dass Datum sowie die Uhrzeit von dem Moment, in dem diese Einstellung durchgeführt wurde.
In den Benutzerobjekten lässt sich die Kontooption z.B. durch ein Skript aktivieren oder deaktivieren. Eine andere Variante wäre zuerst die Benutzer mit STRG auszuwählen, dann mit einem Rechtsklick auf die Benutzerobjekte die Eigenschaften aufzurufen, um danach im Reiter Konto die entsprechende Option auszuwählen bzw. zu deaktivieren.
Verifizieren kann man das durch Überprüfen des Attributs pwdLastSet im Benutzerobjekt, mit dem Befehl: w32tm /ntte <Wert aus pwdLastSet>. Dort sollte dann das aktuelle Datum stehen.
Wann das Kennwort zuletzt gesetzt wurde, kann man auch wie folgt kontrollieren: Net User <username> /Domain.
Oder mit der Account Info DLL (kurz Acctinfo.dll).
Die Active Directory-Replikation ist ein komplexer Vorgang, die regelmäßig (um nicht zu sagen ständig) kontrolliert werden sollte. Falls es zwischen Domänencontrollern zu Replikationsproblemen kommt, helfen neben der Ereignisanzeige in erster Linie die beiden Tools REPADMIN sowie REPLMON bei der Suche nach der Fehlerquelle.
Gerade das Kommandozeilentool REPADMIN, das sich unter Windows 2000 sowie Windows Server 2003 in den Windows Support Tools und im Windows Server 2008 bereits im Betriebssystem befindet, ist ein mächtiges Tool das mit vielen Parametern ausgestattet ist. Nun hat Microsoft speziell für dieses Tool ein Whitepaper veröffentlicht, in dem das Tool mit all seinen Parametern erläutert wird. Weiterhin werden auch Szenarien beschrieben, in denen REPADMIN helfen kann.
Hier kann das Whitepaper heruntergeladen werden:
Troubleshooting replication with Repadmin
Weitere Informationen: Windows 2000 Service Pack 4 Support Tools Windows Server 2003 Service Pack 2 32-bit Support Tools
Standardmäßig werden in der MMC Active Directory-Benutzer und -Computer (ADBuC) die drei Spalten Name, Typ und Beschreibung angezeigt. In der MMC lassen sich unter Ansicht - Spalten hinzufügen/entfernen… in Windows 2000 sowie Windows Server 2003 weitere 22 und unter Windows Server 2008 weitere 27 Spalten einblenden.
Nun ist es seit Windows Server 2003 möglich eigene Spalten in der MMC dsa.msc zu integrieren. Dafür ist ein Windows Server 2003 oder Windows Server 2008 Schema notwendig. Somit hat man dann die Möglichkeit die in keinem Feld angezeigten, jedoch im Schema existierenden Attribute (wie z.B. employeeID) doch in einer Spalte zum Vorschein zu bringen. Natürlich können dabei auch eigene Attribute die durch eine Schemaerweiterung hinzugefügt wurden, in der MMC angezeigt werden. Die Werte in den Attributen sind allerdings auf einem anderen Weg einzutragen. Entweder skriptbasiert oder manuell (z.B. mit ADSIEdit). Im Fall der Personalnummer lässt sich das durch die in dem folgenden Artikel gezeigte Vorgehensweise erledigen.
Personalnummer im AD eintragen
Weitere Reiter oder Datenfelder können in die Verwaltungstools nur mühselig und mit viel Aufwand (z.B. durch die COM-Programmierung mit C++, VB oder durch Dritt-Anbieter) eingefügt werden. Leichter ist es hingegen, sich die Informationen skriptbasiert über das Kontextmenü anzeigen zu lassen (siehe o.g. Artikel). Diese Variante der Anzeige hat den Vorteil, dass es sich recht einfach und schnell implementieren lässt. Denn im Active Directory-Schema existieren weitaus mehr Attribute, als in den MMCs angezeigt werden. Daher sollte stets vor einer Schemaerweiterung das Schema kontrolliert werden, ob nicht doch ein passendes Attribut bereits existiert, jedoch nirgendwo angezeigt wird.
Das modifizieren der Spalten ist dank der Display-Specifier Klasse möglich. In Windows Server 2003 sowie Windows Server 2008 existieren standardmäßig 55 Display-Specifier Objekte. Die Klasse Display-Specifier beschreibt das Kontextmenü und die Eigenschaften von Active Directory-Objekten. Durch das Bearbeiten der Display-Specifier lassen sich recht simpel die grafischen Active Directory- Verwaltungswerkzeuge anpassen. Jede Objektklasse die in der grafischen Oberfläche erscheint, besitzt ein Display-Specifier Objekt in der die Elemente die angezeigt werden definiert sind. Denn die AD-Verwaltungswerkzeuge (wie dsa.msc oder dssite.msc) rufen ihre Konfigurationen aus den Display-Specifiern ab.
Zu finden sind die Display-Specifier in der Konfigurationspartition, im Container: CN=DisplaySpecifiers,CN=Configuration,DC=<Root-Domäne>. Dort befinden sich weitere durchnummerierte Container, wobei jeder Container jeweils einer bestimmten Sprachversion entspricht. Der für das deutsche Gebietsschema zuständige Container lautet CN=407. Demnach müssen auf einem deutschen Server die Änderungen mit Organisations-Admin Rechten im Container CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=<Root-Domäne> durchgeführt werden. Auf einer englischen Serverversion müssen die Display-Specifier im Container CN=409 bearbeitet werden. Entsprechendes gilt natürlich für die anderen Sprachen.
Locale Identifier Constants and Strings
Wo kann man eigene Spalten definieren?
Eigene Spalten können im mehrwertigen Attribut Extra-Columns, des jeweiligen Display-Specifier Objekts definiert werden. Dies kann getrennt entweder für Container wie z.B. dem Standard-Container Users bzw. Computers oder für Organisationseinheiten (OUs) festgelegt werden. Die zusätzlichen Spalten die standardmäßig im dsa.msc zur Verfügung stehen, sind im Attribut extraColumns das sich im Objekt CN=default-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=<Root-Domäne> befindet, definiert.
Die technische Umsetzung
Wenn man nun z.B. die Personalnummer statt aus dem Kontextmenü heraus, direkt in einer Spalte angezeigt haben möchte, so ist das folgendermaßen möglich:
-
Zuerst gilt es mit ADSIEdit oder LDP, welche sich unter Windows Server 2003 in den Support Tools befinden und unter Windows Server 2008 bereits im Betriebssystem integriert ist, zu dem für Container zuständigen Display-Specifier Objekt zu navigieren. Der Pfad lautet:
container-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=<Root-Domäne> Anschließend ruft man durch einen Doppelklick auf das Objekt container-Display die Eigenschaften auf. Mit dem Objekt container-Display hat man Einfluss auf die Spalten in Containern, wie es die beiden Standard-Container Computers oder Users darstellen.
-
Möchte man stattdessen eigene Spalten in Organisationseinheiten (OU) integrieren, so navigiert man zu diesem Pfad:
organizationalUnit-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=<Root-Domäne>
-
Eine weitere Möglichkeit wäre die "eigenen" Spalten lediglich in den gespeicherten Abfragen anzuzeigen. Das hat den Vorteil, dass dadurch die selbst hinzugefügten Spalten mit den bereits bestehenden Spalten zusammengefügt werden. Somit bleibt die Anzeige der Spalten in den Standardcontainern Users und Computers sowie in den OUs unverändert.
Damit neben den bereits existierenden Spalten die eigenen Spalten bei einer gespeicherten Abfrage angezeigt werden, gilt es zuerst die Eigenschaften des folgenden Containers aufzurufen:
default-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=<Root-Domäne>
Als nächstes ist in den Eigenschaften des entsprechenden Objekts, dass mehrwertige Attribut extraColumns zu bearbeiten. Die Syntax wäre wie folgt: <Ldap-Display-Name>,<Spaltenbezeichnung>,<Default Visibility>,<Spaltenbreite>,<Reserviert/unbenutzt> Die Werte bedeuten:
<Ldap-Display-Name>= Zuerst muss der LDAP-Display Name des gewünschten Attributs angegeben werden. <Spaltenbezeichnung>= Der angezeigte Name der im Spaltenkopf der MMC erscheint. <Default Visibility>= Wenn die eigene Spalte standardmäßig angezeigt werden soll, ist als Wert 1 einzutragen. Soll hingegen die Spalte unter Ansicht - Spalten hinzufügen/entfernen… manuell hinzugefügt werden, so ist als Wert 0 einzutragen. <Spaltenbreite>= Mit diesem Wert wird die Breite der Spalte in Pixels angegeben. Der Wert -1 gibt an, das sich die Breite der Spalte nach der Spaltenbezeichnung richtet. <Reserviert/Unbenutzt>= Hier ist als Wert 0 einzutragen.
Die einzelnen Werte sollten fortlaufend ohne Leerzeichen und jeweils durch ein Komma getrennt angegeben werden.
Im Falle der Personalnummer sähe die Syntax so aus: employeeID,Personalnummer,1,150,0 oder employeeID,Personalnummer,1,-1,0
Was ist der Nachteil an dieser Vorgehensweise?
-
Werden im Objekt container-Display und/oder organizationalUnit-Display eigene Spalten integriert, erscheinen neben den drei standardmäßig angezeigten Spalten (Name, Typ, Beschreibung) nur noch die selbst hinzugefügten Spalten. Danach werden die zusätzlichen 22 bzw. 27 Spalten unter Windows Server 2003/2008 vollständig durch die eigenen Spalten ersetzt und nicht zusammengefügt.
Stattdessen werden die eigenen Spalten die im Objekt default-Display definiert wurden, neben den Standard-Spalten bei
einer gespeicherten Abfrage angezeigt.
-
Wird lediglich das Objekt container-Display bearbeitet, stehen jedoch die zusätzlichen Spalten für OUs weiterhin zur Verfügung. Das gleiche gilt auch vice-versa. Werden eigene Spalten nur für OUs hinzugefügt, stehen für die Standard-Container Computers/Users weiterhin die zusätzlichen Spalten aus dem Objekt default-Display zur Verfügung.
Das Hinzufügen der eigenen Spalten im Attribut extraColumns das sich im Objekt default-Display befindet, bringt in diesem Fall auch nicht den gewünschten Erfolg.
Möchte man aber neben den eigenen auch die vom System vorgegebenen Spalten weiter nutzen, können die Einträge aus dem Objekt default-Display kopiert und in das gewünschte Container-Objekt (container-Display oder organizationaUnit-Display) hinzugefügt werden.
-
Ein weiterer Haken an dieser Vorgehensweise wäre, dass die Änderungen in der Konfigurationspartition durchgeführt werden. Diese Verzeichnispartition wird auf jeden DC in der Gesamtstruktur repliziert. Folglich wären alle Domänen in der Gesamtstruktur von dieser Änderung betroffen.
Weitere Informationen: Extending the User Interface for Directory Objects Display Specifiers About MMC 2.0 Microsoft Management Console 3.0
In der heutigen Zeit ist es üblich das Firmen fusionieren, übernommen werden, komplett oder bloß ein Firmenteil verkauft bzw. selbstständig wird. Wenn Firmen fusionieren ist es meistens erforderlich, eine Verbindung zwischen den Strukturen herzustellen. Das kann eine Vertrauensstellung oder aber auch eine Migration bedeuten, je nachdem welche Anforderungen erfüllt werden müssen. Soll sich aber ein Firmenteil eigenständig machen, steht dem Administrator eine Migration bevor. Oder etwa doch nicht?
Der gestresste Administrator der ohnehin mit seinen täglichen Aufgaben mehr als genug zu tun hat, möchte sich die Arbeit der Firmenteilung gering halten. Er stellt sich dabei vor, weitere DCs in der Root-Domäne der Muttergesellschaft zu installieren und die AD/DNS-Replikation abzuwarten. Anschließend stellt er diese DCs in einem isolierten Netzwerk, das keine Verbindung zur Gesamtstruktur der Muttergesellschaft hat an ihren Zielort auf. Die überflüssigen AD-Objekte (Benutzer- und Computerkonten, OUs, AD-Standorte, DC-Objekte, Sub-Domänen etc.) werden auf den verschobenen DCs entfernt. Ebenso werden auf den DCs der Muttergesellschaft die verschobenen Objekte entfernt.
Weitere Details werden an dieser Stelle mit Absicht nicht genannt!
Wenn die DCs an ihrem Zielort stehen hat man als Ergebnis nun zwei völlig unabhängige Gesamtstrukturen, was sogar mit dem minimalsten Aufwand erreicht wurde, nicht wahr? Weiterhin denkt sich der scheinbar clevere Administrator, dass dieser Domänensplitt keine Sicherheitsrisiken für beide Gesamtstrukturen mit sich bringt.
Das nach dem Splitt beide Gesamtstrukturen den gleichen internen NetBIOS- sowie DNS-Domänennamen haben stört den Administrator nicht, da es sich schließlich um interne Domänennamen handelt. Diese können bekanntermaßen auch mühevoll unter Windows Server 2003/2008 geändert werden. Aber ob dies am Ende vollständig von Erfolg gekrönt ist, steht auf einem anderen Blatt.
Außerdem ist der ganz schlaue Administrator der Meinung, dass solch ein Domänensplitt auch einen Vorteil hätte. Denn falls das unternehmerische Vorhaben der Firmenteilung scheitern und beide Firmenteile sich erneut zusammenschließen würden, könnte er einfach die verschobenen DCs zurück zur Domäne der Muttergesellschaft stecken. Nur was würde das bringen, wenn auf beiden Seiten die DC-Objekte der jeweils anderen Seite gelöscht wurden.
Kommen wir zu dem Punkt des Sicherheitsfaktors. Unterliegen nach einem Domänensplitt beide Gesamtstrukturen wirklich keinem Sicherheitsrisiko? Die Antwort lautet: In beiden Gesamtstrukturen wäre die Sicherheit so löchrig wie ein Schweizer Käse!
Wird eine Root-Domäne geteilt, sind in beiden Firmenteilen unter anderem die folgenden Punkte identisch:
-
Beide Seiten enthalten das vordefinierte Administratorkonto mit dem gleichen Kennwort.
-
Alle vordefinierten Sicherheitsgruppen, in erster Linie die Sicherheitsgruppe Organisations-Admins wären auf beiden Seiten identisch.
- Auf beiden Seiten ist die Domäne als Root-Domäne deklariert, mit derselben SID.
- Durch den globalen Katalog existieren auch auf den verschobenen DCs alle Objekte aus der Gesamtstruktur der Muttergesellschaft.
Diese Situation stellt für beide Seiten ein echtes Sicherheitsrisiko dar. In den richtigen Händen ist keines der Domänen vor einer Kompromittierung sicher.
Weitere Risiken wären:
Auf den verschobenen DCs wären ebenfalls die Tombstones der Muttergesellschaft enthalten die wiederbelebt werden könnten. Tombstones sind bereits gelöschte Objekte die aber noch in der AD-Datenbank existieren, solange noch nicht die Tombstone Lifetime abgelaufen ist.
Wenn Applikationen in der Muttergesellschaft eingesetzt werden die sensible Informationen im Active Directory speichern, wandern diese Daten ebenfalls auf den verschobenen DCs mit.
Sind Applikationen vorhanden die sich ins Active Directory verankern (wie z.B. Exchange), wandern diese Informationen ebenfalls mit.
Daher kann ich nur an jeden appellieren, auch wenn der Kunde König ist:
Finger weg von einem Domänensplitt!
Diese Art der Migration wird seitens Microsoft nicht supportet! Wer einen Domänensplitt durchführt, der sollte sich ernsthaft überlegen ob er den richtigen Job ausübt.
Findet eine Firmenteilung statt, ist stets eine Migration durchzuführen. Nur eine Migration wird seitens Microsoft unterstützt und ist auch reichlich sowie ausführlich auf den Microsoft-Seiten dokumentiert. Eine Migration durchzuführen benötigt Zeit, Know-How und kann mehr oder weniger je nach Größe der Umgebung kompliziert sein. Doch trotzdem rechtfertigt dies nicht einen Domänensplitt durchzuführen. Wer einer Migration nicht gewachsen ist, der sollte sich statt einen Domänensplitt durchzuführen, besser einen erfahrenen Dienstleister zur Seite holen.
Ein Tool welches bei einer Migration nie fehlen darf, ist das Active Directory Migration Tool - ADMT.
Weitere Informationen: Eine Domänenmigration durchführen ADMT Version 3.1 Forest Recovery
Ein Domänencontroller der aus der Domäne entfernt werden soll, wird ordnungsgemäß mit Ausführen von DCPROMO (Start - Ausführen - DCPROMO) zu einem Mitgliedsserver heruntergestuft. Ordnungsgemäß heißt, dass aus den Metadaten des Active Directory (AD) die Informationen bzgl. des Domänencontrollers (DC) automatisch während dem DCPROMO-Vorgang entfernt werden. Dazu muss natürlich der DC funktionstüchtig sein und Verbindung zur Gesamtstruktur haben.
Beim Herunterstufen eines DCs werden während des normalen DCPROMO-Vorgangs, folgende Änderungen durchgeführt:
-
Falls der DC der Träger der FSMO-Rollen sein sollte, werden diese auf einen anderen DC verschoben.
-
Das NTDS Settings Objekt wird samt Querverweisen entfernt.
-
Das Verzeichnis ...\NTDS in der sich die Verzeichnisdatenbank (Ntds.dit) samt Logs befinden, wird vom DC entfernt.
-
Abhängige Dienste des AD werden auf dem DC deinstalliert, wie z.B. der „Kerberos-Schlüsselverteilungscenter“ oder der „Standortübergreifender Messagingdienst“.
-
Das SYSVOL-Verzeichnis wird samt Inhalt vom DC entfernt.
-
Die lokale SAM-Datenbank wird auf dem Server erstellt.
-
Der Typ des Computerkontos wird von Domänencontroller zu Mitgliedsserver geändert. Dabei ändert sich der Wert im Attribut userAccountControl, das sich in den Eigenschaften des Computerkontos befindet, von Hex=0x82000 (Dezimal=532480) zu Hex=1000 (Dezimal=4096).
-
Das Computerkonto wird von der OU Domain Controllers in den Container Computers verschoben.
-
Das DNS wird weitestgehend bereinigt, in dem die SRV- sowie CNAME-Records des DCs entfernt werden.
Die Deinstallation der beiden Serverrollen Active Directory-Domänendienste und DNS-Server (falls installiert) unter Windows Server 2008, muss der Administrator noch nachträglich im Server-Manager manuell durchführen.
Wenn man den DC einfach abschalten und neu installieren würde, wären in den Metadaten des Active Directory noch alle Informationen des DCs enthalten. Die Daten des DCs wären weiterhin im AD gespeichert, falls dieser ausfallen (z.B. bei einem Hardwarecrash) oder erzwungen aus dem AD entfernt werden sollte. Die unnötigen Daten des DCs die im Active Directory bestehen bleiben, sind z.B. das DC-Objekt, das NTDS Settings Objekt, das FRS-Mitgliedsobjekt, die Verbindungsobjekte und die DNS-Informationen (bei AD-integrierter Forward Lookup Zone).
Bevor jedoch ein anderer Server mit demselben Computernamen zum DC heraufgestuft werden kann, muss sichergestellt sein, dass die Daten des DCs vollständig aus dem AD entfernt wurden. Abgesehen davon würden die Replikationspartner des ausgeschalteten oder defekten DCs Warnungen im Verzeichnisdienstprotokoll und im Dateireplikationsdienstprotokoll (bei der SYSVOL-FRS Replikation) melden, da sie mit ihm keine AD- bzw. SYSVOL-Replikation durchführen konnten. Daher sollten stets die Informationen eines nicht mehr existierenden DCs aus dem AD entfernt werden.
Die erzwungene Herabstufung eines Domänencontrollers
Befindet sich ein DC an einem entfernten Standort der temporär keine WAN/VPN-Verbindung zur Zentrale und somit zur Gesamtstruktur hat, ist das Herunterstufen eines DCs durch die erzwungene Herabstufung trotzdem möglich. Andere Ursachen die das herkömmliche Entfernen eines DCs nicht zulassen könnten, wären z.B. Probleme mit der Konnektivität, Namensauflösung (DNS), Authentifizierung, AD-Replikation (Stichwort: Tombstone Lifetime) oder ein Hardwaredefekt. Auch in solchen Situationen ist das herunterstufen eines DCs möglich, dabei aber nicht so komfortabel wie sonst üblich. Die AD-Informationen können dann zum einen auf dem DC selbst entfernt werden und zum anderen, müssen die Metadaten des ADs bereinigt werden. Diese Vorgehensweise besteht bereits seit Windows 2000.
Im ersten Schritt kann das erzwungene Herabstufen eines DCs mit dem Befehl DCPROMO /Forceremoval durchgeführt werden. Dazu müssen die DCs die unter Windows 2000 und Windows Server 2003 betrieben werden, im normalen Modus gestartet sein!
Der Vorgang bei einer erzwungenen Herabstufung eines DCs ist die gleiche, als wenn der letzte DC einer Domäne deinstalliert werden würde. Die Änderungen die lokal auf dem DC durchgeführt werden, sind die gleichen wie bei einem herkömmlichen DCPROMO-Vorgang. Das bedeutet, nach dem Ausführen von DCPROMO /Forceremoval werden auf dem DC die Änderungen die zu Beginn dieses Artikels aufgezählt wurden durchgeführt. Jedoch ist der DC nach der erzwungenen Herabstufung nicht mehr ein Mitgliedsserver der Domäne, sondern ist nun Mitglied einer Arbeitsgruppe.
Die Rolle AD-DS befindet sich (neben der Rolle des DNS-Servers) auch nach diesem Vorgang auf dem Server und kann nachträglich manuell deinstalliert werden. Im Systemprotokoll des Servers wird unter Windows 2000 die EventID 29234 und unter Windows Server 2003 sowie Windows Server 2008 die EventID 29239 protokolliert.

Eine Neuheit ab Windows Server 2008 wäre, das sich die erzwungene Herabstufung sogar im Modus Verzeichnisdienste wiederherstellen durchführen lässt. So können auch dann die AD-Informationen lokal vom DC entfernt werden, falls der DC nicht normal starten sollte. Dies war unter den früheren Serverversionen nicht möglich! Die erzwungene Herabstufung funktioniert auch wenn der Dienst Active Directory-Domänendienste gestoppt ist. Natürlich spielt es dabei keine Rolle, ob es sich um einen beschreibbaren oder Windows Server 2008 RODC handelt.
Wenn der DC unter Windows 2000 und Windows Server 2003 nicht im normalen Modus startet, so gibt es noch eine weitere Möglichkeit die AD-Informationen lokal vom DC zu entfernen. Das sei der Vollständigkeitshalbe erwähnt. Wie das funktioniert, wird in diesem Artikel erläutert:
Das Active Directory gewaltsam vom DC entfernen
Die Vorgehensweise bei einer erzwungenen Herabstufung eines DCs sieht folgendermaßen aus:
-
In einer Kommandozeile oder unter Start-Ausführen gilt es die erzwungene Herabstufung, mit dem Befehl DCPROMO /Forceremoval einzuleiten.
-
Seit Windows Server 2003 SP1 erhält dabei der Administrator nach Ausführen des Befehls für die folgenden Funktionen Warnhinweise. Jedoch können die Warnmeldungen bzgl. der FSMO-Rollen unterdrückt werden, wenn der Parameter /demotefsmo:yes angegeben wird.
- Wenn auf dem herunterzustufenden DC einer der FSMO-Rollen (oder alle) liegen sollte, erhält der Administrator für jede Rolle einen Warnhinweis.

- Ist das DNS auf dem DC installiert, wird ebenfalls ein Warnhinweis angezeigt. - Auch wenn der globale Katalog (GC) auf dem DC aktiviert ist, erscheint ein weiterer Warnhinweis.
Alle diese Warnungen müssen mit Ja bestätigt werden. Andernfalls bricht der Vorgang ab. Mit den Warnungen wird der Administrator darauf hingewiesen, diese Funktionen auf anderen DCs in der Gesamtstruktur sicherzustellen.
-
Es folgt die Willkommensseite des DCPROMO-Assistenten.
-
Im nächsten Schritt werden dem Administrator Informationen über die erzwungene Herabstufung und der Hinweis, dass die Metadaten der Gesamtstruktur nicht aktualisiert werden angezeigt.
-
Ist der DNS-Server auf dem DC installiert, erscheint ein weiterer Hinweis.
-
Im nächsten Fenster muss das lokale Administratorkennwort vergeben werden.
-
Anschließend folgt die Zusammenfassung und mit einem letzten Klick auf Weiter beginnt nun das Herabstufen des DCs.
-
Ist der Vorgang abgeschlossen, verlangt der Assistent einen Neustart. Anschließend befindet sich der Server in einer Arbeitsgruppe.
-
Das primäre DNS-Suffix der Domäne hat der Server nach diesem Vorgang noch weiterhin gespeichert, was natürlich geändert werden kann.
Domain controllers do not demote gracefully when you use the Active Directory Installation Wizard to force demotion in Windows Server 2003 and in Windows 2000 Server
Mit NTDSUTIL die Gesamtstrukturmetadaten bereinigen
Im zweiten Schritt müssen die Metadaten des Active Directory bereinigt und somit die Daten des nicht mehr existierenden DCs aus dem AD entfernt werden. Das bereinigen der Metadaten kann seit Windows 2000 mit NTDSUTIL oder ADSIEdit durchgeführt werden. Die NTDSUTIL Version die ab Windows Server 2003 SP1 enthalten ist, führt dabei weiterreichende Aufgaben durch, wie z.B. das seizen der FSMO-Rollen falls der zu entfernende DC der Rolleninhaber war. Im Anschluss daran bleibt noch das DNS zu bereinigen.
Die Metadaten werden mit NTDSUTIL ab dem Windows Server 2003 SP1 und somit auch unter Windows Server 2008 wie folgt bereinigt, wozu Domänen-Administratoren Rechte notwendig sind:
Hinweis: Die Vorgehensweise mit NTDSUTIL unter Windows 2000 und Windows Server 2003 RTM sind identisch. Jedoch weichen die Nacharbeiten unter Windows 2000 etwas ab.
-
Zuerst gilt es in einer Kommandozeile oder unter Start-Ausführen NTDSUTIL aufzurufen.
-
Als nächstes gibt man den Befehl Metadata cleanup ein.
-
Nun ist der Befehl Connections einzugeben.
-
Jetzt ist der Befehl Connect to Server <Servername> einzugeben. Einige machen an dieser Stelle den Fehler und versuchen sich auf den nicht mehr existierenden DC zu verbinden, was natürlich fehlschlägt. Es muss ein DC ausgewählt werden, der online und erreichbar ist.
-
Im fünften Schritt muss man mit dem Befehl Quit zum Menü Metadata cleanup zurückkehren.
-
Es folgt die Eingabe Select operation target.
-
Mit der Eingabe von List domains werden alle Domänen der Gesamtstruktur angezeigt.
-
Daraufhin ist mit dem Befehl Select domain <Domänennummer> die Domäne auszuwählen, aus der der DC entfernt werden soll.
-
Danach lässt man sich mit List sites alle AD-Standort der Gesamtstruktur anzeigen.
-
Mit dem Befehl Select site <Standortnummer> wählt man den Standort, aus dem der DC entfernt werden soll.
-
Dann lässt man sich mit dem Befehl List servers in site alle DCs des ausgewählten Standorts anzeigen.
-
Anschließend muss mit der Eingabe des Befehls Select server <DC-Nummer> der DC angegeben werden, der aus dem AD entfernt werden soll.
-
Mit der Eingabe von Quit muss man erneut in die Ebene Metadata cleanup zurückkehren.
-
Zu guter letzt wird mit der Eingabe von Remove selected server der DC nun endlich aus den Metadaten des AD entfernt.
-
Es folgt eine Sicherheitsabfrage ob der DC tatsächlich entfernt werden soll.

-
Falls der zu entfernende DC der Rolleninhaber einer der FSMO-Rollen sein sollte, wird für jede Rolle das Popup Bestätigung der Funktionenübernahme mit der entsprechenden Rolle angezeigt. Mit Ja oder Nein kann bestimmt werden, ob der angezeigte DC die Rollen übertragen bekommen soll.

-
Mit einem genauen Blick auf die Anzeige sollte sichergestellt werden, dass - falls FSMO-Rollen zu übertragen sind - auch tatsächlich alle Rollen übertragen wurde.
-
Wenn dem Administrator bei dem übertragen der FSMO-Rollen ein Fehler unterlaufen ist und dieser aus Versehen auf Nein geklickt hat, kann jederzeit im Nachgang die FSMO-Rolle wie gewohnt entweder durch die GUI (ausgeschlossen ist hier der RID-Master, dieser muss durch NTDSUTIL geseized werden) oder durch NTDSUTIL - seize auf einen anderen DC übertragen werden.
Die FSMO-Rollen verschieben
-
Mit Quit kann man nun NTDSUTIL beenden.
-
Weiterhin ist noch das DC-Objekt aus dem Snap-In Active Directory-Standorte und -Dienste (dssite.msc) zu entfernen. Dieses DC-Objekt bleibt auch beim normalen herunterstufen bestehen und muss zusätzlich noch entfernt werden. Unterhalb des DC-Objekts wurde bereits das NTDS Settings-Objekt entfernt, es existiert aber weiterhin noch das DC-Objekt. Nach dem entfernen des DC-Objekts verschwinden auch evtl. bestehende Verbindungsobjekte bei den Replikationspartnern.
-
Nach dem bereinigen der Metadaten sind noch die Einträge aus dem DNS zu löschen. Dabei sind die SRV-Einträge sowie der CNAME-Eintrag des DCs aus der Forward Lookup Zone der Domäne und aus der Zone “_msdcs.Root-Domäne“ zu entfernen. Falls eine Reverse-Lookup Zone existiert, dann sind auch dort die Einträge des DCs zu entfernen. Zusätzlich sollte der DC aus dem Reiter Namenserver, welches in den Eigenschaften der Forward Lookup Zone zu finden ist, entfernt werden.
Die Einträge im DNS können auch mit Hilfe von NLTEST entfernt werden. Das Tool befindet sich unter Windows 2000 sowie Windows Server 2003/2003 R2 in den Windows Support Tools und ist im Windows Server 2008 "on Bord". Die DC-spezifischen SRV-Einträge werden mit dem Befehl nltest /DSDEREGDNS:DomCon01.Domäne.TLD entfernt. Damit auch die GUID-Einträge des DCs entfernt werden, sind die Parameter /DOMGUID sowie /DSAGUID hilfreich.
Eine weitere und kürzere Variante mit NTDSUTIL die Metadaten zu bereinigen, die aber erst ab dem Windows Server 2003 SP1 zur Verfügung steht, wäre die folgende:
-
Es gilt zuerst das NTDSUTIL in der Befehlszeile oder unter Start-Ausführen zu starten.
-
Dann muss in die Ebene Metadata cleanup gewechselt werden.
-
Nun muss der Befehl remove selected server <DN des DCs aus der Konfigurationspartition> eingegeben werden. Der Befehl würde so aussehen: remove selected server CN=<DC-Name>,CN=Servers,CN=<Standortname>,CN=Sites,CN=Configuration,DC=<Root-Domäne>.
Wenn sich der DC mit dem Namen MZDCON01 im AD-Standort Mainz befindet und der FQDN der Root-Domäne „intra.dikmenoglu.de“ lautet, würde der Befehl zum entfernen so aussehen: remove selected server CN=MZDCON01,CN=Servers,CN=Mainz,CN=Sites,CN=Configuration,DC=intra,DC=dikmenoglu,DC=de.
-
Die Sicherheitsabfrage Bestätigung des Entfernens des Servers erscheint, die mit Ja zu bestätigen ist.
-
Befinden sich FSMO-Rollen auf dem zu entfernenden DC, wird für jede Rolle die Sicherheitsfrage Bestätigung der Funktionenübernahme gestellt. Es muss dann mit Ja oder Nein bestätigt werden, ob die entsprechende Rolle übertragen werden soll.
-
Die FSMO-Rollen können auch zu einem späteren Zeitpunkt in gewohnter Weise, mit NTDSUTIL - seize oder durch die GUI (bis auf den RID-Master) auf einen anderen DC übertragen werden.
-
Danach muss noch das DC-Objekt aus dem Snap-In Active Directory-Standorte und -Dienste entfernt werden.
-
Die SRV- sowie CNAME-Einträge aus den beiden Forward Lookup Zonen <Domäne> und <_msdcs.Root-Domäne>, sind ebenfalls noch zu löschen. Deise können manuell oder einfacher mit NLTEST entfernt werden. Der Befehl dazu lautet: nltest /DSDEREGDNS:DomCon01.Domäne.TLD. Zum entfernen der DC-GUID Einträge im DNS helfen die Parameter /DOMGUID sowie /DSAGUID.
Die genaue Vorgehensweise für ältere Server-Versionen wird in diesem Artikel erläutert: How to remove data in Active Directory after an unsuccessful domain controller demotion
War das der letzte DC einer Domäne, muss noch die Domäne aus den Metadaten entfernt werden. How to remove orphaned domains from Active Directory
Das bereinigen der Metadaten nach einer erzwungenen Herabstufung oder eines defekten beschreibbaren Windows Server 2008 DCs
Unter Windows Server 2008 wurde wie vieles andere, auch das bereinigen der Metadaten verbessert und für den Administrator erleichtert. Nun kann man das bereinigen der Metadaten, neben NTDSUTIL und ADSIEdit, zusätzlich in der MMC Active Directory-Benutzer und -Computer oder Active Directory-Standorte und -Dienste durchführen. Das bereinigen der Metadaten kann nun alleine durch die grafische Oberfläche durchgeführt werden.
Dazu sind in der MMC Active Directory-Benutzer und -Computer (ADBuC) die folgenden Schritte durchzuführen:
-
Im ersten Schritt ruft man das Snap-In ADBuC, entweder unter Start-Programme-Verwaltung oder durch Start-Ausführen-dsa.msc auf.
-
Danach wählt man in der OU Domain Controllers, worin sich standardmäßig die DCs befinden, den entsprechenden DC aus.
-
Mit einem Rechtsklick auf das Icon des DC-Objekts wählt man nun aus dem Kontextmenü die Option Löschen aus. Zum Löschen kann auch das rote „X“ auf der Symbolleiste gewählt werden.
-
Wie üblich unter Windows folgt eine Sicherheitsabfrage die es zu bestätigen gilt.

-
Im nächsten Schritt folgt erneut ein Warnhinweis. Der Administrator wird darauf hingewiesen, dass er versucht einen DC aus dem AD zu löschen, obwohl das DCPROMO für das ordnungsgemäße Herunterstufen noch nicht ausgeführt wurde. Für das ordnungsgemäße Herunterstufen solle man das DCPROMO auf dem DC ausführen.
Da z.B. bei einem Hardwarecrash des DCs das DCPROMO eben nicht ausgeführt werden kann, muss an dieser Stelle der Haken bei der folgenden Option gesetzt werden: Dieser Domänencontroller ist ständig offline und kann nicht mehr mit dem Installations-Assistenten für die Active Directory-Domänendienste (DCPROMO) herabgestuft werden.
Anschließend ist auf die Schaltfläche Löschen zu klicken.

-
Wenn auf dem zu löschenden DC der globale Katalog (GC) aktiviert sein sollte, erscheint ein weiterer Hinweis. Es sollte natürlich sichergestellt werden, dass die Funktion des GC weiterhin in der Gesamtstruktur zur Verfügung steht.

-
Falls der zu entfernende DC der Träger einer der FSMO-Rollen sein sollte, erscheint ein weiterer Hinweis mit der Frage, ob die Rollen auf den neuen DC übertragen werden sollen. Mit einem Klick auf OK werden die Rollen dann übertragen.

-
Des Weiteren ist noch das DC-Objekt aus der MMC Active Directory-Standorte und -Dienste zu entfernen. Spätestens danach verschwinden bestehende Verbindungsobjekte bei den Replikationspartnern.
Somit wurden endgültig die Metadaten des AD bereinigt. Leider erscheint bei dieser Vorgehensweise zum bereinigen der Metadaten am Ende kein Hinweis, dass der Vorgang abgeschlossen wurde.
Zum Schluss sollten noch die Informationen des DCs aus dem DNS entfernt werden. Das wären die SRV-Einträge sowie der CNAME Eintrag aus der Domänen-Forward Lookup Zone und aus der Zone „_msdcs.Root-Domäne“. Aus dem Reiter Namenserver in den Eigenschaften der Forward Lookup Zone ist der DC ebenfalls noch zu löschen. Mit NLTEST können die Einträge einfach entfernt werden: nltest /DSDEREGDNS:DomCon01.Domäne.TLD. Zum entfernen der DC-GUID Einträge im DNS helfen die Parameter /DOMGUID sowie /DSAGUID.
Hinweis für Windows Server 2008 DCs (und höher): Beim Bereinigen der AD-Metadaten durch den Domänen-Admin kann es unter Umständen vorkommen, dass man die Fehlermeldung Zugriff verweigert erhält. Die Ursache in den meisten Fällen ist, dass das NTDS Settings- und/oder DC-Objekt vor dem zufälligen Löschen geschützt ist! Entfernt man anschließend in der MMC Active Directory-Standorte und -Dienste diesen Schutz, können anschließend die Metadaten erfolgreich bereinigt werden.
Siehe auch: Wer hat das Objekt gelöscht?
Das bereinigen der Metadaten nach einer erzwungenen Herabstufung oder eines defekten Windows Server 2008 Read-Only Domänencontroller
Die Daten eines Read-Only Domänencontrollers (RODC) werden aus dem AD, auf ähnliche Weise wie ein beschreibbarer Windows Server 2008 entfernt. Das Verfahren durch die MMC Active Directory-Benutzer und -Computer (dsa.msc) sieht folgendermaßen aus:
-
Nach dem öffnen der MMC dsa.msc gilt es das RODC-Objekt in der OU Domain Controllers mit einem Rechtklick auszuwählen und aus dem Kontextmenü die Option Löschen zu wählen. In der Symbolleiste kann auch das rote „X“ zu löschen des RODC-Objekts gewählt werden.
-
Es folgt eine Sicherheitsabfrage, ob der ausgewählte RODC gelöscht werden soll.
-
Als nächstes hat man die Möglichkeit auszuwählen, ob die Kennwörter der Benutzer- und/oder Computerkonten die auf dem RODC gespeichert wurden, zurückgesetzt werden sollen. Im Fall der Computerkonten müssen nach dem zurücksetzen der Computerkontokennwörter die Clients erneut zur Domäne hinzugefügt werden. Zusätzlich wird die Option angeboten, die Konten die auf dem RODC gespeichert wurden (sei es Benutzer- oder Computerkonten) sich anzeigen oder in eine Datei exportieren zu lassen.
Diese Optionen werden beim Entfernen eines RODCs durch NTDSUTIL nicht angeboten! Dem Administrator stehen diese Optionen ausschließlich beim entfernen eines RODCs über die grafische Oberfläche (dsa.msc und dssite.msc) zur Verfügung.

-
Es folgt eine Übersicht über die im vorherigen Schritt gewählten Optionen.

-
Ist der GC auf dem RODC aktiviert, erscheint ein weiterer Hinweis mit der Frage, ob der Löschvorgang fortgesetzt werden soll.

-
Zum Schluss muss noch das RODC-Objekt aus dem Snap-In Active Directory-Standorte und -Dienste entfernt werden.
Anschließend muss im DNS nichts durchgeführt werden. Die Einträge in der Domänen-Forward Lookup Zone sowie „_msdcs.Root-Domäne“ sind automatisch gelöscht.
Einen beschreibbaren Windows Server 2008 DC oder RODC aus Active Directory-Standorte und -Dienste entfernen
Neben der MMC Active Directory-Benutzer und -Computer können die Daten eines beschreibbaren Windows Server 2008 DC oder RODC auch durch die MMC Active Directory-Standorte und -Dienste entfernt werden. Die Vorgehensweise ist die gleiche wie in der MMC ADBuC. Allerdings muss das NTDS Settings Objekt gelöscht werden und nicht etwa das DC-Objekt!
Der Versuch direkt das DC-Objekt in dssite.msc zu löschen schlägt fehl, solange nicht zuerst das NTDS Settings Objekt unterhalb des DC-Objekts gelöscht wurde.
Weitere Informationen: How to use the UserAccountControl flags to manipulate user account properties Active Directory-Domänendienste (AD-DS)
Wenn ein zusätzlicher Domänencontroller (DC) z.B. durch die Install from Media-Funktion (kurz IFM) bereitgestellt wird, kann es je nach Umgebung eine Weile dauern bis die Replikation vollständig abgeschlossen wurde. Die Dauer der Replikation hängt von der Größe der Active Directory-Datenbank (Ntds.dit), von der zur Verfügung stehenden Badbreite und von dem Replikationszeitplan ab. Wobei die zur Verfügung stehende Bandbreite sowie der Replikationszeitplan bei der standortübergreifenden, der sogenannten Inter-Site Replikation eher eine Rolle spielt.
In vielen Umgebungen in denen vielleicht nur ein AD-Standort existiert reicht meistens ein Blick in die einzelnen MMCs aus. Diese wären z.B. das Active Directory-Benutzer und –Computer Snap-In, das DNS-Snap-In (bei AD-integrierter FLZ) oder dem Verzeichnisdienstprotokoll, um festzustellen ob bereits die Active Directory-Replikation stattgefunden hat oder evtl. ein Problem mit der AD-Replikation besteht. Wer es aber genau wissen möchte hat die Möglichkeit, sich im laufenden Betrieb einen Überblick über die Replikation zu verschaffen, ob auch tatsächlich die Repliken auf den verschiedenen DCs identisch sind. Ohnehin sollte ein Administrator die AD-Replikation stets überprüfen.
Mit den beiden Kommandozeilentools DSASTAT und REPADMIN lässt sich zum einen der Inhalt einer Verzeichnispartition auf zwei DCs vergleichen und zum anderen, eine statistische Auswertung der Verzeichnispartition durchführen. So lassen sich Unstimmigkeiten innerhalb einer Active Directory-Partition zwischen zwei DCs aufdecken. Auch lässt sich das ganze über die grafische Oberfläche mit REPLMON überprüfen.
Alle drei genannten Tools befinden sich unter Windows 2000 sowie Windows Server 2003 in den Windows Support Tools, die auf der Windows 2000 sowie Windows Server 2003 CD im Verzeichnis Support/Tools zu finden sind. Für beide Server-Versionen können die Support Tools auch von den Microsoft-Seiten heruntergeladen werden (siehe unter Weitere Informationen). Die beiden Tools DSASTAT und REPLMON existieren unter Windows Server 2008 nicht. Aber auch unter Windows Server 2008 lassen sich die Windows Server 2003 SP2 Support Tools installieren. Direkt nach dem Starten der Installation meldet der Assistent zwar bekannte Kompatibilitätsprobleme, aber dennoch lassen sich die Support Tools ohne weiteres installieren und im Fall von DSASTAT sowie REPLMON, auch ohne Funktionsverlust verwenden. Andererseits ist im Windows Server 2008 das REPADMIN bereits im Betriebssystem integriert.
DSASTAT
Das DSASTAT kann eine Verzeichnispartition zwischen zwei DCs der gleichen Domäne oder im Falle des globalen Katalogs, zwischen verschiedenen Domänen überprüfen. Dabei werden im ersten Schritt die Informationen wie Megabyte pro Server, Objekte pro Server und Megabyte pro Objektklasse ausgelesen. Im zweiten Schritt werden dann die Attribute der replizierten Objekte miteinander verglichen. So kann überprüft werden, ob die Verzeichnispartition auf beiden DCs exakt übereinstimmt. Die Hilfe zu DSASTAT lässt sich wie gewohnt in der Kommandozeile mit dem Befehl dsastat /? aufrufen, in der die wenigen Parameter erläutert werden.
Die Verzeichnisinformationen aller DCs in der Domäne, werden mit diesem Befehl vergliechen: Dsastat –loglevel:debug –output:both
Dieser Befehl vergleicht die Verzeichnisinformationen der angegebenen DCs: Dsastat -s:<DC01>;<DC02>;<DC03>
Eine ausführlichere Überprüfung wird mit diesem Befehl durchgeführt: dsastat –s:DomainS1;DomainS2 –b:DC=Domain,DC=com –gcattrs:all –sort:true –t:false –p:100
Um z.B. den Standard-Container Users zwischen zwei DCs zu vergleichen, muss der folgende Befehl eingegeben werden (alles in einer Zeile): dsastat -s:DC01;DC02 -b:CN=Users,DC=intra,DC=domaene,DC=de -gcattrs:all -sort:true -t:false -p:100 -filter:"(&(objectcategory=person)(objectclass=user))"
Wenn ein DC aus der Sub-Domäne mit dem globalen Katalog der Root-Domäne verglichen werden soll, so gilt es diesen Befehl einzugeben: dsastat -s:RootDC:3268;FQDN-SubDC -b:DC=sub,DC=domäne,DC=de -gcattrs:objectclass -p:500
Wichtig ist egal welcher Befehl verwendet wird, immer das Ende der Ausgabe.

REPADMIN
Eine andere Möglichkeit eine Verzeichnispartition zwischen zwei DCs zu vergleichen, stellt das REPADMIN dar.
Unter Windows 2000 lautet die Syntax wie folgt: Repadmin /getchanges <DN-NamingContext> <FQDN-DC01> <GUID-DC02> Repadmin /getchanges <DN-NamingContext> <FQDN-DC02> <GUID-DC01>
Besteht zwischen beiden DCs ein unterschiedlicher Datenbestand innerhalb einer Verzeichnispartition, werden die Objekte um die es geht in der Ausgabe aufgeführt.
Hinweis: Der Parameter /getchanges in Windows 2000, wird auch unter Windows Server 2003 sowie Windows Server 2008 weiterhin unterstützt.
Des Weiteren können auch die folgenden Befehle, auf jeweils beiden DCs unter Windows 2000, Windows Server 2003 und 2008 ausgeführt werden, um so den up-to-dateness vector zu vergleichen:
Repadmin /showvector <DN-NamingContext> <NameDC1> Repadmin /showvector <DN-NamingContext> <NameDC2>
Unter Windows Server 2003 sowie Windows Server 2008 ist dieser Befehl einzugeben: Repadmin /showchanges <FQDN-ZielDC> <GUID-QuellDC> <DN-NamingContext> /statistics
Die Konfigurationspartition kann zwischen einem DC der Root-Domäne und einem DC einer Sub-Domäne wie folgt überprüft werden: Repadmin /showchanges <FQDN-ZielDC> <GUID-QuellDC> <CN=Configuration,DC=Root-Domäne,DC=de> /statistics
Die Anwendungsverzeichnispartition ForestDNSZones kann folgendermaßen überprüft werden: Repadmin /showchanges <FQDN-ZielDC> <GUID-QuellDC> <DC=ForestDNSZones,DC=Root-Domäne,DC=de> /statistics
Die Object-GUID eines DCs lässt sich z.B. unter Windows 2000 mit Repadmin /showreps und unter Windows Server 2003 sowie Windows Server 2008 mit Repadmin /showrepl herausfinden.
REPLMON
Mit dem Replication-Monitor lassen sich ebenfalls Unterschiede einer Verzeichnispartition zwischen zwei DCs unter Windows 2000, Windows Server 2003 und Windows Server 2008 aufdecken.
-
Nach dem Starten von REPLMON gilt es zuerst unter dem Menüpunkt View die Options aufzurufen.
-
Im Reiter General ist die Option Show Transitive Replication Partners and Extended Data zu aktivieren und anschließend die Auswahl mit OK zu bestätigen.
-
Danach ist in der linken Spalte mit einem Rechtsklick auf Monitored Server die Option Add Monitored Server… zu wählen.
-
Im Assistent Add Monitored Server Wizard der daraufhin startet, gilt es einen gewünschten DC (z.B. einen neu hinzugefügten DC „DC01“) anzugeben, der dann in der linken Spalte im Replmon erscheint.
-
Nun muss auf das Pluszeichen der entsprechenden Verzeichnispartition geklickt werden, damit mit einem Rechtsklick auf dem anderen DC (DC02), mit dem die Verzeichnispartition verglichen werden soll, die Option Check Current USN and Un-replicated Objects ausgewählt werden kann.
-
Falls notwendig, können für diesen Vorgang alternative Benutzerinformationen angegeben werden.
-
Wenn es nun Objekte gäbe die von DC02 zu DC01 noch nicht repliziert wurden, würden diese noch nicht replizierten Objekte in einer Meldung angezeigt werden.
-
Soll hingegen die Replikation einer bestimmten Verzeichnispartition von DC01 zu DC02 kontrolliert werden, so sind die gleichen Schritte auszuführen bis auf Punkt 4 (und 5). Dort ist dann DC02 als Monitored Server auszuwählen und an der gewünschten Verzeichnispartition mit einem Rechtsklick auf DC01, erneut die Option Check Current USN and Un-replicated Objects auszuwählen.
Weitere Informationen: Windows 2000 Service Pack 4 Support Tools Windows Server 2003 Service Pack 2 32-bit Support Tools Dsastat Examples Determining the Server GUID of a Domain Controller
Nun da seit einigen Monaten der Windows Server 2008 gelaunched wurde, ist auch seit gestern (09.07.2008) die neue ADMT Version 3.1 verfügbar, das jetzt auch den Windows Server 2008 unterstützt. Wer einmal eine Migration mit dem „Active Directory Migration Tool“ durchgeführt hat, weiß dieses Tool zu schätzen. Damit ist es möglich, Benutzer-, Computer- sowie Gruppenkonten von einer Domäne in eine andere Domäne zu migrieren. Die Profileinstellungen der Benutzer bleiben alle samt erhalten. Der Benutzer selbst merkt von dieser Migration nichts.
Allerdings wird Windows NT standardmäßig nicht mehr unterstützt!
Jedoch gibt es auf der Download-Seite von ADMT v3.1 den folgenden Hinweis:
To obtain customer support if you are performing migration operations involving NT 4.0 source domains or NT 4.0 domain controllers (with SP4 or higher), please contact your Microsoft Services representative or visit http://www.microsoft.com/microsoftservices.
Hier der Download:
Download details: ADMT v3.1
Hier das Whitepaper zu dem Tool: Download details: Migrating and Restructuring Active Directory Domains Using ADMT v3.1
Weitere Informationen: Benutzermigration mit ADMT v3: How-To
Damit der tägliche Benutzersupport nicht alleine auf den Schultern des Administrators lastet, kann er diverse Aufgaben im Active Directory an den First Level Support oder an EDV-versierte Mitarbeiter delegieren.
Siehe auch:
Objektdelegierungen einrichten Der Objektdelegierungsassistent
Delegierte Berechtigungen im AD verstehen
Nun kann es auch erforderlich werden, lediglich das Recht zum aktivieren bzw. deaktivieren eines Benutzerkontos im Active Directory zu delegieren. Der Haken an diesem Vorhaben ist, dass nicht ein dediziertes Recht oder Attribut zum delegieren dieser Anforderung existiert. Die Option Konto ist deaktiviert um das es hier geht, findet man in den Eigenschaften eines Benutzerkontos im Reiter Konto unter den Kontooptionen.
Die Kontooptionen werden dabei weitestgehend über das Attribut User-Account-Control gesteuert, das sich aus einer Bitmaske zusammensetzt. Das Attribut userAccountControl existiert sowohl in Benutzer- als auch in Computerkonten. Wenn z.B. ein Benutzerkonto erstellt wird, hat das userAccountControl den Wert 512 (Hex: 0x0200). Je nachdem ob und welche Optionen in den Kontooptionen zusätzlich aktiviert werden, verändert sich auch der Wert im userAccountControl. Standardmäßig enthält das userAccountControl eines Clients den Wert 4096 (Hex: 0x1000).
Dadurch das im userAccountControl verschiedene Werte enthalten sein können, unterscheidet es sich wesentlich von anderen Attributen die lediglich einen Wert enthalten können. Die einzelnen Werte die das userAccountControl enthalten kann, werden in diesem Artikel erläutert:
How to use the UserAccountControl flags to manipulate user account properties
Wenn nun einem Sicherheitsprinzipal (so wie es z.B. Benutzer oder Gruppen darstellen) das Schreibrecht für das Attribut userAccountControl auf einem Container delegiert wird, erhält das Sicherheitsprinzipal auf eine Reihe von Kontooptionen das Schreibrecht, auf die im Container befindlichen Benutzerobjekte. Nach der Delegierung stehen dem Sicherheitsprinzipal folgende Kontooptionen zur Verfügung:
Die Delegierung für das userAccountControl kann in der MMC Active Directory-Benutzer und -Computer (ADBuC) durch den Objektdelegierungsassistenten durchgeführt werden. Mit einem Rechtsklick auf den entsprechenden Container gilt es zuerst die Option Objektverwaltung zuweisen… auszuwählen. Nach der Willkommensseite ist der Benutzer oder idealerweise eine Gruppe auszuwählen, die für die Verwaltung der Kontooptionen zuständig sein soll. Danach gilt es die Option Benutzerdefinierte Tasks zum Zuweisen erstellen und anschließend unter der Option Folgenden Objekten im Ordner lediglich die „Benutzer“-Objekte auszuwählen. Im darauffolgenden Schritt gilt es dann nur die Option Eigenschaftenspezifisch und unter den Berechtigungen die Option userAccountControl schreiben zu aktivieren.
Neben dem Assistenten kann die Berechtigung userAccountControl schreiben auch in der Discretionary Access Control List (kurz DACL) des Containers, an die Gruppe delegiert werden. Dazu ruft man mit einem Rechtsklick auf dem gewünschten Container die Eigenschaften auf und wechselt zum Reiter Sicherheit. Der Reiter Sicherheit erscheint nur, wenn in der MMC ADBuC unter Ansicht die Option „Erweiterte Funktionen“ aktiviert wurde. Mit einem Klick auf „Erweitert“ gelangt man zu den erweiterten Sicherheitseinstellungen, der sogenannten DACL. Dort angelangt, gilt es mit „Hinzufügen“ zuerst eine Gruppe und im Reiter „Eigenschaften“ im Feld „Übernehmen für“ die „Benutzer“-Objekte auszuwählen. Zum Schluss muss die Berechtigung „userAccountControl“ schreiben zugelassen werden.
Über die Kommandozeile lässt sich die Delegierung mit dem Tool DSACLS, das sich unter Windows 2000 sowie Windows Server 2003 in den Windows Support Tools befindet und im Windows Server 2008 bereits integriert ist, einrichten. Der Befehl lautet wie folgt:
DSACLS “<Containerpfad>” /I:S /G “<Domäne>\<Gruppe>”:WP;userAccountControl;User
Die Kontooptionen können aber noch weiter eingeschränkt werden. Der Zugriff auf die beiden Optionen Kennwort läuft nie ab sowie Kennwort mit umkehrbarer Verschlüsselung speichern kann in einem zweiten Schritt, der Gruppe verweigert werden. Dazu sind zuerst auf der Domänenebene die Eigenschaften aufzurufen. Danach ruft man im Reiter „Sicherheit“ mit einem Klick auf „Erweitert“ die erweiterten Sicherheitseinstellungen auf. Mit „Hinzufügen“ gilt es die Gruppe auszuwählen, die im ersten Schritt das Schreibrecht auf das userAccountControl erhalten hat. Im Reiter „Objekt“ ist im Feld „Übernehmen für“ die Option „Nur dieses Objekt“ zu wählen. Anschließend gilt es die beiden erweiterten Berechtigungen, die erst seit Windows Server 2003 zur Verfügung stehen, zu verweigern:
Man achte auf die grandiosen und vor allem eindeutigen Bezeichnungen!
Weitere Informationen: Delegierte AD-Berechtigungen anzeigen und entfernen Minimum permissions are needed for a delegated administrator to force password change at next logon procedure
Viele Administratoren die eine Active Directory Umgebung betreuen, werden bereits den Objektdelegierungsassistenten kennengelernt haben. Dieser Assistent der sich zum einen in der MMC Active Directory-Benutzer und -Computer und zum anderen, in der MMC Active Directory-Standorte und -Dienste aufrufen lässt, ist dem Administrator bei der Zuweisung von Active Directory-Berechtigungen behilflich. Mit dem Assistenten können bei den zur Verfügung stehenden allgemeinen Tasks, schnell Berechtigungen für einige typische Fälle zugewiesen werden. An dieser Stelle bietet der Assistent aber nur einen kleinen Teil der Möglichkeiten an.
Der Assistent ist dabei nur eine von insgesamt drei möglichen Varianten, um Benutzern entsprechende Rechte im Active Directory zu delegieren. Die beiden anderen Varianten wären, dass direkte bearbeiten der erweiterten Sicherheitseinstellungen (im security descriptor) eines Objekts und das Kommandozeilentool DSACLS. Wobei gerade die Administratoren, die sich nicht so sehr im Active Directory auskennen, den Delegierungsassistenten verwenden sollten.
Weitere Details werden in den beiden folgenden Artikeln erläutert:
Objektdelegierungen einrichten Delegierte Berechtigungen im AD verstehen
Was viele Administratoren nicht wissen ist, das beim Ausführen des Delegierungsassistenten an dem Punkt Zuzuweisende Aufgaben die dort aufgeführten allgemeinen Tasks, aus einer Textdatei stammen.
Diese Textdatei die den Namen delegwiz.inf trägt, existiert auf jedem Domänencontroller (und jedem Mitgliedsserver) und ist jederzeit veränderbar. Die Datei delegwiz.inf befindet sich unter Windows 2000 sowie Windows Server 2003 im Verzeichnis %windir%\Inf und unter Windows Server 2008 im Verzeichnis %windir%\system32.
Standardmäßig sind dort unter Windows 2000 bereits sieben und unter Windows Server 2003 sowie Windows Server 2008 13 Aufgaben vordefiniert. Je nachdem in welcher MMC und auf welcher Ebene der Delegierungsassistent ausgeführt wird, variiert die Anzeige der allgemeinen Tasks. Die vordefinierten allgemeinen Aufgaben dienen dazu, eine Reihe von Berechtigungen und nicht gezielt ein einzelnes Recht zu vergeben.
Der Administrator kann weitere Vorlagen in die delegwiz.inf Datei eintragen, um sich damit seine tägliche Arbeit zu erleichtern. Denn wiederkehrende Aufgaben können in die Datei delegwiz.inf mit aufgenommen werden und stehen dann, ab sofort für die Zukunft als weitere allgemeine Tasks zur Verfügung. Unter Windows Server 2008 muss zuerst der Administrator den Besitz der delegwiz.inf Datei übernehmen und anschließend die Rechte anpassen. Danach kann die Datei auch unter Windows Server 2008 bearbeitet werden.
Es dürfte jedem klar sein, dass das erweitern der delegwiz.inf Datei durch zusätzliche Aufgaben dann auch nur auf dem einen DC erscheinen, auf dem die Datei bearbeitet wurde. Auf den anderen DCs steht die hinzugefügte neue Aufgabe selbstverständlich nicht zur Verfügung. Entweder man richtet dann die Delegierung im Active Directory nur über diesen einen DC für die Zukunft ein oder fügt die Änderung in der delegwiz.inf auf allen anderen DCs hinzu. Eine andere Möglichkeit wäre die bearbeitete Datei im Nachhinein auf alle anderen DCs zu kopieren.
Wenn man sich nun die Datei delegwiz.inf genauer anschaut, ist der Aufbau einer allgemeinen Aufgabe immer gleich. Die wesentlichen Punkte einer Vorlage wären:
-
Für welche Container-Klasse steht die allgemeine Aufgabe zur Verfügung.
-
Die Beschreibung für die allgemeine Aufgabe.
-
Welche Berechtigungen werden erteilt, wenn die allgemeine Aufgabe delegiert wird.
Hier ein Beispiel aus der delegwiz.inf:
[DelegationTemplates]
Templates = template1, template2,…
;---------------------------------------------------------
[template1]
AppliesToClasses=domainDNS,organizationalUnit,container
Description="Erstellt, entfernt und verwaltet Benutzerkonten"
ObjectTypes=SCOPE, user
[template1.SCOPE]
user=CC,DC
[template1.user]
@=GA
;---------------------------------------------------------
Der Aufbau der Vorlage sieht folgendermaßen aus:
-
Bei dem Hinzufügen einer neuen Vorlage muss unter der Zeile [DelegationTemplates] zuerst ein neuer Eintrag template mit einer fortlaufenden Nummer hinzugefügt werden. Dort sind bereits unter Windows Server 2003/2008 13 Einträge vorhanden. Demzufolge muss beim Hinzufügen einer neuen Aufgabe der Eintrag template14 ergänzt werden. Der nächste Eintrag würde dann template15 lauten usw.
-
Es folgt unter der gestrichelten Linie in eckigen Klammern die Angabe der Vorlagennummer [template14], die in der Zeile [DelegationTemplates] angegeben wurde. Mit diesem Eintrag wird eine neue Vorlage eröffnet.
-
Die nächste Zeile AppliesToClasses gibt an, für welche Klassen diese Vorlage bei dem Einrichten einer Delegierung vorhanden sein soll. Die einzelnen Klassen werden durch ein Komma getrennt. Falls also der Eintrag AppliesToClasses=organizationalUnit existiert bedeutet dies, das diese Vorlage bei dem Ausführen des Delegierungsassistenten nur auf einer Organsationseinheit (OU) angezeigt wird. Es können folgende Klassen eingetragen werden: container (dabei wird die Vorlage auf einem Container wie z.B. auf den Standard-Containern Computers oder Users angezeigt), domainDNS (hier erscheint die Vorlage beim Ausführen des Delegierungsassistenten auf der Domänenebene), organizationalUnit (die Vorlage erscheint auf einer Organisationseinheit) und site (hierbei erscheint die Vorlage auf Standortebene).
ACHTUNG: Diese Werte sind case sensitive. Das bedeutet, bei den Einträgen ist auf die Groß-/Kleinschreibung zu achten! Würde also als Wert anstatt organizationalUnit diese Schreibweise verwendet werden OrganizationalUnit, so würde die Vorlage nicht auf OU-Ebene angezeigt werden.
-
Der nächste Eintrag Description dient zur Beschreibung dieser Vorlage. Der hier eingetragene Text wird beim Ausführen des Delegierungsassistenten bei den allgemeinen Tasks angezeigt.
-
In der Zeile ObjectTypes können mehrere Werte enthalten sein. So könnten z.B. die Werte ObjectTypes=SCOPE, user eingetragen sein. Hier werden die einzelnen Objekt-Klassen deren Berechtigungen angepasst werden sollen angegeben. Bei mehreren Einträgen werden diese durch ein Komma getrennt. Die eigentlichen Berechtigungen werden dann jeweils in einer eigenen Zeile angegeben.
Mit dem Eintrag SCOPE wird definiert, für welche Objekte die zu vergebenen Berechtigungen gelten sollen. Nämlich für „Dieses und alle untergeordneten Objekte“. Dabei ist es nicht zwingend, dass dieser Eintrag existiert.
-
Die Angabe von user=CC,DC unterhalb von [template1.SCOPE] gibt die zu vergebenen Berechtigungen an und zwar für die vorher angegebene Klasse: ObjectTypes=SCOPE. Die Berechtigungen die im Security Descriptor Definition Language (SDDL)-String anzugeben sind, CC sowie DC, stehen für „Create Child“ und „Delete Child“. Child steht in diesem Fall für Benutzerobjekte. Das bedeutet, hier wird die Berechtigung für das erstellen sowie löschen von Benutzerkonten (user) vergeben.
-
Unterhalb des Eintrags [template1.user] existiert der Eintrag @=GA. Das @-Symbol gibt an, dass die Berechtigung auf allen Attributen des Objekts, das in der Zeile ObjectTypes angegeben wurde, vergeben werden soll. Die Berechtigung GA steht für „Generic All“, was Vollzugriff bedeutet. Der Eintrag @=GA bedeutet also, das der „Vollzugriff auf Benutzerobjekte“ gewährt wird. Möchte man anstatt auf allen Attributen, bloß auf einem oder wenigen Attributen eines Objekts Berechtigungen vergeben, so kann dies mit Angabe der Attribut-Namen und der gewünschten Berechtigung erreicht werden. Also z.B. so: lockoutTime=WP.
Siehe auch: How to customize the task list in the Delegation Wizard
Soll z.B. das Entsperren von Benutzerkonten durch eine allgemeine Aufgabe delegiert werden, so gilt es in der delegwiz.inf Datei diese Vorlage zu ergänzen:
;--------------------------------------------------------- [template14] AppliesToClasses=domainDNS,organizationalUnit,container
Description="Benutzerkonten entsperren"
ObjectTypes=user
[template14.user] lockoutTime=WP
;----------------------------------------------------------
Oder wenn man die Berechtigung zum verschieben von Computerkonten delegieren möchte, so kann die folgende Vorlage dazu verwendet werden. Allerdings gilt es dann diese Aufgabe auf dem Quell- sowie Ziel-Container durchzuführen.
;--------------------------------------------------------- [template15] AppliesToClasses=domainDNS,organizationalUnit,container
Description="Computerkonten verschieben"
ObjectTypes=SCOPE, computer
[template15.SCOPE] computer=CC,DC
[template15.computer] cn=WP name=WP
;----------------------------------------------------------
Wer die Berechtigung zum verschieben von Objekten restriktiver handhaben möchte, der kann dies auf folgende Weise erledigen. Zum verschieben eines Active Directoy-Objekts, sei es z.B. ein Benutzer-, Computer oder Gruppenkonto, müssen die Rechte wie folgt gesetzt sein:
-
Es muss das Recht DELETE CHILD (DC) auf dem Quell-Container gesetzt werden.
-
Das Recht WRITE PROPERTIES (WP) für die beiden Eigenschaften RDN (das wäre das Attribut „name“) sowie CN auf dem Quell-Container ist zu setzen.
-
Auf dem Ziel-Container muss das Recht CREATE CHILD (CC) gesetzt werden.
Nun könnte man die ersten beiden Punkte in einer Vorlage und den dritten Punkt in einer eigenen Vorlage erstellen. Denn es wird weder das Recht CC im Quell-Container, noch die beiden Rechte DC und WP im Ziel-Container benötigt. Demzufolge muss auf dem Quell-Container die Aufgabe mit den ersten beiden Punkten und auf dem Ziel-Container die Aufgabe mit dem dritten Punkt ausgeführt werden.
Falls das Recht Benutzerkonten zu verschieben delegiert werden soll, so reicht es die Einträge computer durch user in dem template15 zu ersetzen.
Microsoft stellt auf dieser Seite insgesamt 70(!) Vorlagen zur Verfügung.
Dadurch stellt der Delegierungsassistent ein Werkzeug dar, womit sich viele alltägliche Delegierungsaufgaben lösen lassen.
Weitere Informationen: Delegierte AD-Berechtigungen anzeigen und entfernen
In dem Artikel Delegierte Berechtigungen im AD verstehen wurden die Hintergründe bei der Objektdelegierung erläutert, worauf auch auf die techische Umsetzung kurz eingegangen wurde. In diesem Artikel soll dieser Punkt weiter erläutert werden.
Die Delegierungsfunktionen im Active Directory bieten dem Administrator die Möglichkeit, administrative Aufgaben an andere Benutzer zu delegieren. Durch die Objektverwaltung werden eine Reihe von Sicherheitsproblemen beseitigt. Diese Funktion die seit Windows 2000 existiert macht es möglich, dass Benutzer im Active Directory nur die Berechtigungen, die sie auch tatsächlich für ihre tägliche Aufgabe benötigen erhalten. Die Verwaltung der Objekte kann somit an andere Benutzer übergeben werden und hat den Vorteil, dass dadurch die Administration dezentral verteilt werden kann. Der Administrator muss nicht alle Active Directory-Aufgaben selbst durchführen. Der Sicherheitsaspekt ist dabei ebenfalls nicht zu verachten, denn es existieren auch heute noch zu viele Domänen-Administratoren in den Unternehmen die es nicht geben müßte, Dank der Objektverwaltung.
Viele Unternehmen schöpfen die Möglichkeiten der Delegierung nicht aus. Einige Unternehmen sind sich dessen garnicht bewußt was hinter dieser Funktion steckt und andere wiederum scheuen sich davor, ein entsprechendes Delegierungskonzept abgestimmt auf die unternehmerischen Anforderungen zu entwerfen. Dabei ist die Planung eines Delegierungskonzepts nicht kompliziert, es muss lediglich klar sein was erreicht werden soll. Daher ist es unausweichlich zu dokumentieren, welche Berechtigungen die Benutzer erhalten sollen bevor es an die technische Umsetzung geht. Welche Benutzer sollen welche Berechtigungen für welche Verwaltungsaufgaben erhalten. Welche Aufgaben können delegiert werden und welche Arbeiten sollten von der IT-Abteilung durchgeführt werden. Es benötigt auch ein Grundverständinis für die rollenbasierte Administration um das ideale Delegierungsmodell zu entwickeln. Denn das Active Directory ist als Verzeichnisdienst geradezu prätestiniert eine rollenbasierte Administration aufzubauen. Zugangsberechtigungen können der Rolle eines Mitarbeiters und nicht seinem Namen zugeordnet werden.
Einige Grundregeln die es bei dem Konzept zu beachten gilt wären:
-
Delegierungen sollten immer auf Gruppen angewendet werden und nicht auf einzelne Personen. Das gestaltet die zukünftige Administration erheblich einfacher, denn es können flexibler Benutzer zu der Gruppe mit den bereits delegierten Berechtigungen hinzugefügt oder wieder entfernt werden. Somit müssen z.B. die gleichen Berechtigungen eines ausgeschiedenen Mitarbeiters nicht erneut seinem Nachfolger delegiert werden. Der Nachfolger muss lediglich der Gruppe hinzugefügt werden und kann dann die gleichen Aufgaben wahrnehmen.
-
Die Domänen-Administratoren sollten mit einem normalen Benutzerkonto angemeldet sein, um nicht mit zu hohen Berechtigungen permanent angemeldet zu sein. Erst wenn administrative Arbeiten durchzuführen wären, sollte man sich mit einem administrativen Konto anmelden.
-
Die Option „Ausführen als“ (Run as) sollte genutzt werden. Das macht das eine oder andere anmelden als Domänen-Administrator überflüssig.
Ein wesentlich wichtiger Punkt beim Entwerfen eines Delegierungskonzepts ist auch eine entsprechende OU-Struktur zu Planen, die den Ansprüchen des Unternehmens genügt. Denn das Einrichten von Organisationseinheiten (OU) hat zweierlei Vorteile. Zum einen lassen sich auf OUs Gruppenrichtlinien anwenden und zum anderen dienen OUs als Vewaltungsbereich innerhalb des Active Directorys. OUs tragen im Delegierungskonzept eine wichtige Rolle, denn durch das Erstellen von OUs werden die Rechte über Objekte auf diese Ebene begrenzt. Das bedeutet konkret, soll der First-Level Support alle Benutzer aus dem Verkauf und nur diese administrieren (Benutzerkonto erstellen/löschen, Konto entsperren, Kennwort zurücksetzen, Gruppenmitgliedschaften ändern etc.), so könnten alle Benutzer aus dem Verkauf in eine OU verschoben und dem First-Level Support die entsprechenden Rechte auf diese OU delegiert werden.
Es gilt zuerst das Delegierungskonzept zu erarbeiten sowie zu dokumentieren, ehe es dann in einer Testumgebung getestet und anschließend evaluiert werden sollte. Erst dann kann es zur technischen Umsetzung in der produktiven Umgebung übergehen. Jedes Unternehmen für sich ist zwar individuell, doch die meisten Aufgaben bei der Active Directory-Administration sind in allen Unternehmen gleich. Es müssen Objekte erstellt (z.B. Benutzerkonten), bearbeitet und gelöscht werden. Deshalb kann auf vielen Unternehmen ein einmal entworfenes allgemeingültiges Delegierungsmodell angewendet werden.
Bekanntermaßen stellen oftmals in den Unternehmen gerade die Unternehmenspolitik oder das beschneiden der Rechte einzelner IT-Mitarbeiter eine Herausforderung dar. Trotzalledem ist es im Sinne der Unternehmenssicherheit Pflicht ein Delegierungskonzept zu implementieren, anstatt mit Domänen-Administratorrechten im Web zu surfen oder E-Mails zu bearbeiten.
Die technische Umsetzung eines Delegierungsmodells kann dabei mit Boardmitteln auf die drei folgenden Varianten realisiert werden:
-
In der grafischen Oberfläche (GUI) durch den Assistenten zum Zuweisen der Objektverwaltung.
-
Ebenfalls in der GUI, durch direktes Bearbeiten der Discretionary Access Control List (DACL) im security descriptor eines Objekts.
-
Mit dem Kommandozeilentool DSACLS.
Objektverwaltung zuweisen
Die meistverbreiteste Variante zum Einrichten von Delegierungen dürfte der Delegierungs-Assistent sein, den sicherlich viele Administratoren kennen. Der Assistent lässt sich aus dem Kontextmenü (Rechtsklick), z.B. auf den Standard-Containern Computers sowie Users oder aber auch auf Domänen- bzw. OU-Ebene, im Snap-In Active Directory-Benutzer und -Computer durch die Option Objektverwaltung zuweisen… aufrufen.

Der Assistent startet mit der Begrüßungsseite. Im nächsten Schritt muss mit Hinzufügen ein Benutzer oder besser eine Gruppe ausgewählt werden, der die Rechte auf das Objekt delegiert werden sollen. Danch folgt der entscheidende Schritt, nämlich das Zuweisen der Aufgaben bzw. die Vergabe der Rechte auf das Objekt.
An diesem Schritt muss entschieden werden, ob dem Benutzer oder der Gruppe eine allgemeine oder eher eine benutzerdefinierte Aufgabe delegiert werden soll. Dabei bietet der Assistent standardmäßig unter Windows Server 2003 zehn sowie unter Windows Server 2008 neun allgemeine Aufgaben im Standard-Container Users an. Auf einer OU sind es hingegen zwölf unter Windows Server 2003 sowie elf allgemeine Aufgaben unter Windows Server 2008. Dabei ist die gleichzeitige Aktivierung mehrerer Aufgaben auf jeder Ebene möglich. An dieser Stelle sei angemerkt, dass dieser Schritt unter Windows 2000 nicht auf dem Standard-Container Users existiert, dafür aber auf einer OU (mit sechs allgemeinen Aufgaben). Unter Windows 2000 sind insgesamt sieben allgemeine Aufgaben definiert.
In Windows Server 2003 und Windows Server 2008 sind die einzelnen Schritte im Assistenten gleich.

Wird z.B. die Aufgabe Erstellt, entfernt und verwaltet Benutzerkonten ausgewählt, erhält die Gruppe die dieses Recht delegiert bekommt, Vollzugriff auf die Benutzerkonten in dem Container auf dem der Delegierungsassistent ausgefürt wurde. Bei der Aktivierung der Aufgabe Setzt Benutzerkennwörter zurück und erzwingt Kennwortänderung bei der nächsten Anmeldung erhält die Gruppe die erweiterte Berechtigung Kennwort zurücksetzen sowie Lese- und Schreibrechte auf das Attribut Pwd-Last-Set auf Benutzerkonten. Oder bei der Aufgabe Erstellt, löscht und verwaltet Gruppen werden den Benutzern Vollzugriff auf Gruppen-Objekt erteilt. Die einzelnen allgemeinen Aufgaben dürften aber selbsterklärend sein.
Wenn eine allgemeine Aufgabe ausgewählt wurde, erscheint im nächsten Schritt die Zusammenfassung und mit einem Klick auf Fertig stellen wird der Assistent beendet.
Für viele Administratoren dürfte die Aufgabe Benutzerdefinierte Tasks zum Zuweisen erstellen interessant sein. Denn bei der Aktivierung einer allgemeinen Aufgabe, werden eine Reihe von Berechtigungen vergeben was bedeutet, dass auf mehreren Attributen Berechtigungen vergeben werden. Soll jedoch ein einzelnes Recht (sofern möglich) delegiert werden, so ist die benutzerdefinierte Variante genau das richtige. Hier können Berechtigungen auf einzelne Attribute vergeben werden.
Bei der benutzerdefinierten Variante können die gleichen Berechtigungen wie unter den allgemeinen Aufgaben vergeben werden. Jedoch stehen unter den benutzerdefinierten Aufgaben viel mehr Optionen zur Auswahl. Dort können unter anderem neben Berechtigungen auf Benutzer-, Computer- oder Gruppenkonten, auch Rechte auf Kontaktobjekte, PSO (unter Windows Server 2008, Password Settings Objects), OU-, Standort-, Standortverknüpfungs-, Subnetz- und Verbindungs-Objekte vergeben werden.
Falls nun der benutzerdefinierte Task ausgewählt wurde, müssen weitere Angaben getroffen werden.

Es muss festgelegt werden, ob die Verwaltungsaufgaben für den aktuellen Ordner mit allen bestehenden und den neu zu erstellenden Objekten gelten soll oder nur für bestimmte Objeke im Ordner. In der Praxis sollen meistens einzelne Rechte auf bestimmte Objekte vergeben werden, daher ist an dieser Stelle die zweite Option zu wählen.
Für viele Administratoren dürfte die Option "Benutzer"-Objekte interessant sein. Denn gerade der tagtägliche Benutzersupport benötigt einiges an Support. 
Anschließend müssen im nächsten Schritt die Berechtigungen vergeben werden, wobei die Berechtigungen in drei Bereiche unterteilt sind:
-
Allgemein: Hier können allgemeine Berechtigungen, wie z.B. Vollzugriff, Lesen, Schreiben etc. vergeben werden.
-
Eigenschaftenspezifisch: Ist dieser Bereich aktiviert, können Berechtigungen auf einzelne Attribute vergeben werden. Bei der benutzerdefinierten Delegierung dürfte dieser Bereich in Frage kommen.
-
Erstellen/Löschen der Berechtigungen von bestimmten untergeordneten Objekten: In diesem Bereich wird die Vergabe von Berechtigungen, für das Erstellen und Löschen von allen verfügbaren Objekten, bezogen auf das im vorherigen Schritt ausgewählten Objekts, gestattet.
Hier drei Beispiele:
Soll der Benutzersupport das Recht auf einem Container erhalten, in den Eigenschaften der Benutzerkonten im Reiter Konto die Option Konto läuft ab zu konfigurieren, so ist bei der benutzerdefinierten Aufgabe das Objekt „Benutzer-Objekte“ auszuwählen und im nächsten Schritt dann die „Eigenschaftenspezifische-Option“ accountExpires schreiben zu aktivieren.
Dabei wird der Schreibzugriff auf das Attribut Account-Expires für "Benutzer"-Objekte gesetzt.

Was auch eher eine lästige Aufgabe des Benutzersupports sein dürfte, ist das Entsperren von Benutzerkonten bei zu oft falsch eingegebenen Kennwörtern. Wie oft das Kennwort falsch eingegeben werden darf und ob der Benutzer nach einer gewissen Zeit erneut sein Glück versuchen kann oder ob ein Administrator die Sperrung aufheben muss, wird alles in der Kennwort-Richlinie auf Domänenebene gesteuert. Damit nun der Benutzersupport das einzelne Recht zum entsperren von Benutzerkonten erhält, muss ebenfalls bei der benutzerdefinierten Vorgehensweise zuerst die Option „Benutzer-Objekte“ ausgewählt und im darauffolgenden Schritt die „Eigenschaftenspezifische-Berechtigung“ lockoutTime schreiben ausgewählt werden.
Danach kann der Support in den Eigenschaften der Benutzerkonten im Reiter Konto den Haken bei der Option Konto ist gesperrt (unter Windows Server 2003) oder Kontosperrung aufheben (unter Windows Server 2008) entfernen.
Bei dieser Delegierung wird ebenfalls der Schreibzugriff auf das Attribut Lockout-Time für "Benutzer"-Objekte gesetzt.

Damit der Benutzersupport im Reiter Konto die Anmeldezeiten in den Benutzerkonten konfigurieren kann, müssen diesmal bei der benutzerdefinierten Variante zuerst die „Benutzer-Objekte“ aktiviert und anschließend die „Eigenschaftenspezifische-Berechtigung“ logonHours schreiben aktiviert werden.
Auch in diesem Fall wird der Schreibzugriff auf das Attribut Logon-Hours für "Benutzer"-Objekte gesetzt.

Anschließend folgt im letzten Schritt des Assistenten die Zusammenstellung, in der die vorgenommenen Einstellungen überprüft werden können. Mit einem Klick auf Fertig stellen wird der Assistent beendet.
Das waren drei recht einfache Aufgaben für die Delegierung. Es können natürlich noch weit tiefere Berechtigungen delegiert werden (z.B. für die AD-Replikation). Ein guter Einstieg in das Thema Delegierung (mit sehr vielen Beispielen) sind diese beiden Whitepaper:
Best Practices for Delegating Active Directory Administration Best Practices for Delegating Active Directory Administration Appendices
Nach der Delegierung ist es noch notwendig, dem Benutzersupport die AD-Snap-Ins zur Verfügung zu stellen. Dazu ist das AdminPak, idealerweise nur die AD-Snap-Ins Active Directory-Benutzer und -Computer (dsa.msc), Active Directory-Domänen und -Vertrauensstellungen (domain.msc) sowie Active Directory-Standorte und -Dienste (dssite.msc), auf einem Windows 2000/XP-Client zu installieren. Im ersten Schritt gilt es von einem Windows 2000 oder Windows Server 2003 aus dem Verzeichnis „windir%\system32\“ bzw. von der Windows 2000/Windows Server 2003 CD aus dem Verzeichnis I386 die Datei Adminpak.msi lokal auf den Windows 2000/XP-Client zu kopieren und im zweiten, mit dem folgenden Befehl lediglich die AD-MMCs zu installieren: C:\Pfad zur Adminpak.msi> msiexec /i adminpak.msi ADDLOCAL=FeADTools /qb
How to use Adminpak.msi to install a specific server administration tool in Windows
Auf einem Vista SP1 Client müssen zuerst die Remote Server Administration Tools installiert werden. Dann ist in der Systemsteuerung unter „Programme und Funktionen“ auf der linken Seite die Aufgabe „Windows-Funktionen ein- oder ausschalten“ auszuwählen. Nun kann im darauf erscheinenden Fenster unter dem Punkt Remote Server Administration Tools - Role Administration Tools - Active Directory Domain Services Tools die Komponente Active Directory Domain Controller Tools eingeschaltet werden. Anschließend erscheinen unter Systemsteuerung\Verwaltung die drei AD-Snap Ins.

Wie können nun zu einem späteren Zeitpunkt die Benutzer in der GUI angezeigt werden, denen Berechtigungen auf Objekte erteilt wurden?
Wurden mit dem Objektdelegierungsassistenten Rechte an einen Benutzer oder an eine Gruppe delegiert, bietet der Assistent zu einem späteren Zeitpunkt keine Möglichkeit an die delegierten Berechtigungen anzuzeigen. Stattdessen muss in der MMC Active Directory-Benutzer und -Computer unter Ansicht die Option Erweiterte Features aktiviert werden, damit in den Objekteigenschaften der Reiter Sicherheit erscheint.
Anschließend werden im Reiter Sicherheit die berechtigten Personen auf das Objekt angezeigt. Im Reiter Sicherheit erscheint mit einem Klick auf Erweitert die DACL (erweiterten Sicherheitseinstellungen) des Objekts. Dort werden mit Auswahl des Benutzers bzw. der Gruppe und einem Klick auf Bearbeiten, die exakten Berechtigungen des Benutzers/der Gruppe angezeigt. Die bereits vergebenen Berechtigungen lassen sich auch mit DSACLS in der Kommandozeile anzeigen, was weiter unten erläutert wird.
Sollen hingegen die delegierten Berechtigungen von einem Sicherheitsprinzipal (Benutzer, Gruppen) entzogen werden, so genügt es das Sicherheitsprinzipal aus der ACL (oder aus der DACL) des Objekts zu entfernen.
Der Objektdelegierungsassistent
Bearbeiten der Discretionary Access Control List (DACL)
In den Eigenschaften eines Objekts wird der Reiter Sicherheit, von dem aus man in die erweiterten Sicherheitseinstellungen gelangt, standardmäßig mit Absicht nicht angezeigt. Der Administrator soll zum delegieren von Berechtigungen den Assistenten verwenden, damit das Durchsetzen der Vererbung durchgeführt wird. Der Administrator der im Active Directory weniger versiert ist sollte weitestgehend den Assistenten verwenden. Für viele Administratoren ist diese Vorgehensweise ausreichend, für andere wiederum nicht. Der erfahrene Administrator der weiß was er tut, kann anstatt den Assistenten zu verwenden direkt im security descriptor (in den erweiterten Sicherheitseinstellungen) eines Objekts die Delegierung vornehmen.
Denn der Delegierungsassistent macht nichts anderes, als den Administrator durch die erweiterten Sicherheitseinstellungen eines Objekts durchzuleiten.
Damit wie im o.g. ersten Beispiel der Benutzersupport in den Eigenschaften der Benutzerkonten die Option Konto läuft ab konfigurieren kann, gilt es die Eigenschaften von dem Standard-Container Users oder einer OU aufzurufen. Im Reiter Sicherheit, der nur erscheint wenn in der MMC Active Directory-Benutzer und -Computer unter „Ansicht“ die Option „Erweiterte Features“ aktiviert ist, wird anschließend mit Erweitert die DACL des Containers aufgerufen. Mit Hinzufügen gibt man dann die gewünschte Gruppe an. Im darauffolgenden Fenster Berechtigungseintrag für <Sicherheitsprinzipal> (was das Access Control Entry, kurz ACE darstellt) ist im Reiter Eigenschaften im Feld Übernehmen für die Einstellung Untergeordnete „Benutzer“-Objekte (unter Windows Server 2003 heißt es „Benutzer“-Objekte) auszuwählen. Zum Schluss gilt es in der Spalte Zulassen die Berechtigung „accountExpires“ schreiben auszuwählen.
Oder wenn der Benutzersupport gesperrte Benutzerkonten entsperren soll, ist bei gleicher Vorgehensweise die Berechtigung „lockoutTime“ schreiben und im Fall der Anmeldezeiten die Berechtigung „logonHours“ schreiben zuzulassen.

Wird die Delegierung der Berchtigungen auf einer OU ausgeführt die weitere untergeordnete OUs enthält, kann mit der Option Berechtigungen nur für Objekte und/oder Container in diesem Container übernehmen bestimmt werden, ob die vergebenen Berechtigungen vererbt werden sollen oder nur für diese eine OU gelten.
Wenn man sich das Fenster Berechtigungseintrag für… genauer ansieht, dürften einem die Einstellungen bereits durch den Delegierungsassistenten bekannt vorkommen.
Natürlich muss man vor der Delegierung wissen, welches Attribut delegiert werden soll. Hinter welchem Feld im Snap-In Active Directory-Benuzter und -Computer welches Attribut steckt, erfährt man auf dieser Seite:
User Object User Interface Mapping (Windows)
Ein anderer Weg wäre, einen Export des Objekts mit CSVDE oder LDFIDE durchzuführen, um herauszufinden welche Attribute delegiert werden sollen:
LDIFDE - LDAP Data Interchange Format Data Exchange
DSACLS
Die Active Directory-Objektberechtigungen lassen sich neben der grafischen Oberfläche, auch mit dem Kommandozeilentool DSACLS anzeigen sowie bearbeiten. Wer zum delegieren von Berechtigungen die Kommandozeile bevorzugt oder das anpassen von Berechtigungen mit einem Skript erledigen möchte, der kann dies mit DSACLS tun. Mit diesem Befehlszeilenprogramm ist es möglich an einer Vielzahl von Objekten gleichzeitig die Berechtigungen, dass bedeutet die Zugriffssteuerungseinträge (Access Control Entries, ACEs) in der Zugriffssteuerungsliste (Access Control List, ACL) anzuzeigen und zu verändern.
Mit DSACLS lassen sich auch die Berechtigungen von Objekten im „Active Directory Lightweight Directory Services“ (kurz AD LDS, ehemals ADAM) Umfeld bearbeiten.
Unter Windows 2000 sowie Windows Server 2003 befindet sich das DSACLS in den Windows Support Tools, die sich wiederum auf der Windows 2000 sowie Windows Server 2003 CD im Verzeichnis Support\Tools befinden und im Windows Server 2008 bereits integriert ist.
Der Befehl für DSACLS sieht folgendermaßen aus (alles in einer Zeile):
Dsacls "<Containerpfad>" /I:S /G "<Domäne>\<Gruppe>":<Berechtigungen>;<Attribute>;<Objekt>
Dabei gilt Folgendes:
-
Mit <Containerpfad> wird der Distinguished Name (DN) des Objekts (z. B. der Container Users oder eine Organisationseinheit) angegeben, worauf die Berechtigungen gelten sollen.
-
Mit dem Parameter </I:Option> wird die Konfiguration für die Vererbung vorgenommen. Bei den Optionen kann man zwischen drei Möglichkeiten wählen:
P = Bei dieser Option werden die Berechtigungen auf einer Ebene angewandt. S = Hierbei werden die Berechtigungen nur auf untergeordnete Objekte vererbt (Subobjects). T = Mit dieser Option werden die Berechtigungen für das angegebene Objekt und alle darunterliegenden Objekte vererbt.
-
Durch den Parameter </G> (was für Grant steht) wird die Berechtigung zum „Zulassen“ für <Domäne>\<Gruppe> gesetzt. Zum verweigern wäre der Parameter </D> (Denied) anzugeben.
-
Mit der Angabe <Domäne>\<Gruppe> wird die Gruppe angegeben, an die Berechtigungen delegiert werden sollen.
-
Durch die Angabe von <Berechtigungen> werden der angegebenen Gruppe die entsprechenden Berechtigungen erteilt. Die möglichen Berechtigungen die im Zusammenhang mit den Parametern </G> und </P> verwendet werden können, wären:
CA = Control Access CC = Create all child Objects DC = Delete all Child Objects DT = Delete Subtree GA = Generic All GE = Generic Execute GR = Generic Read GW = Generic Write LC = List Contents LO = List Object RC = Read permissions RP = Read all Properties SD = Delete WD = Modify Permissions WO = Modify Owner WP = Write all Properties WS = Write Self
-
Auf welches Attribut die vergebenen Berechtigungen wirken sollen, wird mit dem Eintrag <Attribute> bestimmt.
-
Der Eintrag <Objekt> gibt das Objekt an (Benutzer, Gruppe, etc.), mit dem das Attribut verknüpft ist.
Sollen die drei in der grafischen Oberfläche aufgeführten Beispiele mit Dsacls durchgeführt werden, so lauten die Befehle wie folgt.
Der Gruppe First Level Support wird in der Domäne intra.dikmenoglu.de mit diesem Befehl das Recht delegiert, unterhalb des Standard-Containers Users die Option Konto läuft ab in den Eigenschaften der Benutzerkonten zu konfigurieren: Dsacls „CN=Users,DC=intra,DC=dikmenoglu,DC=de“ /I:S /G “intra.dikmenoglu.de\First Level Support”:WP;accountExpires;User.
Die Sperrung der Benutzerkonten unterhalb des Containers Users kann der First Level Support mit diesem Befehl aufheben: Dsacls „CN=Users,DC=intra,DC=dikmenoglu,DC=de“ /I:S /G “intra.dikmenoglu.de\First Level Support”:WP;lockoutTime;User.
Mit diesem Befehl kann der First Level Support die Anmeldezeiten in den Eigenschaften der Benutzerkonten einstellen: Dsacls „CN=Users,DC=intra,DC=dikmenoglu,DC=de“ /I:S /G “intra.dikmenoglu.de\First Level Support”:WP;logonHours;User.
Weitere Dsacls-Beispiele
-
Die bereits delegierten Berechtigungen lassen sich komfortabler auf der Kommandozeile anzeigen als in der GUI. Dort lassen sich die aktuellen Berechtigunen eines Objekts mit folgendem Befehl anzeigen: Dsacls <DN des Objekts>.
Möchte man sich die Berechtigungen des Standard-Container Users anzeigen lassen (wobei der DNS-Name der Domäne intra.dikmenoglu.de lautet), so heißt der Befehl: Dsacls CN=Users,DC=intra,DC=dikmenoglu,DC=de.
-
Soll das Feld Beschreibung in den Eigenschaften eines Clients im Standard-Container Computers delegiert werden, so ist dieser Befehl auszuführen: Dsacls "CN=Computers,DC=intra,DC=dikmenoglu,DC=de" /G "<Domäne>\<Gruppe>":WP;description;computer /I:S.
-
Wenn das Recht zum zurücksetzen von Benutzer-Kennwörtern unterhalb einer OU vergeben werden soll, so lautet der Befehl folgendermaßen: Dsacls "OU=OU-Name,DC=intra,DC=Domäne,DC=TLD" /I:S /G <Domäne>\<Gruppe>:CA;Reset Password;User.
-
Die Benutzergruppe Techniker erhält unterhalb einer OU mit diesem Befehl die Berechtigung, die Gruppenmitgliedschaften zu pflegen: Dsacls "OU=OU-Name,DC=intra,DC=Domäne,DC=TLD" /I:S /G <Domäne>\Techniker:WP;member;group.
Danach kann die Gruppe Techniker in den einzelnen Gruppen die unterhalb der angegebenen OU existieren, Benutzer entfernen sowie hinzufügen.
-
Die delegierten Berechtigungen einer Person lassen sich auf folgende Weise entfernen: Dsacls <DN des Objekts> /R <Domäne>\<Benutzername>.
Am Beispiel des Containers Users würde der Befehl also so lauten: Dsacls CN=Users,DC=intra,DC=dikmenoglu,DC=de /R intra.dikmenoglu.de\Yusuf.
Hinweis: Alle Parameter von DSACLS sind case sensitive und werden groß geschrieben!
Des Weiteren eignet sich das DSACLS auch sehr gut, um die standardmäßige Sicherheitseinstellungen eines Objekts wiederherzustellen. Die standardmäßigen Sicherheitsinformationen erhält jedes Objekt durch das Active Directory-Schema. Jedes erstellte Objekt erhält durch das im entsprechenden classObject enthaltene Attribut Default-Security-Descriptor seine Sicherheitsinformationen.
Das bedeutet konkret, wenn z.B. ein Benutzer erstellt wird, werden die Sicherheitsinformationen vom Attribut defaultSecurityDescriptor das in der Klasse User enthalten ist, auf das Benutzerkonto angewendet. Die Klasse User befindet sich in der Schemapartition, im Pfad: CN=User,CN=Schema,CN=Configuration,DC=intra,DC=dikmenoglu,DC=de.
So erhält nun jedes Objekt bei seiner Erstellung durch den defaultSecurityDescriptor der jeweiligen Klasse seine Sicherheitsinformationen. Die Sicherheitsinformationen werden im Attribut defaultSecurityDescriptor im SDDL-String Format angegeben. Ausserdem bekommt das Objekt durch die darüberliegenden Einheiten (Domäne, OU) weitere Berechtigungen vererbt.
Wenn nun im laufe der Zeit viele Berechtigungen auf einem Objekt vergeben wurden und man selbst keinen Überblick mehr darüber hat, lassen sich die Sicherheitseinstellungen für das Objekt auf die im Schema definierten Standardeinstellungen zurücksetzen. Der Befehl dazu lautet: Dsacls <DN des Objekts> /S.
Weitere Informationen: Delegierte AD-Berechtigungen anzeigen und entfernen How to Use Dsacls.exe in Windows Server 2003 and Windows 2000 Using Scripts to Delegate Control of Active Directory: Working with Property Sets Windows-Verwaltung: Delegieren von Befugnissen in Active Directory Bewährte Methoden zum Delegieren der Active Directory-Verwaltung How to change the default permissions on GPOs in Windows 2000 and Windows Server 2003
Wer an den Einsatz eines Windows Server 2008 Read-Only Domänencontroller in einer Umgebung mit Windows XP und Windows Server 2003 nachdenkt, könnte in der Praxis auf die verschiedensten Probleme bezgl. des RODCs stoßen.
Die Probleme können deshalb auftreten, da diese Systeme nicht die volle Kompatibilität eines RODCs gewährleisten.
Microsoft hat reagiert und einen Compatibility Pack (CP) für die Betriebssysteme Windows XP sowie Windows Server 2003 veröffentlicht.
Das CP behebt zehn Symptome die in einer gemischten Umgebung mit Windows XP Clients sowie Windows Server 2003 auftreten können.
Welche das sind, steht in dem folgenden Microsoft-Artikel. Von dort aus kann auch das CP heruntergeladen werden.
Description of the Windows Server 2008 read-only domain controller compatibility pack for Windows Server 2003 clients and for Windows XP clients
Langsam aber sicher werden nun die letzten NT-Domänen in den Unternehmen zu einer Active Directory Umgebung migriert. Die Administratoren die bereits seit längerem eine Active Directory Umgebung betreuen, haben sich bereits einiges an Wissen die sie für eine Administration einer Active Directory-Domäne benötigen aufgebaut und andere wiederum, werden es noch tun. In den Unternehmen die bereits seit längerem eine Active Directory Umgebung besitzen, wird langsam aber sicher der Ruf nach gezielter Vergabe von Berechtigungen im Active Directory lauter und stärker. Gerade wenn Unternehmen fusionieren bzw. seit Jahren stetig gewachsen sind, ist es zwingend notwendig gezielte Berechtigungen den Benutzern zu vergeben.
Im täglichen Leben des Administrators fallen viele Aufgaben an, die er möglichst zeitnah und zielgerecht auszuführen hat. Dabei hat er bei der Ausführung seiner Aufgaben stets darauf zu achten, dass die Benutzer oder die IT-Support-Einheiten nur die Rechte in einem Netzwerk erhalten, die sie für ihre Arbeit benötigen. Denn wenn Personen zu viele Rechte besitzen, kann das durchaus bedeuten das im Endeffekt der Administrator dadurch einen unnötigen Mehraufwand hat. Daher lautet die Devise für den Administrator, nur soviel Rechte zu vergeben wie sie auch tatsächlich benötigt werden, auch wenn das im ersten Moment mehr Arbeit für den Administrator bedeutet, anstelle den Benutzer einfach in eine administrative Gruppe zu stecken und somit ggf. zuviele Rechte zu vergeben.
Eine weitere Grundregel wäre dabei, alle Benutzer die eine gleiche Anforderung haben (z.B. den Zugriff auf eine Ressource), zu einer Sicherheitsgruppe hinzuzufügen und dieser Gruppe den Zugriff auf die Ressource zu gewähren, anstatt jedem einzelnen Benutzer die Rechte auf die Ressource zu erteilen. Dabei hat sich das A-G-DL-P Prinzip etabliert. Oder anstelle den einzelnen Mitarbeitern aus dem First-Level Support Domänen-Administrator Rechte zu geben, sollten die benötigten Rechte im Active Directory über die Objektverwaltung oder mit dem Kommandozeilentool DSACLS entsprechend delegiert werden. Dabei ist es empfehlenswert, auch hier idealerweise einer Sicherheitsgruppe die Rechte im Active Directory zu delegieren und nicht einzelnen Personen.
Damit ein Administrator das richtige Delegierungskonzept für seine Active Directory Gesamtstruktur erarbeiten kann, muss er sich dessen bewußt sein, was technisch möglich ist und was nicht. Er sollte dabei auch die Hintergründe kennen.
Was passiert nun im Hintergrund, wenn einem Benutzer oder einer Sicherheitsgruppe Rechte im Active Directory durch die Objektverwaltung oder durch das Kommandozeilentool DSACLS delegiert werden? Und woher weiß das Active Directory, das der Benutzer der eine Aufgabe durchführen möchte, das auch darf?
Um diese Fragen zu beantworten, müssen in diesem Zusammenhang die Begriffe SID, Access Token, ACL, ACE, SD, DACL, SACL und SDDL erläutert werden.
Security Identifier (SID)
Jedes Sicherheitsprinzipal wie Benutzer, Gruppen, Computer usw. erhalten beim erstellen in einer Active Directory-Umgebung oder auch lokal, eine einmalige Objekt-GUID sowie Objekt-SID. Der Security Identifier (zu deutsch, Identifikationsnummer), der Teil des security descriptors ist, dient zur eindeutigen Kennzeichnug eines Objekts (z.B. eines Benutzers). Der leserfreundliche Name eines Sicherheitsprinzipal ist eher für den Menschen gedacht, da er sich Namen einfacher merken kann, als eine Zahlenkombination. Jede Berechtigung die einem Benutzerkonto für den Zugriff auf Objekte bzw. Ressourcen zugewiesen wird, werden vom Windows-Betriebsystem immer direkt der SID zugewiesen. Oder werden einem Benutzer Aufgaben im Active Directory delegiert, werden die Berechtigungen ebenfalls direkt der SID zugewiesen.
Wird der Benutzer in eine andere Domäne verschoben, so ändert sich seine SID. Denn in der SID ist auch die betreffende Domäne hinterlegt. Ein SID ist ein Zahlen-Array mit einer variablen Länge, das sich wie folgt zusammensetzt:
S-1-5-21-956547467-2769573453-2154042951-500
S = SID 1 = Die Revisionsnummer 5 = Identifier Authority 21-956547467-2769573453-2154042951 = Domäne 500 = Benutzer (in diesem Beispiel, der Administrator)
Access Token
Wenn ein Sicherheitsprinzipal (security principal) wie es ein Benutzer darstellt, seinen Benutzernamen sowie das Kennwort im Logon-Fenster an einem Client eingibt, werden diese Anmeldeinformationen an einen Domänencontroller (DC), den der Client durch das DNS mitgeteilt bekommt, übermittelt. Der DC überprüft ob das richtige Kennwort passend zum Benutzernamen eingegeben wurde. Falls dies der Fall sein sollte, erstellt der DC während dem Anmeldeprozess ein Access Token und falls nicht, erhält der Benutzer eine Fehlermeldung das der Benutzername oder das Kennwort falsch sei. Das Token wird dabei vom Local Security Authority (LSA) Prozess des DCs erstellt. Das Access Token enthält Informationen über die Identität und Privilegien des Sicherheitsprinzipal. In dem Access Token sind die folgenden SIDs und Informationen enthalten:
-
Die SID des Benutzers (der Benutzername sAMAccountName oder UPN ist Schall und Rauch für die Systeme, viel wichtiger ist die SID die dahintersteckt).
-
Falls vorhanden, die SID-History des Benutzers (von Migrationen).
-
Die SIDs von jeder domänenlokalen Gruppe, worin der Benutzer direkt oder transitiv Mitglied ist.
-
Die SIDs jeder gloablen Gruppe, in denen der Benutzer direkt sowie verschachtelt Mitglied ist und die SID-History der globalen Gruppen.
-
Die SIDs der universellen Gruppen in denen der Benutzer direkt sowie verschachtelt Mitglied ist, samt der SID-History der universellen Gruppen. Dabei werden die Informationen zu den universellen Gruppenmitgliedschaften des Benutzers, vom globalen Katalog (GC) geliefert.
-
Die SIDs von jeder BuiltIn Gruppe, in der der Benutzer direkt oder transitiv Mitglied ist.
-
Die SIDs von jeder lokalen Gruppen, in der der Benutzer direkt oder transitiv Mitglied ist.
-
Eine Liste mit Privilegien.
-
Andere Zugriffsinformationen.
Das Access Token hat allerdings eine Beschränkung. In einem Token für einen Sicherheitsprinzipal können maximal 1.024 Einträge enthalten sein. Daher sollte unbedingt darauf geachtet werden, das gerade wenn Benutzerkonten über Jahre hinweg existieren und diese bereits mehrere Migrationen hinter sich haben, unbedingt die SID-History nach jeder Migration zu bereinigen [1]. Sonst kann das später zu Problemen führen.
Bekommt der Benutzer bei der Windows-Anmeldung folgenden Fehler:
The system cannot log you on due to the following error: During a logon attempt, the user`s security context accumulated too many security IDs
so liegt der Fehler darin, dass der Benutzer in zu vielen Gruppen enthalten ist oder die SID-History zu viele Einträge enthält.
Welche SIDs in dem Access Token enthalten sind, kann man sich mit dem Kommandozeilentool Whoami anzeigen lassen. Der Befehl dazu lautet Whoami /All.
Wichtig ist zu wissen, dass Access Token wird nur ein einziges Mal und zwar während der Benutzeranmeldung erstellt. Wird nun der Benutzer während seiner Benutzersitzung zu weiteren Gruppen hinzugefügt und es zeigt sich, dass der Benutzer weiterhin auf die neue Ressource keinen Zugriff erhält, so sollte sich der Benutzer erneut anmelden, damit die neuen Gruppeninformationen und somit die neuen Berechtigunen im Token enthalten sind.
Das Access Token in dem alle SIDs des Benutzers enthalten sind, ist quasi der Ausweis eines Benutzers im Netzwerk. Jedes Objekt bzw. jede Ressource enthält auf der anderen Seite eine Zugriffskontrollliste (Access Control List, ACL). Zu sehen ist die Zugriffskontrollliste in den Eigenschaften eines Objekts, im Reiter Sicherheit. In der Zugriffskontrollliste eines Objekts stehen die SIDs (in Form von Namen) der zugriffsberechtigten Personen drin. Darin sind die Benutzer oder Gruppen mit ihren entsprechenden Zugriffsrechten enthalten. Möchte nun ein Benutzer auf ein Objekt zugreifen, überprüft das Windows-Betriebssystem das Access Token des Benutzers, mit der Zugriffskontrollliste des Objekts. Findet sich eine SID die im Token enthalten ist auch in der Zugriffskontrollliste des Objekts wieder, erhält der Benutzer Zugriff auf das Objekt, mit seinen dort definierten Rechten.
[1] How To Use Visual Basic Script to Clear SidHistory Access Token Limitation
Access Control List (ACL)
Die Access Control List (zu deutsch, Zugriffskontrollliste), zu der die beiden Typen DACL und SACL gehören, besteht aus Access Control Entries Einträgen. Die beiden ACL-Typen DACL und SACL befinden sich im security descriptor des Objekts und sind Bestandteil der ACL. Die ACL ist eine Liste von festgelegten ACEs die spezifizieren, ob und mit welchen Rechten der Zugriff auf ein Objekt erlaubt, verweigert oder erfolgreich bzw. fehlgeschlagen überwacht wird. Die Zugriffskontrollliste die in den Eigenschaften eines jeden Objekts - im Reiter Sicherheit - zu finden ist, steuert den Zugriff auf ein Objekt. Damit der Reiter Sicherheit in den Eigenschaften eines Benutzerkontos erscheint, ist in der MMC „Active Directory-Benutzer und -Computer“ (ADBuC) unter „Ansicht“ die Option „Erweiterte Funktionen“ zu aktivieren.
Der Aufbau einer ACL sieht wie folgt aus:
ACL Size Hier wird die Größe des zugewiesenen Speichers für die ACL gespeichert. Die Größe des Speicherbedarfs hängt von der Anzahl und Größe der jeweiligen ACEs ab. Dabei kann eine ACL maximal 64kb groß werden. Das würde etwa 1820 ACEs entsprechen, wobei die Anzahl der ACEs wiederum abhängig von der Größe der ACEs ist. Aus Performancegründen sollte die ACL so klein wie möglich sein und nicht bis an ihre maximale Grenze wachsen.
ACL Revision In diesem Eintrag wird die Revisionsnummer für die Datenstruktur der ACL gespeichert.
ACE Count An dieser Stelle wird die Anzahl an ACEs in der ACL angegeben. Ist als Wert Null eingetragen, bedeutet dies, dass die ACL keine ACEs enthält - es ist leer. Wobei eine leere DACL sich von einer Null-DACL unterscheidet. Bei einer leeren DACL erhält keiner einen Zugriff auf das Objekt, aber eine Null-DACL gibt jedem uneingeschränkten Zugriff auf das Objekt. Daher sollte diese Einstellung vermieden werden.
ACE Dieser Eintrag enthält eine Liste mit den ACEs. Möchte ein Benutzer auf ein Objekt zugreifen, werden die ACEs in der Reihenfolge in der sie aufgelistet sind kontrolliert.
Access Control Entries (ACEs)
Die einzelnen ACEs im security descriptor eines Objekts, werden in den erweiterten Sicherheitseinstellungen eines Objekts angezeigt und legen den Zugriff entweder auf das gesamte Objekt oder auf ein einzelnes Attribut fest. Durch ACEs können Zugriffsrechte präzise, bis auf ein einzelnes Attribut vergeben werden. Somit kann z.B. einem Benutzer oder einer Gruppe lediglich das Recht zum lesen für das Feld Beschreibung (Attribut Description) eines Objekts erteilt werden, aber nicht das Schreibrecht. Ehe mit dem Bearbeiten oder Erstellen von ACEs begonnen wird, sollte sich vorher der Aufbau und die Funktionsweise des ACEs näher angeschaut werden.
Der Aufbau eines ACEs sieht wie folgt aus:
Access Mask In der AccessMask werden die Rechte definiert, wobei es für jeden Objekttyp unterschiedliche Rechte gibt. Hier können die gewünschten Berechtigungen ausgewählt werden, wie z.B. Vollzugriff, alle Eigenschaften lesen und schreiben, Besitzer ändern usw. oder die zu überwachenden Ereignisse konfiguriert werden. Durch die AccessMask werden zum einen die zu vergebenen Berechtigungen und zum anderen, die zu überwachenden Ereignisse festgelegt, abhängig von der durchzuführenden Aufgabe.
AceType An dieser Stelle können die entsprechenden Berechtigungen zugelassen bzw. verweigert werden (der Typ ist ACCESS_ALLOWED_ACE (0) oder ACCESS_DENIED_ACE (1)) oder die erfolgreiche bzw. fehlgeschlagene Überwachung aktiviert werden (der Typ lautet immer SYSTEM_AUDIT_ACE). Es wird also definiert, ob für ein Objekt oder für eine Eigenschaft die Berechtigung oder Überwachung festgelegt werden soll.
Trustee Im Trustee wird der Benutzer bzw. die Gruppe (das Ziel) festgelegt (genauer, die SID in Form des Namen), für den die Berechtigung oder die Überwachung gelten soll.
Aceflags Die Aceflags definieren die Vererbungsoptionen, je nachdem ob in der ACE Berechtigungen oder Überwachungen konfiguriert wurden. Diese Einstellung kann im Feld Übernehmen für: der ACE, dort betrifft es die ersten drei Einträge Nur dieses Objekt, Dieses und alle untergeordneten Objekte, Nur untergeordnete Objekte, vorgenommen werden.
Flags Alle ACEs enthalten die Eigenschaft Flags, durch das der ACE erkennt, welches Feld ObjectType oder InheritedObjectType zusätzlich noch gesetzt ist.
ObjectType Hier wird angegeben, auf welchen Objekttyp oder welches Attribut sich das ACE bezieht. Als Wert wird die GUID des Objekts oder des Attributs gespeichert.
InheritedObjectType Dieses Feld im ACE gibt die GUID des Objekts an, das den betreffenden ACE erben soll.
Diese Optionen sind in den Eigenschaften eines Objekts - im Reiter Sicherheit - dort auf Erweitert klicken - im Reiter Berechtigungen (DACL)/oder im Reiter Überwachung (SACL) auf Hinzufügen… klicken - danach den Benutzer oder die Gruppe auswählen bzw. eingeben - anschließend erscheint das Fenster „Berechtigungseintrag für… oder Überwachungseintrag für…“ was das ACE darstellt, zu finden.
Security Descriptor (SD)
Im Active Directory das auf Objekten basiert, wie es z.B. Benutzer, Grupppen, Computer, Container, Standorte usw. darstellen, besitzen alle Objekte sogenannte security descriptors (zu deutsch, Sicherheitsbeschreibungen). Die Werte der Sicherheitseinstellungen (wer darf mit welchen Rechten auf das Objekt zugreifen) werden in jedem Active Directory Objekt, in der Eigenschaft nTSecurityDescriptor gespeichert. Der Wert im nTSecurityDescriptor wird als SDDL-String gespeichert, den man sich z.B. mit LDP.exe oder dem „Active Directory Explorer“ anzeigen lassen kann. In dieser Eigenschaft werden alle Sicherheitsinformationen für das Objekt gespeichert. Das Windows Betriebssystem verwendet security descriptors um den Zugriff auf eine Ressource zu steuern. In den security descriptors wird folgendes festgelegt:
-
Es werden die Benutzer sowie Gruppen angezeigt, die Zugriff auf das Objekt haben.
-
Weiterhin werden die Berechtigungen angegeben, mit denen ein Benutzer oder eine Gruppe Zugriff auf das Objekt erhält.
-
Es werden die Ereignisse auf den Objekten definiert, die überwacht werden sollen.
-
Es wird der Besitzer des Objekts angegeben.
-
Weiterhin enthält der SD Informationen darüber, welche Rechte das Objekt von übergeordneten Containern vererbt bekommt.
Es existieren selbstverständlich nicht nur im Active Directory diese security descriptors. Ganz im Gegenteil, man findet sie an vielen Stellen auf einem System wieder, z.B. in Dateien und Verzeichnissen die auf einem NTFS-Dateisystem gespeichert sind, Freigaben, Drucker, Registry etc. Im Prinzip existieren security descriptors auf allen Objekten, auf denen eine Zugriffssteuerung konfiguriert werden kann. Dabei befinden sich die Sicherheitsbeschreibungen in den erweiterten Sicherheitseinstellungen eines Objekts (in den Eigenschaften eines Objekts - im Reiter Sicherheit - dort auf Erweitert).
Der security descriptor ist eine binäre Datenstruktur mit einer variablen Länge und besteht im wesentlichen aus den folgenden Teilen:
- Der Header beinhaltet eine Revisionsnummer und eine Reihe von Optionen die beschreiben, welche Eigenschaften vorhanden
sind und welche hinzugefügt oder geändert wurden.
- In der Discretionary Access Control List (DACL) werden die einzelnen Zugriffsrechte für ein bestimmtes Objekt, in Form von
Access Control Entries (ACEs) festgelegt. In der DACL sind die Benutzer und/oder Gruppen eingetragen, denen der Zugriff auf das Objekt erlaubt oder verweigert wird. Werden einem Benutzer oder einer Gruppe Aufgaben im Active Directory delegiert, so werden automatisch die SIDs der Personen in die DACL der Objekte geschrieben. Der Inhalt bzw- die Einträge in der DACL werden vom Besitzer kontrolliert.
- Die SACL ist vergleichbar mit der DACL, allerdings mit dem Unterschied, dass die SACL für die Protokollierung - anstatt für
den Zugriff auf ein Objekt zuständig ist. In der System Access Control List (SACL) sind die Überwachungseinstellungen enthalten. Auch hier befinden sich ACEs, die den definierten erfolgreichen oder fehlgeschlagenen Zugriff protokollieren. Findet ein Zugriff auf ein Objekt statt für den die Protokollierung aktiviert wurde (sei es erfolgreich oder fehlgeschlagen), verzeichnet das Betriebssystem im Sicherheitslog einen Eintrag.
- Der Security Identifier (SID) des Besitzers (Owner). Der Besitzer eines Objekts kann die Berechtigungen bearbeiten und anderen
Benutzern Rechte auf das Objekt erteilen.
- Ein weiterer Bestandteil ist der SID der primären Gruppe des Besitzers
(existiert aus Kompatibilitätsgründen zu Unix/Macintosh Systemen).

Security Descriptor Definition Language (SDDL)
Die Security Descriptor Definition Language stellt ein Textformat dar, das zur Beschreibung von security descriptors dient. In diesem String, der natürlich jederzeit veränderbar ist, werden die Sicherheitsinformationen in Form von Access Control Lists (ACLs) samt den einzelnen Access Control Entries (ACEs) eines Objekts, im nTSecurityDescriptor gespeichert. Microsoft verwendet die SDDL immer dann, wenn ein security descriptor im String-Format definiert werden soll.
Die nachfolgend genannte kryptische Zeichenkette stellt einen SDDL-String dar (alles in einer Zeile):
O:BAG:SYD:(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO) (A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)
Solch einen SDDL-String findet man z.B. dann wieder, wenn einem Benutzer das Recht vergeben werden soll, dass Eventlog eines DCs lesen zu können. Dazu existiert im folgenden Registry-Pfad des DCs: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\* in dem jeweiligen Schlüssel (Application, Directory Service, DNS Server…) ein REG_SZ Eintrag mit dem Namen CustomSD [2]. Dort fndet sich als Wert solch ein SDDL-String wieder. Oder in den Security Templates im Verzeichnis %windir%\security\templates trifft man ebenfalls einen SDDL-String an. Eine andere Stelle an der man einen SDDL-String vorfindet, wäre in der Eigenschaft nTSecurityDescriptor eines jeden Active Directoy Objekts.
Auf ein Active Directoy Objekt wirken mehrere Berechtigungen. Wird ein Objekt im Active Directory erstellt, erhält es standardmäßig gewisse Sicherheitsinformationen, im SDDL-String, die im Schema im Attribut Default-Security-Descriptor festgelegt sind. Zusätzlich erbt das erstellte Objekt weitere Berechtigungen, durch die darüberliegenden Einheiten (Container, OU, Domäne). Anschließend kann der Administrator jederzeit noch die Berechtigungen des Objekts modifizieren.
Gerade für Administratoren die evtl. durch Skripte ihre tägliche Arbeit erleichtern möchten, ist es unerlässich zu verstehen, wie ein SDDL-String sich zusammensetzt. Denn schließlich lässt sich die Delegierung von Rechten im Active Directory, im SDDL-String, natürlich auch per Skript setzen. Des Weiteren ist es unerlässich einen SDDL-String zu verstehen, wenn mit dem Active Directory-Kommandozeilentool DSACLS Rechte im Active Directory händisch oder per Skript delegiert bzw. gelesen werden sollen. Auch um Security Templates zu lesen und zu bearbeiten ist es zwingend, die Syntax verstanden zu haben.
Kommen wir nun zur Erläuterung eines SDDL-Strings. In einem SDDL-String werden die Zeichen fortlaufend durchgeschrieben und nicht durch Leerzeichen getrennt. Die Länge eines SDDL-Strings ist nicht hartcodiert und kann variieren. Die Schreibweise eines nTSecurityDescriptor SDDL-Strings würde so aussehen:
O:Owner-SIDG:Group-SIDD:DACL-Flags(ACE1- String)( ACE2- String)(…usw.)S:SACL-Flags(ACE1- String)( ACE2- String)(…usw.)
Jeder nTSecurityDescriptor SDDL-String besteht aus fünf Teilen. Diese wären:
- Header: Der Header enthält Eigenschaften (Flags) die beschreiben,
ob das Objekt die Vererbung von DACL und SACL erlaubt oder blockiert.
-
Owner: Der Besitzer eines Objekts trägt in einem SDDL-String das Präfix „O:“. Dieser Wert gibt an, welcher Trustee der Besitzer des Objekts ist. Hier die Erläuterung der geläufigsten SID-Strings (Abkürzungen) die der Wert Owner (sowie G:Group-SID) enthalten kann: AN = Anonymous AO = Account Operators AU = Authenticated Users BA = Builtin Administrators BO = Backup Operators CG = Creator Group CO = Creator Owner DA = Domain Administrators DU = Domain Users EA = Enterprise Admins LA = Local Administrator Account SA = Schema Administrators SO = Server Operatoren SY = Local System WD = Everyone (World)
Die komplette Liste der SID-Strings befindet sich auf dieser Seite: SID Strings (Windows)
Im o.g. SDDL-String ist in der kryptischen Zeichenkette als Owner der Eintrag „O:BA“ enthalten und dieser steht für „Builtin Administrators“. Statt des SID-Strings kann auch eine SID verwendet werden, z.B. so: O:S-1-5-21-956547467-2769573453-2154042951-500G:SYD:(…).
-
Primary Group: Die primäre Gruppe erhält in einem SDDL-String das Präfix „G:“. Dieser Wert enthält den SID-String der primären Gruppe eines Objekts. Der Wert des Owner und der Primary Group entspricht einer einzigen SID. Der Eintrag „G:SY” bedeutet, dass die primäre Gruppe Local System lautet.
-
DACL: Die DACL wird in einem SDDL-String mit einem „D:“ eingeleitet.
-
DACL-Flags: Dieser Wert ist ein security descriptor control Flag, das auf das DACL angewendet wird. Dieser Eintrag kann mehrere Werte enthalten (z.B. D:PAI), muss aber keine enthalten. Folgende Wert lassen sich dabei eintragen:
P = SDDL_PROTECTED. Das SE_DACL_PROTECTED Flag ist gesetzt. AR = SDDL_AUTO_INHERIT_REQ. Das SE_DACL_AUTO_INHERIT_REQ Flag ist gesetzt. AI = SDDL_AUTO_INHERITED. Das SE_DACL_AUTO_INHERITED Flag ist gesetzt.
-
SACL: Die SACL wird im SDDL-String als „S:“ gekennzeichnet.
-
SACL-Flags : Dieser Wert ist ein security descriptor control Flag das auf das SACL angewendet wird und ebenfalls (wie DACL-Flags) keine feste Länge hat. Bei dem SACL-Flags String werden die gleichen Werte wie bei dem DACL-Flags String verwendet.
-
ACE-String: Der ACE-String der in Klammern gesetzt ist, beschreibt einen ACE im security descriptor für den DACL und SACL. Der ACE-String lautet beim DACL sowie SACL gleich und setzt sich aus den folgenden sechs Feldern (jeweils getrennt durch ein Semikolon) zusammen, die nicht alle gesetzt sein müssen:
(ACE-Type;ACE-Flags;Rights;ObjectGUID;Inherit-ObjectGUID;Account-SID)
- Als ACE-Type könnten unter anderem A für Allow oder D für Deny eingetragen sein, was den Optionen „Zulassen“ oder „Verweigern“ im security descriptor des Objekts entspricht. Bei einem Eintrag der SACL könnte als Wert AU für Audit (Überwachung) eingetragen sein.
- Falls das Objekt ein Container sein sollte kann mit dem ACE-Flags String angegeben werden, das sich das ACE nur auf den Container oder seinen Inhalt bezieht.
- Der Rights String gibt die Berechtigungen für den ACE an.
- Der String ObjectGUID hat als Wert die GUID einer Objektklasse, eines Attributs oder Attribut Sets.
- Im Inherit-ObjectGUID kann sich die GUID einer Objektklasse befinden. Falls es gesetzt ist, bezieht sich die Vererbung auf den ACE der untergeordneten Einträge der Objektklasse.
- Im sechsten Teil Account-SID wird der Name des Benutzer- oder Gruppenkontos angegeben (Trustee), auf dem sich die Berechtigungen auswirken. Als Wert kann entweder ein SID-String (z.B. DA) oder die SID in Form von S-1-5-21 angegeben werden.
Ein ACE-String könnte dabei in der Praxis so aussehen: (A;;WP;;;DU) und hat dabei folgende Bedeutung:
- ACE-Type lautet in dem String A, was für „Zulassen“ steht.
- Ein Wert im ACE-Flags ist nicht gesetzt.
- Als Berechtigung wurde der Wert WP (Write_Property) vergeben, was „Schreibberechtigung“ im Active Directory-Objekt bedeutet.
- Es ist keine ObjektGUID eingetragen.
- Ebenfalls ist der Wert Inherit-ObjektGUID nicht eingetragen.
- Die Berechtigung wurde an DU (Domain_Users) vergeben, das für „Domänen-Benutzer“ steht.
Mit dem Kommandozeilentool SC kann man sich unter anderem die Sicherheitsinformationen von Diensten anzeigen lassen. Der security descriptor des Dienstes NTDS auf einem Windows Server 2008 DC sieht so aus:
C:\SC SDSHOW NTDS
D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY) (A;;CCLCSWLORC;;;BO)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
Man kann erkennen, dass neben dem DACL auch die SACL durch das S: gesetzt ist. Die Zugriffsrechte eines Active Directory Objekts werden dabei, durch die folgenden ACE-Strings geregelt:
CC = Create all child Objects CR = All extended Rights DC = Delete all Child Objects DT = Delete Subtree LC = List Contents LO = List Object RC = Read permissions RP = Read all Properties SD = Delete SW = All Validated Writes WD = Modify Permissions WO = Modify Owner WP = Write all Properties
Alle Werte die in einem ACE-String enthalten sein können, werden auf der folgenden Seite erläutert: ACE Strings (Windows)
[2] How to set event log security locally or by using Group Policy in Windows Server 2003
Objektverwaltung zuweisen
Die technische Umsetzung einer Active Directory-Delegierung über die GUI, wird im Snap-In Active Directory-Benutzer und -Computer durchgeführt. Mit einem Rechtsklick auf den Standardcontainer Users oder einer OU, ruft man mit der Auswahl von Objektverwaltung zuweisen… den Assistent zum Zuweisen der Objektverwaltung auf (der bereits seit Windows 2000 existiert). Nach Auswahl des Benutzers oder der Gruppe kann im darauffolgenden Schritt die Wahl zwischen einem allgemeinen und benutzerdefinierten Task getroffen werden. Bei dem benutzerdefinierten Task gilt es auf den darauffolgenden beiden Schritten, zum einen den Objekttyp für die Delegierung auszuwählen und zum anderen, die gewünschten Berechtigungen die auf Attributebene aktiviert werden können auszuwählen.
Der gewiefte Administrator kann den Delegierungsassistenten im ADBuC überspringen und direkt in den erweiterten Sicherheitseinstellungen des Containers (auch eine OU ist ein Container) die entsprechenden Berechtigungen vergeben. Denn der Assistent für die Objektverwaltung macht auch nichts weiter, als die Personen mit den vergebenen Berechtigungen im security descriptor des Containers einzutragen.
Um auf die Anfangsfrage zurückzukommen was im Hintergrund passiert, wenn einem Benutzer oder einer Sicherheitsgruppe Rechte im Active Directory delegiert werden, ist nichts weiter, als das die Benutzer mit den vergebenen Rechten im security descriptor des Objekts eingetragen werden.
Die bereits delegierten Rechte auf einem Objekt zeigt einem der Objektverwaltungs-Assistent leider nicht an. Stattdessen ist in der MMC „ADBuC“ unter Ansicht die Option „Erweiterte Funktionen“ zu aktivieren, damit in den Eigenschaften eines Objekts der Reiter Sicherheit erscheint. Danach kann in den erweiterten Sicherheitseinstellungen (im security descriptor) die Person ausgewählt und mit einem Klick auf Bearbeiten… die gesetzten Berechtigungen eingesehen werden. Sollen die vergebenen Berechtigungen dem Benutzer entzogen werden, so gilt es lediglich den Benutzer aus der ACL des Objekts zu entfernen. Einen Assistenten für das Entfernen von Berechtigungen gibt es nicht.
Über die Kommandozeile lassen sich die Berechtigungen mit dem Tool DSACLS, das sich in den Windows Support Tools befindet (z.B. auf der Windows Server 2003 CD im Verzeichnis Support\Tools), ebenfalls ansehen sowie vergeben. Mit dem folgenden Befehl werden die Berechtigungen für den Standardcontainer USERS (im ADBuC) aufgelistet: Dsacls CN=Users,DC=intra,DC=dikmenoglu,DC=de.
Alles was mit dem Assistenten delegiert werden kann, lässt sich auch in einem Skript mit DSACLS realisieren. Die Syntax zu dem Tool wird in der Hilfe erläutert, die sich mit dem Befehl Dsacls -? aufrufen lässt.
Die vergebenen Berechtigungen können in Form von ACEs auch mit dem Kommandozeilentool DSREVOKE angezeigt und entfernt werden.
Objektdelegierungen einrichten Der Objektdelegierungsassistent Delegierte AD-Berechtigungen anzeigen und entfernen
Zusammenfassung
Das Delegierungskonzept sollte sorgfältig geplant, in einer Testumgebung getestet und ganz wichtig, dokumentiert werden. In der Planungsphase sollten diese Fragen geklärt werden:
- Welche Berechtigungen sollen die entsprechenden Personen erhalten?
Dabei werden idealerweise Berechtigungen Gruppen und nicht einzelnen Personen zugewiesen.
- Ist die gewünschte Berechtigung die delegiert werden soll technisch realisierbar?
- Wenn es technisch realisierbar ist, können mit den Standard-MMCs wie z.B. „Active Directory-Benuzter und -Computer“
die Aufgaben durchgeführt werden?
Wenn ein entsprechendes Konzept erarbeitet, getestet und implementiert wurde, gestaltet sich die tägliche Administration in der Praxis mit dem geringsten Aufwand, wobei die Benutzer nur mit den notwendigsten Rechten ausgestattet werden.
Das Delegierungskonzept sollte dabei nicht übertrieben werden, ganz nach dem Motto „soviel wie nötig - so wenig wie möglich“. Denn wenn unüberlegt Berechtigungen delegiert werden, kann das unter Ümständen zu Performance-Einbußen im Active Directory führen.
Large Numbers of ACEs in ACLs Impair Directory Service Performance
Des Weiteren sollte bei dem Delegierungskonzept unbedingt darauf geachtet werden, dass einem der AdminSDHolder nicht in die Quere kommt.
Delegated permissions are not available and inheritance is automatically disabled
Weitere Informationen: Security Descriptors and Access Control Lists Technical Reference Security Descriptor Definition Language (Windows) Best Practices for Delegating Active Directory Administration Best Practices for Delegating Active Directory Administration Appendices Best practices and guidance for writers of service discretionary access control lists Well-known security identifiers in Windows operating systems
An welchen Stellen stößt das Active Directory und seine Werkzeuge an die Grenzen?
Das "Active Directory-Benutzer und -Computer" Snap-In
-
Falls in der MMC Active Directory-Benutzer und -Computer in einem Container bzw. OU mehr als 2000 Objekte enthalten sind, wird die folgende Meldung angezeigt:
Screenshot vom Windows Server 2008
Anschließend kann dem Hinweis gefolgt und somit die maximale Anzahl der angezeigten Elemente erhöht werden. Dieses Verhalten trifft auf Windows 2000, Windows Server 2003 und Windows Server 2008 zu.
Die maximal unterstützte Seitengröße für LDAP-Antworten
-
Um sich z.B. vor Denial of Service (DoS) Attacken zu schützen, liefert das Active Directory bei einer LDAP-Abfrage als Ergebnis 1.000 Datensätze. Übersteigt das Ergebnis die Grenze von 1.000 Datensätzen, wird nach den 1.000 Einträgen der folgende Fehler angezeigt: Size Limit Exceeded Error.
Es bestehen zwei Möglichkeiten dieses Problem zu umgehen. Zum einen ist es das ändern der maximum Page Size auf dem LDAP-Client und zum anderen, dass Erhöhen des Wertes MaxPageSize in den LDAP-Richtlinien auf den DCs.
How to view and set LDAP policy in Active Directory by using Ntdsutil.exe
Der Name einer Organisationseinheit (OU)
-
Der Name einer OU kann maximal 64 Zeichen enthalten. Damit soll sichergestellt werden, dass beim aufrufen der Gruppenrichtlinien die sich im SYSVOL-Verzeichnis befinden durch einen UNC-Pfad, nicht die Grenze von insgesamt 260 Zeichen überschritten wird. Denn wenn der UNC-Pfad zu den GPOs 260 Zeichen überschreiten sollte, können somit die GPOs weder gelesen, noch an die DCs, Server und Clients angewendet werden.
Siehe auch: Windows 2000 Supports Fully Qualified Domain Names up to 64 UTF-8 Bytes Long
Die Länge des Dateinamens
Der NetBIOS-Computername
-
Der NetBIOS-Name eines Computerkontos ist auf 15 Zeichen beschränkt. Eigentlich enthält dieser 16 Zeichen, wobei aber das 16. Zeichen für das System reserviert ist. Der Computername darf auch nicht ausschließlich aus Zahlen bestehen.
Windows 2000 Does Not Permit All-Numeric Computer Names
Der NetBIOS-Name einer Domäne
Die Länge des Fully Qualified Domain Name einer AD-Domäne
- Der FQDN einer Active Directory-Domäne darf insgesamt 64 Zeichen (samt Punkten) enthalten.
Weitere Beschränkungen bezgl. der Namenskonventionen
Die maximale Anzahl an Objekten die ein Domänencontroller erstellen kann
Die maximale Anzahl an SIDs die innerhalb einer Domäne erstellt werden kann
- Innerhalb einer Domäne können ca. eine Milliarde Security Identifier (SIDs) erstellt werden.
Die maximale Anzahl an GPOs die auf ein Objekt wirken können
- Es können maximal 999 Gruppenrichtlinienobjekte auf ein Benutzer- oder Computerkonto angewendet werden.
Dabei können auf einem System natürlich mehr als 999 GPOs existieren. Diese Grenze wurde aus Performancegründen festgelegt.
Die maximale Anzahl an Benutzern pro Gruppe
- Unter Windows 2000 kann eine Benutzergruppe maximal 5.000 Mitglieder enthalten.
Unter Windows Server 2003 existiert diese Grenze nicht.
Siehe auch: Die Linked Value Replikation (LVR)
Die maximale Anzahl an Änderungen innerhalb eines schreibvorgangs im AD
-
Werden automatisiert z.B. per Skript oder Management-Tools eine größere Menge an Änderungen im Active Directory durchgeführt (z.B. das erstellen, löschen oder bearbeiten von Benutzern), können innerhalb einer Transaktion nicht mehr als 5.000 Änderungen durchgeführt werden.
Die maximale Gruppenzugehörigkeiten eines Sicherheitsprinzipals
- In das Access-Token eines Sicherheitsprinzipals wie es z.B. Benutzer, Gruppen oder Computer darstellen,
können maximal 1.024 Einträge existieren. Bei der Anmeldung eines Benutzers wird vom Local Security Authority (LSA) ein Access-Token generiert. In diesem Access-Token befindet sich der Security Identifier (SID) des Benutzers, die SIDs der direkten Gruppen in denen das Benutzerkonto Mitglied ist, die SIDs von Gruppenverschachtelungen und in einer Windows Server 2003 Umgebung noch die SID History. Befindet sich der Benutzer in mehr als 1.024 Gruppen, so schlägt die Authentifizierung des Benutzers fehl.
Tatsächlich sollte sich das Benutzerkonto nicht in mehr als 1.015 Gruppen befinden, denn vom LSA werden standardmäßig bis zu 9 Well-Known SIDs dem Access-Token hinzugefügt.
Users Who Are Members of More Than 1,015 Groups May Fail Logon Authentication
In der Praxis hat sich allerdings gezeigt, dass bereits Probleme auftauchen, in denen der Benutzer sich in weitaus weniger Guppen befindet. Unter Windows 2000 - dort je nach SP-Stand - kann es schon bei Gruppenmitgliedschaften zwischen 70-80 bzw. 120 Gruppenmitgliedschaften zu Problemen kommen.
Group Policy may not be applied to users belonging to many groups New resolution for problems with Kerberos authentication when users belong to many groups
Unter Windows Server 2003 kann es ebenfalls zu Problemen kommen, wenn sich der Benutzer in weitaus mehr als 70 Gruppen befindet:
Authentication Fails Due to User PAC Troubleshooting Kerberos Errors When you try to log on to a Windows Server 2003-based domain by using a domain user account, the logon request fails What's in a Token
Die empfohlene maximale Anzahl an Domänen innerhalb einer Gesamtstruktur
-
In einer Windows 2000 Gesamtstruktur wird empfohlen, nicht mehr als 800 Domänen zu betreiben. Die empfohlene Anzahl an Domänen innerhalb einer Windows Server 2003 Gesamtstruktur, die sich in der Gesamtstrukturfunktionsebene „Windows Server 2003“ befindet, ist auf 1.200 Domänen beschränkt. Diese Grenze gilt sicherlich auch für eine Windows Server 2008 Gesamtstruktur.
Die empfohlene Anzahl an Domänencontrollern pro Domäne
-
Die unterstützte Anzahl an Domänencontrollern innerhalb einer Windows Server 2003-Domäne beträgt 1.200. Diese Grenze wurde festgelegt, damit im Windows Server 2003 das SYSVOL-Verzeichnis, das durch das File Replication Service (kurz, FRS) repliziert wird, noch ordnungsgemäß rückgesichert werden kann. Dabei kann es bereits bei über 400 DCs pro Domäne zu problemen kommen, wenn das DNS auf den DCs betrieben wird und der AD-integirerte DNS-Name mit dem AD-Namen der Domäne gleich lautet.
Problems with Many Domain Controllers with Active Directory Integrated DNS Zones
Weitere Informationen: Active Directory Maximum Limits
Bei einer Migration auf Windows Server 2008 führen die Träger der FSMO-Rollen wichtige Aufgaben durch. Genau genommen handelt es sich dabei um zwei FSMO-Rollen. Zum einen wäre das die Rolle des Schemamasters, den es nur einmal in der Gesamtstruktur gibt. Dieser erweitert bei einer Migration das Schema in dem neue Attribute sowie Klassen dem Schema hinzugefügt oder bestehende Attribute verändert werden. Zum anderen wäre da noch der Infrastrukturmaster. Diese Rolle, die einmal pro Domäne existiert, aktualisiert während einer Migration die bestehende Domäne in dem Berechtigungen bestehender Objekte bearbeitet werden. Erst wenn diese beiden Rollen die Änderungen die durch das ADPREP hervorgerufen werden durchgeführt haben, ist es möglich einen Domänencontroller (DC) auf Windows Server 2008 zu aktualisieren bzw. einen Windows Server 2008 DC zur Domäne hinzuzufügen.
Den ersten Windows Server 2008 DC zu einer Windows 2000/2003/R2 Gesamtstruktur hinzufügen
Welche Rolle nimmt nun der PDC-Emulator bei einer Migration auf Windows Server 2008 ein? Nun, eine analoge wie bei einer Migration von Windows 2000 auf Windows Server 2003. 
Der PDC-Emulator ist neben den beiden Rollen „RID-Master“ und „Infrastrukturmaster“ die dritte Rolle, die in jeder Active Directory-Domäne existiert. Diese Rolle nimmt in seiner täglichen Arbeit wichtige Aufgaben wahr.
Unter anderem wären das:
-
Zeitsynchronisation. DCs gleichen sich ihre Zeit vom PDC-Emulator ab.
-
Gruppenrichtlinien werden auf dem PDC-Emulator bearbeitet.
-
Kennwortänderungen von Benutzern werden von dem DC auf dem diese Änderung durchgeführt wurde, bevorzugt zum PDC-Emulator repliziert.
-
Wenn ein Anmeldeversuch eines Benutzers fehlschlagen sollte, wird in letzter Instanz das Kennwort vom PDC-Emulator überprüft.
-
Kontosperrungen werden vom PDC-Emulator durchgeführt.
Findet eine Migration statt, so bekommt der PDC-Emulator eine weitere wichtige Aufgabe die im Folgenden erläutert wird.
Falls in einer Windows 2000 Domäne ein Windows Server 2003- oder Windows Server 2008 Domänencontroller hinzugefügt und auf diesem die Rolle des PDC-Emulators verschoben wird, werden diverse neue Sicherheitsprinzipale erstellt und bestehende Gruppenzugehörigkeiten verändert. Das gleiche erfolgt natürlich auch, wenn der Träger des PDC-Emulators per In-place Upgrade auf Windows Server 2003 aktualisiert wurde.
Es werden die folgenden Builtin-Gruppen in jeder Domäne erstellt:
-
Builtin\Erstellungen eingehender Gesamtstrukturvertrauensstellung
-
Builtin\Distributed COM Users
-
Builtin\Leistungsprotokollbenutzer
-
Builtin\Netzwerkkonfigurations-Operatoren
-
Builtin\Remotedesktopbenutzer
-
Builtin\Systemmonitorbenutzer
-
Builtin\Terminalserver-Lizenzserver
-
Builtin\Windows-Autorisierungszugriffsgruppe
Zusätzlich werden die nachfolgend genannten Gruppenzugehörigkeiten in jeder Domäne aktualisiert:
-
Der Builtin-Gruppe\Prä-Windows 2000 kompatibler Zugriff wird das Objekt ForeignSecurityPrincipal\Authentifizierte Benutzer hinzugefügt.
-
Befindet sich aber das Objekt ForeignSecurityPrincipal\Jeder bereits in der Builtin-Gruppe\Prä-Windows 2000 kompatibler Zugriff, so werden die Objekte ForeignSecurityPrincipal\ANONYMOUS-ANMELDUNG und ForeignSecurityPrincipal\Authentifizierte Benutzer hinzugefügt.
-
Das Objekt ForeignSecurityPrincipal\NETZWERKDIENST wird zu der Builtin-Gruppe\Leistungsprotokollbenutzer hinzugefügt, aber nur, wenn der PDC-Emulator auf einen Windows Server 2003 DC aktualisiert bzw. verschoben wird. Das gilt nicht für einen Windows Server 2008 DC.
-
Die Builtin-Gruppe\Windows-Autorisierungszugriffsgruppe wird um das neue Mitglied ForeignSecurityPrincipal\DOMÄNENCONTROLLER DER ORGANISATION ergänzt.
Den Container ForeignSecurityPrincipal kann man sich z.B. in der MMC „Active Directory-Benutzer und -Computer“ anschauen.
Allerdings werden die darin gespeicherten Objekte erst dann angezeigt, wenn in dem Snap-In unter Ansicht die Option Erweiterte Funktionen aktiviert wurde.
Wird der Windows 2000 Domänencontroller der Root-Domäne auf dem der PDC-Emulator liegt per In-place Upgrade auf Windows Server 2003 aktualisiert oder die Rolle auf einen Windows Server 2003 bzw. Windows Server 2008 DC verschoben, so werden weitere Objekte der Klasse ForeignSecurityPrincipal im Container WellKnown Security Principals erstellt. Der Container befindet sich in der Konfigurationspartition.
Die neuen Objekte wären:
-
Digest Authentication
-
Local Service
-
-
-
-
-
-
Bei einer Migration von Windows 2000 oder Windows Server 2003 auf Windows Server 2008 werden weitere Sicherheitsprinzipale erstellt sowie Gruppenzugehörigkeiten aktualisiert.
Neue Well-Known und Builtin-Gruppen werden erzeugt sowie bestehende Gruppenzugehörigkeiten verändert, wenn folgendes zutrifft:
Beim verschieben einer FSMO-Rolle wird im Verzeichnisdienstprotokoll die Event-ID 1458 protokolliert. Leider fehlt in diesem Eintrag der Hinweis, welche Rolle verschoben wurde!
Die Veränderungen wären wie folgt:
Diese Builtin- sowie lokalen Sicherheitsgruppen werden in jeder Domäne erstellt:
-
Builtin\Ereignisprotokollleser
-
-
Builtin\Kryptografie-Operatoren
-
Builtin\Zertifikatdienst-DCOM-Zugriff
-
Users\Abgelehnte RODC-Kennwortreplikationsgruppe
-
Users\Domänencontroller ohne Schreibzugriff
-
Users\Zulässige RODC-Kennwortreplikationsgruppe
-
Users\Krbtgt_<ID> (wird nur erstellt, wenn ein RODC zu einer Windows Server 2003/2008 Domäne hinzugefügt wurde)
-
Users\Domänencontroller der Organisation ohne Schreibzugriff (diese Gruppe wird nur in der Root-Domäne erstellt)
Die neuen Gruppenzugehörigkeiten in jeder Domäne wären:
-
Das Sicherheitsprinzipal ForeignSecurityPrincipals\IUSR wird zur Builtin-Gruppe IIS_IUSRS hinzugefügt
-
Das Sicherheitsprinzipal ForeignSecurityPrincipals\NETZWERKDIENST wird aus der Builtin-Gruppe\Leistungsprotokollbenutzer entfernt
-
Die folgenden Gruppen werden der Gruppe Abgelehnte RODC-Kennwortreplikationsgruppe hinzugefügt:
-
-
-
Domänencontroller ohne Schreibzugriff
-
-
-
Richtlinien-Ersteller-Besitzer
-
-
In der Root-Domäne werden in der Konfigurationspartition die folgenden Objekte im Container WellKnown Security Principals erstellt:
-
-
-
Das Objekt Well-Known-Security-Id-System wird umbenannt zu System
Es ist stets empfehlenswert die FSMO-Rollen einer Domäne (insbesondere den PDC-Emulator) auf den DC, der das aktuellere Serverbetriebssystem ausführt zu verschieben. Wird das nicht getan, so werden die entsprechenden Sicherheitsprinzipale nicht erstellt. Dabei sollte aber beachtet werden, falls man sich dazu entscheidet die FSMO-Rollen zu trennen (was in vielen Umgebungen nicht notwendig ist), dass es dabei ebenfalls einiges zu beachten gilt:
Die FSMO-Rollen verschieben
Weitere Informationen:
Well-known security identifiers in Windows operating systems
Immer wieder stolpere ich über Missverständnisse, welche Rolle der Domänen- respektive Gesamtstrukturfunktionsmodus in einer bestehenden Umgebung spielt. Gerade im Zusammenhang wenn eine Migration bevor steht oder ein Windows 2000 Domänencontroller (DC) in eine Windows Server 2003 Domäne hinzugefügt werden soll, kommen Administratoren des Öfteren ins straucheln. Gerade auf dem Windows Server 2008 Launch in Frankfurt am Main fiel mir in den Gesprächen immer wieder auf, dass es Missverständnisse mit den einzelnen Funktionsebenen gibt.
Als mit Windows 2000 das Active Directory in seiner ersten Version eingeführt wurde, musste Microsoft die Interoperabilität innerhalb der Domänen zwischen den verschiedenen Serverbetriebssystemen die auf Domänencontrollern installiert sein können sicherstellen. Demzufolge wurde mit Windows 2000 die Funktionsebenen, genauer, der Domänenfunktionsmodus eingeführt. Mit Windows Server 2003 kam zusätzlich der Gesamtstrukturfunktionsmodus hinzu. Durch die jeweiligen Funktionsebenen konnte gewährleistet werden, dass Domänencontroller (DC) auf älteren Serverbetriebssystemen auch mit DCs die auf neueren Serverbetriebssystemen laufen, zusammen innerhalb einer Domäne existieren können. Weiterhin konnte mit den Funktionsebenen sichergestellt werden, dass Domänen sowie Gesamtstrukturen in einem bestimmten Modus betrieben werden können, um so die jeweils zur Verfügung stehenden (neuen) Funktionen nutzen zu können. Denn dadurch, dass das Serverbetriebssystem stetig weiterentwickelt wird, werden mit jeder neuen Version neue Funktionen der Domäne sowie der Gesamtstruktur hinzugefügt. Das bedeutet im Umkehrschluss, dass die Vorgängerversionen die Neuerungen die mit jeder neuen Serverbetriebssystem-Version dem Active Directory hinzugefügt werden, nicht kennen und somit auch nicht nutzen können.
Folglich wird mit den Funktionsebenen die Möglichkeit geschaffen, einerseits DCs mit verschiedenen Serverbetriebssystem-Versionen innerhalb der Domäne zu betreiben und andererseits, neue Funktionen dem Active Directory hinzuzufügen. Der Administrator kann selbst entscheiden wann er in die nächsthöhere Ebene wechselt, um von den Vorteilen die der höhere Modus bietet zu profitieren. Dies kann er selbstverständlich nur dann tun, wenn die Voraussetzung für den höheren Modus gegeben sind. Den Unternehmen wird somit die Möglichkeit geschaffen, eine sanfte Migration z.B. von Windows NT zu Windows 2000 oder Windows Server 2003 durchzuführen und parallel NT-BDCs, Windows 2000 DCs und Windows Server 2003 DCs zu betreiben. Anschließend kann die sukzessive Migration der einzelnen DCs auf das neuere Serverbetriebssystem durchgeführt und am Ende der Modus umgestellt werden.
NT-BDCs können neben Windows Server 2008 DCs nicht mehr existieren! Stattdessen können Windows 2000 DCs sowie Windows Server 2003 DCs neben Windows Server 2008 DCs bestehen.
Der Domänenfunktionsmodus legt den Modus einer Domäne und somit die einzusetzenden Domänencontroller in dieser Domäne fest. Dieser Modus kann nur dann heraufgestuft werden, wenn alle Domänencontroller einer Domäne eine gewisse Serverbetriebssystem-Version ausführen, die für den höheren Modus notwendig ist.
Das bedeutet konkret, möchte man in den einheitlichen Domänenfunktionsmodus Windows 2000 pur wechseln, so müssen alle DCs dieser Domäne unter Windows 2000, Windows Server 2003/2003R2, Windows Server 2008 oder Windows Server 2008 R2 laufen. Es dürfen keine NT-BDCs mehr in der Domäne existieren, da ansonsten die Möglichkeit des Heraufstufen nicht gegeben ist.
Befindet sich die Domäne im Modus Windows Server 2003, so ist es nicht mehr möglich einen Windows 2000 DC, geschweige denn NT-BDC zur Domäne hinzuzufügen, sondern nur noch Windows Server 2003/2003 R2 und Windows Server 2008/2008 R2 DCs.
Oder wenn man in den Domänenfunktionsmodus Windows Server 2008 wechseln möchte um von den neuen Features zu profitieren (Password Settings Objects - kurz PSO - oder die DFS-Replikation für das SYSVOL-Verzeichnis), so müssen alle DCs dieser Domäne unter Windows Server 2008 oder Windows Server 2008 R2 laufen. Sonst ist das Heraufstufen der Domäne nicht möglich.
Möchte man den AD-Papierkorb der unter Windows Server 2008 R2 zur Verfügung steht nutzen, so muss sich der Gesamtstrukturfunktionsmodus auf Windows Server 2008 R2 befinden. In diesem Modus können dann nur Windows Server 2008 R2 DCs oder höher existieren.
Wie bereits erwähnt, wurde im Active Directory von Windows Server 2003 neben dem Domänenfunktionsmodus zusätzlich der Gesamtstrukturfunktionsmodus eingeführt. Mit diesem zusätzlichen Modus auf Gesamtstrukturebene wird zwischen einer Windows 2000, Windows Server 2003/2003 R2, Windows Server 2008 und Windows Server 2008 R2 Gesamtstruktur klar unterschieden. Der Gesamtstrukturfunktionsmodus legt den Modus einer Gesamtstruktur fest. Das Heraufstufen ist nur dann möglich, wenn sich alle Domänen in dieser Gesamtstruktur in einem bestimmten Domänenfunktionsmodus befinden.
In den Gesamtstrukturfunktionsmodus Windows 2000 lässt sich nur dann wechseln, wenn sich alle Domänen im Domänenfunktionsmodus „Windows 2000 pur“ oder höher befinden. Auf den Gesamtstrukturfunktionsmodus Windows Server 2003 kann nur dann gewechselt werden, wenn sich alle Domänen im Domänenfunktionsmodus Windows Server 2003 oder höher befinden. Das gleiche gilt natürlich auch für den Gesamtstrukturfunktionsmodus Windows Server 2008. Dort kann in diese Ebene nur gewechselt werden, wenn alle Domänen im Domänenfunktionsmodus Windows Server 2008 oder höher sind. Um in den Gesamtstrukturfunktionsmodus Windows Server 2008 R2 zu wechseln, müssen sich alle Domänen im Domänenfunktionsmodus "Windows Server 2008 R2" oder höher befinden.
Hinweis: Wenn sich die Domänen in einer Windows Server 2003 Gesamtstruktur im Domänenfunktionsmodus „Windows 2000 pur“ befinden, werden diese automatisch auf den Domänenfunktionsmodus „Windows Server 2003“ heraufgestuft, sobald man den Gesamtstrukturfunktionsmodus auf Windows Server 2003 stuft. Vorausgesetzt, es befinden sich in allen Domänen der Gesamtstruktur ausschließlich Windows Server 2003 DCs.
Das gleiche trifft im Übrigen auf eine Windows Server 2008 Gesamtstruktur zu. Wenn dort die Domänen im einheitlichen Domänen-Modus „Windows 2000“ oder „Windows Server 2003“ sind und sich ausschließlich Windows Server 2008 DCs in den Domänen befinden, werden alle Domänen auf den Domänenfunktionsmodus Windows Server 2008 gestuft, sobald der Gesamtstrukturfunktionsmodus auf Windows Server 2008 gestuft wird.
Das bedeutet im Klartext, befinden sich alle Domänen in der Gesamtstruktur in einem "einheitlichen Modus" und werden die Betriebssysteme die auf den DCs laufen von dem höheren Modus unterstützt, so werden alle Domänen automatisch in den höheren Domänenfunktionsmodus heraufgestuft, sobald man den Gesamtstrukturfunktionsmodus heraufstuft.
Die Funktionsebenen auf Domänen- sowie Gesamtstrukturebene haben einzig und allein Einfluss auf die Domänencontroller. Mitgliedsserver sowie Clients sind davon unbetroffen und können in jedem Modus Mitglied der Domäne sein. Auch im Domänenfunktionsmodus „Windows Server 2003“ können Windows NT Mitgliedsserver weiterhin existieren.
Wichtig ist, wurde der Domänen- oder Gesamtstrukturfunktionsmodus einmal heraufgestuft, kann der Modus nicht mehr zurückgestuft werden! Das Heraufstufen der Domäne bzw. Gesamtstruktur ist ein irreversibler Vorgang!
Eine Ausnahme besteht jedoch seit Windows Server 2008 R2. Ist der AD-Papierkorb nicht aktiviert, kann der Domänen- sowie Gesamtstrukturfunktionsmodus nur auf "Windows Server 2008" zurückgestuft werden (Details unter "Weitere Informationen").
Für das Heraufstufen des Domänenfunktionsmodus werden Domänen-Administrator Rechte benötigt. Die Heraufstufung wird von dem DC durchgeführt, der die FSMO-Rolle des PDC-Emulators innehat. Egal mit welchem DC der Administrator mit der MMC „Active Directory-Benutzer und -Computer“ oder „Active Directory-Domänen und -Vertrauensstellungen“ verbunden ist, zum Zeitpunkt des Heraufstufens verbindet sich der DC mit dem PDC-Emulator.
Zum Heraufstufen des Gesamtstrukturfunktionsmodus werden Organisations-Admin Rechte benötigt. Dieser Vorgang wird vom Schema-Master durchgeführt. Auch hier ist die Durchführung die gleiche, wie beim Heraufstufen der Domäne. Falls der DC mit dem der Administrator nicht die Rolle des Schemamasters innehat, verbindet sich der DC mit diesem, der dann die Gesamtstruktur herauf stuft.
Welche Vorteile in Bezug auf Funktionen und Sicherheit die einzelnen Funktionsebenen mit sich bringen, wird auf den folgenden Seiten beschrieben:
Understanding AD DS Functional Levels How to raise domain and forest functional levels in Windows Server 2003 Domain and forest functionality How Active Directory Functional Levels Work
Den Domänen- bzw. Gesamtstrukturfunktionsmodus kann man während dem Betrieb umstellen und es ist auch kein Neustart notwendig! Mit wenigen Mausklicks wird die Domäne bzw. Gesamtstruktur umgestellt. Bei dem Aktualisierungsprozess wird einiges an Netzwerkverkehr in der Domäne bzw. Gesamtstruktur erzeugt, daher sollte darauf geachtet werden die Heraufstufung nicht im Hochbetrieb durchzuführen.
Bestehende Vertrauensstellungen, sei es zu Windows NT, Windows 2000, Windows Server 2003 oder Windows Server 2008 sind davon nicht betroffen bzw. haben mit dieser Umstellung kein Problem und funktionieren weiterhin.
Über die MMCs lässt sich das Heraufstufen des Domänenfunktionsmodus entweder über das Snap-In „Active Directory-Benutzer und -Computer“ (dsa.msc) oder „Active Directory-Domänen und -Vertrauensstellungen“ (domain.msc) durchführen, wobei die Gesamtstruktur ausschließlich im Snap-In „Active Directory-Domänen und -Vertrauensstellung“ heraufgestuft werden kann. Mit einem Rechtsklick auf den FQDN steht in der jeweiligen MMC die Option Domänenfunktionsebene heraufstufen… zur Verfügung. Zum Heraufstufen der Gesamtstruktur muss in der MMC domain.msc mit einem Rechtsklick auf den Eintrag Active Directory-Domänen und -Vertrauensstellung die Option Gesamtstrukturfunktionsebene heraufstufen… ausgewählt werden. Danach können jeweils die zur Verfügung stehenden Ebenen eingestellt werden.
Beide Ebenen lassen sich ebenfalls durch bearbeiten (mit LDP.exe oder ADSIEdit.msc) des Attributs msDS-Behavior-Version heraufstufen.
Für den Gesamtstrukturfunktionsmodus ist im Attribut msDS-Behavior-Version, das sich in den Eigenschaften des Containers <CN=Partitions,CN=Configuration,DC=Root-Domäne,DC=TLD> befindet, der entsprechende Wert einzutragen.
Für den Domänenfunktionsmodus findet man das Attribut msDS-Behavior-Version in den Eigenschaften des Containers <DC=Domäne,DC=TLD>.
Folgende Werte können im Attribut msDS-Behavior-Version eingetragen werden:
0 = Domänenfunktionsebene: Windows 2000 gemischt und Windows 2000 pur 0 = Gesamtstrukturfunktionsebene: Windows 2000 1 = Domänenfunktionsebene: Windows Server 2003 Interim 1 = Gesamtstrukturfunktionsebene: Windows Server 2003 Interim 2 = Domänenfunktionsebene: Windows Server 2003 2 = Gesamtstrukturfunktionsebene: Windows Server 2003 3 = Domänenfunktionsebene: Windows Server 2008 3 = Gesamtstrukturfunktionsebene: Windows Server 2008 4 = Domänenfunktionsebene: Windows Server 2008 R2 4 = Gesamtstrukturfunktionsebene: Windows Server 2008 R2
Im Übrigen ist durch das bearbeiten des Attributs msDS-Behavior-Version dies die einzige Möglichkeit, die Gesamtstrukturfunktionsebene „Windows Server 2003 Interim“ zu wählen, wenn kein Inplace-Update von Windows NT durchgeführt wurde. Findet kein Inplace-Update von Windows NT statt, steht dieser Modus nicht zur Verfügung.
Es gibt die folgenden Domänenfunktionsebenen:
Windows 2000 gemischt Dieser Modus existiert in Windows 2000 und Windows Server 2003 Domänen. Es können NT-BDCs, Windows 2000 DCs und Windows Server 2003 DCs in diesem Modus bestehen.
Windows 2000 pur Diese Ebene besteht in Windows 2000, Windows Server 2003/2003 R2, Windows Server 2008 und Windows Server 2008 R2 Domänen. Darin können Windows 2000, Windows Server 2003/2003 R2, Windows Server 2008 und Windows Server 2008 R2 DCs existieren.
Windows Server 2003 Interim Die Auswahl des Modus „Windows Server 2003 Interim“ steht ausschließlich nur zur Auswahl, wenn von einer NT-Domäne per Inplace-Update auf Windows Server 2003 aktualisiert wird. In diesem Modus können NT-BDCs sowie Windows Server 2003 DCs existieren.
Windows Server 2003 Dieser native Modus besteht in Windows Server 2003, Windows Server 2008 und Windows Server 2008 R2 Domänen. Neben Windows Server 2003 DCs können auch Windows Server 2008 sowie Windows Server 2008 R2 DCs in der Domäne betrieben werden.
Windows Server 2008 In diesem Domänenfunktionsmodus können sich Windows Server 2008 DCs und Windows Server 2008 R2 DCs befinden.
Windows Server 2008 R2 Dieser Domänenfunktionsmodus kann lediglich Windows Server 2008 R2 DCs beinhalten!
Als Gesamtstrukturfunktionsebenen gibt es:
Windows 2000 In dieser Gesamtstrukturebene können die folgenden Domänenfunktionsebenen existieren: - Windows 2000 gemischt - Windows 2000 pur - Windows Server 2003 - Windows Server 2008 - Windows Server 2008 R2
Windows Server 2003 Interim Hier können Windows Server 2003 Interim, Windows Server 2003 und Windows Server 2008 Domänen (im Domänenfunktionsmodus Windows Server 2003) bestehen.
Windows Server 2003 Dieser Modus kann Domänen im Domänenfunktionsmodus Windows Server 2003, Windows Server 2008 und Windows Server 2008 R2 beinhalten.
Windows Server 2008 Dieser Gesamtstrukturmodus legt fest, dass ausschließlich Windows Server 2008 und Windows Server 2008 R2 Domänen in der Gesamtstruktur bestehen können.
Windows Server 2008 R2 In diesem Gesamtstrukturfunktionsmodus können ausschließlich Windows Server 2008 R2 Domänen in der Gesamtstruktur bestehen.
Weitere Informationen: Den Domänen- sowie Gesamtstrukturfunktionsmodus mit der AD-Powershell hochstufen Den Domänen- und Gesamtstrukturfunktionsmodus zurückstufen Den ersten Windows Server 2008 DC zu einer Windows 2000/2003/R2 Gesamtstruktur hinzufügen Den ersten Windows Server 2008 R2 DC zur Gesamtstruktur hinzufügen
Der Read-Only Domänencontroller ist ein DC der für Standorte konzipiert wurde, die keine physikalische Sicherheit dem DC und somit auch der Domäne bzw. Gesamtstruktur bieten können. Wie es im Namen bereits zu lesen ist, handelt es sich dabei um einen DC der ausschließlich nur eine Leseberechtigung auf die Active Directory-Daten hat. Falls Änderungen im Active Directory durchgeführt werden sollen, leitet der RODC diesen Vorgang auf einen beschreibbaren DC weiter. Das gilt auch für Aktualisierungen im DNS. Zusätzlich stellt die einseitige (unidirektionale) Replikation eine weitere Sicherheitsfunktion dar. Auf dem RODC findet nur eine eingehende (Inbound)-Replikation statt. Es wird nichts vom RODC zu einem beschreibbaren DC repliziert. Die einseitige Replikation wird für die Active Directory-Domain Services und für die DFS-Replikation des SYSVOL-Verzeichnisses angewendet.
Weitere Details zum RODC werden in diesem Artikel erläutert: Read-Only Domain Controller (RODC)
Die Voraussetzungen um den ersten RODC in der Domäne zu installieren
-
Der Modus für die Gesamtstruktur muss sich mindestens auf Windows Server 2003 oder höher befinden, damit die Linked Value Replikation (LVR) zur Verfügung steht.
-
Der RODC kann sich die Domänenpartition ausschließlich von einem beschreibbaren Windows Server 2008 oder Windows Server 2008 R2 Domänencontroller replizieren. Daher muss sich bereits ein beschreibbarer Windows Server 2008/2008 R2/Core/Core R2 Domänencontroller in der Domäne befinden. Wenn das nicht der Fall wäre, würde die Option zum erstellen eines RODC an entsprechender Stelle nicht zur Verfügung stehen.
-
Das Active Directory Preparation Tool (ADPREP) muss mit dem Parameter /RODCPREP ausgeführt worden sein. Dabei werden die Berechtigungen (Security Descriptor, SD) von allen DNS-Anwendungsverzeichnispartitionen (DomainDNSZones und ForestDNSZones) in der Gesamtstruktur aktualisiert. Der Befehl muss mit Organisations-Administrator Rechten durchgeführt werden und kann auf irgendeinem DC ausgeführt werden. Dieser DC muss auch nicht der Träger der FSMO-Rollen sein. Beim Ausführen von ADPREP /Rodcprep werden die einzelnen Infrastrukturmaster der Domänen kontaktiert, um die Berechtigungen der Anwendungsverzeichnispartitionen DomainDNSZones und ForestDNSZones zu aktualisieren.
Error message when you run the "Adprep /rodcprep" command in Windows Server 2008: "Adprep could not contact a replica for partition DC=DomainDnsZones,DC=Contoso,DC=com"
-
Wird für die bereitgestellte Installation zuerst das RODC-Computerkonto in der OU Domain Controllers im AD DS erstellt, darf der zukünftige RODC nicht bereits Mitglied der Domäne sein.
Die Installation eines RODC auf einem Windows Server 2008 (Vollinstallation) durch den DCPROMO-Assistenten
Der Read-Only Domänencontroller kann auf mehrere Varianten bereitgestellt werden. Die eine Variante wäre die Installation des RODCs durch das Ausführen des DCPROMO-Assistenten. Dies kann von einem Domänen- bzw. Organisations-Administrator durchgeführt werden. Dabei kann der Server entweder ein standalone- oder Mitgliedsserver sein. Nach der Betriebssysteminstallation kann der Administrator direkt das DCPROMO aufrufen und somit den Server zum RODC stufen. Die Installation gestaltet sich nicht sonderlich anders als die Installation eines beschreibbaren DCs. Es ist lediglich darauf zu achten, dass beim ausführen des DCPROMO-Assistenten die Option Schreibgeschützter Domänencontroller (RODC) auf der Seite der Domänencontrolleroptionen ausgewählt wird.
Empfehlenswert wäre es, nach dem Aufruf von DCPROMO die Option Installation im erweiterten Modus verwenden auszuwählen. Ich empfehle diese Option bei jeder DC-Installation zu aktivieren. Erst durch den erweiterten Modus erscheint die zusätzliche Auswahl (bei einer RODC-Installation) Richtlinie für Kennwortreplikation angeben (Password Replication Policy, kurz PRP), in der festgelegt werden kann welche Kennwörter auf den RODC repliziert werden dürfen und welche verwehrt bleiben. Die Replikation der Kennwörter von einzelnen Benutzern, Gruppenmitgliedern oder Computern können auf dem RODC zugelassen bzw. verwehrt werden. Dabei bleiben standardmäßig die Kennwörter administrativer Konten dem RODC verwehrt. Wenn dabei ein Benutzerkonto in der abgelehnten- sowie zulässigen RODC-Kennwortreplikationsgruppe Mitglied ist, so hat die abgelehnte Gruppe Vorrang!
Die Konfiguration der Kennwort-Replikation kann natürlich auch im Nachhinein jederzeit geändert und muss nicht unbedingt während der Installation festgelegt werden. Weitere Optionen die erst mit aktivieren des erweiterten Installationsmodus erscheinen, wäre die IFM-Option und die Auswahl eines Quelldomänencontrollers mit dem die Replikation über das Netzwerk durchgeführt werden soll.
Die Installation eines RODC auf einem Windows Server 2008 Core
Der RODC kann ebenfalls auf einer Installation des Windows Server Core bereitgestellt werden. Da das Heraufstufen zu einem RO-/DC auf einem Windows Server Core nicht wie gewohnt über die GUI des DCPROMO-Assistenten durchgeführt werden kann, ist der Administrator gezwungen die Installation, entweder durch die einzelne Eingabe der Parameter in der Kommandozeile (DCPROMO /unattend /ReplicaOrNewDomain=ReadOnlyReplica…) oder mit einer Antwortdatei durchzuführen.
Eine Beispiel-Antwortdatei zum Heraufstufen eines RODCs befindet sich am Ende dieses Artikels: Windows Server 2008 Core
Die bereitgestellte Installation eines RODC
Eine andere Variante wäre die Installation eines RODCs in zwei Schritten durchzuführen. Dabei erstellt ein Domänen- bzw. Organisations-Administrator im ersten Schritt zuerst das RODC-Computerkonto im Active Directory und bekommt dabei die Möglichkeit, die vor Ort Installation sowie die Verwaltung des RODCs entweder von einem Domänen-Administrator durchführen zu lassen oder an einen Benutzer oder besser einer Benutzergruppe dieses Privileg zu delegieren. Zur leichteren Administration sollte eine Benutzergruppe angegeben werden. Die Delegierung an dieser Stelle hat den positiven Nebeneffekt, dass der Benutzer oder die Gruppe denen dieses Recht delegiert wurde, gleichzeitig auch der lokale Administrator des Systems ist. Die Änderungen am System, sei es Treiberaktualisierungen, Softwareinstallationen oder Hardwaretausch kann von nun an von einem normalen Benutzer durchgeführt werden, der keine Rechte auf das Active Directory hat. In den vorherigen Server-Versionen stellte genau dieses Szenario in verteilten Umgebungen oftmals ein Problem dar. Im zweiten Schritt wird durch das Ausführen von DCPROMO auf dem Server die RODC-Installation endgültig abgeschlossen.
Die Vorgehensweise für die bereitgestellte Variante wäre folgende
-
In der MMC Active Directory-Benutzer und -Computer ist auf einem beschreibbaren Windows Server 2008 Domänencontroller, mit einem Rechtsklick auf der OU Domain Controllers die Option Konto für schreibgeschützten Domänencontroller vorbereiten… auszuwählen.
-
Auf der Willkommensseite gilt es die Option Installation im erweiterten Modus verwenden zu aktivieren.
-
-
Als nächstes werden die Anmeldeinformationen eines Domänen- oder Organisations-Administrators benötigt. Wenn man auf dem System, auf der man das RODC-Computerkonto erstellt als Domänen-Administrator angemeldet ist, reichen die aktuellen Anmeldeinformationen aus und es müssen keine alternativen Anmeldeinformationen eingegeben werden. Ansonsten werden alternative Anmeldeinformationen benötigt. Wenn die angegebenen Anmeldeinformationen nicht über die benötigten Rechte verfügen, folgt eine Warnung mit dem Hinweis, dass das angegebene Benutzerkonto in keines der genannten Gruppen Mitglied ist. Es ist zwar trotzdem möglich mit dem Assistenten fortzufahren, aber spätestens nach der Zusammenfassung erscheint erneut der Hinweis, dass die eingegeben Anmeldeinformationen nicht ausreichen. Aber auch hier bekommt man dann die Option, ein berechtigtes Benutzerkonto einzugeben.
-
Auf der nächsten Seite muss der Computername des zukünftigen RODCs eingetragen werden. Des Weiteren wird der Hinweis angezeigt, dass der Computername an dieser Stelle vergeben werden muss. Weiterhin wird darauf hingewiesen, dass der Server erst mit Ausführen von DCPROMO zur Domäne hinzugefügt werden darf. Falls der Server zu diesem Zeitpunkt bereits Mitglied der Domäne wäre, würde an dieser Stelle eine Fehlermeldung erscheinen:

-
Nun muss der Standort ausgewählt werden, an dem der RODC eingesetzt werden soll.
-
Im darauffolgenden Schritt ist die Auswahl der zusätzlichen Domänencontrolleroptionen zu treffen. Es stehen insgesamt drei Optionen zur Auswahl, wobei die letzte Option Schreibgeschützter Domänencontroller (RODC) aktiviert und ausgegraut ist. Die beiden anderen Optionen wären DNS-Server und Globaler Katalog (was vorteilhaft wäre diese aktiviert zu lassen).
-
An dem nächsten Punkt angelangt, kann man die Richtlinie für die Kennwortreplikation bearbeiten. Die Kennwortreplikation beeinflusst das Anmeldeverhalten eines Benutzers bei nicht erreichen eines beschreibbaren DCs.
Der genaue Vorgang wird auf diesen Seiten erklärt: Appendix B: How the Authentication Process Works with RODCs Password Replication Policy
Wichtig an dieser Stelle wäre zu erwähnen, möchte man das der RODC einen Benutzer (oder Dienstkonto) eigenständig authentifiziert, ohne das ein beschreibbarer DC kontaktiert werden soll (z.B. wenn die WAN-Verbindung unterbrochen ist), so muss neben dem Kennwort des Benutzerobjekts noch das Computerkontokennwort an dem sich der Benutzer anmeldet, bereits auf den RODC repliziert worden sein. Natürlich müssen die betroffenen Benutzer- sowie Computerkonten vorher in der Richtlinie für die Kennwortreplikation zugelassen werden.
Falls das Kennwort eines Benutzers (und/oder Computerkontos, an dem sich der Benutzer anmeldet) nicht auf den RODC repliziert wurde und es entsteht eine WAN-Störung, kann sich der Benutzer zu diesem Zeitpunkt lediglich mit seinen zwischengespeicherten Benutzerinformationen (cached Credentials) anmelden. Das kann der Benutzer wiederum nur, wenn er sich vorher einmal von dem Computer aus, erfolgreich an der Domäne authentifiziert hat.
Der RODC trägt sich bekanntermaßen als Key Distribution Center (KDC) im Active Directory für seinen Standort ein und somit kann der RODC dem Client das Ticket-Granting Ticket (TGT) ausstellen.
Die Replikation der Kennwörter lässt sich manuell anstoßen. Zum einen ist das mit Repadmin möglich. Der Befehl dazu lautet: Repadmin /Rodcpwdrepl <RODC*> <beschreibbarer DC> <DN des Benutzerkontos> <DN des Clients>
Repadmin /rodcpwdrepl
Zum anderen lässt sich die Replikation der Kennwörter auch über die grafische Oberfläche realisieren. Dazu gilt es in der MMC Active Directory-Benutzer und -Computer die Eigenschaften des RODC-Computerkontos zu öffnen. Dort im Reiter Kennwortreplikationsrichtlinie ist die Option Erweitert auszuwählen. In der erweiterten Kennwortreplikation hat man nun die Möglichkeit über die Auswahl von Kennwörter auffüllen… die entsprechenden Kennwörter sofort zu replizieren.

-
Der Assistent fragt als nächstes nach einem Benutzer oder einer Gruppe, die das Recht delegiert bekommen sollen den RODC fertig zu installieren (durch Ausführen von DCPROMO). Zudem wird darauf hingewiesen das die angegeben Konten über lokale Administratorberechtigungen verfügen. Erfolgt an dieser Stelle keine Eingabe, so kann die Installation des RODCs ausschließlich von einem Domänen- oder Organisations-Administrator abgeschlossen werden. Erneut der Hinweis; Die hier angegebenen Konten bekommen keine weiteren Rechte auf das AD!
-
Es folgt die Zusammenfassung in der die gewählten Einstellungen überprüft werden können.
-
Anschließend wird mit Fertig Stellen der Vorgang zum erstellen des RODC-Computerkontos abgeschlossen.
Zum Fertigstellen der RODC-Installation ist es als letzten Schritt notwendig, an dem zukünftigen RODC den DCPROMO-Assistenten auszuführen.
Die Vorgehensweise wäre folgende:
-
Mit dem Befehl Dcpromo /UseExistingAccount:Attach gilt es unter Start - Ausführen den DCPROMO-Assistenten aufzurufen.
-
Falls man die Installation mit Hilfe einer Install from Media (IFM) -Sicherung durchführen möchte, sollte die Option Installation im erweiterten Modus verwenden aktiviert werden. Auch wenn man explizit einen DC auswählen möchte von dem die Replikation erfolgen soll, ist der erweiterte Modus zu aktivieren.
-
Im nächsten Schritt muss die Domäne angegeben werden zu der der RODC hinzugefügt werden soll. Zusätzlich sind die alternativen Benutzerinformationen eines Benutzers anzugeben, der beim erstellen des RODC-Computerkontos das Recht der Installation delegiert bekommen hat (siehe oben Punkt 9). Natürlich kann hier auch der Domänen-Administrator angegeben werden.
-
Danach muss das bereits erstellte RODC-Computerkonto ausgewählt werden.

-
Wurde der erweiterte Modus auf der Willkommensseite ausgewählt, kann an dieser Stelle eine Sicherung angegeben werden.
-
Falls keine Sicherung angegeben wird, kann als nächstes ein Quelldomänencontroller ausgewählt werden, von dem aus die Replikation ausgeführt wird.
-
Auf der nächsten Seite kann der Pfad zur Active Directory-Datenbank, den Protokolldateien und dem SYSVOL-Verzeichnis konfiguriert werden.
-
Dann muss ein Kennwort für den Wiederherstellungsmodus für Verzeichnisdienste vergeben werden.
-
Zum Schluss erfolgt die Zusammenfassung der Einstellungen die vorgenommen wurden, bevor es dann mit der Installation beginnt.
Die Verwaltung des RODC
Die Information wer den RODC lokal administrieren darf wird im Active Directory, genauer, im Attribut managedBy das sich im RODC-Computerkonto befindet gespeichert. Ist es notwendig die lokale Verwaltung des RODCs an einen anderen Benutzer bzw. Benutzergruppe zu delegieren, so kann diese Einstellung in den Eigenschaften des RODC-Computerkontos, im Reiter Verwaltet von vorgenommen werden.
Oder es wird im Reiter Attribut-Editor der Distinguished Name des Benutzers (oder der Benutzergruppe) direkt im Attribut managedBy eingetragen, der zukünftig den RODC verwalten soll.
Zusätzlich wird in der Registry auf dem RODC im folgenden Pfad: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\RODCROLES
im Schlüssel RepairAdmin die SID des Benutzers/der Benutzergruppe gespeichert, die im Attribut managedBy eingetragen wurde.
Eine andere Variante einen lokalen Administrator zu definieren wäre über die beiden Kommandozeilentools DSMGMT.exe oder NTDSUTIL.exe. Dadurch können auch feinere Rechte gesetzt werden, in dem z.B. der Domänen-Benutzer in die Gruppe der Sicherungs-Operatoren oder Server-Operatoren auf dem RODC hinzugefügt wird.
Dieses erreicht man durch folgende Vorgehensweise:
- Start - Ausführen - DSMGMT.exe oder NTDSUTIL.exe (die Eingabe der folgenden Befehle gelten sowohl für DSMGMT als auch für NTDSUTIL) - Local Roles - Add <DOMÄNE>\<Domänen-Benutzer> Server-Operatoren
Mit Show Role Server-Operatoren können die Mitglieder dieser Gruppe angezeigt werden. Wenn ein Benutzer über diese Methode zu einer Gruppe hinzugefügt wurde, wird im o.g. Registry-Pfad ein weiterer Schlüssel erstellt, das als Wert die SID des Benutzers enthält. Der Schlüssel trägt als Namen das letzte Oktett der Well-Known SID von der entsprechenden Gruppe, in der der Benutzer hinzugefügt wurde. Wird z.B. ein Benutzer zu der Builtin-Gruppe Server-Operatoren hinzugefügt, so lautet der Name des erstellten Schlüssels 549. Wird hingegen der Benutzer zu der Builtin-Gruppe Konten-Operatoren hinzugefügt, so trägt der Schlüssel den Namen 548.
Well-known security identifiers in Windows operating systems
Wird der Benutzer mit dem Befehl Remove <DOMÄNE>\<Domänen-Benutzer> <Gruppe> aus der Gruppe entfernt, bleibt der erstellte Schlüssel zwar bestehen, jedoch wird der als Wert eingetragene SID entfernt.
Weitere Informationen: Read-Only Domain Controllers and Account Lockouts Performing a Staged RODC Installation Applications That Are Known to Work with RODCs
Als Microsoft mit Windows 2000 das Active Directory in der ersten Version einführte, waren damals die Ansprüche an dem Verzeichnisdienst andere als heute. Insbesondere was die Active Directory-Replikation oder das Replikationsaufkommen angeht, hatte man seinerzeit noch eine andere (geringere) Vorstellung darüber. Es kristallisierte sich heraus, dass sich dieses Verhalten noch verbessern lässt. Denn sowohl unter Windows 2000 als auch Windows Server 2003 (abhängig vom Gesamtstrukturfunktionsmodus) werden sämtliche Werte eines mehrwertigen (multi-valued) Attributs auch dann repliziert, wenn lediglich ein einziger Wert geändert wurde. In einem mehrwertigen bzw. multi-valued Attribut werden, wie es der Name bereits verrät, mehrere Werte in einem Attribut gespeichert. In Windows 2000 findet dabei ausschließlich eine Replikation auf Attribut-Ebene und nicht auf der Wert-Ebene (per Value) statt.
Die Replikation auf Attribut-Ebene hat den Nachteil, dass zum einen ein dadurch überflüssig hohes Replikationsaufkommen entsteht und zum anderen, dass Risiko eines Replikationskonflikts sich erhöht. Bekanntermaßen findet im Active Directory eine Multimaster-Replikation statt was soviel bedeutet, dass auf jedem Domänencontroller zur gleichen Zeit eine Änderung durchgeführt werden kann, die dann durch die AD-Replikation auf die anderen DCs repliziert wird.
Wenn nun bei diesem Replikationsverhalten zur gleichen Zeit auf verschiedenen DCs einer Domäne, der Wert des gleichen Attributs verändert wird, würde ein Replikationskonflikt entstehen und somit eines der Änderungen verworfen werden.
Wie sich das Active Directory im Falle eines Replikationskonflikts verhält, wird im folgenden Artikel erläutert: Active Directory-Replikationskonflikt
Das Verhalten trifft natürlich nur dann zu, wenn sich mindestens zwei Domänencontroller in der Domäne befinden. Ansonsten würde keine Replikation stattfinden .
Das oft zitierte Beispiel das man zu diesem Thema liest, wären Gruppenmitgliedschaften, was nachfolgend noch genauer erläutert wird. Das Beispiel mit den Gruppenmitgliedschaften bietet sich deshalb an, da es sich zum einen um ein mehrwertiges Attribut (Member) handelt und zum anderen in der Praxis darin viele Werte gespeichert werden. Denn in größeren Unternehmen stößt man genau an diesem Punkt auf Probleme.
Als Beispiel nehmen wir an, es existiert eine Benutzergruppe mit 4.950 Benutzern. Das mehrwertige Attribut Member des Gruppenobjekts enthält somit 4.950 Einträge. Im Attribut Member sind die Distinguished Names der einzelnen Mitglieder aufgelistet. Das können Einträge von Benutzern, anderen Gruppen oder Computern sein. Im Benutzerobjekt hingegen befinden sich die Einträge der Gruppenmitgliedschaften im mehrwertigen Attribut MemberOf. Wenn nun dieser Benutzergruppe ein weiterer Benutzer hinzugefügt wird, werden alle 4.951 Einträge im Attribut Member auf die anderen DCs repliziert und nicht nur der einzig hinzugekommene Eintrag. Schließlich wird auf Attribut- und nicht auf der Wert-Ebene repliziert.
In einem anderen Beispiel gehen wir davon aus, dass eine Benutzergruppe simultan auf zwei DCs verändert wird. Es existiert eine GruppeA mit den Benutzern: User1 und User2. Administrator1 fügt der GruppeA einen neuen Benutzer User5 hinzu und zeitgleich fügt Administrator2 auf einem anderen DC User9 hinzu. Somit kommt es zu einem Replikationskonflikt, wobei eines der Änderungen verworfen wird.
Das Member- und MemberOf-Attribut stellen zusammen ein Linked-Attribut (verknüpftes Attribut) Paar dar. Linked-Attribute stellen eine besondere Beziehung im Active Directory zueinander dar, denn sie bestehen aus zwei Attributen, dem Forward- sowie Back-Link. Verändert der Administrator im Forward-Link einen Wert, aktualisiert das Active Directory automatisch den Back-Link. Das beinhaltet natürlich auch das Löschen von Werten.
Das Member-Attribut im Gruppenobjekt ist ein Forward-Link und das Attribut MemberOf eines Benutzerobjekts stellt den Back-Link dar. Back-Links werden von jedem DC selbst verwaltet und können auch nicht vom Administrator bearbeitet werden. Es ist ein sogenanntes system-only Attribut und wird auch nicht auf andere DCs repliziert. Ein Back-Link und sein Wert werden zum Zeitpunkt der Abfrage generiert. Solche Attribute tragen den Namen "constructed". Der Administrator kann nur den Forward-Link, in dem Fall dass Member-Attribut eines Gruppenobjekts das auf andere DCs repliziert wird bearbeiten.
Neben dem unnötigen Replikationsaufkommen unter Windows 2000 kommt noch hinzu, dass eine Benutzergruppe mit mehr als 5.000 Mitgliedern nicht unterstützt wird. Diese Grenze von 5.000 kommt daher, weil eine Aktualisierung im Active Directory in einem einzigen Vorgang durchgeführt werden muss und eben dabei ca. 5.000 Werte aktualisiert werden können. Anders ausgedrückt, die Active Directory Jet Database Engine kann lediglich mit einer bestimmten Anzahl an Werten während eines Schreibvorgangs bzw. eines Replikationszyklus umgehen.
In größeren Umgebungen kann aber diese Grenze von 5.000 Mitgliedern pro Benutzergruppe ein Problem darstellen. Der Weg diese Barriere zu umgehen wäre mit Gruppenverschachtelungen zu arbeiten.
Daraufhin wurde im Windows Server 2003 dieses Verhalten verbessert. Microsoft hat die sogenannte Linked-Value Replikation (zu Deutsch, verknüpfte Wertreplikation) eingeführt. Mit dieser Funktion wird nur noch der geänderte Wert eines mehrwertigen Attributs repliziert, aber nicht mehr die unveränderten Werte. Die AD-Replikation findet nun auf der Wert-Ebene statt. Diese neue Funktion trägt sowohl zur effizienteren Replikation, als auch der Konfliktvermeidung eines mehrwertigen Attributs bei. Bei der LVR-Replikation werden bei einem Objekt zuerst die nicht verknüpften Attribute (non-Linked Attributs) und anschließend die verknüpften Attribute (Linked Attributes) repliziert.
Im oben genannten ersten Beispiel mit den 4951 Mitgliedern einer Benutzergruppe, würde durch die LVR-Replikation lediglich der geänderte Wert (der hinzugekommene Benutzer) repliziert werden und nicht mehr alle Werte. Auch unter Windows NT würde der PDC lediglich den veränderten Wert zum BDC übertragen. Im zweiten Beispiel wären die Benutzer: User1, User2, User5 und User9 nach der LVR-Replikation in der GruppeA.
Die Linked Value Replikation ist aber erst verfügbar, wenn sich der Gesamtstrukturfunktionsmodus auf Windows Server 2003 Interim oder Windows Server 2003 befindet. Nur dann kommt die verbesserte Replikationstechnik zum Einsatz. Somit wird auch die künstliche Grenze von 5.000 Mitgliedern pro Benutzergruppe aufgehoben.
Eine Gruppe im Gesamtstrukturfunktionsmodus Windows Server 2003 kann im sieben stelligen Bereich Mitglieder enthalten. Allerdings ist die unterstützte Anzahl der Änderungen die innerhalb eines Schreibvorgangs durchgeführt werden können 5.000. Denn wenn z.B. per Skript oder Management-Tool eine Gruppe mit weit mehr als 5.000 Mitgliedern erstellt wird, läuft man Gefahr einen „out of version store“-Fehler zu erhalten. Daher sollte beim automatisierten einrichten von Gruppen darauf geachtet werden, diesen Wert nicht zu überschreiten.
Als Bestätigung, dass nach dem Heraufstufen der Gesamtstruktur auf Windows Server 2003 nun die LVR-Replikation eingesetzt wird, findet man im Verzeichnisdienstprotokoll aller Domänencontroller in der Gesamtstruktur die EventID 1695.
Leider profitieren aber die bereits bestehenden Werte in einem mehrwertigen Attribut nach dem Heraufstufen der Gesamtstruktur nicht von der LVR-Replikation. Lediglich neu hinzugekommene Werte in diesem Modus nutzen den Vorteil der LVR-Replikation. Überprüfen lässt sich das mit dem Tool Repadmin, das sich in den Windows Support Tools befindet. Gibt man in einer Kommandozeile den folgenden Befehl ein: Repadmin /showobjmeta <DC-Name> <DN der Gruppe> erscheint eine Ausgabe die wie folgt aussieht:

Entscheidend dabei ist die Spalte Type. Der Eintrag LEGACY zeigt, dass dieser Wert vor dem Heraufstufen der Gesamtstruktur bereits existierte. Somit profitiert dieser Wert nicht von der LVR-Replikation.
Im nächsten Schritt wird der bestehenden Gruppe ein weiterer Benutzer hinzugefügt.

Es ist zu erkennen, dass in der Spalte Type bei User11 der Status sich auf PRESENT befindet. Da dieser Eintrag im Gesamtstrukturfunktionsmodus Windows Server 2003 hinzugefügt wurde, profitiert der Wert auch von der LVR-Replikation.
Ein weiterer Status wäre ABSENT. Dieser Eintrag wird angezeigt, wenn ein Mitglied im Gesamtstrukturfunktionsmodus Windows Server 2003 zu einer Gruppe hinzugefügt und entfernt wurde.
Wenn ein Benutzerobjekt aus dem Active Directory gelöscht wird, ist die Wiederherstellung samt Gruppenmitgliedschaften eine heikle Angelegenheit. Wenn es sich aber um eine Windows Server 2003 SP1 Umgebung handelt, erleichtert einem das NTDSUTIL bei der Wiederherstellung der Informationen von Gruppenmitgliedschaften das Leben. Denn die Wiederherstellung von Gruppenmitgliedschaften basiert auf LDAP Data Interchange Format (LDIF) Dateien. Der genaue Vorgang wird im folgenden Artikel beschrieben.
How to restore deleted user accounts and their group memberships in Active Directory
Damit alle Werte eines mehrwertigen Attributs von der LVR-Replikation profitieren, ist es notwendig alle Werte neu zu schreiben. Dazu müssen die Werte zuerst entfernt und anschließend erneut hinzugefügt werden.
Neben skriptbasierten Lösungen kann einem das LDIFDE behilflich sein oder aber die im Windows Server 2003 enthaltenen Tools DSGET und DSMOD. Mit diesem Befehl werden alle Werte neu geschrieben: Dsget group <DN der Gruppe> -members | Dsmod group <DN der Gruppe> -chmbr
Active Directory - Abfrage
Anschließend werden mit der Abfrage von Repadmin, alle Werte im Attribut Member mit dem Status PRESENT angezeigt.
Weitere Informationen: Verknüpfte Attribute How to raise domain and forest functional levels in Windows Server 2003 Group Objects (Windows) Microsoft Windows 2000 Scripting Guide - Modifying Multivalued Attributes Enumerating Groups That Contain Many Members (Windows)
Seit Windows Server 2003 ist es möglich einen Server mit Hilfe einer Systemstatus-Sicherung (System State) von einem bestehenden Domänencontroller (DC), durch die Install from Media (IFM) Funktion, zu einem zusätzlichen DC hochzustufen. Diese Art des Heraufstufens zu einem DC bietet sich in den Fällen an, in denen ein Server an einem entfernten Standort zum DC heraufgestuft werden soll und vor Ort nur eine geringe Bandbreite zur Verfügung steht. Damit dann eben nicht die gesamte Active Directory-Datenbank (NTDS.dit) über die schmale Leitung repliziert werden muss, kann das Volumen der Replizierung Dank der Sicherung gering gehalten werden. Es werden lediglich die Änderungen die seit der Sicherung stattgefunden haben über die Leitung repliziert. Dadurch hat die IFM-Funktion zum einen den Vorteil, dass weniger Netzwerkressourcen in Anspruch genommen und zum anderen, dass der Domänencontroller früher bereitgestellt werden kann.
So kann nun ein Server in der Zentrale installiert und an den Standort verschickt werden, ohne ihn vorher zum DC zu stufen. Damit wäre sichergestellt, dass auf dem Weg zum Ziel-Ort der DC (und somit die Domäne bzw. Gesamtstruktur) nicht kompromittiert werden kann. Auf einem anderen Weg kann dann das Sicherungsmedium auf dem die Systemstatus-Sicherung enthalten ist, getrennt vom Server verschickt werden.
Ganz wichtig ist aber, wenn das Sicherungsmedium auf dem sich die Systemstatus-Sicherung befindet an einen anderen Ort versandt werden sollte (auf welchem Weg auch immer), ist die gleiche Sicherheit zu gewährleisten, wie bei einem Transport eines DCs. Denn in der Systemstatus-Sicherung befinden sich unter anderem sämtliche Kennwörter der Domäne sowie die Objekt-SIDs.
Nach dem Heraufstufen müssen zusätzliche Aufgaben weiterhin ausgeführt werden, wie z.B. den DNS Dienst zu installieren.
Einen zusätzlichen DC in die Domäne hinzufügen
IFM unter Windows Server 2003
Diese Art des Heraufstufens zu einem DC, ist nur bei einem zusätzlichen Domänencontroller einer bereits existierenden Domäne möglich! Die Sicherung des Systemstatus muss von einem Windows Server 2003 DC aus der gleichen Domäne stammen. Dabei kann eine Sicherung von einem bestehenden Windows 2000 DC nicht als Grundlage dienen! Des Weiteren wird die IFM-Funktion bei Nutzung einer Sicherung eines 32Bit DCs, dass als Grundlage für das Heraufstufen eines 64Bit Servers dienen soll nicht unterstützt. Das gleiche gilt auch im umgekehrten Fall.
Zum Sichern des Systemstatus eignet sich das im Betriebssystem enthaltene Sicherungsprogramm NTBACKUP. Mit dem Sichern des Systemstatus werden die folgenden Elemente gesichert:
- Active Directory (NTDS.dit)
- Systemstart Dateien
- COM+ Datenbank zur Registrierung von Klassen
- Registry
- SYSVOL
- Falls eine CA auf dem DC installiert wäre, dann auch diese
In der Praxis ist es für den Administrator hilfreich, wenn er bereits im Dateinamen der Sicherungsdatei erkennen kann, welche Informationen in der Sicherung enthalten sind. Im Dateinamen könnte sich z.B. der FQDN, SP-Stand, GC und das Datum des gesicherten DCs befinden. Wichtig ist das Datum, denn die Sicherung darf nur solange verwendet werden, bis die Tombstone Lifetime (TSL) ausläuft. Die Tombstone Lifetime beträgt in den meisten Umgebungen 60 Tage. Erst wenn beim Erstellen einer Gesamtstruktur, der erste DC ein Windows Server 2003 SP1 ist, beträgt die TSL 180 Tage.
Es ist darauf zu achten das beim Heraufstufen mit der IFM-Funktion, der Ziel-Server auf dem gleichen Service Pack-Stand wie der Quell-DC ist. Damit der neue Server zu einem zusätzlichen DC gestuft werden kann, benötigt er zum Zeitpunkt der Ausführung von DCPROMO eine bestehende Namensauflösung. Dazu ist ein bestehender DNS-Server in den TCP/IP-Einstellungen einzutragen, der natürlich während dem Heraufstufen erreichbar sein muss. Es ist wohl naheliegend das der Server eine Verbindung zu der Domäne dem er hinzugefügt werden soll haben muss, damit er unter anderem den Träger der FSMO-Rollen (z.B. RID-Master) erreichen kann.
Sollen die bestehenden Anwendungsverzeichnispartitionen wie es z.B. DomainDNSZones oder ForestDNSZones darstellen, ebenfalls mit der IFM-Funktion bereitgestellt werden, muss der Quell-DC mindestens das Service Pack 1 installiert haben. Zusätzlich muss sich der Gesamtstrukturfunktionsmodus auf Windows Server 2003 befinden. Wenn auf dem neuen DC auch der globale Katalog (GC) aktiviert werden soll, können die Daten eines GCs ebenfalls mit der IFM-Funktion bereitgestellt werden. Dazu muss auf dem Quell-DC auf dem die Sicherung durchgeführt werden soll, ebenfalls der GC aktiviert sein.
Die Sicherungsdatei in der die Systemstatus-Sicherung enthalten ist, muss wiederhergestellt werden. Ein simples Hineinkopieren der Sicherungsdatei auf ein lokales Laufwerk reicht nicht aus. Die wiederhergestellten Systemstatusdateien könnte man auf eine CD/DVD oder auf einen USB-Stick/HDD kopieren. Anschließend kann beim Ausführen des Active Directory-Assistenten DCPROMO auf das entsprechende Medium verwiesen werden. Wichtig ist, dass es sich dabei um ein lokales Laufwerk handelt. Das Auswählen der Systemstatusdateien über die Angabe eines UNC-Pfads oder ein verbundenes Netzlaufwerk, wird nicht unterstützt.
Sollen die Systemstatusdateien auf dem Ziel-Server wiederhergestellt werden, ist darauf zu achten die Wiederherstellung in ein alternatives Verzeichnis und keinesfalls an den ursprünglichen Bereich durchzuführen. Nach dem Heraufstufen sollte dieses temporäre Verzeichnis gelöscht werden. Wenn stattdessen die Dateien an ihren Ursprungsort wiederhergestellt werden, können das System und das AD irreparable Schäden annehmen. Denn mit Rücksichern der Systemstatusdateien wird auch die Registry wiederhergestellt, in der bekanntlich nicht nur Hardware- sowie Treiberinformationen enthalten sind, sondern auch der Computername.
Auf dem Ziel-Server muss das Dcpromo mit dem Parameter /ADV (für Advanced) zum Heraufstufen aufgerufen werden. Erst mit diesem Befehl ist es möglich, eine Sicherung anzugeben.
Die einzelnen Schritte unter Windows Server 2003, können in diesem Artikel nachgelesen werden: How to use the Install from Media feature to promote Windows Server 2003-based domain controllers
IFM unter Windows Server 2008
Die IFM-Option ist weiterhin auch unter Windows Server 2008 verfügbar. Wobei nun unter Windows Server 2008 der erweiterte Schalter /ADV (der weiterhin funktioniert) in den Dcpromo-Assistenten eingebaut wurde. Direkt beim Aufruf von Dcpromo lässt sich auf der Willkommens-Seite die Option Installation im erweiterten Modus verwenden aktivieren.
Während unter Windows Server 2003 eine Sicherung des Systemstatus z.B. mit Ntbackup erstellt werden muss, wird das nun unter Windows Server 2008 mit NTDSUTIL erledigt. Denn das Ntbackup existiert nicht mehr unter Windows Server 2008.
Zum erstellen einer Sicherung gilt es folgende Schritte durchzuführen:
-
In einer Kommandozeile oder über Start-Ausführen gilt es zuerst NTDSUTIL zu starten.
-
Als nächstes muss die NTDS-Instanz aktiviert werden. Dieses erreicht man durch die Eingabe von Activate Instance NTDS.
-
Mit Eingabe von IFM gilt es auf die Install from Media-Ebene zu gelangen.
-
Dort angelangt, kann nun die IFM-Sicherung erstellt werden.
-
Erstellt man die IFM-Sicherung auf einem beschreibbaren DC, so können Sicherungsmedien für einen beschreibbaren DC oder für einen RODC erstellt werden. Man kann dabei wählen, ob jeweils das SYSVOL-Verzeichnis mit gesichert werden soll oder nicht.
-
Wird hingegen die IFM-Sicherung auf einem RODC erstellt, kann ausschließlich das Sicherungsmedium für einen RODC erstellt werden und nicht für einen beschreibbaren DC. In der erstellten IFM-Sicherung werden dabei alle replizierten Kennwörter entfernt.
-
Auf einem Server Core können die gleichen IFM-Sicherungen erstellt werden, wie auf einem beschreibbaren DC.
Wird das SYSVOL-Verzeichnis nicht mit gesichert, wird es beim Heraufstufen eines DCs über die Leitung repliziert.
Unter Windows Server 2008 ist es jetzt möglich, IFM-Sicherungen auf einem 32Bit System zu erstellen, um diese als Grundlage auf einem 64Bit System zu nutzen. Im umgekehrten Fall ist das ebenfalls möglich. Eine IFM-Sicherung die auf einem 64Bit System erstellt wurde, kann auf einem 32Bit System verwendet werden.
Beim Erstellen eines Sicherungsmediums kommt die Volume Shadow Copy Service (VSS) Technologie zum Einsatz. Im laufenden Betrieb wird ein Snapshot von der Active Directory-Datenbank erstellt und anschließend offline defragmentiert.
Die IFM-Sicherung die auf einem beschreibbaren DC erstellt wurde, kann zum Heraufstufen eines beschreibbaren DC, RODC oder für eine Active Directory Lightweight Directory Services (AD LDS, ehemals ADAM) Instanz verwendet werden.
Weitere Informationen: Error message when you try to create a RODC IFM in Windows Server 2008 if an earlier IFM procedure was canceled or has closed unexpectedly: “Could not initialize the Jet engine: Jet Error -1216”
Der Windows Server 2008 bringt einige Verbesserungen bzw. Funktionen mit, die aber erst im Domänenfunktionsmodus Windows Server 2008 zur Verfügung stehen. Damit z.B. mehrere Kennwortrichtlinien (Password Settings Objects) in einer Domäne eingesetzt werden können, muss sich der Domänenfunktionsmodus auf Windows Server 2008 befinden. Oder die Replikation des Sysvol-Verzeichnisses über die Distributed File System Replikation (DFS-R), ist ebenfalls nur im Domänenfunktionsmodus Windows Server 2008 möglich.
Damit diese (und weitere) Funktionen genutzt werden können, muss zuerst eine Domänenaktualisierung der bestehenden Gesamtstruktur auf Windows Server 2008 erfolgen.

Was ist möglich?
-
In einer Windows 2000 Gesamtstruktur kann ein Windows Server 2008 als zusätzlicher Domänencontroller (DC) zu einer bestehenden Domäne hinzugefügt werden.
-
In einer Windows Server 2003/R2 oder SBS 2003 SP1/R2 Gesamtstruktur kann ein Windows Server 2008 als zusätzlicher Domänencontroller zu einer bestehenden Domäne hinzugefügt werden.
-
Ein Windows Server 2003 mit mindestens dem Service Pack 1 oder Windows Server 2003 R2 Domänencontroller, kann per Inplace-Update auf Windows Server 2008 aktualisiert werden.
Was ist nicht möglich?
-
Ein Inplace-Update von Windows NT auf Windows Server 2008 ist nicht möglich.
-
Ein Inplace-Update von Windows 2000 auf Windows Server 2008 ist nicht möglich.
-
Ein Inplace-Update von einem Windows Server 2003/R2 Domänencontroller (oder Mitgliedsserver) worauf der Exchange Server 2007 ohne/mit SP1 installiert ist, kann auf Windows Server 2008 nicht durchgeführt werden.
Ein installierter Exchange-Server auf einem DC ist nur ein Beispiel. Es muss vor einem Inplace-Update geprüft werden, ob die installierten Applikationen auf dem DC, unter Windows Server 2008 noch funktionieren.
-
Ein Inplace-Update von früheren Server Betriebssystemen, ist auf den Windows Server 2008 Core nicht möglich.
Windows Server 2008 Core
-
Ein Cross-Update von einem x86 auf x64 System wird nicht supportet.
-
Ein Cross-Update auf eine andere Betriebssystem-Sprache wird nicht unterstützt. Als Beispiel, auf einem deutschen Windows Server 2003 DC wird die englische Windows Server 2008 DVD eingelegt um den DC, auf einen englischen Windows Server 2008 DC zu aktualisieren.
Voraussetzungen für eine Windows 2000/2003/R2 Gesamtstruktur, damit der erste Windows Server 2008 DC hinzugefügt werden kann
-
Die Domäne in der man den Windows Server 2008 DC hinzufügen möchte, muss sich im einheitlichen Domänenfunktionsmodus (entweder Windows 2000 pur oder Windows Server 2003) befinden. Dabei spielt es keine Rolle, auf welchem Modus sich der Gesamtstrukturfunktionsmodus befindet.
-
Ist jedoch der Einsatz eines RODCs in der Gesamtstruktur geplant, so ist das erst ab der Gesamtstrukturfunktionsebene Windows Server 2003 möglich. Des Weiteren muss sich bereits ein Windows Server 2008 DC in der Domäne befinden, in der man den RODC hinzufügen möchte!
-
Alle Domänencontroller in der Gesamtstruktur sollten sich mindestens auf Windows 2000 Server mit Service Pack 4 befinden.
Step-by-Step Anleitung für eine Windows 2000/2003/R2 Gesamtstruktur, damit der erste Windows Server 2008 DC hinzugefügt werden kann
-
Im ersten Schritt muss das Active Directory Preparation-Tool ADPREP, das auf der Windows Server 2008 DVD im Verzeichnis "<DVD-Laufwerk>:\Sources\Adprep" mitgeliefert wird, mit dem Parameter /Forestprep auf dem Windows 2000 Server bzw. Windows Server 2003 Schema-Master ausgeführt werden. Dadurch wird die Gesamtstruktur auf Windows Server 2008 aktualisiert. Der Parameter /Forestprep wird nur ein einziges Mal in der Gesamtstruktur ausgeführt. Das Benutzerkonto mit dem das Adprep /Forestprep ausgeführt wird, muss Mitglied der folgenden drei Sicherheitsgruppen sein:
- Organisations-Admins - Schema-Admins - Domänen-Admins in der Domäne, in der der Schema-Master Mitglied ist Ruft man das Adprep /Forestprep nicht auf dem Schema-Master auf, bringt das Tool den Hinweis, dass die Gesamtstrukturaktualisierung nur auf dem Schema-Master durchgeführt werden kann und bricht den Vorgang ab. Es ist nun auch möglich, dass ADPREP von der 64Bit DVD des Windows Server 2008 auf einem 32Bit Windows Server 2003 DC auszuführen!
Microsoft empfiehlt das Verzeichnis <DVD-Laufwerk>:\Sources\Adprep vorher auf den Server zu kopieren, um z.B. Lesefehler des DVD-Laufwerks während der Ausführung von Adprep zu vermeiden.
An error occurs when you run the ADPREP/FORESTPREP command on a Windows Server 2003-based or Windows Server 2008-based computer: "An attribute with the same link identifier already exists"
-
Mit Ausführen von Adprep /Forestprep wird die Gesamtstruktur auf Windows Server 2008 vorbereitet, in dem neue Attribute sowie Klassen dem Schema hinzugefügt werden. Nach dem Aufruf von Adprep /Forestprep werden abhängig von der Schema-Version die LDF-Dateien, die zur Schema-Aktualisierung benötigt werden, aus dem Verzeichnis \Sources\Adprep in das Verzeichnis %windir%\system32 kopiert.
In einer Windows 2000 Gesamtstruktur werden die LDF-Dateien ab sch14.ldf, in einer Windows Server 2003 ab sch31.ldf und in einer Windows Server 2003 R2 Umgebung ab sch32.ldf bis zur sch44.ldf in das Schema importiert. Das Schema wird somit auf die Version 44 aktualisiert.
Die Schema-Versionen wären (in Dezimal):
- Schema-Version 13 = Windows 2000 (ohne/mit allen SPs) - Schema-Version 30 = Windows Server 2003 ohne/mit SP1/SP2 (und höhere SPs) - Schema-Version 31 = Windows Server 2003 R2 ohne/mit SP2 (und höhere SPs) - Schema-Version 44 = Windows Server 2008 - Schema-Version 47 = Windows Server 2008 R2
Die Schema-Version kann man sich auf jedem DC in der Gesamtstruktur zum einen in der Registry im Pfad: HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\<Schema Version>
… und zum anderen in dem Attribut objectVersion (z.B. mit ADSIEdit.msc oder LDP.exe), das sich in den Eigenschaften der Schema-Partition CN=Schema,CN=Configuration,DC=<Domäne>,DC=<TLD> befindet, anzeigen lassen.
Auch mit Dsquery lässt sich die Schema-Version abfragen. Der Befehl lautet wie folgt: dsquery * CN=Schema,CN=Configuration,DC=Root-Domäne -Scope Base -attr objectVersion
-
Wenn das Adprep /Forestprep durchgeführt wurde, wird in der Konfigurationspartition das Objekt CN=ActiveDirectoryUpdate,CN=ForestUpdates,CN=Configuration,DC=<ForestRootDomäne> erstellt.
Dabei erhält das Attribut Revision im Objekt CN=ActiveDirectoryUpdate den Wert 2. Danach sollte sichergestellt werden, dass sich dieses Objekt zuerst auf alle DCs der Gesamtstruktur repliziert, um dann den nächsten Schritt mit Adprep durchzuführen. In erster Linie sollten die DC`s der einzelnen Domänen die Aktualisierung empfangen haben, die die FSMO-Rolle des Infrastruktur-Master innehaben. Dazu gilt es den nächsten Punkt zu beachten.
Achtung: Wenn man das ADPREP /FORESTPREP auf dem Schema-Master ausführt und anschließend einfach nichts passiert, also weder die Schemaerweiterung durchgeführt, noch eine Fehlermeldung angezeigt wird, so liegt mit hoher Wahrscheinlichkeit ein "Sprach-Problem" vor. Wenn z.B. der Schema-Master auf einem englischen Betriebssystem läuft und man führt das ADPREP /FORESTPREP von einer deutschen Windows Server 2008 DVD aus, so kommt es genau zu diesem Verhalten. Es ist zwingend notwendig auf einem deutschen System, dass ADPREP von einer deutschen Windows Server 2008 DVD auszuführen.
Im zweiten Schritt muss das Adprep mit den Parametern „/Domainprep /Gpprep“ auf dem Infrastruktur-Master in der Domäne, in der man den Windows Server 2008 als DC hinzufügen möchte, ausführen. Das Benutzerkonto, mit dem dieser Befehl ausgeführt wird, muss Mitglied der Sicherheitsgruppe Domänen-Admins sein. Mit Ausführen von „/Domainprep /Gpprep“ wird die Domäne auf Windows Server 2008 aktualisiert. Der Parameter /Domainprep bewirkt, dass neue Objekte erstellt sowie die ACLs an diversen Objekten in der Domänenpartition geändert werden. Der Parameter /Gpprep sorgt dafür, dass die Berechtigungen der Gruppenrichtlinienobjekte die sich im Sysvol-Verzeichnis befinden, angepasst werden.
Führt man diesen Befehl aus, noch bevor die Gesamtstrukturaktualisierung auf den Infrastruktur-Master repliziert wurde, bricht der Vorgang ab. Dieser bricht auch dann ab, wenn der Befehl nicht auf dem Infrastruktur-Master ausgeführt wird. Durch Ausführen dieses Befehls wird das folgende Objekt erstellt: CN=ActiveDirectoryUpdate,CN=DomainUpdates,CN=System,DC=<Domäne>
Das Attribut Revision im Objekt CN=ActiveDirectoryUpdate bekommt dabei den Wert 3. Es ist möglich zuerst das Adprep lediglich mit dem Parameter /Domainprep auszuführen und zu einem späteren Zeitpunkt die Berechtigungen der GPOs, mit Adprep /Domainprep /Gpprep zu aktualisieren. Empfehlenswert ist es aber, dass in einem Schritt durchzuführen.
Wenn der Einsatz eines Read-Only Domain Controllers in irgendeiner Domäne der Gesamtstruktur geplant ist, dann ist das Adprep mit dem Parameter /Rodcprep lediglich einmalig aufzurufen. Der DC, auf dem dieser Befehl ausgeführt wird, muss auch nicht der Träger der FSMO-Rollen sein. Beim Ausführen dieses Befehls werden die einzelnen Infrastruktur-Master der Domänen kontaktiert, um die Berechtigungen (Security Descriptor, SD) der Domänen- sowie Anwendungsverzeichnispartitionen DomainDNSZones und ForestDNSZones zu aktualisieren.
Error message when you run the "Adprep /rodcprep" command in Windows Server 2008: "Adprep could not contact a replica for partition DC=DomainDnsZones,DC=Contoso,DC=com"
Es reicht völlig aus, diesen Befehl erst vor dem Hinzufügen des ersten RODC`s in der Gesamtstruktur auszuführen. Das Benutzerkonto, mit dem dieser Befehl ausgeführt wird, muss Mitglied in der Sicherheitsgruppe Organisations-Admins sein. Nach Ausführung von /Rodcprep wird das folgende Objekt erstellt: CN=ActiveDirectoryRodcUpdate,CN=ForestUpdates,CN=Configuration,DC=<ForestRootDomäne>.
Das Attribut Revision erhält dabei den Wert 2.
Read-Only Domain Controller (RODC)
Wenn eine Gesamtstruktur mit Windows Server 2008 erstellt wird, ist das Ausführen von Adprep in keinster Weise notwendig. Weder der Parameter /Forestprep, noch „/Domainprep /Gpprep“ oder /Rodcprep müssen angewendet werden.
Es wird bei jedem Ausführen von Adprep im Verzeichnis %Systemroot%\Debug\Adprep\Logs ein Ordner erstellt, dass als Namen das aktuelle Datum sowie die Uhrzeit erhält. Darin befindet sich das Adprep-Protokoll mit dem Namen ADPrep.log, welches einen detaillierten Bericht zum Vorgang liefert. Wenn Adprep abbrechen oder einen Fehler melden sollte, ist dieses Protokoll bei der Fehlersuche hilfreich.
Nach der Domänenaktualisierung auf Windows Server 2008, kann nun der neue Server als "zusätzlicher DC der bestehenden Domäne" hinzugefügt werden. Während dem Heraufstufen zum DC sollte an entsprechender Stelle, dass DNS mit installiert und zusätzlich der globale Katalog aktiviert werden. Anschließend sollten noch die FSMO-Rollen auf den Windows Server 2008 DC verschoben werden.
Globaler Katalog (Global Catalog - GC) Der PDC-Emulator
Szenario 1
Migrations-Möglichkeiten von Windows NT auf Windows Server 2008
-
Es muss zuerst ein Inplace-Update vom Windows NT-PDC auf Windows Server 2003 mit mindestens dem Service Pack 1 durchgeführt werden. Erst dann kann per Inplace-Update auf Windows Server 2008 aktualisiert werden. Das Update könnte mit einer VM durchgeführt werden.
Statt des Inplace-Updates von Windows Server 2003 auf Windows Server 2008, kann natürlich auch ein zusätzlicher Windows Server 2008 hinzugefügt werden.
-
Im ersten Schritt kann von der NT-Domäne mit ADMT in eine Windows Server 2003 SP1 Domäne migriert und im zweiten Schritt dann ein Inplace-Update auf Windows Server 2008 durchführt werden. Es bleibt abzuwarten, ob Microsoft ein aktualisiertes ADMT veröffentlicht, wovon ich aber ausgehe.
Anstatt dann den Windows Server 2003 DC auf Windows Server 2008 zu aktualisieren, kann nach der Anwendung von Adprep ein zusätzlicher Windows Server 2008 DC zur Domäne hinzugefügt werden.
Szenario 2
Migrations-Möglichkeiten von Windows 2000 auf Windows Server 2008
-
In einer Windows 2000 Active Directory Umgebung kann die Domänenaktualisierung auf Windows Server 2008 über einen zusätzlichen Windows Server 2008 DC realisiert werden. Dazu ist zuerst die Step-by-Step Anleitung durchzuführen, die am Anfang dieses Artikels beschrieben ist. Anschließend kann ein Windows Server 2008 als zusätzlicher Domänencontroller der bereits bestehenden Domäne hinzugefügt werden.
-
Es ist zuerst ein Inplace-Update von Windows 2000 auf Windows Server 2003 mit mindestens dem Service Pack 1 durchzuführen. Erst dann kann per Inplace-Update auf Windows Server 2008 migriert werden. Ein Windows 2000 DC kann nicht direkt auf Windows Server 2008 aktualisiert werden, denn dieses wird erst ab Windows Server 2003 mit Service Pack 1 unterstützt. Migration von Windows Server 2000 auf Windows Server 2003 (Inplace-Update)
Szenario 3
Migrations-Möglichkeiten von Windows Server 2003 auf Windows Server 2008
-
Wie in einer Windows 2000 Gesamtstruktur kann auch in einer Windows Server 2003 Gesamtstruktur die Domänenaktualisierung über einen zusätzlichen Windows Server 2008 Domänencontroller erfolgen. Natürlich auch nur dann, wenn die Step-by-Step Anleitung durchgeführt wurde.
-
Ist mindestens das Service Pack 1 für den Windows Server 2003 auf dem DC installiert, so kann mit einem Inplace-Update der Windows Server 2003 DC auf Windows Server 2008 aktualisiert werden. Die Step-by-Step Anleitung die am Anfang dieses Artikels beschrieben wird, ist dabei zuerst durchzuführen.
Szenario 4
Migrations-Möglichkeiten von Windows Server 2003 R2 auf Windows Server 2008
-
Da in einem Windows Server 2003 R2 ein Windows Server 2003 mit mindestens dem Service Pack 1 enthalten ist, kann nach vorheriger Ausführung von Adprep ein zusätzlicher Windows Server 2008 DC zur bestehenden Gesamtstruktur hinzugefügt werden.
-
Des Weiteren kann ein Windows Server 2003 R2 DC per Inplace-Update auf Windows Server 2008 aktualisiert werden.
Probleme die nach dem Hinzufügen des ersten Windows Server 2008 DC entstehen können
Client computers may not work correctly when you add a Windows Server 2008-based domain controller to an existing pre-Windows Server 2008 domain When a Windows NT 4.0-based computer tries to use the NETLOGON service to establish a security channel to a Windows Server 2008-based domain controller, the operation may fail Modify Default Security Policies on Windows Server 2008-Based Domain Controllers Group Policy settings are not applied on member computers that are running Windows Server 2008 or Windows Vista SP1 when certain SMB signing policies are enabled Office Communications Server 2007 or Live Communications Server 2005 does not work correctly after you upgrade a domain controller to Windows Server 2008 You cannot locally configure or locally delete the application partitions that are created for IP telephony after you upgrade from Windows Server 2003 to Windows Server 2008 RODC Compatibility Pack DCDIAG: NCSecDesc Fehler Description of the Microsoft server applications that are supported on Windows Server 2008 You cannot remotely access encrypted files after you upgrade a Windows Server 2003 file server to Windows Server 2008
Weitere Informationen: Den ersten Windows Server 2008 R2 DC zur Gesamtstruktur hinzufügen Information and resources to use when you plan to upgrade Windows Server 2003 to Windows Server 2008 Adding a Server Running Windows Server 2008 to a Windows Small Business Server 2003 Network How to Install Exchange 2007 SP1 Prerequisites on Windows Server 2008 or Windows Vista How to back up and then restore printers when you upgrade from Windows Server 2003 to Windows Server 2008 Client computers may not work correctly when you add a Windows Server 2008-based domain controller to an existing pre-Windows Server 2008 domain Upgrading Active Directory Domains to Windows Server 2008 and Windows Server 2008 R2 AD DS Domains
Jeder der mit der Additional Account Info DLL (acctinfo.dll) schon einmal gearbeitet hat, weiß diese zusätzlichen Angaben zu schätzen. Die zusätzlichen Angaben werden in einem weiteren Reiter, in den Benutzereigenschaften angezeigt. Diese DLL befindet sich in den Account Lockout and Management Tools. Dort ist sie mit der Versionsnummer 1.0.0.1111 vorhanden. Nach dem registrieren dieser DLL, taucht in den Eigenschaften eines Benutzerobjekts eine weitere Registerkarte auf. Dieser Reiter erscheint nur auf der Maschine, auf dem diese DLL registriert wurde (und steht somit nicht domänenweit auf jedem Client/Server zur Verfügung). Dort steht z.B. wann die letzte Benutzeranmeldung erfolgt ist oder wann das Kennwort des Benutzers ausläuft.
Siehe: Die letzte Benutzeranmeldung herausfinden
Der Reiter taucht aber nur dann auf, wenn das Benutzerobjekt direkt (Doppelklick auf das Benutzerobjekt) oder über eine gespeicherte Abfrage aufgerufen wird. Wird hingegen die Active Directory Suche verwendet, erscheint dieser Reiter nicht. Das kommt daher, da die Version 1.x lediglich eine Erweiterung in Form einer weiteren Registerkarte in den Eigenschaften des Benutzerobjekts ist.
Die Suche im Active Directory erfolgt z.B. im Snap-In Active Directory-Benutzer und -Computer mit einem Rechtklick auf einer OU oder auf den FQDN.
Des Weiteren ist in der Version 1.x ein Fehler enthalten, denn es zeigt einen Wert im Last-Logon-Timestamp an, obwohl sich die Domäne nicht im Domänenfunktionsmodus Windows Server 2003 befindet.
Es existiert mittlerweile eine neuere Version dieser DLL und trägt den Namen Acctinfo2.dll (beachtet unten stehende Anmerkung). In der neueren Version ist die acctinfo2.dll nicht nur ein weiterer Reiter, sondern ein Display Specifier. Dadurch taucht nun auch bei einer Suche der Reiter auf. Mit dieser Version der DLL, wird desweiteren nicht mehr der Last-Logon-Timestamp im Reiter angezeigt, sondern erst, wenn sich die Domäne tatsächlich im Domänenfunktionsmodus Windows Server 2003 befindet. Außerdem werden zusätzliche Informationen bereitgestellt.
Installation
Die Acctinfo2.dll muss zuerst ins Verzeichnis %windir% verschoben werden. Im nächsten Schritt ist diese DLL, entweder unter Start - Ausführen oder in einer Kommandozeile mit dem Befehl regsvr32 acctinfo2.dll zu registrieren.
Als nächstes ruft man ADSIEdit (aus den Windows Support Tools) auf und navigiert in der Konfigurationspartition zu folgendem Pfad: CN=user-Display,CN=407,CN=DisplaySpecifiers,CN=Configuration,DC=Domäne,DC=TLD
Hinweis: Läuft der Windows Server mit einer englischen Betriebssystem Version, so lautet die Länderkennung nicht CN=407 sondern CN=409.
Dort angelangt, sind die Eigenschaften von CN=user-Display aufzurufen. Anschließend gilt es im Attribut adminPropertyPages den folgenden Eintrag hinzuzufügen: 2,{5969F63F-CACF-40bf-8891-CA580EB589E9}
Am Anfang des Eintrags (2,..) ist ein freier oder der nächst höhere Wert zu wählen, gefolgt von einem Komma und der GUID der Acctinfo2.dll (in geschweiften Klammern).
Danach steht ab sofort der neue Reiter in den Benutzereigenschaften zur Verfügung. Weiterhin ist es möglich, dass beide Versionen (1.x sowie 2.x) nebeneinander existieren.
Anmerkung: Die aktuelle und von Microsoft unterstütze AcctInfo.dll ist in den Account Lockout and Management Tools enthalten und kann kostenlos heruntergeladen werden. Wann und ob Microsoft die Version 2.x veröffentlichen wird (zum Download bereitstellt), ist zum jetzigen Zeitpunkt nicht bekannt. Sobald es Nähere Informationen darüber geben wird, werde ich es hier veröffentlichen.
Update: 27.04.2010
Es gibt mittlerweile auch eine (nicht supportete!) x64Bit Version der acctinfo2.dll.
In einer Active Directory Umgebung findet zwischen den Domänencontrollern eine Multimaster-Replikation statt. Dadurch kann auf jedem Domänencontroller (DC) eine Änderung durchgeführt werden, die Dank der AD-Replikation an alle DCs repliziert wird. Das Active Directory (genauer KCC) reagiert dabei schnell auf etwaige Veränderungen in der Gesamtstrukturtopologie und findet
- sofern irgendwie möglich - oftmals eine Lösung.
Nun kann es in einer Umgebung mit mehreren DCs und mehreren Administratoren vorkommen, dass zur gleichen Zeit an einem Objekt, dass gleiche Attribut auf verschiedenen DCs bearbeitet wird. Ein Replikationskonflikt wird anhand der Versions-Nummer (versionID) des veränderten Attributs erkannt. Im Gegensatz zu der Update Sequence Number (USN), worin serverspezifische Werte gespeichert werden, wird in der Versions-Nummer eines Attributs ein eindeutiger Wert gespeichert.
Wird nun ein Attribut auf DC2 verändert, bevor die zur gleichen Zeit getätigte Änderung von DC1 repliziert wurde, entsteht somit ein Replikationskonflikt. Angenommen auf DC1 wird in den Eigenschaften eines Benutzerobjekts im Feld Büro die Zimmer-Nummer 2.12 und zur gleichen Zeit auf DC2 die Zimmer-Nummer 2.21 eingetragen. Wenn nun DC3 beide Änderungen gleichzeitig erhält, muss bestimmt werden, welche Änderung repliziert wird.
Das Active Directory wendet dann die folgenden drei Regeln an, um festzulegen welche Änderung repliziert werden soll:
-
Das modifizierte Attribut mit der höheren Versions-Nummer (versionID) überschreibt die Änderung mit der niedrigeren Versions-Nummer. Sind in beiden Fällen, beide Versions-Nummern identisch, folgt die nächste Regel.
-
Enthalten beide Änderungen die gleiche versionID, wird die Änderung mit dem späteren Zeitstempel (Timestamp) akzeptiert und somit würde die Änderung mit dem früheren Zeitstempel überschrieben werden. Ist in beiden Fällen auch der Zeitstempel gleich (was in seltenen Fällen zutrifft), kommt die dritte und letzte Regel ins Spiel.
-
Falls beide Änderungen sowohl die gleiche versionID, als auch den gleichen Zeitstempel haben, wird die Änderung, die seine Herkunft auf dem DC mit der niedrigeren GUID hat akzeptiert. Somit wird der Schreibvorgang vom DC mit der höheren GUID überschrieben.
In einem anderen Fall kann es zu einem Replikationskonflikt kommen, wenn ein Objekt auf zwei verschiedenen DCs mit dem gleichen Namen zur gleichen Zeit erstellt wird, wie es z.B. beim hinzufügen eines Clients zur Domäne vorkommen kann. Oder beim gleichzeitigen erstellen zweier Benutzerobjekte, mit dem gleichen Namen. Denn wenn zwei DCs zur gleichen Zeit ein Objekt mit dem gleichen Namen im Active Directory erstellen, kommt es ebenfalls zum Konflikt.
Das Active Directory wendet in diesem Fall ebenfalls die o.g. drei Regeln an, mit dem Unterschied, dass das nicht akzeptierte Objekt nicht überschrieben, sondern umbenannt wird. Der Relative Distinguished Name (RDN) des Objekts, bekommt einen eindeutigen Namen der folgendermaßen aussieht: <Original RDN>CNF:<ObjectGUID>. Die Zeichen CNF stehen dabei für Conflict (Konfliktobjekt). Danach folgt ein Doppelpunkt, gefolgt von der Objekt GUID.
Der Administrator kann dann bestimmen, welches Objekt beibehalten und welches gelöscht werden soll. Über eine benutzerdefinierte Abfrage lassen sich alle Konfliktobjekte anzeigen. Der Filter dazu lautet (CN=*CNF:*).
Es gibt aber noch eine dritte Situation, in dem es zu einem Konflikt kommen kann. Erstellt ein Administrator z.B. einen Benutzer in einer OU und ein anderer Administrator löscht im gleichen Moment auf einem anderen DC diese OU, wird das Benutzerobjekt trotzdem erstellt obwohl der übergeordnete Container entfernt wurde. Das AD löst in diesem Fall den Konflikt, in dem es das Benutzerobjekt in einem versteckten Container Namens LostAndFound erstellt. Der Domänen-Benutzer der sich im Container LostAndFound befindet, kann sich wie jeder andere Benutzer an der Domäne anmelden. Der Administrator sollte aber aus administrativen Gründen den Benutzer in eine andere OU verschieben. Der Container LostAndFound kommt erst dann zum Vorschein, wenn in der MMC Active Directory-Benutzer und -Computer unter "Ansicht" die Option Erweiterte Funktionen aktiviert wurde.
Weitere Informationen: Avoiding Replication Issues When Designing Applications that Use Active Directory Troubleshooting Directory Data Problems
Eine weitere Funktion die im Windows Server 2008 erweitert wurde, ist die Möglichkeit der Protokollierung. Was in Windows 2000 oder Windows Server 2003 noch spärlich war, wurde im neuen Server-Betriebssystem verfeinert. Früher wurde lediglich protokolliert, wer welches Objekt bzw. Attribut verändert hat. Die eigentlichen Werte (alter Wert/neuer Wert) blieben aber einem verborgen. Dieses Verhalten wurde im Windows Server 2008 geändert und man bekommt nun detailliert in der Ereignisanzeige die veränderten Werte zu sehen.
Hinweis: Eine Protokollierung ist vom Betriebsrat/Datenschutzbeauftragten zu genehmigen!
In Windows 2000 und Windows Server 2003 existiert lediglich die globale Überwachungsrichtlinie, die unter Windows 2000 Active Directory-Zugriff überwachen und unter Windows Sever 2003 Verzeichnisdienstzugriff überwachen lautet. In Windows Server 2008 existiert die globale Überwachungsrichtlinie weiterhin, die jedoch in weitere vier Unterkategorien unterteilt wurde.
Die Unterkategorien wären:
-
Verzeichnisdienständerungen (Directory Services Changes)
-
Verzeichnisdienstreplikation (Directory Services Replication)
-
Detaillierte Verzeichnisdienstreplikation (Detailed Directory Services Replication)
-
Verzeichnisdienstzugriff (Directory Services Access)
Somit kann der Administrator gezielter einen der verfügbaren Bereiche überwachen, ohne von den restlichen Bereichen die ihn ohnehin nicht interessieren, unnötig mit Informationen überflutet zu werden. Das bringt aber einen Nachteil mit sich.
Wenn man lediglich z.B. die Unterkategorie Verzeichnisdienständerungen (wahrscheinlich die meist gewünschten Informationen) konfigurieren möchte, muss man das auf jedem einzelnen DC in der Domäne durchführen. Diese Einstellung wird nicht repliziert. Wird dagegen die globale Richtlinie <Verzeichnisdienstzugriff überwachen> in der Default Domain Controllers Policy konfiguriert, werden automatisch auch alle Unterkategorien mit den eingestellten Optionen aktiviert. Diese Einstellungen wiederum, werden auf alle DCs in der Domäne repliziert.
Wenn danach die globale Richtlinie wieder in ihren Ursprungszustand Nicht definiert gebracht wird, werden dabei nicht die Unterkategorien mit in ihren Ursprungszustand versetzt. Diese bleiben mit ihren aktuell gesetzten Einstellung weiterhin bestehen.
Die globale Überwachungsrichtlinie in Windows Server 2008 ist standardmäßig nicht definiert. Lediglich die Unterkategorie Verzeichnisdienstzugriff ist als einzige, standardmäßig mit der Option Erfolgreich und zwar auf jedem DC aktiviert.
Idealerweise konfiguriert man die globale Richtlinie mit den gewünschten Optionen, in der Default Domain Controllers Richtlinie unter: Computerkonfiguration\Windows-Einstellungen\Sicherheitseinstellungen\Lokale Richtlinien\ Überwachungsrichtlinie\<Verzeichnisdienstzugriff überwachen>.
Die Unterkategorie Verzeichnisdienstzugriff im Windows Server 2008, spiegelt im Prinzip die globale Richtlinie aus Windows 2000/Windows Server 2003 wieder. Lediglich die Ereignis-ID ändert sich unter Windows Server 2008 jedoch von 566 zu 4662.
Zum konfigurieren der Unterkategorien muss nicht die globale Richtlinie definiert werden. Diese lassen sich auch einzeln konfigurieren.
Die Unterkategorien lassen sich aber weder in einer GUI anzeigen, noch in einer GUI konfigurieren. Diese lassen sich ausschließlich über die Kommandozeile anzeigen sowie konfigurieren. Das Kommandozeilen-Tool das dafür verwendet wird lautet Auditpol. Wie bei allen Kommandozeilen Tools von Microsoft, lässt sich die Liste der verfügbaren Parameter mit dem Befehl „Auditpol /?“ anzeigen.
Mit den erweiterten Protokollierungsmöglichkeiten in Windows Server 2008, werden nun die Werte in den Attributen, vor- und nach dem verändern aufgezeichnet. Oder wenn ein Objekt innerhalb einer Domäne verschoben wird, wird der Distinguished Name (DN) des alten sowie neuen Standorts vom Objekt protokolliert. Falls das Objekt in eine andere Domäne verschoben werden sollte, wird auf dem Ziel-DC das erstellen eines Objekts protokolliert (sofern konfiguriert). Das sind nur ein paar Beispiele, es gibt aber noch einige mehr | |