Обзор
В данном документе рассматривается настройка резервного копирования в службе каталогов Active Directory информации для восстановления данных, защищенных с помощью технологии шифрования дисков BitLocker™ (BitLocker) и доверенного платформенного модуля (TPM). К информации для восстановления данных относятся пароли к каждому тому, зашифрованному с помощью BitLocker™, пароли владельцев TPM, а также информация для идентификации томов и компьютеров, содержащих информацию для восстановления. Возможно также сохранение архивов, содержащих ключи, использовавшиеся при шифровании данных, наряду с паролями доступа к этим ключам.
|
Примечание
|
|
В Microsoft® Windows Server® 2008 служба Active Directory называется Active Directory Domain Services
|
Резервное сохранение паролей для томов, защищенных с помощью BitLocker, позволяет администраторам восстанавливать информацию в случае блокировки тома. Благодаря этому ценные данные остаются доступными для пользователей с соответствующими правами.
Резервное сохранение информации владельцев модулей TPM позволяет администраторам локально или удаленно настраивать оборудование безопасности TPM для данных компьютеров. Например, администратору может понадобиться сбросить настройки TPM при списании компьютеров или их передачи для использования в других целях.
|
Важно:
|
|
Информацию для восстановления данных можно сохранить в Active Directory только на контроллерах домена под управлением Microsoft® Windows Server® 2003 SP1, Windows Server 2003 R2 или Windows Server 2008, но не более ранних версий Windows Server.
|
Для предварительного выпуска Windows Server 2008 можно следовать тем же инструкциям, что и для Windows Server 2003 SP1 или более поздних версий Windows Server, за одним исключением: начиная с Beta 3 нет необходимости в обновлении схемы, как описано ниже в данном документе.
|
Важно:
|
|
Выполните все последующие действия в тестовой среде либо во внерабочее время, прежде чем производить их в рабочих условиях.
|
Необходимые файлы
Для настройки Active Directory на резервное сохранение данных требуются следующие исполняемые сценарии и LDF-файлы, доступные для загрузки на веб-сайте Microsoft:
Загрузить эти файлы можно на странице http://go.microsoft.com/fwlink/?LinkId=78953.
Содержимое этих файлов и другая полезная информация содержится в следующих приложениях к данному документу:
|
Примечание.
|
|
Если вы использовали предварительный выпуск или бета-версию Windows Vista и настроили Active Directory с помощью предыдущих версий сценариев или расширений схем, вам необходимо загрузить и применить финальные версии этих файлов. Кроме того, если вы использовали предыдущие версии List-ACEs.vbs, перед выполнением следующих действий вам необходимо удалить созданные ранее записи управления доступом (ACE), относящиеся к BitLocker.
|
Предварительная информация
В данном разделе содержатся сведения о том, каким образом в Active Directory сохраняется информация для восстановления данных, защищенных BitLocker и TPM.
По умолчанию информация для восстановления данных не сохраняется. Администраторы могут настроить групповые политики для резервного сохранения информации BitLocker и TPM. Однако перед этим необходимо убедиться в том, что схема Active Directory была расширена (пользователем с правами администратора домена) указаниями на расположения хранилищ, а также что для выполнения резервного сохранения имеются нужные права доступа.
На компьютерах-клиентах служба Active Directory должна быть настроена раньше, чем BitLocker. В противном случае информация для восстановления с этих компьютеров не будет добавлена в Active Directory. Дополнительная информация содержится в разделе Вопросы и ответы данного документа.
Расположение информации для восстановления данных, зашифрованных BitLocker, в Active Directory
Информация для восстановления хранится в дочернем объекте объекта-компьютера. Другими словами, объект-компьютер является контейнером для объекта восстановления BitLocker.
Каждый объект восстановления BitLocker содержит пароль и прочую информацию для восстановления. В каждом объекте-компьютере может находиться несколько объектов восстановления BitLocker, так как каждый том, защищенный BitLocker, может иметь несколько паролей восстановления.
Имя объекта восстановления BitLocker содержит глобальный уникальный идентификатор (GUID), дату и время, обладая фиксированной длиной в 63 символа. Имя имеет вид:
<Дата и время создания объекта><GUID восстановления>
Например:
2005-09-30T17:08:23-08:00{063EA4E1-220C-4293-BA01-4754620A96E7}
Общее имя (cn) для объектов восстановления BitLocker - ms-FVE-RecoveryInformation. Каждый объект ms-FVE-RecoveryInformation обладает следующими атрибутами:
-
ms-FVE-RecoveryPassword
Этот атрибут содержит 48-значный пароль, используемый для восстановления тома, зашифрованного BitLocker. Пользователю необходимо ввести этот пароль для разблокирования тома при входе BitLocker в режим восстановления.
-
ms-FVE-RecoveryGuid
Этот атрибут содержит GUID, к которому относится пароль восстановления BitLocker. В режиме восстановления BitLocker этот GUID отображается для того, чтобы пользователь мог выбрать правильный пароль для разблокирования тома. GUID также включен в имя объекта восстановления.
-
ms-FVE-VolumeGuid
Этот атрибут содержит GUID, относящийся к тому, защищенному BitLocker.
В то время как пароль, содержащийся в атрибуте ms-FVE-RecoveryGuid, уникален для каждого пароля восстановления, GUID данного атрибута связан с томом, зашифрованным BitLocker.
-
ms-FVE-KeyPackage
В этом атрибуте содержится ключ шифрования BitLocker для данного тома, защищенный соответствующим паролем восстановления. С помощью этого ключа и пароля, содержащегося в атрибуте ms-FVE-RecoveryPassword, можно расшифровать даже фрагменты поврежденного тома, защищенного BitLocker). Ключ шифрования работает только для тома, имеющего соответствующий GUID (содержащийся в атрибуте ms-FVE-VolumeGuid). Чтобы использовать этот ключ, необходима специализированная программа.
Если вы работали с предварительными версиями BitLocker и Windows Vista, обратите внимание на изменения, внесенные в атрибуты объектов восстановления в окончательной версии:
-
Глобальные уникальные идентификаторы (GUID) добавлены в глобальный каталог для упрощения поиска внутри леса (isMemberOfPartialAttributeSet)
-
Прекращено использование закрытого бита атрибутов GUID (128-го бита searchFlags)
-
Размер каждого атрибута ограничен в целях предотвращения замедления работы при возможных DoS-атаках на базу данных Active Directory (rangeUpper).
-
Сделаны более ясными описания атрибутов (adminDescription).
-
Используется дополнительный бит для сохранения значений атрибутов при создании копий объектов (16-й бит searchFlags)
-
Используется дополнительный бит для создания поконтейнерного индекса для атрибутов GUID (2-й бит searchFlags)
Для получения дополнительной информации о синтаксисе атрибутов обратитесь к файлу расширения схемы в Приложении Г.
Расположение информации для восстановления данных, защищенных TPM, в Active Directory
Для каждого компьютера существует только один пароль владельца TPM. При инициализации TPM или при смене пароля хэш пароля владельца TPM сохраняется в качестве атрибута объекта-компьютера.
Обычное имя для атрибута TPM - ms-TPM-OwnerInformation.
Наверх страницы
Настройка Active Directory
Чтобы настроить Active Directory на резервное сохранение информации для восстановления данных, защищенных BitLocker и TPM, выполните следующие действия.
Проверка общих условий
Убедитесь в выполнении следующих условий:
-
Все контроллеры домена, доступные для клиентов с поддержкой BitLocker, работают под управлением Windows Server 2003 SP1 или более поздней версии Windows Server. На каждом контроллере домена в меню Пуск щелкните правой кнопкой мыши по значку Мой компьютер, в контекстном меню выберите пункт Свойства и перейдите на вкладку Общие.
Важно:
Если на вкладке Общие указана операционная система Windows Server 2003, но нет информации о пакете обновления, необходимо произвести обновление системы. Дополнительная информация об установке пакета обновления SP1 содержится на странице
http://go.microsoft.com/fwlink/?LinkID=43106 .
Важно:
Возможность сохранения информации для восстановления данных, защищенных BitLocker и TPM, на контроллерах домена под управлением Windows Server 2000 или Windows Server 2003 без SP1, не тестировалась и не поддерживается. Более того, в этих (и более ранних) операционных системах отсутствует функция «закрытый флаг» (confidential flag) Active Directory, позволяющая контролировать доступ к информации для восстановления BitLocker и TPM.
Закрытые флаги доступны в Windows Server 2003 с SP1 и более поздних версиях Windows Server. С их помощью права на чтение атрибутов, отмеченных такими флагами, предоставляются только администраторам домена и авторизованным пользователям. Расширения схемы BitLocker и TPM отмечают выбранные атрибуты как закрытые с помощью свойства "searchFlags". Дополнительная информация об этих флагах содержится в статье How the Active Directory Schema Works (EN).
BitLocker не требует особых режимов работы домена или леса. Однако на контроллерах домена под управлением более ранних версий Windows, чем Windows Server 2003 SP1, резервная информация BitLocker и TPM не будет защищена, поэтому рекомендуется обновить или заменить эти ОС, чтобы не использовать смешанный режим работы.
-
Для данного леса у вас имеются права администратора домена.
-
В вашем распоряжении имеются следующие файлы:
Расширение схемы
Выполнение приведенной ниже процедуры расширения схемы позволит сохранять информацию для восстановления данных в Active Directory. При использовании контроллера домена под управлением Windows Server "Longhorn" Beta 3 (или более поздней версии) необходимости в выполнении этой процедуры нет, так как требуемые расширения схемы уже содержатся в операционной системе.
Если на контроллере домена используется Windows Server "Longhorn" Beta 2, необходимо обновить схему до версии sch39 или более поздней, либо выполнить следующую процедуру.
|
Действия по расширению схемы Active Directory атрибутами BitLocker и TPM
|
|
-
Войдите на компьютер под учетной записью, входящую в группу «Администраторы схемы» (для расширения схемы требуется именно эта учетная запись). По умолчанию в состав группы «Администраторы схемы» входит учетная запись администратора в корневом домене леса. Для получения дополнительной информации обратитесь к разделу Granting access rights to make schema changes статьи How the Active Directory Schema Works (EN).
-
Убедитесь, что установленная операционная система Windows Server позволяет производить расширение схемы.
В Windows Server 2003 эта возможность присутствует по умолчанию. Для получения дополнительной информации, в том числе пошаговых инструкций по разрешению обновлений схемы, обратитесь к статье 285172 в Базе знаний Microsoft.
-
Убедитесь, что у вас есть доступ к контроллеру, являющемуся хозяином операций схемы в лесу Active Directory. Обновления схемы могут производиться только на компьютере, выполняющем функции хозяина операций схемы.
-
Найдите LDF-файл с названием BitLockerTPMSchemaExtension.ldf, содержащий расширение схемы.
Предварительную информацию об изменениях, вносимых расширениями схемы, можно найти в разделе «Предварительная информация» выше в данном документе.
Для получения дополнительной информации о расширениях схемы обратитесь к статье How the Active Directory Schema Works (EN).
-
Расширение схемы производится на контроллере домена, являющемся хозяином операций схемы, с помощью утилиты командной строки Ldifde. Например, для импорта расширения схемы в домен nttest.microsoft.com необходимо из-под учетной записи, принадлежащей группе Администраторы схемы, набрать в командной строке следующую команду:
ldifde -i -v -f BitLockerTPMSchemaExtension.ldf -c "DC=X" "DC=nttest,dc=microsoft,dc=com" -k -j .
Эта команда должна быть введена одной строкой.
Точка («.») является частью команды.
Использование параметра –k позволяет игнорировать ошибку “Object Already Exists” в случае совпадения фрагментов схемы с теми, что добавляются при расширении. Параметр –j . предписывает сохранение расширенного журнала в текущей папке.
|
Для получения дополнительной информации о параметрах утилиты Ldifde обратитесь к статье 237677 в Базе знаний Microsoft. Пример вывода этой команды содержится в Приложении Б к данному документу.
Установка прав доступа, необходимых для резервного сохранения пароля TPM
Процедура, приведенная ниже, создает запись управления доступом, разрешающую сохранение информации для восстановления данных, защищенных TPM.
В Windows Vista возможно сохранение информации для восстановления данных, зашифрованных BitLocker, с правами объекта-компьютера по умолчанию. Однако для сохранения информации владельца TPM в Windows Vista требуется создание дополнительной записи управления доступом.
В Приложении В к данному документу указаны установленные по умолчанию права доступа к объектам класса Computer, содержащим класс данных для восстановления BitLocker и атрибуты информации владельца TPM.
|
Для добавления записи управления доступом, разрешающей резервное сохранение информации для восстановления TPM, выполните следующие действия:
|
|
-
Найдите файл Add-TPMSelfWriteACE.vbs, содержащий пример сценария для расширения прав доступа.
-
Из командной строки выполните следующую команду:
cscript Add-TPMSelfWriteACE.vbs
|
Этот сценарий создает запись управления доступом в объекте домена высшего уровня. Эта запись содержит наследуемое разрешение, позволяющее объекту SELF (данному компьютеру) изменять атрибут ms-TPM-OwnerInformation объектов-компьютеров в домене.
Для получения дополнительной информации обратитесь к статье Using Scripts to Manage Active Directory Security (EN).
Работа представленного тестового сценария предполагает выполнение следующих условий:
-
Вы обладаете правами администратора домена для назначения прав доступа к объектам домена высшего уровня.
-
Пользовательская учетная запись, из-под которой выполняется сценарий, находится в целевом домене.
Например, запуск сценария из-под учетной записи TESTDOMAIN\admin повлияет на разрешения для домена TESTDOMAIN. Чтобы изменить разрешения для нескольких доменов, в которых у вас отсутствуют учетные записи администратора домена, может понадобиться редактирование сценария. Целевые домены указываются в сценарии в качестве значений переменной strPathToDomain, например:
"LDAP://DC=testdomain,DC=nttest,DC=microsoft,DC=com"
-
Домен настроен таким образом, что разрешения наследуются от объектов домена высшего уровня целевыми объектами-компьютерами. Эти разрешения не будут действительны до тех пор, пока все контейнеры в иерархии не будут иметь разрешений на наследование от родительских объектов. По умолчанию в Active Directory установлено наследование разрешений. Если вы не уверены, отличается ли текущая конфигурация от заданной по умолчанию, выполните шаги инструкции по настройке разрешений. Чтобы проверить, может ли объект SELF (данный компьютер) выполнять запись в атрибут msTPM-OwnerInformation, следует либо выполнить инструкции, содержащиеся ниже в данном документе, либо просмотреть список Действующие разрешения в свойствах объекта-компьютера.
Настройка разрешения резервного сохранения в Active Directory информации для восстановления BitLocker и TPM через групповую политику
Данные инструкции предназначены для настройки локальной политики на компьютере-клиенте под управлением Windows Vista. В рабочих условиях удобнее будет редактировать объект групповой политики, относящийся к компьютерам в домене.
Для получения дополнительной информации о настройке доменной групповой политики Windows Vista, обратитесь к статье Пошаговое руководство к управлению ADMX-файлами Групповой политики Managing Group Policy ADMX Files Step by Step Guide (EN).
|
Примечание.
|
|
При включении любых опций групповой политики рекомендуется сохранять настройки по умолчанию. Перед внесением любых изменений в конфигурацию не забывайте ознакомиться с описанием, содержащимся на вкладке Объяснение каждого параметра.
|
|
Для настройки локальной политики на резервное сохранение информации для восстановления BitLocker и TPM в Active Directory выполните следующие действия:
|
|
-
Войдите в систему с правами администратора.
-
В меню Пуск выберите пункт Выполнить, введите в поле быстрого поиска команду
gpedit.msc и нажмите клавишу Enter.
-
Чтобы активировать настройки групповой политики для сохранения в Active Directory информации для восстановления данных, зашифрованных BitLocker:
-
Раскройте последовательно узлы Конфигурация компьютера, Административные шаблоны, Компоненты Windows и выберите группу Шифрование диска BitLocker.
-
В правой панели дважды щелкните элемент Включить резервное копирование BitLocker в доменные службы Active Directory
-
Установите переключатель в положение Включен.
-
Убедитесь в том, что поставлен флажок Требовать резервного копирования BitLocker в AD DS.
-
Чтобы активировать настройки групповой политики для сохранения в Active Directory информации для восстановления данных, защищенных TPM:
-
Раскройте последовательно узлы Конфигурация компьютера, Административные шаблоны, Система и выберите группу Службы доверенного платформенного модуля.
-
В правой панели дважды щелкните элемент Включить резервное копирование TPM в доменные службы Active Directory.
-
Установите переключатель в положение Включен.
-
Убедитесь в том, что поставлен флажок Требовать резервного копирования TPM в AD DS.
|
Тестирование конфигурации Active Directory
Чтобы проверить успешность сохранения информации для восстановления данных, защищенных BitLocker и TPM в Active Directory, нужно присоединить клиент-компьютер под управлением Windows Vista к только что настроенному домену и активировать на нем BitLocker.
Все программные и пользовательские интерфейсы, относящиеся к инструментам управления BitLocker и TPM, придут в соответствие с указанными администратором настройками групповой политики. Активация этих настроек приведет к тому, что при создании или изменении информации для восстановления (например, паролей) соответствующие данные будут сохраняться в Active Directory.
Если опция резервного сохранения включена, активация TPM или BitLocker любым из доступных методов будет невозможна до окончания резервного сохранения. Кроме этого, для успешного выполнения активации TPM или BitLocker необходимо будет обеспечить правильную настройку контроллера домена, сетевое подключение компьютера-клиента к контроллеру домена и отсутствие каких-либо ошибок в процессе резервного сохранения.
Тестирование резервного сохранения в Windows Vista
Для тестирования резервного сохранения необходимо использовать компьютер под управлением Windows Vista.
Информация для восстановления данных, зашифрованных BitLocker, сохраняется в следующих случаях:
-
При создании пароля во время установки BitLocker с помощью мастера, доступного из панели управления.
-
При создании пароля после завершения шифрования диска с помощью утилиты командной строки manage-bde.wsf.
Информация для восстановления TPM сохраняется в следующих случаях:
Пример процедуры тестирования в Windows Vista
В данном разделе приводится пример процедуры тестирования конфигурации Active Directory в Windows Vista. При выполнении примера будут использованы загруженные ранее файлы сценариев.
|
Важно!
|
|
Для проверки всех аспектов текущей конфигурации необходимо выполнить дополнительные тесты. Процедура, приведенная ниже, не предназначена для всесторонней оценки работы конфигурации.
|
Процедуры тестирования могут различаться в зависимости от политик компании. Например, в организациях, где пользователи являются создателями-владельцами объектов-компьютеров, присоединяемых к домену, этим пользователям будет доступна для чтения информация о владельце TPM для созданных ими объектов-компьютеров.
|
Выполнение теста
|
|
-
Войдите в систему контроллера домена с правами администратора домена.
-
Скопируйте файлы сценариев в удобное расположение.
-
Откройте окно командной строки и перейдите в каталог, содержащий файлы сценариев.
-
Выполните следующую команду:
cscript List-ACEs.vbs
Ожидаемый вывод (исходя из того, что использовался файл сценария по умолчанию - Add-TPMSelfWriteACE.vbs и все нежелательные ACE были удалены, кроме одной, относящейся к BitLocker и TPM):
Accessing
> AceFlags: 10
> AceType: 5
> Flags: 3
> AccessMask: 32
> ObjectType: {AA4E1A6D-550D-4E05-8C35-4AFCB917A9FE}
> InheritedObjectType: {BF967A86-0DE6-11D0-A285-00AA003049E2}
> Trustee: NT AUTHORITY\SELF
1 ACE(s) found in DC=nttest,DC=microsoft,DC=com related to BitLocker and TPM
-
Войдите с правами локального администратора (не администратора домена) в систему на клиентском компьютере под управлением Windows Vista, входящего в домен.
-
В меню Пуск введите в строке быстрого поиска tpm.msc и нажмите клавишу Enter.
-
Перейдите по ссылке Инициализировать TPM либо Изменить пароль владельца.
-
Установите пароль владельца, затем выберите способ резервного сохранения информации (путем печати или сохранения в файл). Ожидаемый результат: операция будет завершена без вывода сообщений об ошибках.
-
Используя ту же запись локального администратора, откройте окно командной строки с повышенными привилегиями и перейдите в каталог, содержащий образцы файлов сценариев, прилагаемые к данному документу.
Примечание:
Чтобы открыть окно командной строки с повышенными привилегиями, щелкните правой кнопкой мыши по ярлыку командной строки и выберите пункт Запуск от имени администратора.
-
В командной строке выполните следующую команду:
cscript Get-TPMOwnerInfo.vbs
Ожидаемый вывод: сообщение об ошибке Свойства службы каталогов не могут быть найдены в кэше. Не будет отображена никакая информация, так как пользователь с правами ниже администратора домена не может прочитать атрибут ms-TPM-OwnerInformation.
Примечание:
Для пользователей, являющихся создателями-владельцами объектов-компьютеров, присоединяемых к домену, возможен просмотр информации владельца TPM созданных объектов-компьютеров.
-
Войдите в систему того же компьютера-клиента с правами администратора домена.
-
Откройте окно командной строки с повышенными привилегиями и перейдите в каталог, содержащий файлы сценариев, прилагаемые к данному документу.
-
Выполните следующую команду:
cscript Get-TPMOwnerInfo.vbs
Ожидаемый вывод: строка, содержащая хэш ранее созданного пароля.
Пользователь с правами администратора домена имеет разрешение на чтение атрибута ms-TPM-OwnerInformation.
-
Создайте пароль восстановления, выполнив в окне командной строки с повышенными привилегиями следующую команду:
manage-bde -protectors -add -RecoveryPassword C:
Ожидаемый результат: операция завершится без сообщения об ошибках.
-
Выполнение команды
cscript Get-BitLockerRecoveryInfo.vbs
позволит просмотреть все дочерние объекты BitLocker для объекта Active Directory, соответствующего данному компьютеру-клиенту.
Ожидаемый результат: администратор домена сможет увидеть пароли восстановления, включая тот, что был создан в пункте 14.
Пользователям с правами ниже администратора домена эти пароли будут недоступны.
-
Удалите все созданные дочерние объекты BitLocker с помощью соответствующих инструментов Active Directory, например, оснастки Active Directory - пользователи и компьютеры. По умолчанию компьютеры-клиенты под управлением Windows Vista не имеют прав на удаление паролей восстановления BitLocker с истекшим сроком действия.
|
Решение наиболее распространенных проблем
В данном разделе рассматриваются возможные проблемы и способы их решения.
Проблемы, связанные с правами доступа
Если из-под учетной записи с правами ниже администратора домена удается прочитать сохраненную информацию для восстановления данных, защищенных BitLocker и TPM, проверьте, на всех ли контроллерах домена в сети работают поддерживаемые версии Windows Server.
|
Важно:
|
|
Резервное сохранение информации для восстановления данных, защищенных BitLocker и TPM, не поддерживаются на контроллерах домена под управлением ОС Windows 2000 Server и начального выпуска Windows Server 2003.
|
Ошибки сценариев
При выполнении сценария может возникнуть сообщение об ошибке. В последующих разделах объясняются причины и способы устранения наиболее вероятных ошибок сценариев.
Get-TPMOwnerInfo.vbs
Если при выполнении сценария возникает ошибка «Свойства службы каталогов не могут быть найдены в кэше», это значит, что у вас нет достаточных прав для чтения атрибута объекта Active Directory, содержащего данные о владельце TPM.
Общее
При появлении ошибки «Указанный домен не существует или к нему невозможно подключиться» проверьте, является ли компьютер членом домена и исправно ли подключение к сети. Ошибка «Такой объект на сервере отсутствует» означает, что какой-либо из компьютеров, чье сетевое имя указано в адресной строке, не подключен к сети.
Сообщения об ошибках сопровождаются номерами строк, на которых произошел сбой. Это позволяет точнее узнать причину ошибки и определить методы ее устранения, обратившись к исходному коду сценария.
Вопросы и ответы
В данном разделе содержатся вопросы, на которые ответили разработчики BitLocker с момента первой публикации документа.
Является ли эта схема частью OC Windows Server 2008?
Да, эта схема является частью ОС Windows Server 2008.
Можно ли использовать данную схему путем обновления Windows Server 2003 на контроллере домена?
Корпорация Microsoft поддерживает расширения схемы BitLocker только для Windows Server SP1 и более поздних версий ОС, а также для Windows Server 2008. Первый выпуск Windows Server 2003 не поддерживает функцию закрытых флагов, должным образом блокирующую доступ к сохраненной информации для восстановления.
Поддерживает ли Microsoft использование этой схемы для производственных нужд?
Да, Microsoft осуществляет полную поддержку этой схемы. Для получения дополнительной информации о поддержке и сопровождении продукции Microsoft обратитесь на сайт справки и поддержки Microsoft (http://support.microsoft.com/).
Сохраняется ли на компьютере-клиенте запись в журнале событий, содержащая информацию об успешном или неудачном выполнении резервного сохранения в Active Directory?
Да, в журнал событий на компьютере-клиенте записываются итоги резервного сохранения в Active Directory.
Однако информация в журнале событий не всегда может оказаться полезной. Даже если результат события в журнале значится как успешный, данные могут оказаться удаленными из Active Directory; либо BitLocker может быть впоследствии настроен так, что информация из Active Directory окажется бесполезной для разблокирования тома (например, при удалении защиты пароля восстановления). Кроме того, журнал может содержать недостоверную информацию.
Разумеется, для получения сведений о наличии действующей резервной копии в Active Directory необходимы права администратора.
Что если BitLocker был активирован на компьютере до того, как компьютер вошел в состав домена?
Часто задается вопрос, что произойдет, если BitLocker окажется активированным на компьютере к тому моменту, когда в соответствии с настройками групповой политики будет произведено резервное копирование? Сохранится ли информация для восстановления автоматически в Active Directory при присоединении компьютера к домену или при применении групповой политики? Эти функции не предусмотрены в Windows Vista. В организациях присоединение компьютера к домену обычно выполняется в первую очередь.
Интерфейс инструментария управления Windows (WMI) для BitLocker позволяет администраторам создавать сценарии для синхронизации паролей восстановления с существующими паролями на компьютерах-клиентах или их резервного копирования. Из учетной записи администратора можно увидеть пароли восстановления для разблокированного тома, либо используя метод GetKeyProtectorNumericalPassword интерфейса управления Windows для BitLocker, либо с помощью параметров "-protectors -get" утилиты командной строки BitLocker (manage-bde.wsf).
Если резервное копирование не удастся инициализировать, произведет ли BitLocker повторную попытку?
При неудачной инициализации процесса резервного копирования (например, если контроллер домена окажется недоступным в момент начала работы мастера установки BitLocker) BitLocker не будет производить повторных попыток сохранения в Active Directory информации для восстановления данных.
В случае если администратором были поставлены флажки Требовать резервного копирования BitLocker в AD DS или Требовать резервного копирования TPM в AD DS и резервное копирование не удалось, BitLocker не будет активирован.
Снятием же этих флажков администратор предписывает шифрование с помощью BitLocker независимо от того, сохранена в Active Directory информация для восстановления или нет. Однако автоматически повторной попытки резервного копирования BitLocker предпринимать не будет. В этом случае для сохранения информации при восстановлении соединения с сервером администратор может создать сценарий выполнения резервного копирования, как было описано в ответе на предыдущий вопрос.
Шифрует ли BitLocker информацию при ее пересылке в Active Directory?
Да, информация, пересылаемая с клиента Windows Vista в Active Directory, шифруется по протоколу Kerberos. В частности, соединение использует флаги аутентификации ADS_SECURE_AUTHENTICATION, ADS_USE_SEALING и ADS_USE_SIGNING. Для получения дополнительной информации о флагах аутентификации Active Directory посетите веб-страницу http://go.microsoft.com/fwlink/?LinkId=79643.
|
Примечание:
|
|
После завершения пересылки информация для восстановления BitLocker и TPM сохраняется в Active Directory в незашифрованном виде. Однако разрешения на доступ устанавливаются таким образом, что при установлении связи с сервером только администратор домена или доверенные лица могут прочесть эту информацию. Предприятиям, уделяющим внимание защите от внутренних атак на офисные серверы, рекомендуется включать BitLocker на этих серверах сразу после их обновления до Windows Server 2008.
|
Приложение А. Проверка объектов схемы BitLocker и TPM
Для осуществления сохранения информации для восстановления данных, защищенных BitLocker и TPM, в Active Directory создается шесть объектов схемы.
Чтобы проверить, существуют ли эти объекты в Active Directory, можно выполнить следующую последовательность действий.
|
Проверка объектов схемы BitLocker и TPM
|
|
-
Войдите в систему контроллера домена под учетной записью администратора домена.
-
Откройте оснастку Редактирование ADSI. В меню Пуск щелкните значок Выполнить, введите команду adsiedit.msc и нажмите кнопку ОК.
Примечание:
Эта оснастка входит в набор инструментов Windows Support Tools. Чтобы загрузить программы поддержки Windows для Windows Server 2003 SP 1, посетите веб-страницу http://go.microsoft.com/fwlink/?LinkID=70775
-
Откройте контейнер Схема, а затем папку, содержащую доступные объекты схемы (смотрите рисунок ниже).
-
Найдите объекты схемы со следующими именами:
-
CN= ms-FVE-KeyPackage (класс attributeSchema)
-
CN=ms-FVE-RecoveryGuid (класс attributeSchema)
-
CN=ms-FVE-RecoveryInformation (класс classSchema)
-
CN=ms-FVE-RecoveryPassword (класс attributeSchema)
-
CN=ms-FVE-VolumeGuid (класс attributeSchema)
-
CN=ms-TPM-OwnerInformation (класс attributeSchema)
|
На данном снимке экрана представлен пример поиска объектов схемы:
Увеличить рисунок
Приложение Б. Пример вывода утилиты Ldifde
Ниже приводится пример вывода команды Ldifde с аргументами управления BitLocker и TPM, в том числе с файлом расширения схемы BitLockerTPMSchemaExtension.ldf.
|
Примечание:
|
|
Результат, выводимый на экран, может различаться в зависимости от параметров переноса строки, применяемых для отображения или печати.
|
Пример вывода
D:\ad>ldifde -i -v -f BitLockerTPMSchemaExtension.ldf -c "DC=X" "DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com" -k -j .
Connecting to "x-hp-test-serve.black.nttest.corp.microsoft.com"
Logging in as current user using SSPI
Importing directory from file "RC1BitLockerTPMSchemaExtension.ldf"
Loading entries
1: CN=ms-TPM-OwnerInformation,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
2: CN=ms-FVE-RecoveryGuid,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
3: CN=ms-FVE-RecoveryPassword,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
4: (null)
Entry modified successfully.
5: CN=ms-FVE-RecoveryInformation,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
6: CN=computer,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
7: (null)
Entry modified successfully.
8: CN=ms-FVE-VolumeGuid,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
9: CN=ms-FVE-KeyPackage,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
10: (null)
Entry modified successfully.
11: CN=ms-FVE-RecoveryInformation,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
12: CN=ms-FVE-RecoveryGuid,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
13: CN=ms-FVE-RecoveryGuid,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
14: CN=ms-FVE-RecoveryGuid,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
15: CN=ms-FVE-RecoveryGuid,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
16: CN=ms-FVE-RecoveryPassword,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
17: CN=ms-FVE-RecoveryPassword,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
18: CN=ms-FVE-RecoveryPassword,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
19: CN=ms-TPM-OwnerInformation,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
20: CN=ms-TPM-OwnerInformation,CN=Schema,CN=Configuration,DC=black,DC=nttest,dc=corp,dc=microsoft,dc=com
Entry modified successfully.
20 entries modified successfully.
The command has completed successfully
Приложение В. Права доступа по умолчанию для объекта-компьютера
По умолчанию установлены следующие права доступа для объектов-компьютеров в Active Directory в ОС Windows Server 2003:
Операторы учета
Администраторы домена
System
Прошедшие проверку
-
Чтение, чтение ограничений учетных записей, чтение атрибутов имени узла с DNS-именем, чтение персональной информации, чтение открытой информации.
-
Особые: содержание списка, чтение всех свойств, чтение разрешений.
Создатель-владелец
-
Чтение, разрешение на проверку подлинности, изменение пароля, получить как, сброс пароля, отправить как, удостоверенная запись на узел с DNS-именем, удостоверенная запись на узел с именем участника службы, чтение ограничений учетной записи, запись ограничений учетной записи, чтение атрибутов узла с DNS-именем, чтение персональной информации, чтение открытой информации.
-
Особые: содержание списка, чтение всех свойств, удаление, удаление поддерева, чтение разрешений, все расширенные права, разрешение на проверку подлинности, изменение пароля, принять как, сброс пароля, отправить как.
-
Запись ограничений учетной записи.
-
Удостоверенная запись на узел с DNS-именем.
-
Удостоверенная запись на узел с именем участника службы.
-
Запись имени компьютера (в ОС, предшествовавших Windows 2000).
-
Запись описания
Все
Операторы печати
Self
-
Создание любых дочерних объектов
-
Удаление любых дочерних объектов
-
Удостоверенная запись на узел с именем участника службы.
-
Чтение/запись персональной информации
-
Удостоверенная запись на узел с DNS-именем
Группа авторизации доступа Windows
Издатели сертификатов
Приложение Г. Содержимое файла BitLockerTPMSchemaExtension.ldf
Ниже приведен пример содержимого файла BitLockerTPMSchemaExtension.ldf. С помощью этого файла можно расширять схему службы каталогов в Windows Server 2003 SP1 для получения возможности сохранения в Active Directory информации для восстановления данных, зашифрованных BitLocker, и пароля владельца TPM.
Для того чтобы с помощью этого файла вносить изменения в схему, необходимо ознакомиться с параметрами команды Ldifde. Эту команду следует запускать на контроллере домена, которому назначена роль хозяина операций схемы для данного леса.
Содержимое файла
|
Примечание:
|
|
Некоторые строки могут быть перенесены в зависимости от настроек отображения или печати.
|
'===============================================================================
'
' This script demonstrates the addition of an Access Control Entry (ACE)
' to allow computers to write Trusted Platform Module (TPM)
' recovery information to Active Directory.
'
' This script creates a SELF ACE on the top-level domain object, and
' assumes that inheritance of ACL’s from the top-level domain object to
' down-level computer objects are enabled.
'
' Reference: "Using Scripts to Manage Active Directory Security"
' http://www.microsoft.com/technet/scriptcenter/topics/security/exrights.mspx
' and MSDN documentation.
'
' Last Updated: August 2006
' Microsoft Corporation
'
' Disclaimer
'
' The sample scripts are not supported under any Microsoft standard support program
' or service. The sample scripts are provided AS IS without warranty of any kind.
' Microsoft further disclaims all implied warranties including, without limitation,
' any implied warranties of merchantability or of fitness for a particular purpose.
' The entire risk arising out of the use or performance of the sample scripts and
' documentation remains with you. In no event shall Microsoft, its authors, or
' anyone else involved in the creation, production, or delivery of the scripts be
' liable for any damages whatsoever (including, without limitation, damages for loss
' of business profits, business interruption, loss of business information, or
' other pecuniary loss) arising out of the use of or inability to use the sample
' scripts or documentation, even if Microsoft has been advised of the possibility
' of such damages.
'
'===============================================================================
' --------------------------------------------------------------------------------
' Access Control Entry (ACE) constants
' --------------------------------------------------------------------------------
'- From the ADS_ACETYPE_ENUM enumeration
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5 'Allows an object to do something
'- From the ADS_ACEFLAG_ENUM enumeration
Const ADS_ACEFLAG_INHERIT_ACE = &H2 'ACE can be inherited to child objects
Const ADS_ACEFLAG_INHERIT_ONLY_ACE = &H8 'ACE does NOT apply to target (parent) object
'- From the ADS_RIGHTS_ENUM enumeration
Const ADS_RIGHT_DS_WRITE_PROP = &H20 'The right to write object properties
Const ADS_RIGHT_DS_CREATE_CHILD = &H1 'The right to create child objects
'- From the ADS_FLAGTYPE_ENUM enumeration
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1 'Target object type is present in the ACE
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2 'Target inherited object type is present in the ACE
' --------------------------------------------------------------------------------
' TPM and FVE schema object GUID’s
' --------------------------------------------------------------------------------
'- ms-TPM-OwnerInformation attribute
SCHEMA_GUID_MS_TPM_OWNERINFORMATION = "{AA4E1A6D-550D-4E05-8C35-4AFCB917A9FE}"
'- ms-FVE-RecoveryInformation object
SCHEMA_GUID_MS_FVE_RECOVERYINFORMATION = "{EA715D30-8F53-40D0-BD1E-6109186D782C}"
'- Computer object
SCHEMA_GUID_COMPUTER = "{BF967A86-0DE6-11D0-A285-00AA003049E2}"
'Reference: "Platform SDK: Active Directory Schema"
' --------------------------------------------------------------------------------
' Set up the ACE to allow write of TPM owner information
' --------------------------------------------------------------------------------
Set objAce1 = createObject("AccessControlEntry")
objAce1.AceFlags = ADS_ACEFLAG_INHERIT_ACE + ADS_ACEFLAG_INHERIT_ONLY_ACE
objAce1.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce1.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT + ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
objAce1.Trustee = "SELF"
objAce1.AccessMask = ADS_RIGHT_DS_WRITE_PROP
objAce1.ObjectType = SCHEMA_GUID_MS_TPM_OWNERINFORMATION
objAce1.InheritedObjectType = SCHEMA_GUID_COMPUTER
' --------------------------------------------------------------------------------
' NOTE: BY default, the "SELF" computer account can create
' BitLocker recovery information objects and write BitLocker recovery properties
'
' No additional ACE’s are needed.
' --------------------------------------------------------------------------------
' --------------------------------------------------------------------------------
' Connect to Discretional ACL (DACL) for domain object
' --------------------------------------------------------------------------------
Set objRootLDAP = GetObject("LDAP://rootDSE")
strPathToDomain = "LDAP://" & objRootLDAP.Get("defaultNamingContext") ' e.g. string dc=fabrikam,dc=com
Set objDomain = GetObject(strPathToDomain)
WScript.Echo "Accessing object: " + objDomain.Get("distinguishedName")
Set objDescriptor = objDomain.Get("ntSecurityDescriptor")
Set objDacl = objDescriptor.DiscretionaryAcl
' --------------------------------------------------------------------------------
' Add the ACEs to the Discretionary ACL (DACL) and set the DACL
' --------------------------------------------------------------------------------
objDacl.AddAce objAce1
objDescriptor.DiscretionaryAcl = objDacl
objDomain.Put "ntSecurityDescriptor", Array(objDescriptor)
objDomain.SetInfo
WScript.Echo "SUCCESS!"
Приложение Д. Содержимое файла Add-TPMSelfWriteACE.vbs
Ниже приведено содержимое файла Add-TPMSelfWriteACE.vbs, с помощью которого можно добавлять записи контроля доступа, позволяющие клиентам nextref_vista выполнять резервное сохранение пароля владельца TPM в Active Directory.
Содержимое файла
'===============================================================================
'
' This script demonstrates the addition of an Access Control Entry (ACE)
' to allow computers to write Trusted Platform Module (TPM)
' recovery information to Active Directory.
'
' This script creates a SELF ACE on the top-level domain object, and
' assumes that inheritance of ACL’s from the top-level domain object to
' down-level computer objects are enabled.
'
' Reference: "Using Scripts to Manage Active Directory Security"
' http://www.microsoft.com/technet/scriptcenter/topics/security/exrights.mspx
' and MSDN documentation.
'
' Last Updated: August 2006
' Microsoft Corporation
'
' Disclaimer
'
' The sample scripts are not supported under any Microsoft standard support program
' or service. The sample scripts are provided AS IS without warranty of any kind.
' Microsoft further disclaims all implied warranties including, without limitation,
' any implied warranties of merchantability or of fitness for a particular purpose.
' The entire risk arising out of the use or performance of the sample scripts and
' documentation remains with you. In no event shall Microsoft, its authors, or
' anyone else involved in the creation, production, or delivery of the scripts be
' liable for any damages whatsoever (including, without limitation, damages for loss
' of business profits, business interruption, loss of business information, or
' other pecuniary loss) arising out of the use of or inability to use the sample
' scripts or documentation, even if Microsoft has been advised of the possibility
' of such damages.
'
'===============================================================================
' --------------------------------------------------------------------------------
' Access Control Entry (ACE) constants
' --------------------------------------------------------------------------------
'- From the ADS_ACETYPE_ENUM enumeration
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5 'Allows an object to do something
'- From the ADS_ACEFLAG_ENUM enumeration
Const ADS_ACEFLAG_INHERIT_ACE = &H2 'ACE can be inherited to child objects
Const ADS_ACEFLAG_INHERIT_ONLY_ACE = &H8 'ACE does NOT apply to target (parent) object
'- From the ADS_RIGHTS_ENUM enumeration
Const ADS_RIGHT_DS_WRITE_PROP = &H20 'The right to write object properties
Const ADS_RIGHT_DS_CREATE_CHILD = &H1 'The right to create child objects
'- From the ADS_FLAGTYPE_ENUM enumeration
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1 'Target object type is present in the ACE
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2 'Target inherited object type is present in the ACE
' --------------------------------------------------------------------------------
' TPM and FVE schema object GUID’s
' --------------------------------------------------------------------------------
'- ms-TPM-OwnerInformation attribute
SCHEMA_GUID_MS_TPM_OWNERINFORMATION = "{AA4E1A6D-550D-4E05-8C35-4AFCB917A9FE}"
'- ms-FVE-RecoveryInformation object
SCHEMA_GUID_MS_FVE_RECOVERYINFORMATION = "{EA715D30-8F53-40D0-BD1E-6109186D782C}"
'- Computer object
SCHEMA_GUID_COMPUTER = "{BF967A86-0DE6-11D0-A285-00AA003049E2}"
'Reference: "Platform SDK: Active Directory Schema"
' --------------------------------------------------------------------------------
' Set up the ACE to allow write of TPM owner information
' --------------------------------------------------------------------------------
Set objAce1 = createObject("AccessControlEntry")
objAce1.AceFlags = ADS_ACEFLAG_INHERIT_ACE + ADS_ACEFLAG_INHERIT_ONLY_ACE
objAce1.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
objAce1.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT + ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
objAce1.Trustee = "SELF"
objAce1.AccessMask = ADS_RIGHT_DS_WRITE_PROP
objAce1.ObjectType = SCHEMA_GUID_MS_TPM_OWNERINFORMATION
objAce1.InheritedObjectType = SCHEMA_GUID_COMPUTER
' --------------------------------------------------------------------------------
' NOTE: BY default, the "SELF" computer account can create
' BitLocker recovery information objects and write BitLocker recovery properties
'
' No additional ACE’s are needed.
' --------------------------------------------------------------------------------
' --------------------------------------------------------------------------------
' Connect to Discretional ACL (DACL) for domain object
' --------------------------------------------------------------------------------
Set objRootLDAP = GetObject("LDAP://rootDSE")
strPathToDomain = "LDAP://" & objRootLDAP.Get("defaultNamingContext") ' e.g. string dc=fabrikam,dc=com
Set objDomain = GetObject(strPathToDomain)
WScript.Echo "Accessing object: " + objDomain.Get("distinguishedName")
Set objDescriptor = objDomain.Get("ntSecurityDescriptor")
Set objDacl = objDescriptor.DiscretionaryAcl
' --------------------------------------------------------------------------------
' Add the ACEs to the Discretionary ACL (DACL) and set the DACL
' --------------------------------------------------------------------------------
objDacl.AddAce objAce1
objDescriptor.DiscretionaryAcl = objDacl
objDomain.Put "ntSecurityDescriptor", Array(objDescriptor)
objDomain.SetInfo
WScript.Echo "SUCCESS!"
Приложение Е. Примеры тестовых сценариев
Ниже приводятся примеры трех тестовых сценариев, с помощью которых можно проверить, позволяет ли конфигурация Active Directory выполнять резервное сохранение информации для восстановления данных, зашифрованных BitLocker, и пароля владельца TPM.
Информацию по использованию сценариев можно получить, запустив сценарий с параметром -?.
List-ACEs.vbs
Данный сценарий перечисляет или удаляет записи управления доступом (ACE), существующие на объектах схемы BitLocker и TPM для доменов высшего уровня. С помощью этого сценария можно проверить, были ли добавлены нужные записи управления доступом, или удалить какие-либо из них, связанные с BitLocker или TPM.
|
Примечание:
|
|
В окончательной конфигурации, не предусматривающей какого-либо делегирования прав, должна быть только одна запись управления доступом, относящаяся к TPM.
|
Содержимое файла
'===============================================================================
'
' This script lists the access control entries (ACE’s) configured on
' Trusted Platform Module (TPM) and BitLocker Drive Encryption (BDE) schema objects
' for the top-level domain.
'
' Use this script to check that the correct permissions have been set.
' Also use this script to remove TPM and BitLocker ACE’s from the top-level domain.
'
' Reference: "Using Scripts to Manage Active Directory Security"
' http://www.microsoft.com/technet/scriptcenter/topics/security/exrights.mspx
' and MSDN documentation.
'
' Last Updated: 1/30/2006
' Microsoft Corporation
'
' Disclaimer
'
' The sample scripts are not supported under any Microsoft standard support program
' or service. The sample scripts are provided AS IS without warranty of any kind.
' Microsoft further disclaims all implied warranties including, without limitation,
' any implied warranties of merchantability or of fitness for a particular purpose.
' The entire risk arising out of the use or performance of the sample scripts and
' documentation remains with you. In no event shall Microsoft, its authors, or
' anyone else involved in the creation, production, or delivery of the scripts be
' liable for any damages whatsoever (including, without limitation, damages for loss
' of business profits, business interruption, loss of business information, or
' other pecuniary loss) arising out of the use of or inability to use the sample
' scripts or documentation, even if Microsoft has been advised of the possibility
' of such damages.
'
'===============================================================================
' --------------------------------------------------------------------------------
' Usage
' --------------------------------------------------------------------------------
Sub ShowUsage
Wscript.Echo "USAGE: List-ACEs"
Wscript.Echo "List access permissions for BitLocker and TPM schema objects"
Wscript.Echo ""
Wscript.Echo "USAGE: List-ACEs -remove"
Wscript.Echo "Removes access permissions for BitLocker and TPM schema objects"
WScript.Quit
End Sub
' --------------------------------------------------------------------------------
' Parse Arguments
' --------------------------------------------------------------------------------
Set args = WScript.Arguments
Select Case args.Count
Case 0
' do nothing - checks for ACE’s
removeACE = False
Case 1
If args(0) = "/?" Or args(0) = "-?" Then
ShowUsage
Else
If UCase(args(0)) = "-REMOVE" Then
removeACE = True
End If
End If
Case Else
ShowUsage
End Select
' --------------------------------------------------------------------------------
' Configuration of the filter to show/remove only ACE’s for BDE and TPM objects
' --------------------------------------------------------------------------------
'- ms-TPM-OwnerInformation attribute
SCHEMA_GUID_MS_TPM_OWNERINFORMATION = "{AA4E1A6D-550D-4E05-8C35-4AFCB917A9FE}"
'- ms-FVE-RecoveryInformation object
SCHEMA_GUID_MS_FVE_RECOVERYINFORMATION = "{EA715D30-8F53-40D0-BD1E-6109186D782C}"
' Use this filter to list/remove only ACEs related to TPM and BitLocker
aceGuidFilter = Array(SCHEMA_GUID_MS_TPM_OWNERINFORMATION, _
SCHEMA_GUID_MS_FVE_RECOVERYINFORMATION)
' Note to script source reader:
' Uncomment the following line to turn off the filter and list all ACEs
'aceGuidFilter = Array()
' --------------------------------------------------------------------------------
' Helper functions related to the list filter for listing or removing ACE’s
' --------------------------------------------------------------------------------
Function IsFilterActive()
If Join(aceGuidFilter) = "" Then
IsFilterActive = False
Else
IsFilterActive = True
End If
End Function
Function isAceWithinFilter(ace)
aceWithinFilter = False ' assume first not pass the filte
For Each guid In aceGuidFilter
If ace.ObjectType = guid Or ace.InheritedObjectType = guid Then
isAceWithinFilter = True
End If
Next
End Function
Sub displayFilter
For Each guid In aceGuidFilter
WScript.echo guid
Next
End Sub
' --------------------------------------------------------------------------------
' Connect to Discretional ACL (DACL) for domain object
' --------------------------------------------------------------------------------
Set objRootLDAP = GetObject("LDAP://rootDSE")
strPathToDomain = "LDAP://" & objRootLDAP.Get("defaultNamingContext") ' e.g. dc=fabrikam,dc=com
Set domain = GetObject(strPathToDomain)
WScript.Echo "Accessing object: " + domain.Get("distinguishedName")
WScript.Echo ""
Set descriptor = domain.Get("ntSecurityDescriptor")
Set dacl = descriptor.DiscretionaryAcl
' --------------------------------------------------------------------------------
' Show Access Control Entries (ACE’s)
' --------------------------------------------------------------------------------
' Loop through the existing ACEs, including all ACEs if the filter is not active
i = 1 ' global index
c = 0 ' found count - relevant if filter is active
For Each ace In dacl
If IsFilterActive() = False or isAceWithinFilter(ace) = True Then
' note to script source reader:
' echo i to show the index of the ACE
WScript.echo "> AceFlags: " & ace.AceFlags
WScript.echo "> AceType: " & ace.AceType
WScript.echo "> Flags: " & ace.Flags
WScript.echo "> AccessMask: " & ace.AccessMask
WScript.echo "> ObjectType: " & ace.ObjectType
WScript.echo "> InheritedObjectType: " & ace.InheritedObjectType
WScript.echo "> Trustee: " & ace.Trustee
WScript.echo ""
if IsFilterActive() = True Then
c = c + 1
' optionally include this ACE in removal list if configured
' note that the filter being active is a requirement since we don’t
' want to accidentially remove all ACEs
If removeACE = True Then
dacl.RemoveAce ace
End If
end if
End If
i = i + 1
Next
' Display number of ACEs found
If IsFilterActive() = True Then
WScript.echo c & " ACE(s) found in " & domain.Get("distinguishedName") _
& " related to BitLocker and TPM" 'note to script source reader: change this line if you configure your own filter
' note to script source reader:
' uncomment the following lines if you configure your own filter
'WScript.echo ""
'WScript.echo "The following filter was active: "
'displayFilter
'Wscript.echo ""
Else
i = i - 1
WScript.echo i & " total ACE(s) found in " & domain.Get("distinguishedName")
End If
' --------------------------------------------------------------------------------
' Optionally remove ACE’s on a filtered list
' --------------------------------------------------------------------------------
if removeACE = True and IsFilterActive() = True then
descriptor.DiscretionaryAcl = dacl
domain.Put "ntSecurityDescriptor", Array(descriptor)
domain.setInfo
WScript.echo c & " ACE(s) removed from " & domain.Get("distinguishedName")
else
if removeACE = True then
WScript.echo "You must specify a filter to remove ACEs from " & domain.Get("distinguishedName")
end if
end if
Наверх страницы
Get-TPMOwnerInfo.vbs
Этот сценарий демонстрирует получение резервной информации TPM из Active Directory для конкретного компьютера. С помощью этого сценария можно убедиться в том, что сохраненная в Active Directory информация для восстановления данных, защищенных TPM, может быть прочитана только администратором домена (или уполномоченным лицом), а также в том, что резервная информация сохранена корректно.
Содержимое файла
'=================================================================================
'
' This script demonstrates the retrieval of Trusted Platform Module (TPM)
' recovery information from Active Directory for a particular computer.
'
' It returns the TPM owner information stored as an attribute of a
' computer object.
'
' Change History:
' 1/30/2006 - Initial release
' 5/15/2006 - Updated GetStrPathToComputer to search the global catalog.
'
' Microsoft Corporation
'
' Disclaimer
'
' The sample scripts are not supported under any Microsoft standard support program
' or service. The sample scripts are provided AS IS without warranty of any kind.
' Microsoft further disclaims all implied warranties including, without limitation,
' any implied warranties of merchantability or of fitness for a particular purpose.
' The entire risk arising out of the use or performance of the sample scripts and
' documentation remains with you. In no event shall Microsoft, its authors, or
' anyone else involved in the creation, production, or delivery of the scripts be
' liable for any damages whatsoever (including, without limitation, damages for loss
' of business profits, business interruption, loss of business information, or
' other pecuniary loss) arising out of the use of or inability to use the sample
' scripts or documentation, even if Microsoft has been advised of the possibility
' of such damages.
'
'=================================================================================
' --------------------------------------------------------------------------------
' Usage
' --------------------------------------------------------------------------------
Sub ShowUsage
Wscript.Echo "USAGE: Get-TpmOwnerInfo [Optional Computer Name]"
Wscript.Echo "If no computer name is specified, the local computer is assumed."
WScript.Quit
End Sub
' --------------------------------------------------------------------------------
' Parse Arguments
' --------------------------------------------------------------------------------
Set args = WScript.Arguments
Select Case args.Count
Case 0
' Get the name of the local computer
Set objNetwork = CreateObject("WScript.Network")
strComputerName = objNetwork.ComputerName
Case 1
If args(0) = "/?" Or args(0) = "-?" Then
ShowUsage
Else
strComputerName = args(0)
End If
Case Else
ShowUsage
End Select
' --------------------------------------------------------------------------------
' Get path to Active Directory computer object associated with the computer name
' --------------------------------------------------------------------------------
Function GetStrPathToComputer(strComputerName)
' Uses the global catalog to find the computer in the forest
' Search also includes deleted computers in the tombstone
Set objRootLDAP = GetObject("LDAP://rootDSE")
namingContext = objRootLDAP.Get("defaultNamingContext") ' e.g. string dc=fabrikam,dc=com
strBase = "<GC://" & namingContext & ">"
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOOBject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
strFilter = "(&(objectCategory=Computer)(cn=" & strComputerName & "))"
strQuery = strBase & ";" & strFilter & ";distinguishedName;subtree"
objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 100
objCommand.Properties("Timeout") = 100
objCommand.Properties("Cache Results") = False
' Enumerate all objects found.
Set objRecordSet = objCommand.Execute
If objRecordSet.EOF Then
WScript.echo "The computer name '" & strComputerName & "' cannot be found."
WScript.Quit 1
End If
' Found object matching name
Do Until objRecordSet.EOF
dnFound = objRecordSet.Fields("distinguishedName")
GetStrPathToComputer = "LDAP://" & dnFound
objRecordSet.MoveNext
Loop
' Clean up.
Set objConnection = Nothing
Set objCommand = Nothing
Set objRecordSet = Nothing
End Function
' --------------------------------------------------------------------------------
' Securely access the Active Directory computer object using Kerberos
' --------------------------------------------------------------------------------
Set objDSO = GetObject("LDAP:")
strPath = GetStrPathToComputer(strComputerName)
WScript.Echo "Accessing object: " + strPath
Const ADS_SECURE_AUTHENTICATION = 1
Const ADS_USE_SEALING = 64 '0x40
Const ADS_USE_SIGNING = 128 '0x80
Set objComputer = objDSO.OpenDSObject(strPath, vbNullString, vbNullString, _
ADS_SECURE_AUTHENTICATION + ADS_USE_SEALING + ADS_USE_SIGNING)
' --------------------------------------------------------------------------------
' Get the TPM owner information from the Active Directory computer object
' --------------------------------------------------------------------------------
strOwnerInformation = objComputer.Get("msTPM-OwnerInformation")
WScript.echo "msTPM-OwnerInformation: " + strOwnerInformation
Наверх страницы
Get-BitLockerRecoveryInfo.vbs
Этот сценарий демонстрирует получение резервной информации BitLocker из Active Directory для конкретного компьютера. С помощью этого сценария можно убедиться в том, что сохраненная в Active Directory информация для восстановления данных, зашифрованных BitLocker, может быть прочитана только администратором домена (или уполномоченным лицом), а также в том, что резервная информация сохранена корректно.
Содержимое файла
'===============================================================================
'
' This script demonstrates the retrieval of BitLocker Drive Encryption (BDE)
' recovery information from Active Directory for a particular computer.
'
' It returns all recovery passwords and associated GUIDs for a particular
' computer object.
'
' Change History:
' 1/30/2006 - Initial release
' 5/15/2006 - Added ConvertOctetGuidToHexString to remove dependency to ADs.DLL
' and converted GUID to correct byte order before printing.
' - Updated GetStrPathToComputer to search the global catalog.
'
' Microsoft Corporation
'
' Disclaimer
'
' The sample scripts are not supported under any Microsoft standard support program
' or service. The sample scripts are provided AS IS without warranty of any kind.
' Microsoft further disclaims all implied warranties including, without limitation,
' any implied warranties of merchantability or of fitness for a particular purpose.
' The entire risk arising out of the use or performance of the sample scripts and
' documentation remains with you. In no event shall Microsoft, its authors, or
' anyone else involved in the creation, production, or delivery of the scripts be
' liable for any damages whatsoever (including, without limitation, damages for loss
' of business profits, business interruption, loss of business information, or
' other pecuniary loss) arising out of the use of or inability to use the sample
' scripts or documentation, even if Microsoft has been advised of the possibility
' of such damages.
'
'===============================================================================
' --------------------------------------------------------------------------------
' Usage
' --------------------------------------------------------------------------------
Sub ShowUsage
Wscript.Echo "USAGE: Get-BitLockerRecoveryInfo [Optional Computer Name]"
Wscript.Echo "If no computer name is specified, the local computer is assumed."
WScript.Quit
End Sub
' --------------------------------------------------------------------------------
' Parse Arguments
' --------------------------------------------------------------------------------
Set args = WScript.Arguments
Select Case args.Count
Case 0
' Get the name of the local computer
Set objNetwork = CreateObject("WScript.Network")
strComputerName = objNetwork.ComputerName
Case 1
If args(0) = "/?" Or args(0) = "-?" Then
ShowUsage
Else
strComputerName = args(0)
End If
Case Else
ShowUsage
End Select
' --------------------------------------------------------------------------------
' Helper function: Convert the octet GUID string (byte array) to a hex string
' --------------------------------------------------------------------------------
'Reference: http://blogs.msdn.com/ericlippert/archive/2004/05/25/141525.aspx
Function HexByte(b)
HexByte = Right("0" & Hex(b), 2)
End Function
Function ConvertOctetGuidToHexString(ByteArray)
Dim Binary, S
Binary = CStr(ByteArray)
On Error Resume Next
S = "{"
S = S & HexByte(AscB(MidB(Binary, 4, 1)))
S = S & HexByte(AscB(MidB(Binary, 3, 1)))
S = S & HexByte(AscB(MidB(Binary, 2, 1)))
S = S & HexByte(AscB(MidB(Binary, 1, 1)))
S = S & "-"
S = S & HexByte(AscB(MidB(Binary, 6, 1)))
S = S & HexByte(AscB(MidB(Binary, 5, 1)))
S = S & "-"
S = S & HexByte(AscB(MidB(Binary, 8, 1)))
S = S & HexByte(AscB(MidB(Binary, 7, 1)))
S = S & "-"
S = S & HexByte(AscB(MidB(Binary, 9, 1)))
S = S & HexByte(AscB(MidB(Binary, 10, 1)))
S = S & "-"
S = S & HexByte(AscB(MidB(Binary, 11, 1)))
S = S & HexByte(AscB(MidB(Binary, 12, 1)))
S = S & HexByte(AscB(MidB(Binary, 13, 1)))
S = S & HexByte(AscB(MidB(Binary, 14, 1)))
S = S & HexByte(AscB(MidB(Binary, 15, 1)))
S = S & HexByte(AscB(MidB(Binary, 16, 1)))
S = S & "}"
On Error GoTo 0
ConvertOctetGuidToHexString = S
End Function
' --------------------------------------------------------------------------------
' Get path to Active Directory computer object associated with the computer name
' --------------------------------------------------------------------------------
Function GetStrPathToComputer(strComputerName)
' Uses the global catalog to find the computer in the forest
' Search also includes deleted computers in the tombstone
Set objRootLDAP = GetObject("LDAP://rootDSE")
namingContext = objRootLDAP.Get("defaultNamingContext") ' e.g. string dc=fabrikam,dc=com
strBase = "<GC://" & namingContext & ">"
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOOBject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
strFilter = "(&(objectCategory=Computer)(cn=" & strComputerName & "))"
strQuery = strBase & ";" & strFilter & ";distinguishedName;subtree"
objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 100
objCommand.Properties("Timeout") = 100
objCommand.Properties("Cache Results") = False
' Enumerate all objects found.
Set objRecordSet = objCommand.Execute
If objRecordSet.EOF Then
WScript.echo "The computer name '" & strComputerName & "' cannot be found."
WScript.Quit 1
End If
' Found object matching name
Do Until objRecordSet.EOF
dnFound = objRecordSet.Fields("distinguishedName")
GetStrPathToComputer = "LDAP://" & dnFound
objRecordSet.MoveNext
Loop
' Clean up.
Set objConnection = Nothing
Set objCommand = Nothing
Set objRecordSet = Nothing
End Function
' --------------------------------------------------------------------------------
' Securely access the Active Directory computer object using Kerberos
' --------------------------------------------------------------------------------
Set objDSO = GetObject("LDAP:")
strPathToComputer = GetStrPathToComputer(strComputerName)
WScript.Echo "Accessing object: " + strPathToComputer
Const ADS_SECURE_AUTHENTICATION = 1
Const ADS_USE_SEALING = 64 '0x40
Const ADS_USE_SIGNING = 128 '0x80
' --------------------------------------------------------------------------------
' Get all BitLocker recovery information from the Active Directory computer object
' --------------------------------------------------------------------------------
' Get all the recovery information child objects of the computer object
Set objFveInfos = objDSO.OpenDSObject(strPathToComputer, vbNullString, vbNullString, _
ADS_SECURE_AUTHENTICATION + ADS_USE_SEALING + ADS_USE_SIGNING)
objFveInfos.Filter = Array("msFVE-RecoveryInformation")
' Iterate through each recovery information object
For Each objFveInfo in objFveInfos
strName = objFveInfo.Get("name")
strRecoveryGuidOctet = objFveInfo.Get("msFVE-RecoveryGuid")
strRecoveryGuid = ConvertOctetGuidToHexString(strRecoveryGuidOctet)
strRecoveryPassword = objFveInfo.Get("msFVE-RecoveryPassword")
WScript.echo
WScript.echo "name: " + strName
WScript.echo "msFVE-RecoveryGuid: " + strRecoveryGuid
WScript.echo "msFVE-RecoveryPassword: " + strRecoveryPassword
If len(strRecoveryGuid) <> 38 Then
WScript.echo "WARNING: '" & strRecoveryGuid & "' does not appear to be a valid GUID."
End If
Next
WScript.Quit
Обсуждение статьи на форуме