Restore af objekter i AD

Ved hjælp af værktøjer der bliver leveret med Active Directory er det muligt at restore objekter enkeltvis (såfremt man har en SystemState-backup.) Active Directory´s egen papirkurv er genial, men hvis man nu skal langt tilbage eller ikke har aktiveret papirkurven, så er nedenstående vejen frem. Jeg bruger Fredrik Lindströms værktøj DSCT for at gøre livet lidt nemmere for mig selv, det kan hentes her (download link er midt på siden.)

Først skal vi have en version af ntds.dit filen som indeholder det objekt vi gerne vil restore. Hvis du gerne vil lave en hurtig test, så kan dette gøres ved at køre følgende på en DC:

Ntdsutil “ac i ntds” Sn C Q Q

Ovenstående er den meget kort udgave af Ntdsutil | Active Instance NTDS | Snapshot | Create | Quit | Quit

Nu skal vi have vores snapshot “mounted” så vi kan få fat i databasen. Dette gøres ved at skrive følgende:

Ntdsutil sn “li a” “mo 1″ Q Q

Som er den meget korte udgave af Ntdsutil | Snapshot | List All | Mount 1 | Quit | Quit – jeg forventer at der kun er 1 snapshot, hvis ikke skal du selvfølgelig lige tjekke datoen på dine snapshots og mounte det relevante. Hvis det kun er for denne ene test du prøver det kan du også springe et trin over og køre:

Ntdsutil “ac in ntds” sn cr “li a” “mo 1″ Q Q

Så tager man et snaphot og mounter det i en kommando, husk at unmounte efterfølgende især hvis det er produktions data du sidder og leger med (det er det selvfølgelig IKKE.) Snapshot unmountes ved at køre:

Ntdsutil Sn “Li A” “Un 1″ Q Q

Så nu har vi et snaphot og det ligger klar i en folder på c-drevet der hedder noget lignende $Snap_ÅÅÅÅMMDDTTTT_VolumeC$. Folderstrukturen ligner den der er taget backup af og i mit tilfælde betyder det at databasen ligger under c:\$Snap_ÅÅÅÅMMDDTTTT_VolumeC$\windows\ntds\ntds.dit. Denne kan bruges fra denne lokation eller man kan kopiere den til en anden folder og bruge den derfra. Igen kal man huske på at dette er en backup af en bruger database og disse data kan være sensitive. For at mounte databasen skal vi have fat i Dsamain. I it tilfælde vil kommandoen se således ud:

Dsamain -dbpath c:\$Snap_ÅÅÅÅMMDDTTTT_VolumeC$\windows\ntds\ntds.dit -ldapport 11389 -allownonadminaccess

Nu har vi en kopi af vores Active Directory tilgængelig på port 11389, denne kan man forbinde sig til vha ldp og kigge ned i databasen som den så ud på tidspunktet for snapshottet. Hvis du ønsker at genkabe objekter fra den kan man trække dem ud med LDIFDE og CSVDE, men som sagt så er Fredrik Lindströms værktøj Directory Services Compare Tool så meget nemmere og hvem vil ikke gerne spare tid. ;)

Installer DSCT | Start en MMC | Add Remove Snap-Inn  |  Directory Services Compare Tool | Under Actions i højre side (ikke i menuen) vælges Datasoruce Settings | Øverst skrives sti til Live Active Directory | Nederst Snapshot | OK

 

 

Directory Services Compare Tool - datasources

Nu kan vi så se hvilke forskelle der er på vores snapshot og vores live AD.

Directory Services Compare Tool

Hvis du kigger under deleted kan du se hvilke objekter der er slettet siden og hvis du kigger under added.. Ja det giver mening ikke?

Directory Services Compare Tool - restore

Marker de slettede objekter og vælg reanimate.

Directory Services Compare Tool - reanimate

Tryk på ok tjek dit AD og konstater at dine objekter er tilbage. Husk at sætte protect from deletion og aktiver brugerne igen, men ellers er du kørende.

Hent champagnen og modtag folkets hyldest! ;)

Og kudos til Fredrik Lindström for et mega fedt tool!!

Active Directory backup

Backup af Active Directory er ganske simpelt på windows 2008 server og senere versioner, det svære er at restore objekter enkeltvis. Jeg har set flere der betaler for backup programmer der kan dette, men gætter på at det skyldes historiske årsager at de ikke er skiftet ud for længst!

Men lad os lave en backup af vores AD først så kan vi kigge på restore af det bagefter.

For at tage backup af AD skal man først installere Windows Backup. Dette gøres nemt ved at køre add-windowsfeature windows-server-backup fra en powershell prompt, jeg plejer at give den en -IncludeAllSubFeature også så jeg er sikker på at der ikke mangler en eller anden komponent. Det kan være utrolig tidskrævende at fejlfinde på den slags.. ;)

Add-WindowsFeature Backup-Features -IncludeAllSubFeature

-Name er en optional og kan derfor undværes og hvis man gør det fra powershell 2.0 skal man først loade modulet servermanager, det sker automatisk i 3.0.

Når Windows Backup er installeret kan man køre backuppen fra en prompt

WBAdmin Start SystemStateBackup -BackupTarget:D: -Quiet

Ovenstående kan scheduleres til at køre som man lyster, jeg kører den dagligt kl 21. Scheduleringen kan laves ved at køre følgende:

schtasks /create /SC DAILY /ST 21:00 /RU SYSTEM /TN BackupSystemstate /TR “wbadmin start systemstatebackup -backupTarget:C: -quiet -output:D:\WindowsImageBackup\Backup.txt”

Nedenstående sørger for at vi kun har 5 versioner efter hver backup er kørt. Den sletter alt andet end de sidste 4 og da backuppen så kører 15 min senere har vi 5 versioner. Det er selvfølgelig ikke nok for de fleste virksomheder, da brugere ofte opdager problemer senere end 5 dage og derfor kan man selvfølgelig rydde op som man lyster. Jeg har gjort det på denne måde da jeg så har 5 versioner online og vores backup system kommer så senere og tager en backup af disken og gemmer dem i 5 år. Så er jeg rimelig sikker på at kunne behage alle der måtte have lyst til at kigge i AD historik eller få deres bruger/grupper osv tilbage.

schtasks /create /SC DAILY /ST 20:45 /RU SYSTEM /TN BackupScavenge /TR “wbadmin delete systemstatebackup -keepversions:4 -quiet -output:D:\WindowsImageBackup\BackupScavenge.txt”

Såfremt backuppen der tages skal skrives til samme disk som Active Directory er installeret på er der lige en lille krølle. Windows Backup kan ikke tage backup til samme disk som den tager backup af, dette giver mening for en fuld disk-backup, men for systemstate burde det være ok at lægge den der midlertidigt. Derfor har MS også været så venlige at muliggøre dette ved en lille ændring i Registry. Windows Backup ligger under HKLM\System\CurrentControlSet\Services\WBEngine og hvis ikke den er der allerede, skal man oprette en nøgle der hedder SystemStateBackup og tilføje en 32-bit Dword værdi, navngive den AllowSSBToAnyVolume (Allow System State Backup To Any Volume) og give den værdien 1.

New-Item -Path HKLM:\SYSTEM\CurrentControlSet\Services\wbengine -Name SystemStateBackup

New-ItemProperty “HKLM:\SYSTEM\CurrentControlSet\Services\wbengine\SystemStateBackup” -Name “AllowSSBToAnyVolume” -Value 1 -PropertyType “DWord”

Eller hvis du vil være old-school

reg add HKLM\SYSTEM\CurrentControlset\Services\wbengine\SystemStateBackup /v AllowSSBToAnyVolume /t REG_DWORD /d 1 /f

Vend wbengine servicen og så er det muligt at smide en midlertidig backup af AD på samme drev som AD har sine database.

Nu har vi en backup og så håber vi selvfølgelig at vi aldrig kommer til at bruge den. Men hvis vi skal så kig på restore-artiklen for en nem vejledning i restore af objekter i AD.

Når rollerne skal byttes om..

Det har været en fantastisk start på ugen! 1 domæne hvor FSMO rolle-holderen blev smadret ved skift af noget hardware og 1 domæne hvor klienter har ventet længe på at logge på, fordi de kommer fra et ukendt subnet. Begge problemer kan nemt klares, men den sidste er lidt svær at gennemskue hvis ikke man kender sine værktøjer.

Lad os først kigge på overførsel af roller fra en “død” dc og oprydning efter dødsfaldet.

I 2008 er det jo nemt at flytte roller fra en dc til en anden. Hvis man sletter den i Users and Computers, så advarer gui´en om at den havde nogle roller og disse bliver flyttet til en anden dc. Tak til ms for den lille hjælp! Men hvad nu med os der ikke roder med gui´er?? Vi skal bruge ntdsutil!

Gør følgende for at flytte rollerne fra en off-line dc til en on-line dc.

I kommandoprompt skrives

Ntdsutil |Roles | Connections | Connect to Server >Servernavn på server der skal have rollerne< | q | Seize >navn på rolle der skal flyttes< * | q | q

* Hvis man vil have en liste over roller, kan man bare skrive ? så kommer der en liste frem over muligheder.

Mulige roller:

PDC | Infrastructure master | Naming master | RID master |Schema master

Nu er rollen/rollerne flyttet og almindelig drift kan genoptages. Bemærk at ovenstående er fuldstændig samme procedure som når rollerne skal flyttes fra en on-line DC til en on-line DC med den eneste undtagelse at det så er Transfer og ikke Seize i 6 linie.

Nu skal vi så have ryddet op efter den afdøde og det er kedeligt og der er IKKE en gui der gør det for os.

Igen skal vi have fat i Ntdsutil.

I en kommandoprompt skrives:

Ntdsutil | Metadata cleanup | Connections | Connect to server >Servername< (vælg rolleholderen for domænet) | q | Select operation target | List domain | Select domain 0 (vælg det nummer der repræsenterer det domæne den døde dc er i) | List sites | Select site 0 (vælg det nummer der repræsenterer det site den døde dc er i) | List servers in site | Select server >servernavn< (navn på den døde dc) | q | Remove selected server | yes | yes | q | q

Nu er vi godt på vej og mangler bare DNS og Sites and Services

Start DNS Management konsollen (DNSMGMT.MSC i en kør-boks)

På forward lookup og reverse lookup zonerne skal man højreklikke vælge “name servers” og fjerne dc´en fra listen af navne servere.

Under

_msdcs.>domainname< | DC | _tcp

fjernes dc´en fra listen af Ldap udbydere

_msdcs.>domainname< | DC | _sites | sitename | _tcp

fjernes dc´en fra listen af Kerberos udbydere

Nu mangler der kun Sites and Services og så er vi færdige.

Start Sites and Service ved at skrive dssite.msc i en kør-boks

Lokaliser sites dc´en er i og fjern den!

Og så tror jeg det er tid til en kop kaffe!! ;)