Корзина Active Directory: восстановление удалённых объектов

Жизненный цикл удалённых объектов в AD

Когда объект удаляется в Active Directory, он не исчезает мгновенно. Понимание жизненного цикла удалённых объектов критически важно для успешного восстановления. Без включённой корзины AD объект проходит следующие стадии:

  1. Deleted (Tombstoned) — объект перемещается в контейнер Deleted Objects, большинство атрибутов очищается, остаётся только DN, objectGUID, objectSid и несколько служебных атрибутов. Объект хранится в этом состоянии в течение Tombstone Lifetime (по умолчанию 180 дней).
  2. Removed (Recycled) — после истечения Tombstone Lifetime объект окончательно удаляется при очередном запуске процесса сборки мусора (Garbage Collection).

С включённой корзиной AD появляется промежуточное состояние:

  1. Deleted — объект перемещается в корзину, но все атрибуты сохраняются (членство в группах, пароль, SID, и т.д.). Объект хранится в течение Deleted Object Lifetime (по умолчанию 180 дней).
  2. Recycled — после истечения Deleted Object Lifetime объект переходит в состояние Recycled, большинство атрибутов очищается. Хранится ещё Tombstone Lifetime дней.
  3. Physically Removed — окончательное удаление.

Ключевое различие: с корзиной AD все атрибуты сохраняются, что позволяет полное восстановление без потери данных.

Включение корзины Active Directory

Корзина AD доступна начиная с Windows Server 2008 R2, но по умолчанию отключена. Включение — необратимая операция: после включения корзину нельзя отключить.

Требования

Для включения корзины AD необходимо:

  • Функциональный уровень леса (Forest Functional Level) — Windows Server 2008 R2 или выше
  • Членство в группе Enterprise Admins
  • Все контроллеры домена в лесу должны работать под управлением Windows Server 2008 R2 или новее
# Проверка функционального уровня леса
Get-ADForest | Select-Object ForestMode

# Проверка функционального уровня домена
Get-ADDomain | Select-Object DomainMode

# Список всех контроллеров домена и их ОС
Get-ADDomainController -Filter * | Select-Object Name, OperatingSystem

Включение через PowerShell

Рекомендуемый способ включения корзины AD:

# Включение корзины Active Directory
Enable-ADOptionalFeature -Identity 'Recycle Bin Feature' `
  -Scope ForestOrConfigurationSet `
  -Target (Get-ADForest).Name `
  -Confirm:$false

# Проверка, что корзина включена
Get-ADOptionalFeature -Filter 'Name -like "Recycle*"' |
  Select-Object Name, EnabledScopes

Если в поле EnabledScopes отображается DN леса, корзина успешно включена. Изменение реплицируется на все контроллеры домена автоматически.

Включение через Active Directory Administrative Center

Альтернативный способ — через графический интерфейс ADAC (Active Directory Administrative Center, dsac.exe):

  1. Откройте ADAC на контроллере домена
  2. Выберите домен в левой панели
  3. В правой панели в разделе Tasks нажмите Enable Recycle Bin
  4. Подтвердите действие в диалоговом окне
  5. Обновите ADAC (F5) — раздел Deleted Objects станет доступен

После включения подождите, пока изменение реплицируется на все контроллеры домена. Проверить репликацию можно командой:

repadmin /replsummary

Восстановление объектов через PowerShell

PowerShell предоставляет наиболее гибкие возможности для поиска и восстановления удалённых объектов. Основные командлеты: Get-ADObject с параметром -IncludeDeletedObjects и Restore-ADObject.

Поиск удалённых объектов

Для просмотра содержимого корзины используйте следующие команды:

# Все удалённые объекты
Get-ADObject -Filter 'isDeleted -eq $true' -IncludeDeletedObjects `
  -Properties * | Select-Object Name, ObjectClass, WhenChanged, `
  DistinguishedName | Sort-Object WhenChanged -Descending

# Поиск конкретного пользователя
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*Иванов*"' `
  -IncludeDeletedObjects -Properties *

# Только удалённые пользователи за последние 7 дней
$date = (Get-Date).AddDays(-7)
Get-ADObject -Filter 'isDeleted -eq $true -and ObjectClass -eq "user" -and WhenChanged -ge $date' `
  -IncludeDeletedObjects -Properties DisplayName, WhenChanged, LastKnownParent

# Удалённые группы
Get-ADObject -Filter 'isDeleted -eq $true -and ObjectClass -eq "group"' `
  -IncludeDeletedObjects -Properties DisplayName, GroupScope, Member

# Удалённые OU
Get-ADObject -Filter 'isDeleted -eq $true -and ObjectClass -eq "organizationalUnit"' `
  -IncludeDeletedObjects

Восстановление отдельных объектов

Для восстановления используйте Restore-ADObject:

# Восстановление пользователя по имени
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*Иванов*" -and ObjectClass -eq "user"' `
  -IncludeDeletedObjects | Restore-ADObject

# Восстановление по objectGUID (самый надёжный способ)
Restore-ADObject -Identity "a1b2c3d4-e5f6-7890-abcd-ef1234567890"

# Восстановление в другой OU (если исходный OU удалён)
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*Иванов*"' `
  -IncludeDeletedObjects | Restore-ADObject `
  -TargetPath "OU=Restored,DC=corp,DC=local"

# Проверка восстановленного объекта
Get-ADUser -Identity "ivanov.ii" -Properties MemberOf, Description

Важно: при восстановлении объекта он возвращается в исходный OU (атрибут LastKnownParent). Если OU был удалён, необходимо сначала восстановить OU или указать параметр -TargetPath.

Массовое восстановление

Если была удалена целая OU со всем содержимым, восстанавливайте в правильном порядке — сначала контейнеры, потом объекты:

# Шаг 1: Восстановление OU
Get-ADObject -Filter 'isDeleted -eq $true -and ObjectClass -eq "organizationalUnit" -and Name -like "*Отдел продаж*"' `
  -IncludeDeletedObjects | Restore-ADObject

# Шаг 2: Восстановление всех объектов из этой OU
$ouDN = "OU=Отдел продаж,OU=Departments,DC=corp,DC=local"
Get-ADObject -Filter 'isDeleted -eq $true -and LastKnownParent -eq $ouDN' `
  -IncludeDeletedObjects | Restore-ADObject

# Шаг 3: Восстановление вложенных OU и их содержимого (рекурсивно)
Get-ADObject -Filter 'isDeleted -eq $true -and LastKnownParent -like "*Отдел продаж*"' `
  -IncludeDeletedObjects | Sort-Object ObjectClass | Restore-ADObject

# Проверка результата
Get-ADOrganizationalUnit -Identity $ouDN -Properties * | Select-Object Name, DistinguishedName
Get-ADUser -SearchBase $ouDN -Filter * | Select-Object Name, Enabled

Восстановление через Active Directory Administrative Center

ADAC предоставляет удобный графический интерфейс для восстановления, особенно полезный для разовых операций и визуальной проверки атрибутов.

Процесс восстановления через ADAC:

  1. Откройте ADAC (dsac.exe)
  2. Перейдите в узел домена → Deleted Objects
  3. Используйте фильтр для поиска нужного объекта (по имени, типу, дате удаления)
  4. Щёлкните правой кнопкой по объекту → Restore (восстановление в исходный OU) или Restore To... (выбор OU)
  5. Для массового восстановления выберите несколько объектов с Ctrl/Shift

ADAC показывает все сохранённые атрибуты объекта, включая членство в группах, что позволяет убедиться в полноте восстановления перед его выполнением. Также доступна история действий PowerShell — ADAC показывает эквивалентные команды для каждой операции, что полезно для документирования и автоматизации.

Восстановление без корзины AD

Если корзина не была включена до удаления объекта, возможности восстановления ограничены. Объект находится в состоянии Tombstoned — большинство атрибутов потеряны.

Авторитативное восстановление через ntdsutil

Авторитативное восстановление из резервной копии состояния системы (System State Backup) — единственный надёжный способ полного восстановления без корзины:

# 1. Перезагрузка контроллера домена в режим DSRM
bcdedit /set safeboot dsrepair
shutdown /r /t 0

# 2. В режиме DSRM выполните восстановление System State через wbadmin
wbadmin start systemstaterecovery -version:04/08/2026-03:00

# 3. Авторитативное восстановление через ntdsutil
ntdsutil
  activate instance ntds
  authoritative restore
  restore subtree "OU=Отдел продаж,DC=corp,DC=local"
  quit
  quit

# 4. Перезагрузка в нормальном режиме
bcdedit /deletevalue safeboot
shutdown /r /t 0

Внимание: авторитативное восстановление — сложная и рискованная операция. Оно откатывает все изменения в восстанавливаемой ветке до состояния на момент резервной копии. Всегда выполняйте на изолированном контроллере домена и тестируйте в лабораторной среде.

Частичное восстановление tombstoned-объекта

Можно реанимировать tombstoned-объект через LDP или PowerShell, но атрибуты придётся восстанавливать вручную:

# Восстановление tombstoned-объекта (без корзины)
$obj = Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*Иванов*"' `
  -IncludeDeletedObjects -Properties *

# Реанимация — объект будет создан с минимальными атрибутами
Restore-ADObject -Identity $obj.ObjectGUID `
  -TargetPath "OU=Restored,DC=corp,DC=local" `
  -NewName "Иванов Иван"

# Ручное восстановление атрибутов
Set-ADUser -Identity "ivanov.ii" `
  -Description "Менеджер по продажам" `
  -Office "Москва" `
  -Department "Продажи"

# Восстановление членства в группах (из бэкапа или документации)
Add-ADGroupMember -Identity "Sales" -Members "ivanov.ii"
Add-ADGroupMember -Identity "VPN-Users" -Members "ivanov.ii"

# Сброс пароля (пароль не сохраняется в tombstone)
Set-ADAccountPassword -Identity "ivanov.ii" -Reset `
  -NewPassword (ConvertTo-SecureString "TempP@ss123" -AsPlainText -Force)
Enable-ADAccount -Identity "ivanov.ii"

Настройка сроков хранения

Управление сроками хранения удалённых объектов позволяет балансировать между возможностью восстановления и размером базы данных AD:

# Просмотр текущих значений
Get-ADObject "CN=Directory Service,CN=Windows NT,CN=Services,$((
Get-ADRootDSE).configurationNamingContext)" -Properties tombstoneLifetime, `
  'msDS-DeletedObjectLifetime'

# Установка Deleted Object Lifetime (время в корзине, дни)
Set-ADObject "CN=Directory Service,CN=Windows NT,CN=Services,$((
Get-ADRootDSE).configurationNamingContext)" `
  -Replace @{'msDS-DeletedObjectLifetime' = 365}

# Установка Tombstone Lifetime (дни)
Set-ADObject "CN=Directory Service,CN=Windows NT,CN=Services,$((
Get-ADRootDSE).configurationNamingContext)" `
  -Replace @{tombstoneLifetime = 365}

Рекомендуемые значения: для критичных сред установите msDS-DeletedObjectLifetime в 365 дней. Это увеличивает окно восстановления до года, но базу ntds.dit следует мониторить на предмет роста размера.

Защита от случайного удаления

Лучшая стратегия восстановления — предотвращение удаления. Active Directory предоставляет встроенные механизмы защиты:

# Включение защиты от случайного удаления для всех OU
Get-ADOrganizationalUnit -Filter * |
  Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $true

# Проверка защиты
Get-ADOrganizationalUnit -Filter * -Properties ProtectedFromAccidentalDeletion |
  Where-Object { -not $_.ProtectedFromAccidentalDeletion } |
  Select-Object Name, DistinguishedName

# Защита критичных групп
$criticalGroups = @("Domain Admins", "Enterprise Admins", "Schema Admins")
foreach ($group in $criticalGroups) {
  $g = Get-ADGroup -Identity $group
  Set-ADObject -Identity $g.DistinguishedName `
    -ProtectedFromAccidentalDeletion $true
}

# Аудит удаления объектов AD
# Включите через Group Policy:
# Computer Configuration → Policies → Windows Settings →
# Security Settings → Advanced Audit Policy Configuration →
# DS Access → Audit Directory Service Changes: Success, Failure

Также настройте делегирование прав: минимизируйте количество учётных записей с правами на удаление объектов AD. Используйте принцип наименьших привилегий — обычным администраторам достаточно прав на создание и изменение объектов.

Часто задаваемые вопросы

Нет, включение корзины AD — необратимая операция. После включения отключить её невозможно. Это связано с изменением схемы AD и формата хранения удалённых объектов. Однако отрицательных последствий от включения корзины практически нет — она лишь сохраняет больше атрибутов при удалении.

Если используется корзина AD и объект находится в состоянии Deleted (не Recycled), то все атрибуты восстанавливаются полностью, включая memberOf. Обратные ссылки (back-links), такие как членство в группах, восстанавливаются автоматически. Без корзины (tombstoned объект) членство в группах не сохраняется и его нужно восстанавливать вручную.

Необходимо сначала восстановить OU, затем объекты внутри него. Используйте Restore-ADObject для OU, затем для вложенных объектов. Альтернативно, используйте параметр -TargetPath для восстановления объекта в другой существующий OU.

Влияние минимально. Единственный эффект — увеличение размера базы данных ntds.dit, так как удалённые объекты сохраняют все атрибуты вместо их очистки. В средах с частым удалением объектов размер базы может заметно вырасти. Рекомендуется мониторить размер ntds.dit и при необходимости выполнять дефрагментацию offline через ntdsutil.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#корзина Active Directory#восстановление объектов AD#Active Directory Recycle Bin#восстановление удалённых пользователей#Restore-ADObject#AD recovery#Active Directory восстановление
Комментарии 0

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

загрузка...