Настраиваем резервное копирование 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 году (скорее всего он не делался с момента развертывания контроллера домена).

время последнего резервного копирования контроллера AD

Узнать время последнего резервному копированию всех DC в домене:

repadmin /showbackup *

С помощью следующей команды можно узнать сколько раз выполнялось резервное копирование AD на конкретном DC:

(Get-ADReplicationAttributeMetadata -Object "CN=Configuration,DC=WINITPRO,DC=LOC" -Properties dSASignature -Server DC01).Version

Если ваши виртуальные контроллеры домена бэкапятся через снапшоты(см. пример с резервным копированием Hyper-V),, убедитесь что при ваша система резервного копирования обновляет в LDAP значение атрибута LastOriginatingChangeTime (содержит дату последнего резервного копирования).

Бэкап контроллера домена 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

Get-WindowsFeature Windows-Server-Backup

Если компонент WSB отсутствует, установите его с помощью PowerShell:

Add-Windowsfeature Windows-Server-Backup –Includeallsubfeature

Или из Server Manager -> Features.

windows server backup установка

Я буду сохранять бэкап данного контроллера домена AD в сетевую папку на отдельном выделенном сервере для резервного копирования. Например, путь к каталогу будет таким \\srvbak1\backup\dc01 . Измените NTFS разрешения на сетевой папке, чтобы права чтения-записи в каталог были только у SYSTEMDomain Admins и Domain Controllers.

каталог для резевных копий Active Directory
Вы можете настроить автоматическое задание резервного копирования в графической MMC оснастке Windows Server Backup ( wbadmin.msc ). Недостаток этого инструмента — новая резервная копия в каталоге WindowsImageBackup будет перезаписывать старую. Чтобы хранить копии AD от разных дат, можно автоматизировать резервное копирование с помощью консольной утилиты wbadmin.exe.

Резервное копирование Active Directory с помощью PowerShell

Для автоматизации бэкапов контроллера домена воспользуемся PowerShell скриптом. Для хранения нескольких уровней копий AD мы будем хранить каждый бэкап в отдельном каталоге с датой создания копии в качестве имени папки.

При резервном копировании в сетевую папку поддерживается только режим создания полной резервной копии. Если вы подключите диск для бэкапов как локальное устройство (например, LUN через FC или iSCSI диск), для такого устройства служба VSS будет поддерживать режим инкрементального резервного копирования.

Базовая версия 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 с информацией о процессе создании теневой копии диска:

powershell скрипт для резевного копирования контроллера домена AD

Если бэкап выполнен успешно, в логе появятся сообщения:

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

Теперь проверьте, что дата даты последнего бэкапа DC обновлена:

repadmin /showbackup

Проверь, что контроллер домена бы успешно забэкаплен

Размер каталога с резервной копией контроллера домена в сетевой папке в этом примере около 12 Гб. На выходе вы получили VHDX файл, который можно использовать для восстановления ОС через WSB, или вы можете вручную смонтировать VHDX файл и извлечь из него нужные файлы или папки.

VHDX файл с резервной копии DC

Если на площадке имеется несколько DC, то не обязательно бэкапить их все. Для экономии места достаточно периодически бэкапить только файл базы данных AD (ntds.dit). Для этого используйте следующие команды:

$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

задание планировщика для автоматического резервного копирования Active Directory

Итак, мы настроили резервное копирование на контроллере домена AD, а в следующей статье мы поговорим о способах восстановления Active Directory из имеющейся резервной копии.


Предыдущая статьяСледующая статья


Комментариев: 36Оставить комментарий

Комментарии

Популярные сообщения из этого блога

У вас нет прав для отправки сообщения вместо указанного пользователя. Ошибка: [0x80070005-0x0004dc-0x000524]

KSMG Подготовка конфигурационных файлов для подключения к LDAP

Поиск и удаление писем в ящиках Exchange Server