Posted in : Active Directory, Microsoft By Joel Jerkin Translate with Google ⟶

8 years ago

Många använder sig utav 3:e partsprodukter som Veeam B&R, Unitreds/PHD Virtual, Backup Exec m.m för att ta backup av sin infrastruktur där flera av dessa har stöd för Application-Aware  / VSS vilket möjliggör backup av domänkontrollanter och Active Directory.
Detta är klockrent när man ska återställa en hel miljö och för att Active Directory ska starta upp korrekt, men vill man bara återställa en GPO eller jämföra inställningar i schemat mellan två förändringar blir det lite omständigt.
Något vi därför rekommenderar våra kunder att utöver VM backup av sina domänkontrollanter, även ha backup och revisionsbackup av följande från minst en DC (per domän).

  • Group Policy Objects
  • DNS
  • DHCP
  • Netlogon
  • Schema
  • Windows System State

Utöver ovan, rekommenderar vi att man har aktiverat Active Directory Recyle Bin i sin miljö för att återställa borttagna AD-objekt.
Detta är för att man inte ska behöva återställa ett helt VM från backup, starta upp utan nätverk, leta upp vad man söker efter och återställa det utan man enbart öppnar katalogen från ett tidigare datum, exempelvis öppnar man sin DNS-backupen i Notepad och direkt kan man jämföra dessa emot produktionsmiljön. Detta går betydligt snabbare och blir avsevärt mycket enklare i felsökning men även återställningssyfte.

Group Policy Objects

Ett enkelt sett att ta backup av Group Policy Objects är att använda sig utav PowerShell för att dels ta backup av alla GPO.er men även en rapport för att få en enkel översikt över vad dem innehåller i HTML-format.

$Date = Get-Date -Format "yyyy-MM-dd_HHmm"
$BackupPath = "\\BCK01\dcbackup$\$env:COMPUTERNAME\$date"
$GpoBackupPath = "$BackupPath\GPO"
$GpoDomain = (Get-ADDomain -current localcomputer).DNSRoot
New-Item $GpoBackupPath -ItemType Directory -ErrorAction SilentlyContinue
Backup-GPO -All -Domain $GpoDomain -Path $GpoBackupPath
Get-GPO -All -Domain $GpoDomain | ForEach-Object {
	$GpoReportPath = "$GpoBackupPath\$($_.DisplayName).html"
	Get-GPOReport $_.Id -ReportType HTML -Path $GpoReportPath
}

Resultatet blir som följande:
GPO Backup

DNS

För backup av DNS använder vi oss återigen av PowerShell som gör en export av alla DNS zoner som finns upplagda på en DC.

$Date = Get-Date -Format "yyyy-MM-dd_HHmm"
$BackupPath = "\\BCK01\dcbackup$\$env:COMPUTERNAME\$date"
$DNSBackupPath = "$BackupPath\DNS"
$DnsZonesToBackup = Get-DnsServerZone
$LocalDnsPath = "$env:SystemRoot\system32\dns"
New-Item $DnsBackupPath -ItemType Directory -ErrorAction SilentlyContinue
Get-DnsServerZone | fl | Out-File "$LocalDnsPath\Get-DnsServerZone-output.txt"
Copy-Item "$LocalDnsPath\Get-DnsServerZone-output.txt" -Destination $DnsBackupPath -Force
Remove-Item "$LocalDnsPath\Get-DnsServerZone-output.txt" -Force
$DnsZonesToBackup | ForEach-Object {
 	$DnsFileName = "$($_.ZoneName).txt"
  	Export-DnsServerZone -Name $_.ZoneName -FileName $DnsFileName
	Copy-Item "$LocalDnsPath\$DnsFileName" -Destination $DnsBackupPath -Force
	Remove-Item "$LocalDnsPath\$DnsFileName" -Force
}

Varje DNS zone hamnar då i en egen text-fil som kan enkelt öppnas och utläsas:
DNS Backup

DHCP

DHCP är något som vi ser är vänligt att man lägger på en domänkontrollant, ibland kan det vara bra och ibland mindre bra. Tidigare har det varit problematiskt om man behöver starta om en domänkontrollant eller om man ska ersätta den men i Windows Server 2012 R2 finns möjligheten till DHCP Failover vilket gör att man kan ha 2st servrar som replikerar DHCP-scopet mellan varandra och båda kan dela ut en IP-adress utan att krocka med varandra. Detta är en klockren funktion som Microsoft levererat för redudans men vad händer om man vill kunna jämföra inställningar mellan olika dagar eller tappat en inställning? Då är det smidigt att ha tagit både en dump och en export av DHCP-scopet som kan läsas ut i textformat.

$Date = Get-Date -Format "yyyy-MM-dd_HHmm"
$BackupPath = "\\BCK01\dcbackup$\$env:COMPUTERNAME\$date"
$DhcpBackupPath = "$BackupPath\DHCP"
New-Item $DhcpBackupPath -ItemType Directory -ErrorAction SilentlyContinue
netsh dhcp server export "$DhcpBackupPath/netsh.dhcp.server.export.txt"
netsh dhcp server dump > "$DhcpBackupPath/netsh.dhcp.server.dump.txt"

Skillnanden på en export och en dump är att en export används vid import medan dump kan du enkelt läsa inställningarna:
DHCP Export Dump

Netlogon

Netlogon används ofta för att spara inloggningscript, därför tycker vi det är smidigt att göra en kopia av katalogen för att kunna gå tillbaka om något skript uppdaterats som slutar fungera.

$Date = Get-Date -Format "yyyy-MM-dd_HHmm"
$BackupPath = "\\BCK01\dcbackup$\$env:COMPUTERNAME\$date"
$NetlogonBackupPath = "$BackupPath\NETLOGON"
Copy-Item "\\$env:COMPUTERNAME\NETLOGON" -Destination $NetlogonBackupPath -Recurse -Force

Schema

En av de mest känsliga bitarna i Active Directory är schemat. Schemat behöver vara fungerande för att diverse olika tjänster och produkter ska fungera, t.ex Exchange, Skype m.m.
Det vi har med i vår backup är helt enkelt en export av Configuration, Schema och Default Naming Context via ldifde.

$Date = Get-Date -Format "yyyy-MM-dd_HHmm"
$BackupPath = "\\BCK01\dcbackup$\$env:COMPUTERNAME\$date"
$SchemaBackupPath = "$BackupPath\Schema"
$RootDSE= ([ADSI]"").distinguishedName
New-Item $SchemaBackupPath -ItemType Directory -ErrorAction SilentlyContinue
ldifde  -f "$SchemaBackupPath\Configuration.ldf" -d "CN=Configuration,$RootDSE" -p subtree
ldifde  -f "$SchemaBackupPath\Schema.ldf" -d "CN=Schema,CN=Configuration,$RootDSE" -p subtree
ldifde  -f "$SchemaBackupPath\Default_naming_context.ldf" -d "$RootDSE" -p subtree

Filerna sparas i .ldf format men kan öppnas med exempelvis Notepad för att läsa ut informationenSchema Backup

Windows System State

Sist men inte minst, Windows System State backup av en domänkontrollant. Detta är något som vi anser är viktigt att ha med som komplement till VM backup av en domänkontrollant.
Backup via ett 3:e partsverktyg innehåller oftast samma sak som en System State Backup och är det Application-Aware är tanken att det även ska använda samma VSS Writers som System State gör. Fördelen med att använda sig utav Windows System State via Windows Server Backup är att det är ett verktyg utvecklat av Microsoft, för Microsoft produkter och man kan få support av Microsoft.

$Date = Get-Date -Format "yyyy-MM-dd_HHmm"
$BackupPath = "\\BCK01\dcbackup$\$env:COMPUTERNAME\$date"
$SystemStateBackupPath = "$BackupPath\SYSTEMSTATE"
$Policy = New-WBPolicy
$Target = New-WBBackupTarget -NetworkPath $SystemStateBackupPath
New-Item $SystemStateBackupPath -ItemType Directory -ErrorAction SilentlyContinue
Add-WBSystemState $Policy
Add-WBBackupTarget $Policy -Target $Target -Force
Start-WBBackup $Policy

OBS: En System State backup innehåller inte all information från en maskin utan är begräsnad, läs mer här om vad som inkluderas. Vill man inkludera mer går det självklart bra men detta är som sagt ett komplement till 3:e partsbackupen och inte en ersättare. 

Att tänka på

  1. En domänkontrollant ska vara en domänkontrollant och inget annat. Installera alltså INTE andra roller på den så som CA, Print, File etcetera.
  2. Återställ inte en domänkontrollant om miljö fungerar korrekt och inte har några kända problem. Skrota DCn och sätt upp en ny istället – det blir enklare ochman får en nyinstallerad DC.
  3. Säkerställ att man har supporterat backup (från både Microsoft och 3:e partsleverantören)  på plats
  4. Genomför kontinuerliga teståterläsningar och ha tydliga rutiner vid återläsning
  5. Begränsa åtkomst till backupshare. I och med att man läser ut så mycket och det ligger i ”klartext”, säkerställ att man har begränsad åtkoms till sökvägarna och sharen där backupen ligger.

Tags : Active Directory, Backup, DHCP, DNS, GPO, Microsoft, Schema

Personlig rådgivning

Vi erbjuder personlig rådgivning med författaren för 1400 SEK per timme. Anmäl ditt intresse i här så återkommer vi så snart vi kan.

Add comment

Your comment will be revised by the site if needed.