В windows 2008 r2 удаленный объект ад

Корзина Active Directory windows server 2008R2 и методы восстановления объектов

Обновлено 27.05.2018

На сайте я уже писал про корзину AD но для windows server 2012R2, и решил таки перенести сюда мою старую статью про 2008R2.

Active Directory — одна из самых важных служб для сетей Windows, любые сбои в ее работе сказываются на всех пользователях сети. При неполадках в Active Directory очень важно иметь отработанные сценарии аварийного восстановления. Одна из наиболее распространенных причин сбоя службы — случайное удаление объектов, поэтому предлагаю вам познакомиться с некоторыми способами восстановления удаленных объектов в Active Directory.
Итак, что делать, если вы случайно удалили из Active Directory нужного пользователя (компьютер, группу, контейнер и т.п. )?

Отвечу на вопрос, который сразу возникает в подобной ситуации — создать новый объект гораздо проще, чем пытаться восстановить старый, и в некоторых ситуация это допустимо. Но давайте представим, что произойдет при создании, скажем, нового пользователя взамен удаленного. Да, мы можем дать ему точно такое же имя, и он даже сможет зайти под ним в сеть, но и все! Попытавшись получить доступ к ресурсам, на которые у него раньше были права, он получит отказ.

А дело в том, что Active Directory различает объекты не по имени, а по специальному идентификатору — Security Identifier (SID). Это уникальный идентификатор безопасности, который присваивается объекту в момент его создания и остается с ним даже после удаления. А поскольку каждый SID уникален, то вновь созданный пользователь, вне зависимости от имени, получит свой SID и будет распознан системой как совершенно другой пользователь. При этом будет потеряна вся информация, которая была закреплена за старой учетной записью, и придется все делать заново — раздавать права, включать пользователя в группы, настраивать программы, и много других ″интересных″ моментов.

Поэтому, чтобы избежать проблем (да и просто для общего развития) стоит иметь представление о способах восстановления удаленных объектов в Active Directory.

Что происходит с объектом AD при удалении

Для начала разберемся с тем, что происходит после того как вы нажали Delete и объект исчез из оснастки управления.

При удалении объекта из каталога происходит следующее: сначала объект помечается как удаленный, для чего атрибуту isDeleted объекта присваивается значение true, затем большинство атрибутов из объекта удаляется, объект переименовывается и перемещается в специальный контейнер — Deleted Objects. Теперь он зовется объектом-захоронением и недоступен для обычных операций в AD.

Объект-захоронение невидим в оснастках управления MMC, а для большинства служебных программ его вообще не существует. Однако физически данные все еще здесь — просто они невидимы. Зачем же Active Directory хранит удаленные объекты в базе данных?

А вот зачем: будучи невидимым для остальных процессов, объект-захоронение все еще видим для процесса репликации. Чтобы удостовериться в том, что удаление выполнено полностью, на всех контроллерах домена, содержащих удаленный объект, AD реплицирует объект-захоронение на все контроллеры в домене. Другими словами, объект-захоронение используется для репликации удаления по всей Active Directory.

Естесственно, удаленные объекты не могут храниться в контейнере Deleted Objects вечно. С периодичностью раз в 12 часов контроллер домена производит сборку мусора. Сборщик мусора проверяет все объекты-захоронения и физически удаляет те, чей срок жизни больше, чем срок жизни объектов-захоронений.

Срок жизни объекта-захоронения определяется атрибутом tombstoneLifetime и по умолчанию составляет 180 дней (60 дней для лесов Windows 2000). Посмотреть текущее значение tombstoneLifetime и изменить его можно следующим способом.

Открываем редактор ADSIEdit и в качестве точки подключения (Connection Point) выбираем «Select or Type a Distinguished Name or Naming Context». В пустом поле вводим путь CN=Directory Service,CN=Windows NT, CN=Services, CN=Configuration, DC=contoso, DC=com (для домена contoso.com).

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-01

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-01

Нажимаем OK и в оснастке появляется новый контекст именования. Разворачиваем его и в открывшемся окне находим интересующий нас атрибут tombstoneLifetime. Как видите, он действительно равен 180 дням.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-02

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-02

Получается что пока не истек срок жизни объекта-захоронения, удаленный объект физически находится в базе AD, и соответственно может быть поднят из могилы восстановлен.. Еще очень важный вопрос это про атрибуты удаленного объекта, если уровень леса 2008r2 и включена корзина проблем с этим не будет, если нет то следующий раздел.

Атрибуты объекта

При удалении объекта и помещении его в контейнер Deleted Objects удаляется большая часть его атрибутов. Так у объекта пользователя сохраняются только идентификаторы SID и GUID, а также LastKnownParent (контейнер, в котором находился объект до удаления) и SAMAccountName (имя учетной записи SAM). Соответственно, при возвращении объекта к жизни любым из вышеописанных способов восстановятся только эти атрибуты, все остальное придется вводить заново.

Для наглядности возьмем восстановленную нами учетную запись и попробуем ее активировать. Система тут же выдаст нам ошибку и сообщит о том, что пароль не соответствует требованиям безопасности домена. На самом деле все проще, пароль был удален вместе с другими атрибутами и теперь его просто нет.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-03

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-03

Путем несложных манипуляций некоторые атрибуты объектов можно заставить сохраняться при удалении. Сделать это можно, внеся изменения в схему Active Directory. Скажу сразу, атрибуты уже удаленных записей это не вернет.

Для внесения изменений воспользуемся редактором ADSIEdit. Открываем его и подключаемся к разделу Schema нашей Active Directory.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-04

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-04

Для примера возьмем атрибут Description учетной записи пользователя.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-05

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-05

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

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-06

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-06

Найдя атрибут, открываем его двойным щелчком мыши и заходим в свойства. Нас интересует параметр searchFlags, который отвечает за сохранение атрибута в объекте-захоронении. У каждого атрибута он свой, в нашем случае searchFlags вообще не задан, т.е. равен 0.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-07

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-07

Для того, чтобы заданный атрибут не удалялся, необходимо у searchFlags включить третий бит, или другими словами, выставить третий бит равным 1. Поскольку searchFlags представлен в десятичном виде, то сначала переведем его в двоичный. Получится двоичное число 0000. Биты нумеруются справа-налево, начиная с нулевого бита. Находим третий бит (он будет четвертым по счету справа) и ставим его равным 1. Получаем двоичное число 1000. Переводим его обратно и получаем 8 в десятичной системе. Ставим 8 в значении searchFlags. Если все сделано правильно, то в значении параметра появится надпись «Сохранять при удалении» (PRESERVE_ON_DELETE).

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-08

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-08

Теперь даже при удалении и восстановлении учетной записи пользователя атрибут Description будет сохранен. Однако этот способ подходит не для всех атрибутов. Так например атрибуты, описывающие членство в группах Active Directory, подобным образом сохранить невозможно. Для решения этой проблемы в Windows Server 2008 R2 появился новый инструмент под названием Active Directory Recycle Bin, или корзина Active Directory

Корзина Active Directory

Принцип работы корзины

Для начала вспомним, как выглядит жизненный цикл объекта AD при удалении. Объект помечается как удаленный (атрибут isDeleted объекта устанавливается в true) и из него удаляются лишние атрибуты. Затем он переименовывается и перемещается в контейнер Deleted Objects, в котором хранится в течение срока жизни удаленного объекта. По истечении этого срока он удаляется окончательно.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-09

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-09

При включении корзины Active Directory картина меняется. Теперь при удалении объекта Active Directory система сохраняет все атрибуты объекта, после чего объект помечается как логически удаленный (это новое состояние, появившееся в Windows Server 2008 R2). Его имя изменяется, атрибуту isDeleted назначается значение true и объект перемещается все в тот же контейнер Deleted Objects. В этом состоянии объект остается на протяжении срока жизни удаленного объекта. Пока объект находится в состоянии удаленный, его можно восстановить без потери атрибутов или членства в группах.

Когда срок жизни удаленного объекта заканчивается, он переводится в состояние утилизированный. В этом состоянии его атрибуту isRecycled присваивается значение true, связанные значения атрибутов (группы и др.), наряду с большинством обычных атрибутов удаляются, так же, как при отсутствие корзины. Объект, переведенный в это состояние, невозможно восстановить обычными способами. По истечении срока жизни утилизированного объекта он физически удаляется сборщиком мусора.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-10

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-10

Условия для включения корзины

Корзина Active Directory впервые появилась в Windows Server 2008 R2. По умолчанию она неактивна и для ее включения необходимо соблюдение следующих условий:

1) Уровень функционирования леса должен быть не ниже Windows Server 2008 R2;
2) В лесу не должно быть контролеров домена под управлением Windows Server 2003;
3) Если лес изначально создавался на базе Windows Server 2003, необходимо осуществить обновление схемы.

Для обновления схемы надо выполнить adprep /forestprep на контроллере домена с ролью мастера схемы, выполнить adprep /domainprep /gpprep на контроллере домена с ролью мастера инфраструктуры. Если есть контроллер домена только для чтения (RODC), запустить на нем adprep /rodcprep.

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

Условия для включения корзины

Корзина Active Directory впервые появилась в Windows Server 2008 R2. По умолчанию она неактивна и для ее включения необходимо соблюдение следующих условий:

1) Уровень функционирования леса должен быть не ниже Windows Server 2008 R2;
2) В лесу не должно быть контролеров домена под управлением Windows Server 2003;
3) Если лес изначально создавался на базе Windows Server 2003, необходимо осуществить обновление схемы.

Для обновления схемы надо выполнить adprep /forestprep на контроллере домена с ролью мастера схемы, выполнить adprep /domainprep /gpprep на контроллере домена с ролью мастера инфраструктуры. Если есть контроллер домена только для чтения (RODC), запустить на нем adprep /rodcprep.

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

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

Графического интерфейса для работы с Active Directory Recycle Bin в Server 2008 R2 нет. Майкрософт предлагает два способа работы с корзиной — утилита LDP или модуль Active Directory для PowerShell. На мой взгляд LDP имеет не очень дружелюбный интерфейс, поэтому воспользуемся вторым способом.

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

Get-ADOptionalFeature ′Recycle Bin Feature′

Как видите, у корзины нет активных областей (EnabledScopes), значит она не активна.
Графического интерфейса для работы с Active Directory Recycle Bin в Server 2008 R2 нет. Майкрософт предлагает два способа работы с корзиной — утилита LDP или модуль Active Directory для PowerShell. На мой взгляд LDP имеет не очень дружелюбный интерфейс, поэтому воспользуемся вторым способом.

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

Get-ADOptionalFeature ′Recycle Bin Feature′

Как видите, у корзины нет активных областей (EnabledScopes), значит она не активна.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-11

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-11

Включим корзину следующей командой:

Enable-ADOptionalFeature –Identity ‘CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration, DC= contoso, DC= com’ –Scope ForestOrConfigurationSet –Target ‘contoso.com’

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-12

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-12

Способы увеличить время атрибутов msDS-DeletedObjectLifetime и tombstoneLifetime

1. ADSIEdit идем в Контекст именования и дальше по пути CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=contoso,DC=com, Правым кликом попадаем в свойства. Нас интерисует msDS-DeletedObjectLifetime и tombstoneLifetime

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-13

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-13

2. Способ LDP. запускаем на DC эту утилитку. Нажимаем подключение-Привязка

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-14

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-14

Выбираем привязать текущего пользователя.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-15

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-15

Далее Вид-Дерево

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-16

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-16

Далее пишем DN домена.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-17

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-17

Переходит по пути  CN=Directory Service,CN=WindowsNT,CN=Services,CN=Configuration,DC=contoso,DC=com

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-18

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-18

И щелкаем правым кликом Изменить.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-19

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-19

Добавляем нужные параметры и вводим новые значения.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-20

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-20

Все готово

3. PowerShell

Set-ADObject -Identity “CN=Directory Service,CN=Windows NT,
CN=Services,CN=Configuration,DC=contoso,DC=com” –Partition
″CN=Configuration,DC=contoso,DC=com″ –Replace:@{″msDS-DeletedObjectLifetime″ = 365}

И такое-же значение дадим для tombstoneLifetime:

Set-ADObject -Identity ″CN=Directory Service,CN=Windows NT,
CN=Services,CN=Configuration,DC=contoso,DC=com″ –Partition
“CN=Configuration,DC=contoso,DC=com” –Replace:@{″tombstoneLifetime″ = 365}
Процедура восстановления

В качестве примера возьмем учетную запись пользователя Ivanov Vasiliy и удалим ее. Прощай Vasiliy

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-21

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-21

1.LDP

Для восстановления воспользуемся утилитой LDP. LDP — это служебная программа для работы с Active Directory, немного схожая с проводником Windows. В Windows Server 2008 она включена в состав операционной системы, в Server 2003 входит в средства поддержки (Support tools) и устанавливается отдельно, с установочного диска.

Для запуска LDP нажимаем Win+R и в строке выполнить вводим ldp. Затем идем в меню Connection, выбираем пункт Connect и в открывшемся окне вводим имя контроллера домена, к которому надо подключиться. Если вы запускаете LDP на контроллере домена, то можно просто ввести localhost.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-22

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-22

Теперь необходимо пройти проверку подлинности. Открываем меню Connection, выбираем Bind (Привязка), вводим учетные данные и жмем OK. Для работы нам понадобятся учетные данные пользователя с правами администратора домена или предприятия (только они имеют право просматривать и восстанавливать объекты в контейнере Deleted Objects).

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-23

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-23

Контейнер Deleted objects надежно скрыт от посторонних глаз, и для того, чтобы его увидеть, необходимо включить элемент управления LDAP «Возврат удаленных объектов». Для этого открываем меню Options и выбираем пункт Controls, чтобы вывести диалог элементов управления. Открываем список Load Predefined, в нем выбираем пункт Return Deleted Objects (Вернуть удаленные объекты) и нажимаем кнопку Check in. Это добавит идентификатор объекта (OID) для элемента управления «Вернуть удаленные объекты» (1.2.840.113556.1.4.417) в список активных элементов управления. Нажимаем OK, чтобы сохранить настройки элемента управления.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-24

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-24

Затем открываем меню View, выбираем режим просмотра Tree, в поле BaseDN выбираем DC=contoso,DC=com.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-25

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-25

Заходим в корень, раскрываем контейнер Deleted Objects и видим перечень удалённых объектов. В этом перечне находим нужный нам объект-пользователя CN=Ivanov Vasily. Кликаем правой клавишей мыши на найденом объекте и в выпадающем меню выбираем пункт Modify. Кстати, будьте готовы к тому, что в Deleted Objects очень много объектов, что может затруднить поиск.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-26

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-26

Для восстановления объекта надо провести две операции:

1) Удалить отметку об удалении — набираем в строке Attribute: isDeleted, в поле Operation выбираем Delete и нажимаем Enter;
2) Переместить из Deleted objects в исходный контейнер — набираем в поле Attribute: distignuishedName, в поле Values пишем: CN=Ivanov Vasily, OU=Managers, DC=contoso, DC=com (это исходный DN пользователя). Исходный контейнер пользователя можно посмотреть в правом окне, он записан в атрибуте lastKnownParent. В качестве операции выбираем Replace и опять нажимаем Enter.

Далее отмечаем оба пункта Synchronous и Extended и жмём кнопку Run.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-27

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-27

2. AdRestore

AdRestore предлагает достаточно удобный и простой интерфейс командной строки для восстановления объектов Active Directory. Хотя он не очень гибок, использовать его гораздо легче, чем LDP. При запуске без параметров AdRestore выдаст список всех объектов-захоронений в контейнере Deleted Objects дефолтного домена. Для поиска конкретного объекта в качестве параметра можно использовать имя (частично или полностью) объекта, например:

adrestore ivanov

В результате этой команды будут выведены все объекты-захоронения в контейнере CN=Deleted Objects, которые содержат строку ivanov в атрибуте CN или OU — программа использует поисковый фильтр LDAP cn=*ivanov* и ou=*ivanov*. Не самый гибкий способ поиска, но в большинстве ситуаций он работает.

Если нужно не только найти объект, но и восстановить его, необходимо вместе с именем объекта указать параметр –r , вот так:

adrestore -r ivanov

Эта команда предложит восстановить каждый подходящий объект-захоронение. И еще, AdRestore всегда восстанавливает объект в контейнер, указанный в атрибуте lastKnownParent объекта-захоронения, нет никакого способа указать другой контейнер.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-28

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-28

Ну и для тех, кому не подходят первые два варианта, есть графическая утилита ADRestore.NET. Она абсолютно бесплатна, взять ее можно здесь. ADRestore.NET позволяет производить поиск объекта по нескольким параметрам, а также дает возможность выбрать определенный контроллер домена и авторизоваться под пользователем, отличным от текущего. Пользоваться программой очень просто. Нажимаем на кнопку Enumerate Tombsones, и нам выдается список удаленных объектов. Выбираем нужный объект и жмем Restore Object. Вот и все.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-29

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-29

3. Использование AD Recycle Bin (Windows Server 2008 R2)

1. Запускаем от имени администратора Модуль Active Directory для Windows PowerShell.
2. В командной строке Active Directory module for Windows PowerShell введите следующую команду:

PS C:> Get-ADObject -Filter {displayName -eq «user»} -IncludeDeletedObjects | Restore-ADObject
В данном примере
-Filter {displayName -eq «user»} указывает, что какую информацию об объекте AD необходимо получить (в примере – об объекте с отображаемым именем пользователя “user),
-IncludeDeletedObjects означает, что поиск осуществляется по удаленным объектам
Restore-ADObject непосредственно осуществляет восстановление объекта AD.

Поиск удаленных объектов
1. Запускаем от имени администратора Модуль Active Directory для Windows PowerShell.
2. В командной строке Active Directory module for Windows PowerShell вводим следующие команды для получения необходимой информации:

Вывод информации об удаленных объектах в домене acme.com

Get-ADObject -SearchBase «CN=Deleted Objects,DC=acme,DC=com» –IncludeDeletedObjects
Получаем информацию о том, в какой OU состоял удаленный пользователь

Get-ADObject -SearchBase «CN=Deleted Objects,DC=acme,DC=com» -ldapFilter:»(msDs-lastKnownRDN=User)» –IncludeDeletedObjects –Properties lastKnownParent

Где User – отображаемое имя пользователя

В итоге получаем информацию о принадлежности к OU указанного пользователя (с помощью -Properties lastKnownParent)

Поиск всех удаленных объектов, которые входили в данную OU

В качестве примера берем различающееся имя OU Finance_Department, которое было получено после запуска предыдущего командлета (Finance_Department\0ADEL:e954edda-db8c-41be-bbbd-599bef5a5f2a).

Get-ADObject –SearchBase «CN=Deleted Objects,DC=acme,DC=com» -Filter {lastKnownParent -eq ‘OU=Finance_Department\0ADEL:e954edda-db8c-41be-bbbd-599bef5a5f2a,CN=Deleted Objects,DC=acme,DC=com’} -IncludeDeletedObjects -Properties lastKnownParent | ft

3. Восстанавливаем учетные записи и OU, которые являются непосредственными дочерними объектами OU Finance_Department (помните, что на этом этапе различающееся имя Finance_Department уже восстановлено в значение OU=Finance_Department,DC=acme,DC=com)

Get-ADObject -SearchBase «CN=Deleted Objects,DC=acme,DC=com» -Filter {lastKnownParent -eq «OU=Finance_Department,DC=acme,DC=com»} -IncludeDeletedObjects | Restore-ADObject
Опционально (восстановление вложенных OU)

4. Восстанавливаем учетные записи, входящие во вложенную OU (например, OU Admins, которая входит в состав OU Finance Department. Различающееся имя в нашем примере было восстановлено в значение OU=Admins,OU=Finance_Department,DC=acme,DC=com)

Get-ADObject -SearchBase «CN=Deleted Objects,DC=acme,DC=com» -Filter {lastKnownParent -eq «OU=Admins,OU=Finance_Department,DC=acme,DC=com»} -IncludeDeletedObjects | Restore-ADObject
Подробную справку о командлетах и их параметрах вызвав командлет Get-Help, например Get-Help Get-ADObject

4. Принудительное восстановление с помощью NTDSUTIL

Стандартным способом (но, однако, не самым подходящим) является принудительное восстановление из резервной копии в режиме Directory Service Restore Mode. Он обладает серьезными недостатками: нужно перезагружать сервер, а во-вторых, восстанавливать из резервной копии состояние системы и помечать, какие объекты не будут перезаписаны процессом репликации.
Восстановление осуществляется с помощью утилиты командной строки NTDSUTIL. Утилита становится доступной после установки роли AD DS. Используя ее, можно восстановить как OU со всем содержимым, так и отдельный объект.
Работа утилиты основана на мгновенных снимках (снапшотах) Active Directory, которые делаются при помощи службы VSS.

Внимание! В ходе принудительного восстановления AD внутренний номер версии восстанавливаемых объектов увеличивается. После подключения контроллера домена к сети эти объекты будут реплицированы по всему домену, а восстановленная версия становится глобально действующей.

Порядок действий:
1. Нам необходимо восстановить OU Finance_Department из домена acme.com
2. Загружаемся в режиме DSRM (в загрузочном меню вызывается нажатием клавиши F8) и выполните регистрацию с паролем, DSRM, заданным во время работы Dcpromo. AD не загружается, база данных переводится в автономный режим.

Внимание! Невозможно выполнить восстановление, если на контроллерах домена Server 2008 и выше остановлена служба NTDS AD.

3. Восстановите системное состояние из резервной копии, созданной до аварии.

Внимание! Не перезагружайте компьютер.

В снимке, полученном при помощи ntdsutil, присутствует как сам объект, так и его атрибуты. Образ можно монтировать и подключать в качестве виртуального LDAP-сервера, экспортирующего объекты. Запускаем ntdsutil:

> ntdsutil
ntdsutil: snapshot
Просматриваем список доступных снимков:

снимок: list all
1: 2009/04/22:23:18 {8378f4fe-94c2-4479-b0e6-ab46b2d88225}

2: C: {732fdf7f-9133-4e62-a7e2-2362227a8c8e}

3: 2009/04/23:00:19 {6f7aca49-8959-4bdf-a668-6172d28ddde6}

4: C: {cd17412a-387b-47d1-9d67-1972f49d6706}

Монтируем командой mount c указанием номера или {ID}:

снимок: mount 4
Снимок {cd17412a-387b-47d1-9d67-1972f49d6706} установлен как C:$SNAP_200904230019_VOLUMEC$
Снимок смонтирован.

4. Запустите команду

Для восстановления подразделения Finance_Department

> ntdsutil «authoritative restore» «restore subtree ou=Finance_Department,dc=acme,dc=com» q q
В итоге будет восстановлена OU Finance_Department с входящими в нее учетными записями и вложенной OU Admins
Для восстановления отдельной учетной записи, например, c отображаемым именем Oleg

> ntdsutil «authoritative restore» «restore object cn=Oleg,ou=Finance_Department,dc=acme,dc=com» q q
5. Необходимо подтвердить предупреждения безопасности. Затем будет выдано сообщение, подобное показанному на рисунке 3. Обратите внимание на сформированные текстовые и LDIF-файлы.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-30

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-30

Перезагрузите DC в нормальном режиме запуска операционной системы.
7. Зарегистрируйтесь на DC и откройте командную строку. Импортируйте LDIF-файл, экспортированный на шаге 5, выполнив команду

ldifde -i -f
ar_20110221-151131_links_contoso.com.ldf
где ar_20110221-151131_links_contoso.com.ldf – имя созданного LDIF-файла.
8. В результате будут импортированы значения связанных атрибутов (такие, как членство в группах) для восстановленных объектов

Внимание! Если в лесу содержится несколько доменов, необходимо использовать текстовый файл, экспортированный на шаге 6 для восстановления членства в локальных группах других доменов.

Итог:
Учетные записи и объекты восстановлены, однако база Active Directory была недоступна в течение определенного периода времени. Вы также зависите от наличия актуальных баз данных AD, полагаясь на данный метод восстановления.

5. Процесс восстановления объектов можно очень сильно упростить, если воспользоваться утилитой NetWrix Active Directory Object Restore Wizard.

Сразу хочется отметить, что в нашу компанию постоянно обращаются администраторы, которые удалили объекты AD и теперь хотят их восстановить. Предлагаемое нами решение – NetWrix Active Directory Object Restore Wizard — хоть и позволяет упростить процесс восстановления объектов (например, восстановить OU со всеми объектами и их атрибутами за пару кликов), однако все равно не творит чудеса – программа должна быть установлена в домене и периодически делать снимки AD. Поэтому рекомендуем после прочтения статьи все-таки поставить программу работать (есть бесплатная версия с периодом восстановления за последние 4 дня), чтобы в следующий раз не испытывать таких проблем с восстановлением объектов.
Утилита позволяет восстанавливаться удаленные объекты за пару кликов, а в том случае, если программа работала до удаления объектов в домене, то восстановление происходит со всеми атрибутами. В итоге Вы получаете возвращенные учетные записи за пару минут без серьезных сбоев в работе организации. Также следует отметить то, что программа позволяет восстанавливать удаленные почтовые ящики.

Работа с программой сводится к следующим шагам:
1. Запускается мастер NetWrix Active Directory Object Restore Wizard.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-31

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-31

2. Выбирается режим восстановления:
• Только из tombstone-объектов (если программа не была установлена до этого в домене)
• Восстановление с использованием снапшотов (если программа была установлена и был сделан хотя бы один снапшот)

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-32

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-32

3. По результатам анализа выводится список удаленных объектов с их первоначальной иерархией и объектами

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-33

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-33

4. Выберите те OU или объекты, которые необходимо восстановить, и нажмите далее
5. В зависимости от того, была ли установлена программа раньше или нет:
• Если не была, то необходимо вручную восстановить членство в группах и пароли пользователей
• Если программа была установлена, то восстановление на этом закончено и все будет работать так, как будто ничего не произошло.

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-34

Корзина Active Directory windows server 2008R2 и методы восстановления объектов-34

Как Вы можете видеть, восстановление объектов занимает гораздо меньше времени, нежели с использованием штатных инструментов восстановления объектов Active Directory.
Но восстановление объектов – это только одна из сторон программы. Вы также можете откатывать изменения объектов – вплоть до значения одного атрибута – программа предназначена и для этого.

При удалении любого объекта в Active Directory (пользователя, группы, компьютера или OU), вы можете восстановить его. В этой статье мы рассмотрим, как восстановить удаленный объект в AD с помощью PowerShell и графических инструментов.

Сначала разберемся, что происходит при удалении объекта из каталога AD. Поведение AD при удалении объектов зависит от того включена ли Active Directory Recycle Bin или нет (по умолчанию отключена). В обоих случаях объект не удаляется физически, а помечается как удаленный (атрибут isDeleted = true) и перемещается в специальный контейнер Deleted Objects (не отображается в обычных mmc оснастках управления AD). Однако при включенной корзине AD все атрибуты и членство в группах сохраняется.

По умолчанию в течении 180 дней (определяется в атрибуте домена msDS-deletedObjectLifetime) вы можете восстановить удаленный объект. Если данный срок прошел, объект все еще остается в контейнере Deleted Objects, но большинство его атрибутов и связей очищаются (Recycled Object ). После истечения периода tombstoneLifetime (по умолчанию также 180 дней, но можно увеличить) объект полностью удаляется из AD автоматическим процессом очистки и не может быть восстановлен (можно восстановить только их резервной копии контроллера домен AD).

Содержание:

  • Корзина AD (Active Directory Recycle Bin)
  • Восстановление удаленного пользователя Active Directory
  • Восстановление удаленной OU и вложенных объектов с PowerShell

Корзина AD (Active Directory Recycle Bin)

AD Recycle Bin доступна в Active Directory начиная с функционального уровня домена Windows Server 2008 R2. В предыдущих версиях Windows Server процесс восстановления объектов AD также возможен, но требует довольно сложных манипуляция с помощью утилит ntdsutil (вплоть до авторитативного восстановления из бэкапа AD в режиме Directory Service Restore Mode) или ldp.exe. Кроме того, благодаря корзине вы не потеряете атрибуты объекта и членство в группах.

Проверьте функциональный уровень леса (в моем примере Windows2016Forest):

Get-ADForest |Select-Object forestmode

проверить уровень домена forestmode из powershell

Проверьте, что корзина AD включена для вашего домена (по умолчанию она отключена):

Get-ADOptionalFeature “Recycle Bin Feature” | select-object name,EnabledScopes

Если значение EnabledScopes не пустое, значит в вашем домене корзина Active Directory уже включена.

проверить, что включена корзина active directory

Если нужно включить Active Directory Recycle Bin, используется командлет Enable-ADOptionalFeature:

Enable-ADOptionalFeature –Identity ‘CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=ConfigurationDC=winitpro,DC=ru’ –Scope ForestOrConfigurationSet –Target ‘winitpro.ru’

Примечание. Корзину AD необходимо включить до того, как вы удалили объект из домена. После включения фичи Active Directory Recycle Bin отключить ее нельзя. Подробнее о корзине AD смотрите в статье.

Восстановление удаленного пользователя Active Directory

Попробуем удалить пользователя AD, а затем восстановить его из корзины AD.

С помощью командлета Get-ADUser выведем значения атрибута пользователя IsDeleted (он пустой).

get-aduser a.novak -Properties *| Select-Object IsDeleted

Теперь удалим учетную запись пользователя:

Remove-ADUser a.novak

атрибут IsDeleted

Чтобы найти удаленную учетную запись пользователя в корзине AD, воспользуйтесь командлетом Get-ADObject с параметром IncludeDeletedObjects:

Get-ADObject -Filter 'Name -like "*novak*"' –IncludeDeletedObjects

Get-ADObject includeDeletedObjects - найти удаленные объекты active directory

Как вы видите, пользователь нашелся в контейнере Deleted Objects.

Проверим значение атрибута IsDeleted, контейнер, в котором находился пользователе перед удалением (LastKnownParent), а также список групп, в которых он состоял:

Get-ADObject -Filter 'Name -like "*novak*"' –IncludeDeletedObjects -Properties *| select-object Name, sAMAccountName, LastKnownParent, memberOf, IsDeleted|fl

Restore-ADObject восстановление удаленного пользователя ad из powershell

Если вы не помните имя пользователя, которого удалили, можно вывести полный список объектов, доступных в корзине Active Directory:

Get-ADObject –filter {Deleted -eq $True -and ObjectClass -eq "user"} –includeDeletedObjects

Чтобы восстановить учетную запись пользователя, скопируйте значение атрибута ObjectGUID и выполните команду:

Restore-ADObject -Identity ‘3dc33c7c-b912-4a19-b1b7-415c1395a34e’

Либо можно восстановить пользователя по его SAMAccountName:

Get-ADObject -Filter 'SAMAccountName -eq "a.novak"' –IncludeDeletedObjects | Restore-ADObject

Откройте консоль ADUC и проверьте, что учетная запись пользователя была восстановлена в том же самом OU, где она находилась до удаления.

восстановленный пользователь ad

Также вы можете восстановить удалённый объект из графической консоли Active Directory Administrative Center.

  1. Запустите консоль dsac.exe;
  2. Найдите контейнер Deleted Objects, в нем находятся все удаленные объекты AD;
  3. Щелкните по объекту, который нужно восстановить и выберите Restore (для восстановления в исходный OU), либо Restore to (восстановление в произвольный раздел AD);

восстановление удаленного пользователя в консоли Active Directory Administrative Center

Аналогичным образом можно восстановить в Active Directory удаленную группу, компьютер или контейнер.

Восстановить удаленную группу:

Get-ADObject -Filter { Deleted -eq $True -and ObjectClass -eq 'group' -and Name -like '*Allow*' } –IncludeDeletedObjects| Restore-ADObject –verbose

Восстановить компьютер:

Get-ADObject -Filter { Deleted -eq $True -and ObjectClass -eq 'computer' -and Name -like '*spb-fs02*' } –IncludeDeletedObjects| Restore-ADObject –verbose

восстановление удаленной группы ad

Восстановление удаленной OU и вложенных объектов с PowerShell

Например, у вас на каком-то OU была отключена опция “Protect object from accidental deletion” и вы случайно удалили OU вместе со всеми пользователями, компьютерами и группами.

восстановление удаленного контейнера organizational unit (OU) в AD

Сначала нужно восстановить корневой OU:

Get-ADObject -Filter { Deleted -eq $True -and ObjectClass -eq 'organizationalunit' -and Name -like '*SPB*' } –IncludeDeletedObjects| Restore-ADObject

Затем все вложенные OU:

Get-ADObject -Filter { Deleted -eq $True -and ObjectClass -eq 'organizationalunit' -and LastKnownParent -eq 'OU=SPB,DC=winitpro,DC=ru' } –IncludeDeletedObjects| Restore-ADObject

Теперь можно восстановить все удаленные объекты в этих OU по параметру LastKnownParent (пользователей, компьютеры, группы, контакты):

Get-ADObject -Filter { Deleted -eq $True} –IncludeDeletedObjects -Properties *| Where-Object LastKnownParent -like '*OU=SPB,DC=winitpro,DC=ru'| Restore-ADObject

Active Directory — одна из самых важных служб для сетей Windows, любые сбои в ее работе сказываются на всех пользователях сети. При неполадках в Active Directory очень важно иметь отработанные сценарии аварийного восстановления. Одна из наиболее распространенных причин сбоя службы — случайное удаление объектов, поэтому предлагаю вам познакомиться с некоторыми способами восстановления удаленных объектов в Active Directory.

Итак, что делать, если вы случайно удалили из Active Directory нужного пользователя (компьютер, группу, контейнер и т.п. )?

Отвечу на вопрос, который сразу возникает в подобной ситуации — создать новый объект гораздо проще, чем пытаться восстановить старый, и в некоторых ситуация это допустимо. Но давайте представим, что произойдет при создании, скажем, нового пользователя взамен удаленного. Да, мы можем дать ему точно такое же имя, и он даже сможет зайти под ним в сеть, но и все! Попытавшись получить доступ к ресурсам, на которые у него раньше были права, он получит отказ.

А дело в том, что Active Directory различает объекты не по имени, а по специальному идентификатору — Security Identifier (SID). Это уникальный идентификатор безопасности, который присваивается объекту в момент его создания и остается с ним даже после удаления. А поскольку каждый SID уникален, то вновь созданный пользователь, вне зависимости от имени, получит свой SID и будет распознан системой как совершенно другой пользователь. При этом будет потеряна вся информация, которая была закреплена за старой учетной записью, и придется все делать заново — раздавать права, включать пользователя в группы, настраивать программы, и много других ″интересных″ моментов.

Поэтому, чтобы избежать проблем (да и просто для общего развития) стоит иметь представление о способах восстановления удаленных объектов в Active Directory.

Что происходит с объектом AD при удалении

Для начала разберемся с тем, что происходит после того как вы нажали Delete и объект исчез из оснастки управления.

При удалении объекта из каталога происходит следующее: сначала объект помечается как удаленный, для чего атрибуту isDeleted объекта присваивается значение true, затем большинство атрибутов из объекта удаляется, объект переименовывается и перемещается в специальный контейнер — Deleted Objects. Теперь он зовется объектом-захоронением и недоступен для обычных операций в AD.

Объект-захоронение невидим в оснастках управления MMC, а для большинства служебных программ его вообще не существует.  Однако физически данные все еще здесь — просто они невидимы. Зачем же Active Directory хранит удаленные объекты в базе данных?

А вот зачем: будучи невидимым для остальных процессов, объект-захоронение все еще видим для процесса репликации. Чтобы удостовериться в том, что удаление выполнено полностью, на всех контроллерах домена, содержащих удаленный объект, AD реплицирует объект-захоронение на все контроллеры в домене. Другими словами, объект-захоронение используется для репликации удаления по всей Active Directory.

Естесственно, удаленные объекты не могут храниться в контейнере Deleted Objects вечно. С периодичностью раз в 12 часов контроллер домена производит сборку мусора. Сборщик мусора проверяет все объекты-захоронения и физически удаляет те, чей срок жизни больше, чем срок жизни объектов-захоронений.

Срок жизни объекта-захоронения определяется атрибутом tombstoneLifetime и по умолчанию составляет 180 дней (60 дней для лесов Windows 2000). Посмотреть текущее значение tombstoneLifetime и изменить его можно следующим способом.

Открываем редактор ADSIEdit и в качестве точки подключения (Connection Point) выбираем «Select or Type a Distinguished Name or Naming Context»В пустом поле вводим путь CN=Directory Service,CN=Windows NT, CN=Services, CN=Configuration, DC=contoso, DC=com (для домена contoso.com).

запуск ADSIEdit и подключение к контексту именования

Нажимаем OK и в оснастке появляется новый контекст именования. Разворачиваем его и в открывшемся окне находим интересующий нас атрибут tombstoneLifetime. Как видите, он действительно равен 180 дням.

параметр tombsoneLifetime в ADSIEdit

Получается что пока не истек срок жизни объекта-захоронения, удаленный объект физически находится в базе AD, и соответственно может быть поднят из могилы восстановлен.

Процедура восстановления

В качестве примера возьмем учетную запись пользователя Ivanov Vasiliy и удалим ее. Прощай Vasiliy 🙁

удаляем пользователя в оснастке ADUC

Для восстановления  воспользуемся утилитой LDP. LDP — это служебная программа для работы с Active Directory, немного схожая с проводником Windows. В Windows Server 2008 она включена в состав операционной системы, в Server 2003 входит в средства поддержки (Support tools) и устанавливается отдельно, с установочного диска.

Для запуска LDP нажимаем Win+R и в строке выполнить вводим ldp. Затем идем в меню Connection, выбираем пункт Connect и в открывшемся окне вводим имя контроллера домена, к которому надо подключиться. Если вы запускаете LDP на контроллере домена, то можно просто ввести localhost.

запуск утилиты ldp

Теперь необходимо пройти проверку подлинности. Открываем меню Connection, выбираем Bind (Привязка), вводим учетные данные и жмем OK. Для работы нам понадобятся учетные данные пользователя с правами администратора домена или предприятия  (только они имеют право просматривать и восстанавливать объекты в контейнере Deleted Objects).

привязка к учетным данным в ldp

Контейнер Deleted objects надежно скрыт от посторонних глаз, и для того, чтобы его увидеть, необходимо включить элемент управления LDAP «Возврат удаленных объектов». Для этого открываем меню Options и выбираем пункт Controls, чтобы вывести диалог элементов управления. Открываем список Load Predefined, в нем выбираем пункт Return Deleted Objects (Вернуть удаленные объекты) и нажимаем кнопку Check in. Это добавит идентификатор объекта (OID) для элемента управления «Вернуть удаленные объекты» (1.2.840.113556.1.4.417) в список активных элементов управления.  Нажимаем OK, чтобы сохранить настройки элемента управления.

включение элемента управления ldap

Затем открываем меню View, выбираем режим просмотра Tree, в поле BaseDN выбираем DC=contoso,DC=com.

открываем дерево объектов домена

Заходим в корень, раскрываем контейнер Deleted Objects и видим перечень удалённых объектов. В этом перечне находим нужный нам объект-пользователя CN=Ivanov Vasily. Кликаем правой клавишей мыши на найденом объекте и в выпадающем меню выбираем пункт Modify. Кстати, будьте готовы к тому, что в Deleted Objects очень много объектов, что может затруднить поиск.

выбираем удаленный объект

Для восстановления объекта надо провести две операции:

1) Удалить отметку об удалении — набираем в строке Attribute: isDeleted, в поле Operation выбираем Delete и нажимаем Enter;
2) Переместить из Deleted objects в исходный контейнер — набираем в поле Attribute: distignuishedName, в поле Values пишем: CN=Ivanov Vasily, OU=Managers, DC=contoso, DC=com (это исходный DN пользователя). Исходный контейнер пользователя можно посмотреть в правом окне, он записан в атрибуте lastKnownParent. В качестве операции выбираем Replace и опять нажимаем Enter.

Далее отмечаем оба пункта Synchronous и Extended и жмём кнопку Run.

восстанавливаем удаленный объект c помощью ldp

Всё! Теперь объект пользователя полностью восстановлен, в чем можно убедиться, открыв консоль Active Directory Users and Computers.

Процедура восстанавления с помощью LDP достаточно проста, если разобраться 🙂 , но очень громоздка и неудобна. Попробуем немного упростить себе жизнь и используем для восстановления утилиту командной строкиAdRestore от компании Sysinternals. Эта программа не требует установки, достаточно скопировать исполняемый файл на диск компьютера и запустить его.

AdRestore предлагает достаточно удобный и простой интерфейс командной строки для восстановления объектов Active Directory. Хотя он не очень гибок, использовать его гораздо легче, чем LDP. При запуске без параметров AdRestore выдаст список всех объектов-захоронений в контейнере Deleted Objects дефолтного домена. Для поиска конкретного объекта в качестве параметра можно использовать имя (частично или полностью) объекта, например:

adrestore ivanov

В результате этой команды будут выведены все объекты-захоронения в контейнере CN=Deleted Objects, которые содержат строку  ivanov в атрибуте CN или OU — программа использует поисковый фильтр LDAP cn=*ivanov* и ou=*ivanov*. Не самый гибкий способ поиска, но в большинстве ситуаций он работает.

Если нужно не только найти объект, но и восстановить его, необходимо вместе с именем объекта указать параметр –r , вот так:

adrestore -r ivanov

Эта команда предложит восстановить каждый подходящий объект-захоронение. И еще, AdRestore всегда восстанавливает объект в контейнер, указанный в атрибуте lastKnownParent объекта-захоронения, нет никакого способа указать другой контейнер.

восстановление объектов с помощью утилиты adrestore

Ну и для тех, кому не подходят первые два варианта, есть графическая утилита ADRestore.NET. Она абсолютно бесплатна, взять ее можно здесь. ADRestore.NET позволяет производить поиск объекта по нескольким параметрам, а также дает возможность выбрать определенный контроллер домена и авторизоваться под пользователем, отличным от текущего. Пользоваться программой очень просто. Нажимаем на кнопку Enumerate Tombsones, и нам выдается список удаленных объектов. Выбираем нужный объект и жмем Restore Object. Вот и все.

восстановление объектов с помощью утилиты adrestore.NET

Атрибуты объекта

При удалении объекта и помещении его в контейнер Deleted Objects удаляется большая часть его атрибутов. Так у объекта пользователя сохраняются только идентификаторы SID и GUID, а также LastKnownParent (контейнер, в котором находился объект до удаления) и  SAMAccountName (имя учетной записи SAM). Соответственно, при возвращении объекта к жизни любым из вышеописанных способов восстановятся только эти атрибуты, все остальное придется вводить заново.

Для наглядности возьмем восстановленную нами учетную запись и попробуем ее активировать. Система тут же выдаст нам ошибку и  сообщит о том, что пароль не соответствует требованиям безопасности домена. На самом деле все проще, пароль был удален вместе с другими атрибутами и теперь его просто нет.

попытка включить восстановленную учетную запись

Путем несложных манипуляций некоторые атрибуты объектов можно заставить сохраняться при удалении. Сделать это можно, внеся изменения в схему Active Directory. Скажу сразу, атрибуты уже удаленных записей это не вернет.

Для внесения изменений воспользуемся редактором ADSIEdit. Открываем его и подключаемся к разделу Schema нашей Active Directory.

подключение к схеме с помощью ADSIEdit

Для примера возьмем атрибут Description учетной записи пользователя.

выбор атрибута пользователя

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

выбор атрибута пользователя в ADSIEdit

Найдя атрибут, открываем его двойным щелчком мыши и заходим в свойства. Нас интересует параметр searchFlags, который отвечает за сохранение атрибута в объекте-захоронении. У каждого атрибута он свой, в нашем случае searchFlags вообще не задан, т.е. равен 0.

свойства атрибута Descriptions объекта AD

Для того, чтобы заданный атрибут не удалялся, необходимо у searchFlags  включить третий бит, или другими словами, выставить третий бит равным 1. Поскольку searchFlags представлен в десятичном виде, то сначала переведем его в двоичный. Получится двоичное число 0000.  Биты нумеруются справа-налево, начиная с нулевого бита.  Находим третий бит (он будет четвертым по счету справа) и ставим его равным 1. Получаем двоичное число 1000. Переводим его обратно и получаем 8 в десятичной системе. Ставим 8 в значении searchFlags. Если все сделано правильно, то в значении параметра появится надпись «Сохранять при удалении» (PRESERVE_ON_DELETE).

изменение свойств атрибута Descriptions объекта AD

Теперь даже при удалении и восстановлении учетной записи пользователя атрибут Description будет сохранен. Однако этот способ подходит не для всех атрибутов. Так например атрибуты, описывающие членство в группах Active Directory, подобным образом сохранить невозможно. Для решения этой проблемы в Windows Server 2008 R2 появился новый инструмент под названием Active Directory Recycle Bin, или корзина Active Directory. О ней я расскажу во второй части статьи…

Active Directory (Active Directory Recycle Bin).

Корзина Active Directory – это специальная функция/фича/возможность восстановления удалённых объектов. Теперь после удаления объекта из Active Directory, он не просто удаляется, а перемещается в специальный контейнер Deleted Objects (хотя и раньше объект не просто удалялся, но об этом ниже).

И если вы потом захотите восстановить объект, то это можно будет сделать, вытащив его из контейнера Deleted Objects.

Функция Корзины Active Directory работает только в режиме работы леса и домена Windows Server 2008 R2! И кроме того эта функция по умолчанию выключена.

Включаем корзину Active Directory.

>У меня домен зовется net.local, поэтому вы меняйте эти значения на свои.

Включить функцию корзины можно двумя способами, либо через ldp.exe либо при помощи командлетов PowerShell.

1) При помощи ldp.exe (входит в состав Support Tools).

Запускаем Ldp.exe. Затем нажимаем Connection>Connect, пишем localhost, порт 389.

Затем нажимаем View>Tree, в BaseDN выбираем

CN=Configuration,DC=net,DC=local

Раскрываем CN=Configuration…. переходим к CN=Partitions…, нажимаем правой кнопкой по CN=Partitions… и выбираем Modify.

Очищаем поле DN, в строке Attribute пишем:

в строке Values пишем

CN=Partitions,CN=Configuration,DC=net,DC=local:766ddcd8acd0445ef3b9a7f9b6744f2a

выбираем Add и нажимаем Enter и потом Run.

2) При помощи PowerShell:

Запускаем ПускAdministrative ToolsActive Directory Module for Windows PowerShell и пишем:

EnableADOptionalFeature Identity CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration, DC=net,DC=local Scope ForestOrConfigurationSet Target net.local

Восстанавливаем удалённые объекты.

Способа восстановления удалённых объектов стандартными средствами два, при помощи ldp.exe или при помощи PowerShell.

В тестовых целях я создал пользователя «robot», включил его в группу Domain Admins, а затем удалил. Теперь будем пытаться его восстановить.

1) Восстанавливаем удалённые объекты при помощи ldp.exe:

Запускаем Ldp.exe. Затем нажимаем Connection>Connect, пишем localhost, порт 389.

Нажимаем Options>Controls, в меню Load Predefined выбираем Return deleted objects, жмём OK.

Затем нажимаем View>Tree, в BaseDN выбираем DC=net,DC=local.

Раскрываем корень DC=net,DC=local, и видим контейнер Deleted Objects, дважды по нему щелкаем и видим перечень удалённых объектов.

Я вижу здесь удалённого мной ранее пользователя robot. Чтобы его восстановить, я нажимаем по нему правой кнопкой и выбираем Modify.

Пишем в строке Attribute: isDeleted, ниже выбираем Delete, нажимаем кнопку Enter, затем пишем в поле Attribute:

в поле Values пишем:

CN=robot,CN=Users,DC=net,DC=local

(это исходный DN пользователя). Если вы не знаете исходный ОГП пользователя, то его можно посмотреть в правом окне, он записан в атрибуте lastKnownParent.

Далее ставим обе галки Synchronous и Extended и жмём Run.

Всё! Теперь объект пользователя полностью восстановлен, в чем вы можете убедиться, открыв консоль Active Directory Users and Computers.

2) Восстанавливаем удалённые объекты при помощи PowerShell:

Для того, чтобы найти объекты, используется командлет Get-ADObject. Чтобы он искал и удалённые объекты, нужно использовать ключ -IncludeDeletedObjects. А для восстановления объектов используется командлет Restore-ADObject. Когда необходимо восстановить объект, или тем более несколько объектов, удобнее всего использовать перенаправление (pipeline) вывода командлета Get-ADObject на вход командлета Restore-ADObject:

GetADObject Filter {sAMAccountName eq «robot»} IncludeDeletedObjects | RestoreADObject

Здесь я задал фильтр, чтобы укзать что я хочу восстановить только объект, который имеет атрибут sAMAccountName: robot. В общем, одна такая простая строчка, и объект полностью восстановлен!

Естественно, что использование PowerShell намного удобнее и предпочтительнее, чем восстановление при помощи ldp.exe.

источник


Прочитано:
291

В предыдущей заметке я показал, как включить функцию корзины в домене polygon.local. Но для восстановления удаленных объектов в Active Directory нет удобного. В данной заметке я покажу способ восстановления объектов Active Directory посредством PowerShell.

Заходим на домен контроллер (dc1.polygon.local) с учетной записью (ekzorchik) входящей в группу «Domain Admins».

Запускаем Powershell с правами администратора:

«Start» – «All Programs» – «Accessories» – «Windows PowerShell» – согласно скриншоту ниже:

Открываем PowerShell с правами Администратора.

Окно «PowerShell» должно принять следующий вид: (в верхнем левом углу

Administrator: Windows PowerShell)

Правильно запущенное окно консоли PowerShell с правами администратора.

К примеру, удалим пользователя test:

C:Usersekzorchik>dsquery user -name test

«CN=test,OU=TEST_OU,DC=polygon,DC=local»

C:Usersekzorchik>dsrm «CN=test,OU=TEST_OU,DC=polygon,DC=local » -noprompt

dsrm succeeded: CN=test,OU=TEST_OU,DC=polygon,DC=local

Загрузим модуль работы с восстанавливаемые объектами:

PS C:Usersekzorchik> import-module activedirectory

Чтобы посмотреть какие объекты были удалены:

PS C:Usersekzorchik> get-adobject -searchbase «CN=Deleted Objects,DC=polygon,DC=local» -Filter * -IncludeDeletedObjects

Deleted           : True

DistinguishedName : CN=Deleted Objects,DC=polygon,DC=local

Name              : Deleted Objects

ObjectClass       : container

ObjectGUID        : 85d891ea-c227-42c6-8935-f6719bdc7ecd

Deleted           : True

DistinguishedName : CN=testADEL:5f579ef1-36b3-47c9-a5b9-58d8674181f8,CN=Deleted Objects,DC=polygon,DC=local

Name              : test

DEL:5f579ef1-36b3-47c9-a5b9-58d8674181f8

ObjectClass: user

ObjectGUID        : 5f579ef1-36b3-47c9-a5b9-58d8674181f8

В этом выводе отображается, какой объект (CN=test) был удален и его ObjectGUID с помощью которого мы сможем восстановить этот объект.

Вывод удаленных объектов в домене Active Directory.

Чтобы убедиться в правильности восстановление объекта, должно существовать подразделение, где допустим, был пользователь. На это стоит обращать внимание:

PS C:Usersekzorchik>Get-adobject –searchbase “CN=Deleted Objects,DC=polygon,DC=local” –ldapFilter “name=*test*” –includedeletedobjects

, если удален и контейнер, то восстанавливаем сначала его, а потом и учетную запись пользователя.

Из предыдущего запроса копируем значение ObjectGUID для восстановления:

PS C:Usersekzorchik>restore-adobject -identity «5f579ef1-36b3-47c9-a5b9-58d8674181f8»

И вуаля, объект восстановлен. Вывод имеющегося пользователя с именем test уже появился в том контейнере, в котором был удален:

C:Usersekzorchik>dsquery user -name test

«CN=test,OU=TEST_OU,DC=polygon,DC=local»

Как видим, появление функции корзины (Recycle Bin) в Windows Server 2008 R2 предполагает своевременное решение проблем случайного удаления объектов. Данный способ применителен, если удалили только пользователя, а не контейнер в котором находился пользователь. На этом всё. Удачи!!!


Архив номеров / 2009 / Выпуск №6 (79) / Резервирование и восстановление объектов Active Directory в Windows Server 2008/2008 R2

Рубрика:

Администрирование / 
Продукты и решения

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Google+

Сергей Яремчук

Резервирование и восстановление объектов
Active Directory в Windows Server 2008/2008 R2

Служба Active Directory является стандартом в корпоративных сетях, работающих под управлением Windows. Обеспечивая администратора эффективными инструментами, внешне простая в использовании, она является тем не менее довольно сложной по своей структуре и составу. К тому же никто не застрахован от сбоев в работе операционной системы, программ, отказа «железа» или ошибки человека. Поэтому нужно быть всегда готовым к тому, что придется предпринять меры по восстановлению работы в целом или отдельных элементов.

О необходимости резервного копирования

В каждой новой версии Windows Server появляются новые инструменты, упрощающие и автоматизирующие процесс управления, с которыми может справиться даже начинающий администратор. Одним из распространенных мнений среди таких «специалистов» является вообще отказ от резервирования контроллеров доменов. Аргумент простой. В организациях среднего и крупного размеров используется несколько контроллеров доменов, это аксиома. Вероятность того, что в один день выйдут из строя все, практически равна нулю. Если только их не вынесут по постановлению прокурора или воспользовавшись ошибкой в организации охраны, но этот случай, согласитесь, из ряда вон выходящий. Поэтому если выходит из строя один контроллер домена, все остальные работают в штатном режиме, а ему на замену подготавливается новый сервер. Отчасти они правы, но резервирование хотя бы двух контроллеров (на случай ошибки), имеющих роли FSMO (Flexible single-master operations, операции с одним исполнителем), все же обязательно. Так рекомендуют Microsoft и здравый смысл. Причем есть еще один главный довод в пользу резервирования. Простота управления приводит к росту процента ошибок. Удалить случайно объект Active Directory довольно просто. И необязательно это может быть умышленное действие, это может произойти, например, в результате ошибки при выполнении скрипта. И чтобы восстановить все настройки, потребуется приложить некоторые усилия.

Если ошибка обнаружена не сразу и изменение уже реплицировалось на другие контроллеры, в этой ситуации вам и понадобится резервная копия. Я уже не говорю о небольших организациях с одним контроллером домена.

Документом, показывающим возможности по резервированию и восстановлению данных в Windows Server 2008, является статья Джила Киркпатрика (Gil Kirkpatrick) «Резервное копирование и восстановление Active Directory в Windows Server 2008» в [1], которую и рекомендую к прочтению. Но если вопросы резервирования расписаны полностью, то восстановление показано, на мой взгляд, несколько поверхностно и не дает полной картины. Эта статья, собственно, и появилась из заметок, составленных на тот крайний случай.

Система архивации данных Windows Server

В Windows Server 2008 на замену NT Backup пришел абсолютно новый компонент «Система архивации данных Windows Server» (Windows Server Backup, WBS), основанный на VSS (Volume Shadow Copy Service, сервис теневого копирования тома). WBS – довольно мощное приложение, позволяющее восстанавливать систему, в том числе и на другой комьютер, поддерживающее некоторые сервисы, в списке которых значится и AD.

Установить WBS просто, следует лишь активировать компонент «Возможности системы архивации данных в Windows Server» плюс подпункт «Система архивации данных Windows Server». Последний включает MMC-консоль управления и новое средство командной строки Wbadmin. Дополнительно доступен пункт «Программы командной строки», который включает сценарии PowerShell, позволяющие создавать и управлять резервными копиями.

В командной строке установка выглядит еще проще:

> servermanagercmd -install Backup-Features

Или в Server Core:

> ocsetup WindowsServerBackup

Управлять резервированием можно из MMC-консоли или в командной строке. Так, чтобы создать резервную копию критичных томов, следует ввести:

> wbadmin Start Backup -backupTarget:E: -allCritical

С полной копией, думаю, все понятно. В контексте статьи нас больше интересует резервное копирование состояния системы при помощи параметра SystemStateBackup. Кстати, в первых сборках Windows Server 2008 этой функции не было, а через MMC она недоступна:

> wbadmin Start SystemStateBackup -backupTarget:E:

В этом случае производится пофайловое копирование состояния системы и некоторых сервисов, в числе которых есть и AD. Самое неудобное в этом случае, что каждый раз приходится создавать полную копию (свежеустановленная система приблизительно 7 Гб), а процесс происходит несколько медленнее, чем обычное резервирование. Но зато восстановить такую копию можно на другой компьютер с идентичной конфигурацией.

В команде копирование производится на другой том. Но в KB944530 [2] рассказано, как разрешить возможность резервного копирования на любой том. Для этого нужно добавить параметр типа DWORD с именем AllowSSBTo AnyVolume и значением 1 в ветку реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceswbengineSystemStateBackup.

С резервированием обычно здесь проблем не возникает, все просто и понятно, трудности начинаются, когда необходимо восстановить работоспособность AD или случайно удаленных объектов. Использование SystemState-копий позволяет обойтись без восстановления всей системы, а просто вернуть предыдущее состояние служб AD. Графическая консоль, предназначенная для восстановления данных, копий SystemState не видит (находятся на диске в другом каталоге SystemStateBackup). Если попробовать запустить процесс восстановления в рабочей системе, получаем сообщение о том, что так как архив содержит службу доменов Active Directory, операцию необходимо производить в режиме восстановления службы каталогов (Directory Services Restore Mode, DSRM). Это один из минусов, так как контроллер домена в это время будет недоступен.

Восстановление состояния системы из SystemState-копии

Восстановление состояния системы из SystemState-копии

Новый механизм загрузки BCD, появившийся в Windows, начиная с Vista, в котором убран старый добрый boot.ini, заставляет нас произвести еще ряд действий, чтобы попасть в DSRM. В составе ОС имеется специальная утилита, предназначенная для редактирования параметров загрузчика (в Интернете можно найти графические утилиты, но я считаю им не место на сервере). Создаем новую копию записи:

> bcdedit /copy {default} /d «Directory Service Repair Mode»

Запись успешно скопирована в {df127c16-2ec7-11de-bc25-000c2971dfb5}

Теперь устанавливаем ее, указав в качестве параметра полученный ID:

> bcdedit /set «{df127c16-2ec7-11de-bc25-000c2971dfb5}» safeboot dsrepair

Если команды вводятся с использованием PowerShell, то {ID} следует вводить в скобках «{ID}», иначе получаем ошибку:

The set command specified is not valid

По окончании проверяем:

> bcdedit /enum

В списке должен появиться новый пункт.

Перезагружаемся, выбираем пункт Directory Service Repair Mode и, нажав <F8>, отмечаем «Режим восстановления службы каталогов». Обратите внимание, что в этом режиме следует для входа использовать данные администратора локальной системы, а не доменную учетную запись.

Далее все просто. Получаем список резервных копий (команда wbadmin «видит» копии SystemState).

> wbadmin get versions

Время архивации: 22.05.2009 1:02

Идентификатор версии: 05/21/2009-21:02

Можно восстановить: Приложение(ия), Состояние системы

И восстанавливаем, использовав к качестве параметра полученный идентификатор версии:

> wbadmin start systemstaterecovery –version:05/21/2009-21:02

Если восстановление производится с локального диска, параметр BackupTarget, показывающий wbadmin, где взять резервную копию, указывать необязательно. Если копия находится на сетевом ресурсе, его прописываем так:

-BackupTarget:\computerbackup -machine:server-ad

Несмотря на предупреждение о том, что:

Операция восстановления приводит к повторной синхронизации всего

реплицированного содержимого на локальном компьютере после завершения

восстановления. Возможно, это приведет к задержке и ошибкам.

Восстановление службы каталогов происходит обычно без проблем. После перезагрузки встречаем сообщение о том, что начатая операция по восстановлению успешно завершена.

Перейдя в консоль управления Active Directory, обнаруживаем, что все находится на своих местах… кроме новых объектов, созданных уже после того, как было произведено резервирование. В принципе такой результат ожидаем. А для восстановления отдельных объектов есть совсем другой путь (даже несколько).

Принудительное восстановление объектов при помощи NTDSUTIL

В состав Windows Server входит утилита командной строки NTDSUTIL, предназначенная для обслуживания, управления и контроля Active Directory Domain Services (AD DS) и Active Directory Lightweight Directory Services (AD LDS). В системе утилита становится доступной после установки роли AD DS. В Windows Server 2008 ее функциональность несколько изменилась. Так, в Windows Server 2003 с ее помощью можно было восстановить всю базу данных, но в 2008 с этим отлично справляется wbadmin, наверное, поэтому ее возможности по восстановлению чуть подсократили. Теперь, используя NTDSUTIL, можно восстановить организационное подразделение со всем содержимым и отдельный объект.

Ее работа основана на мгновенных снимках Active Directory, сделанных при помощи службы VSS. Снимок представляет собой компактную резервную копию работающей службы Active Directory со всеми каталогами и файлами. Создание такой копии в отличие от SystemState происходит очень быстро и занимает несколько секунд.

> ntdsutil

Переходим в контекст snapshot:

ntdsutil: snapshot

Запускаем команду создания снимка (краткая форма – «ac i ntds»):

снимок: activate instance ntds

Активный экземпляр «ntds».

снимок: create

Через некоторое время получаем информацию о созданном снимке, выходим:

снимок: quit

ntdsutil: quit

Теперь, чтобы восстановить базу Active Directory, достаточно ввести «ntdsutil files repair» в командной строке режима DSRM, но нас интересует отдельный объект.

Просмотреть список удаленных объектов можно при помощи LDP.exe, воспользовавшись командлетами PowerShell Get-ADObject и Restore-ADObject (есть и другие варианты).

В LDP, например, следует подключить к серверу, выбрать «Параметры (Options) -> Элементы управления (Controls)» и в раскрывающемся списке «Предопределенная загрузка» (Load Predefined) установить параметр Return deleted objects. Затем переходим в «Вид -> Дерево», выбираем контекст домена. В итоге в дереве справа появится объект CN=Deleted Object, где и находим все удаленные объекты.

Теперь важное – при удалении объект теряет большую и важную часть своих свойств (в частности, пароль, managedBy, memberOf), поэтому после его восстановления он будет не совсем в том виде, как нам хотелось. Это все хорошо видно в LDP. Но здесь есть несколько вариантов:

  •  увеличить количество атрибутов, которые не будут затерты при удалении объекта в хранилище удаленных объектов;
  •  восстановить объект и вернуть ему атрибуты;
  •  и самый лучший – заблокировать объект от случайного удаления.

Восстановить удаленный объект можно несколькими способами. Самый удобный – утилита AdRestore Марка Руссиновича (Mark Russinovich) [3]. Скачиваем и вводим:

> adrestore -r user

Получаем объект с частью атрибутов.

Остальные методы расписаны в KB840001 [4], они не так просты, поэтому останавливаться на них не буду.

Восстанавливаем атрибуты объектов

В снимке, полученном при помощи ntdsutil, есть объект и его атрибуты. Образ можно монтировать и подключать в качестве виртуального LDAP-сервера, экспортирующего объекты. Вызываем ntdsutil:

> ntdsutil

ntdsutil: snapshot

Смотрим список доступных снимков:

снимок: list all

 1: 2009/04/22:23:18 {8378f4fe-94c2-4479-b0e6-ab46b2d88225}

2: C: {732fdf7f-9133-4e62-a7e2-2362227a8c8e}

 3: 2009/04/23:00:19 {6f7aca49-8959-4bdf-a668-6172d28ddde6}

4: C: {cd17412a-387b-47d1-9d67-1972f49d6706}

Монтируем командой mount c указанием номера или {ID}:

снимок: mount 4

Снимок {cd17412a-387b-47d1-9d67-1972f49d6706} установлен как C:$SNAP_200904230019_VOLUMEC$

Снимок смонтирован. Теперь можно перейти при помощи Проводника в указанный каталог и просмотреть, что находится внутри. Выходим из ntdsutil, введя дважды quit, образ по-прежнему будет смонтирован. Теперь, используя утилиту dsamain, создаем виртуальный LDAP-сервер, указав в качестве параметра путь к файлу ntds.dit, который находится в смонтированном снимке. В качестве порта LDAP-сервера я выбрал 10000:

> dsamain -dbpath C:$SNAP_200904230019_VOLUMEC$WindowsNT DSntds.dit -ldapPort 10000

EVENTLOG (Informational): NTDS General / Управление службой : 1000

Завершен запуск доменных служб Active Directory (Майкрософт) версии 6.0.6001.18000

Можно подключиться к виртуальному LDAP-серверу при помощи консоли «Active Directory – пользователи и компьютеры», указав в качестве параметра номер порта 10000, и просмотреть находящиеся внутри объекты.

Экспортируем параметры нужного объекта в ldf-файл, подробнее об ldifde написано в KB237677 [5].

> ldifde -r «(name=user)» -f export.ldf -t 10000

Установка связи с «testcomp.domain.ru»

Вход от имени текущего пользователя с помощью SSPI

Экспорт каталога в файл export.ldf

Поиск элементов…

Записываются элементы.

1 элементов экспортировано

В полученном ldf-файле следует изменить параметр changetype: add на changetype: modify и затем новый файл импортировать в каталог:

> ldifde -i -z -f import.ldf

Созданный ldf-файл необходимо подправить

Созданный ldf-файл необходимо подправить

Есть и другие варианты импорта/экспорта с использованием DSGET/DSMOD, PowerShell и так далее.

> dsget user cn=user,ou=ou1,dc=domain,ds=ru -s localhost:10000 -memberof | dsmod group -c -addmbr cn=user,ou=ou1,dc=domain,ds=ru

Другой метод основан на том, что каждый объект Active Directory имеет номер версии. При различии номеров версии на двух контролерах домена новым и правильным считается тот объект, у которого номер версии выше. Это и использует механизм «принудительного восстановления» (authoritative restore), когда восстановленному при помощи ntdsutil объекту присваивается номер выше и он принимается AD как новый. Для работы механизма принудительного восстановления сервер также перезагружается в DSRM.

> ntdsutil «authoritative restore» «restore object cn=user,ou=group,dc=domain,dc=ru» q q

Аналогично восстанавливается подразделение:

> ntdsutil «authoritative restore» «restore subtree ou=group,dc=domain,dc=ru» q q

Защита объектов от удаления

Начну с того, что вместе с Windows Server 2008 R2 [6] администраторы получили еще один функциональный уровень домена, и в итоге такой сервер может быть настроен в одном из четырех уровней – Windows 2000, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2. Его можно указать на этапе установки при помощи dcpromo или повысить, если был выбран меньший уровень, используя меню Reise the domain (forest) functional level в Active Directory Admin Center, о котором чуть дальше. Причем возможна и обратная операция – понижение функционального уровня домена и леса, если они находятся на уровне Windows Server 2008 R2, его можно вернуть на уровень Windows Server 2008, ниже – на 2003 или 2000 – нельзя. Большинство из новых возможностей будут доступны только в том случае, если домен находится на уровне R2. Так, начиная с Windows Server 2008 в свойстве объекта появился дополнительный пункт, позволяющий его защитить от случайного удаления. Точнее, он был и раньше, но здесь его уже не приходится искать.

В Windows Server 2008 он доступен при создании подразделения (OU, Organizational Unit) и называется «Защитить объект (контейнер) от случайного удаления» (Protect object from accidental deletion). Такой флажок появляется только при создании нового OU. Для уже имеющихся OU, а также вновь создаваемых групп, компьютеров и учетных записей его можно активировать во вкладке «Объект» окна свойств (видно при активном «Вид -> Дополнительные компоненты (Advanced)»).

Установка searchFlags для нужного атрибута позволит сохранить его при удалении

Установка searchFlags для нужного атрибута позволит сохранить его при удалении

В R2 нужный пункт Protect from accidental deletion имеется в свойствах отдельной учетной записи, компьютера, группы и подразделения, на самом видном месте. Достаточно установить здесь флажок и при попытке удалить объект, администратор получает предупреждение о невозможности произвести требуемую операцию. При этом нужно помнить, что флажок защищает от удаления лишь тот объект, в котором он установлен. То есть если он активирован для группы, на отдельные элементы, входящие в ее состав, эта установка никак не распространяется. То есть по-прежнему можно будет удалить любой объект внутри, если он не защищен персональным флажком. Чуть другая ситуация при удалении незащищенного OU. Если в его составе нет защищенных объектов, OU будет полностью удален. Но если такие объекты есть, то следует установить в появившемся окне флажок «Использовать элемент управления сервера «Удалить поддерево» (Use delete subtree server control). Иначе вместо удаления самого OU со всеми элементами будет фактически произведена попытка очистки OU от объектов, не имеющих защиты. Причем, как показывают эксперименты, очистка эта будет неполной, так как, столкнувшись с первым же защищенным объектом, программа прекращает работу, выдав предупреждение. Это характерно и для Windows Server 2008, и для R2 RC.

Две консоли, подключенные к AD и виртуальному LDAP-серверу

Две консоли, подключенные к AD и виртуальному LDAP-серверу

В Windows Server 2003 защитить объект от удаления можно, лишь установив в разрешениях запрет на «Удаление», «Удалить поддерево» и «Удалить все дочерние объекты» (Deny для Delete, Delete subtree, Delete All Child Objects). Такой подход не очень удобен, особенно если администрированием системы занимаются несколько человек и объекты все же нужно удалять.

Защищаем объект от случайного удаления в Windows Server 2008

Защищаем объект от случайного удаления в Windows Server 2008

Объект защищен от случайного удаления

Объект защищен от случайного удаления

Защищаем объект от случайного удаления в Windows Server 2008 R2

Защищаем объект от случайного удаления в Windows Server 2008 R2

При удалении дерева нужно подтвердить удаление всех объектов

При удалении дерева нужно подтвердить удаление всех объектов

Active Directory Recycle Bin

В Windows Server 2008 R2 появилась новая функция Active Directory Recycle Bin (AD RB), автоматически активируемая, когда домен находится на уровне Windows Server 2008 R2. По своей сути она схожа с корзиной, используемой в Windows, в которую помещаются удаленные файлы, и случайно удаленный объект может быть быстро и без проблем восстановлен. Причем восстановленный из AD RB объект сразу же получает и все свои аттрибуты. По умолчанию время «жизни» удаленного объекта в AD RB составляет 180 дней, после этого переходит в состояние Recycle Bin Lifetime, теряет атрибуты и через некоторое время полностью удаляется. Изменить эти значения можно при помощи параметра msDS-deletedObjectLifetime. Если при установке AD был выбран уровень ниже R2, а затем был поднят командой:

PS C:> Set-ADForestMode –Identity domain.ru -ForestMode Windows2008R2Forest

то AD RB следует активировать отдельно. Для этого используется командлет Enable-ADOptionalFeature PowerShell:

PS C:> Enable-ADOptionalFeature –Identity ‘CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service, /

CN=Windows NT,CN=Services,CN=Configuration, DC=domain,DC=ru’ –Scope Forest –Target ‘domain.ru’

Восстановить удаленный объект теперь очень просто:

PS C:> Get-ADObject -Filter {displayName -eq «user»} -IncludeDeletedObjects | Restore-ADObject

Командлеты Get-ADObject и Restore-ADObject имеют большое количество параметров, например, позволяя найти OU, к которой принадлежала удаленная учетная запись, и затем восстановить весь OU. В документе Restore a Deleted Active Directory Object [7] все очень подробно изложено.

Заключение

Несмотря на возможности новых серверных ОС от Microsoft, резервное копирование контроллеров Active Directory должно проводиться планомерно и постоянно, без этого невозможно восстановление отдельных объектов или OU. Причем помимо Windows Server Backup следует создавать снимки при помощи ntdsutil. Процесс резервирования упрощается, а объемы данных уменьшаются, если контроллер домена не выполняет других функций.

  1. Джил Киркпатрик. Резервное копирование и восстановление Active Directory в Windows Server 2008 – http://technet.microsoft.com/ru-ru/magazine/cc462796.aspx.
  2. Статья KB944530. Error message when you try to perform a system state backup in Windows Server 2008 – http://support.microsoft.com/kb/944530.
  3. Утилита AdRestore – http://technet.microsoft.com/ru-ru/sysinternals/bb963906.aspx.
  4. Документ KB840001. How to restore deleted user accounts and their group memberships in Active Directory – http://support.microsoft.com/kb/840001.
  5. Документ KB237677. «Использование средства LDIFDE для импорта и экспорта объектов каталогов в Active Directory» – http://support.microsoft.com/kb/237677/ru.
  6. Страница, посвященная Windows Server 2008 R2 – http://www.microsoft.com/windowsserver2008/ru/ru/default.aspx.
  7. Документ Step 2: Restore a Deleted Active Directory Object –http://technet.microsoft.com/en-us/library/dd379509.aspx.

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Google+

До Windows Server 2008 R2, восстановление удаленных из базы AD объектов, требовало выполнение авторитативного восстановления всей базы AD, либо приходилось использовать third-party software, которое по факту восстанавливало из специального контейнера объект, с перезаписью части атрибутов, либо создавало новый объект, с атрибутами старого. 
Начиная с версии Windows Server 2008 R2, в службе каталогов Active Directory появилась давно ожидаемая функция корзины (Recycle Bin) Active Directory, после ее включения, удаленные объекты помечаются как удаленные, но при этом сохраняют значения всех своих атрибутов. Для восстановления такого объекта, требуется лишь изменить атрибут, помечающий объект для удаления, что намного упрощает процесс восстановления случайно удаленных объектов. Важно понимать, что включение корзины нельзя отменить, ее можно только включить и нельзся выключить. 
Для включения корзины, лес AD должен иметь функциональный уровень не ниже Windows Server 2008 R2, как проверить текущий уровеннь функционирования леса можно прочитать в статье: Как определить функциональный уровень домена/леса Active Directory?
По умолчанию:

  • корзина Active Directory выключена, независимо от того,  это старый лес или вновь развернутый.
  • после включения корзины, удаленный объект может быть восстановлен в течение 180 дней. (Это значение определяется в атрибуте msDS-deletedObjectLifetime и может быть изменено)

Ниже будет рассмотрено два основных способа включения корзины Active Directory: Используя GUI и используя PowerShell.

Включение корзины Active Directory используя графический интерфейс

Включение корзины через GUI появилось начиная с Windows Server 2012 и выполняется используя оснастку Active Directory Administrative Center (ADAC). Ее можно запустить из окна 
Server Manager -> Tools -> Active Directory Administrative CenterTools Active Directory Administrative Center
или используя пункт
Start -> Windows Administrative tools -> Active Directory Administrative Center
Active Directory Administrative Center
В запустившемся окне Active Directory Administrative Center, в левой колонке выбрать домен, и нажав правую кнопку мыши выбрать пункт меню Enable Recycle Bin.
Enable Recycle Bin
В появившемся окне, подтверждаем свое желание включить корзину AD, Нажав OK.
Enable Recycle Bin ConfirmationДалее появится окно, подтверждающее, что корзина включена, и началась репликация данного изменения по всему лесу.
Replication Recycle Bin

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

Для включения корзины AD, используя PowerShell необходимо:
1. Подгрузить модуль Active Directory for Windows PowerShell, если этого не было сделано ранее

Import-Module ActiveDirectory

2. Выполнить команду по активации корзины:

Enable-ADOptionalFeature 'Recycle Bin Feature' -Scope ForestOrConfigurationSet -Target <RootForest>

где, RootForest — это корневой домен леса

Восстановление удаленных элементов Active Directory при включенной корзине

Для восстановления удаленных элементов, в службе каталогов Active Directory, в которое ранее уже была включена корзина, необходимо:
1. Запустить Active Directory Administrative Center (ADAC)
2. Перейти в контейнер Deleted Objects
3. Найти удаленный элемент и нажать:
Restore — для восстановления в OU в котором ранее располагался данный объект
Restore To — восстановить с выбором нового места расположения объекта

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

В этой статье я постараюсь рассказать о новой функции в Windows Server 2008 R2 дающей новые возможности по восстановлению удаленных объектов Active Directory.

Active Directory Recycle Bin (ADRB) – “корзина AD” – позволяет минимизировать простой вашей службы каталогов за счет расширенных возможностей по сохранению и восстановлению случайно удаленных объектов Active Directory без необходимости прибегать к восстановлению из бекапа и перезагрузки контроллеров домена.

После включения функции ADRB все атрибуты удаленных объектов начинают сохраняться, что позволяет после восстановления получить объект в том же состоянии, в каком он был непосредственно перед удалением. Например, при восстановлении пользователя он автоматически получает членство в группах, в которых он был и соответствующие полномочия, которыми обладал в момент удаления в домене.

ADRB функционирует как в среде Active Directory Domain Services (AD DS) так и в Active Directory Lightweight Directory Services (AD LDS).

ВАЖНО

  • По умолчанию функция ADRB в Windows Server 2008 R2 не включена. Прежде чем включить эту функцию, вам необходимо будет поднять функциональный уровень леса до уровня windows Server 2008 R2, что в свою очередь требует иметь Windows Server 2008 R2 на всех контроллерах домена в лесу или на всех серверах содержащих AD LDS.
  • В этой версии Windows Server 2008 R2 процесс включения функции ADRB необратим. После включения этой функции вы уже не сможете ее отключить.

Сценарии восстановления удаленных объектов AD

Windows Server 2008 R2 предлагает два подхода к управлению удаленными объектами AD. Вы можете выбирать, работать, не включая функциею ADRB или включить ее.

Если функция ADRB не включена, то система Windows Server 2008 R2 функционирует при удалении объектов AD так же, как и предыдущие системы Windows Server 2003/2008. При удалении объект не удаляется физически из AD, а лишь помечается как удаленный — “tombstone”. У объекта удаляется большинство атрибутов, кроме жестко привязанных, часть изменяются и дописываются новые. Если не запрещено объект перемещается в скрытый контейнер CN=Deleted Objects.

Восстановить такой объект возможно из бекапа AD, применив режим authoritative restore, что бы объект был реплицирован на остальные контроллеры домена. Минус такого восстановления в том, что необходимо перегружать контроллер домена в режиме Directory Services Restore Mode (DSRM). В этом режиме он не может обслуживать пользователей. Так же при таком методе будут потеряны все изменения сделанные после бекапа.

Так же такой объект можно реанимировать из состояния “tombstone”. Этот метод восстановления позволяет избежать простоя контроллера домена из-за перезагрузки в режиме DSRM. Но и этот метод имеет свои минусы, удаленные атрибуты придется восстанавливать, а так же членство в группах.

Более подробно о методах восстановления объектов, читайте в моей прошлой статье Восстановление удаленных элементов в Active Directory.

Вот схема жизненного цикла объекта AD в Windows Server 2003/2008 и Windows Server 2008 R2 с не включенной функцией ADRB.

ad_scheme1

Если функция ADRB включена, то в системе Windows Server 2008 R2 удаление объекта AD происходит по-другому, чем описано выше. Вот схема жизненного цикла объекта AD в Windows Server 2008 R2 с включенной функцией ADRB.

ad_scheme2

Давайте рассмотрим подробнее что изменилось.

Удаленный объект

После включения функции ADRB, когда происходит удаление объекта AD, система сохраняет все атрибуты этого объекта и помечает этот объект как “логически удаленный”, это новый статус объекта в Windows Server 2008 R2. Удаленный объект перемещается в контейнер CN=Deleted Objects, где находится в состоянии “логически удаленный” в течение времени жизни удаленного объекта (deleted object lifetime).

Вы можете восстановить удаленный объект используя процесс восстановления “логически удаленных” объектов в течение времени жизни удаленного объекта (deleted object lifetime). В этот же период времени вы можете восстановить этот объект из бекапа используя режим authoritative restore.

Переработанный объект (Recycled)

После истечения времени жизни удаленного объекта (deleted object lifetime) “логически удаленный” объект становится “переработанным объектом” и большинство его атрибутов удаляются. “Переработанный объект” это новый статус объекта в Windows Server 2008 R2. Эти объекты остаются в контейнере CN=Deleted Objects в течение времени жизни переработанного объекта (recycled object lifetime). По окончании этого времени процесс garbage collection удаляет их физически из AD.

ВАЖНО

“Переработанный объект” не может быть восстановлен с использованием процесса восстановления “логически удаленных” объектов или реанимирован как объект “tombstone”. Это новый режим работы Windows Server 2008 R2.

Не пытайтесь восстанавливать “переработанный объект” с помощью бекапа, используя режим authoritative restore. Вместо этого Microsoft рекомендует восстанавливать “логически удаленный” объект в течение времени его жизни.

ВАЖНО.

После включения функции ADRB, все объекты которые были удалены и находились в состоянии “tombstone” переходят в состояние “переработанный объект”. Эти объекты больше не отображаются в контейнере CN=Deleted Objects и не подлежат восстановлению через ADRB. Восстановить эти объекты возможно только до включения функции ADRB с помощью бекапа, используя режим authoritative restore.

Время жизни удаленных и переработанных объектов

Время жизни удаленного объекта определяется значением атрибута msDS-deletedObjectLifetime, а время жизни переработанного объекта, значением атрибута tombstoneLifetime. По умолчанию значение атрибута msDS-deletedObjectLifetime равно нулю. Когда значение атрибута msDS-deletedObjectLifetime равно нулю, это говорит о том, что время жизни удаленного объекта равно времени жизни переработанного объекта. По умолчанию, время жизни переработанного объекта равно значению атрибута tombstoneLifetime, которое равно нулю. В Windows Server 2008 R2, когда значение атрибута tombstoneLifetime равно нулю, то время жизни переработанного объекта равно 180 дней. Итого в днях по умолчанию оба время жизни удаленного объекта равно 180 дней, затем он становится переработанным объектом на 180 дней и затем удаляется окончательно.

Вы можете изменять значения атрибутов msDS-deletedObjectLifetime и tombstoneLifetime в любое время. Если вы измените, значение по умолчанию атрибута msDS-deletedObjectLifetime, оно больше не будет коррелировать со значением атрибута tombstoneLifetime. О том как изменять значения этих атрибутов напишу чуть позже.

Восстановление объектов Active Directory из бекапа используя authoritative restore

Чтобы определить, можете ли вы использовать определенный бекап AD DS, чтобы успешно восстановить ранее удаленный объект через authoritative restore, Microsoft предлагает проверить значение времени жизни результирующего бекапа в вашем лесу Active Directory. Значением времени жизни результирующего бекапа в вашем лесу Active Directory, является количество дней в течение которых любой бекап в этом лесу Active Directory эффективен для восстановления среды Active Directory. (Задачи восстановления могут включать восстановление случайно удаленных данных или активацию контроллеров домена с носителей.)

Microsoft предполагает, что значением времени жизни результирующего бекапа является наименьший параметр двух атрибутов msDS-deletedObjectLifetime и tombstoneLifetime. Исходя из выше сказанного значение времени жизни результирующего бекапа по умолчанию равно 180 дням.

ВАЖНО

Microsoft рекомендует, чтобы значение времени жизни результирующего бекапа в вашей среде Active Directory было равно или больше чем 180 дней, чтобы гарантировать, что вы сможете использовать имеющиеся бекапы для authoritative restore в течении длительного времени.

Хотя Microsoft и позволяет изменять значения атрибутов msDS-deletedObjectLifetime и tombstoneLifetime, однако не рекомендует этого делать.

Если значение атрибута msDS-deletedObjectLifetime меньше значения атрибута tombstoneLifetime, то восстановление объектов с использованием authoritative restore возможно только в период действия атрибута msDS-deletedObjectLifetime .

Попытки восстановить переработанный объект с помощью authoritative restore не увенчаются успехом, т.к. после репликации восстановленный объект опять станет переработанным. Это правило так же работает если вы вручную перевели статус удаленного объекта в переработанный объект.

Восстановление объектов Group Policy (GP) или Exchange объектов

Вы можете использовать ADRB для восстановления всех удаленных объектов которые до этого хранились в AD DS. Однако если вы используете ADRB, чтобы восстановить объекты GP или Exchange объекты, вы восстановите только ту информацию, которая была в AD DS, а не полностью сами объекты.

Для создания и восстановления архивных копий объектов GP рекомендуется использовать оснастку Group Policy Management, а затем вручную создать связи с необходимыми сайтами, доменами или OU в AD DS. О том как это делается я напишу чуть позже.

Microsoft не рекомендует использовать ADRB для восстановления объектов Exchange, которые были удалены с помощью Exchange administrative tools. Вместо восстановления Microsoft рекомендует пересоздать такие объекты с помощью тех же инструментов Exchange administrative tools. Если же удаление произошло без применения инструментов Exchange administrative tools, то вы должны восстановить такие объекты через ADRB как можно быстрее. Однако, любые изменения конфигурации, которые произошли в среде между удалением этого объекта и его восстановлением, не будут восстановлены и могут привести к проблемам с Exchange.

Например, если вы используете ADRB, чтобы восстанавливать случайно удаленных получателей Exchange, таких как контакты, пользователи или группы рассылки, убедитесь, что повторно применили текущую политику Exchange или другие данные конфигурации к ним. Эти данные, возможно, были изменены с момента удаления объектов.

Требования для ADRB

Для того чтобы вы могли включить ADRB ваша среда должна соответствовать определенным требованиям.

Выполните следующие шаги перед включением функции ADRB в среде AD DS:

Запустите adprep для обновления вашей схемы AD необходимыми ADRB атрибутами. Вы должны как минимум обладать правами Schema Admin для совершения данной операции.

Важно

Если вы изначально устанавливаете лес AD на основе Window Server 2008 R2 вам не нужно выполнять adprep, ваша схема AD уже содержит необходимые атрибуты для нормального функционирования ADRB.

Если же вы устанавливаете новый контроллер Windows Server 2008 R2 в существующий лес Windows Server 2003 или Windows Server 2008 и затем оставшиеся сервера будете апгрейдить до Windows Server 2008 R2 вы должны запускать adprep, чтобы обновить схему AD необходимыми атрибутами необходимыми для работы ADRB.

  • Подготовить лес запустив adprep /forestprep на сервере держателе роли operation master
  • Подготовить домен запустив adprep /domainprep /gpprep на сервере держателе роли operation master
  • Если у вас в среде AD DS существует контроллер домена для чтения (RODC) вы должны так же запустить adprep /rodcprep
  • Убедитесь, что все контроллеры домена в лесу AD работают на Windows Server 2008 R2
  • Поднимите функциональный уровень леса AD до Windows Server 2008 R2.

В следующей части статьи я расскажу о том, как включить систему ADRB в вашей среде AD.

Понравилась статья? Поделить с друзьями:
  • В windows 11 пропал предпросмотр содержимого папок
  • В английской версии windows 10 иероглифы
  • В windows 11 появилась возможность запускать android приложения
  • В активаторе kms не активна кнопка активации windows
  • В windows 11 нельзя перетаскивать файлы в программы