Настраиваем резервное копирование Active Directory
https://winitpro.ru/index.php/2019/10/10/nastraivaem-backup-active-directory/
Настраиваем резервное копирование Active Directory | Windows для системных администраторов
Настраиваем резервное копирование Active Directory
В этой статье мы поговорим об особенностях резервного копирования контроллеров домена Active Directory, рассмотрим, как настроить автоматическое резервное копирование AD с помощью PowerShell и встроенного Windows Server Backup.
Нужно ли бэкапить Active Directory?
Одним из способов повышения отказоустойчивой и распределения нагрузки в Active Directory является развертывание дополнительных контроллеров домена. В такой среде база AD реплицируется между всеми DC и при выходе из строя любого контроллера домена не происходит полный отказ сервиса. Клиенты смогут просто переключиться на оставшиеся DC. Администратор может затем быстро развернуть новый DC на площадке, реплицировать на него базу AD с оставшихся DC, а старый контроллер домена удалить согласно инструкции.
Однако наличие дополнительных контроллеров домена не поможет в случаях когда неисправны все контроллеры домена. Например, когда все DC инфицированы или зашифрованы (например в случае перехвата учетных данных администратора домена утилитой mimikatz), повреждений в логической структуре базы данных NTDS.DIT (которая была реплицирована на все DC), или в других катастрофических сценариях.
В общем, бэкапить AD можно и нужно. Как минимум вы должны регулярно создавать резервные копии ключевых контроллеров доменов, владельцев ролей FSMO (Flexible single-master operations). Вы можете получить список контролеров домена с ролями FSMO командой:
netdom query fsmo
Как проверить дату последнего бэкапа контроллера домена Active Directory?
Можно проверить, когда создавалась резервная копия текущего контроллера домена AD с помощью утилиты repadmin:
repadmin /showbackup
В данном примере видно, что последний раз бэкап DC и разделов AD выполнялся в 2021 году (скорее всего он не делался с момента развертывания контроллера домена).
Узнать время последнего резервному копированию всех DC в домене:
repadmin /showbackup *
С помощью следующей команды можно узнать сколько раз выполнялось резервное копирование AD на конкретном DC:
(Get-ADReplicationAttributeMetadata -Object "CN=Configuration,DC=WINITPRO,DC=LOC" -Properties dSASignature -Server DC01).Version
Бэкап контроллера домена AD с помощью Windows Server Backup
Если у вас нет специального ПО для резервного копирования, для создания резервных копий AD можно использовать встроенный Windows Server Backup (этот компонент пришел на замену NTBackup
).
Для резервного контроллера домена нужно создать резервную копию Состояния системы (System State). В System State бэкап попадает база Active Directory (NTDS.DIT), содержимое каталога SYSVOL с файлами групповых политик (GPO), DNS зоны, реестр, метаданные IIS, база данных службы сертификации AD CS, файлы загрузчика Windows, и другие системные файлы и ресурсы. Резервная копия создается через службу теневого копирования VSS.
Проверьте, установлен ли компонент Windows Server Backup с помощью PowerShell командлета Get-WindowsFeature:
Get-WindowsFeature Windows-Server-Backup
Если компонент WSB отсутствует, установите его с помощью PowerShell:
Add-Windowsfeature Windows-Server-Backup –Includeallsubfeature
Или из Server Manager -> Features.
Я буду сохранять бэкап данного контроллера домена AD в сетевую папку на отдельном выделенном сервере для резервного копирования. Например, путь к каталогу будет таким \\srvbak1\backup\dc01
. Измените NTFS разрешения на сетевой папке, чтобы права чтения-записи в каталог были только у SYSTEM, Domain Admins и Domain Controllers.
Вы можете настроить автоматическое задание резервного копирования в графической MMC оснастке Windows Server Backup ( wbadmin.msc
). Недостаток этого инструмента — новая резервная копия в каталоге WindowsImageBackup будет перезаписывать старую. Чтобы хранить копии AD от разных дат, можно автоматизировать резервное копирование с помощью консольной утилиты wbadmin.exe.
Резервное копирование Active Directory с помощью PowerShell
Для автоматизации бэкапов контроллера домена воспользуемся PowerShell скриптом. Для хранения нескольких уровней копий AD мы будем хранить каждый бэкап в отдельном каталоге с датой создания копии в качестве имени папки.
Базовая версия PowerShell скрипта резервного копирования DC будет выглядеть так (укажите UNC путь к сетевой папке:
$path="\\srvbak1\backup\dc1\"
Import-Module ServerManager
[string]$date = get-date -f 'yyyy-MM-dd'
$TargetUNC=$path+$date
$TestTargetUNC= Test-Path -Path $TargetUNC
if (!($TestTargetUNC)){
New-Item -Path $TargetUNC -ItemType directory
}
$WBadmin_cmd = "wbadmin.exe START BACKUP -backupTarget:$TargetUNC -systemState -noverify -vssCopy -quiet"
Invoke-Expression $WBadmin_cmd
Чтобы PowerShell скрипт удалял старые резервные копии (например, старше 60 дней), можно добавить такой код:
$Period = "-60" # Количество хранимых дней.
# Вычисляем дату после которой будем удалять файлы.
$CurrentDay = Get-Date
$ChDaysDel = $CurrentDay.AddDays($Period)
# Удаление файлов, дата создания которых больше заданного количества дней
GCI -Path $TargetUNC -Recurse | Where-Object {$_.CreationTime -LT $ChDaysDel} | RI -Recurse -Force
# Удаление пустых папок
GCI -Path $TargetUNC -Recurse | Where-Object {$_.PSIsContainer -and @(Get-ChildItem -Path $_.Fullname -Recurse | Where { -not $_.PSIsContainer }).Count -eq 0 } | RI -Recurse
$KeepVersion=10
$WBadmin_cmd = " wbadmin delete backup -keepVersions:$KeepVersion -quiet"
Invoke-Expression $WBadmin_cmd
В этом случае wbadmin будет хранить только последние 10 резервных копий. Более старые будут удалены.
Запустите данный скрипт. Должна появится консоль wbadmin с информацией о процессе создании теневой копии диска:
Если бэкап выполнен успешно, в логе появятся сообщения:
The backup operation successfully completed. The backup of volume (C:) completed successfully. The backup of the system state successfully completed [11/15/24 12:51 PM].
Лог бэкапа хранится в каталоге C:\Windows\Logs\WindowsServerBackup\
.
Теперь проверьте, что дата даты последнего бэкапа DC обновлена:
repadmin /showbackup
Размер каталога с резервной копией контроллера домена в сетевой папке в этом примере около 12 Гб. На выходе вы получили VHDX файл, который можно использовать для восстановления ОС через WSB, или вы можете вручную смонтировать VHDX файл и извлечь из него нужные файлы или папки.
$WBadmin_cmd = "wbadmin start backup -backuptarget:$path -include:C:\Windows\NTDS\ntds.dit -quiet"
Invoke-Expression $WBadmin_cmd
Размер такого бэкапа будет составлять всего 50-500 Мб в зависимости от размера базы AD.
Для автоматического выполнения бэкапа по расписанию, создайте на DC создать скрипт c:\ps\backup_ad.ps1
. Этот скрипт нужно запускать по расписанию через Task Scheduler. Можно создать задание планировщика из графического интерфейса или из PowerShell. Главное требование — задание должно запускать от имени SYSTEM с включенной опцией Run with highest privileges. Для бэкапа контролера домена AD три раза в неделю создайте следующее задание:
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Tuesday,Friday -At "01:00AM"
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "c:\ps\backup_ad.ps1"
Register-ScheduledTask -TaskName "BackupADScript_PS" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
Итак, мы настроили резервное копирование на контроллере домена AD, а в следующей статье мы поговорим о способах восстановления Active Directory из имеющейся резервной копии.