Skip to main content

Программа NewSID (версия 4.10)

Авторы: Марк Руссинович (Mark Russinovich) и Брайс Когсвелл (Bryce Cogswell)

Опубликовано 1 ноября 2006 г.


Важно!

В отношении идентификаторов SID корпорация Майкрософт не поддерживает образы, подготовленные с использованием программы NewSID. Поддерживаются только образы, подготовленные с помощью программы SysPrep. Корпорация Майкрософт не проводила тестирование программы NewSID во всех вариантах клонирования при развертывании.

Подробнее об официальной политике корпорации Майкрософт см. в статье базы знаний

Политика корпорации Майкрософт в отношении создания дубликатов диска установки Windows XP


Введение

Многие организации используют клонирование образов дисков для выполнения массовой установки ОС Windows. Эта методика предполагает копирование диска компьютера с полностью установленной и настроенной ОС Windows на диски других компьютеров. В результате эти компьютеры сразу становятся готовы к использованию, как если бы прошли такой же процесс установки, что и исходный компьютер.

Хотя этот метод экономит многие часы работы и позволяет избежать трудностей, связанных с другими подходами к развертыванию, он имеет существенный недостаток, который заключается в том, что все клонированные системы имеют одинаковый идентификатор безопасности (SID). Это создает угрозу безопасности в средах с использованием рабочих групп, а также может создавать угрозу безопасности съемных носителей в сетях, где есть компьютеры с одинаковыми идентификаторами безопасности.

Потребности пользователей Windows заставили несколько компаний разработать программы, которые могут изменять идентификатор SID после клонирования системы. Однако программы Ghost Walker компании Symantec и SID Changer компании Altiris (впоследствии приобретенной Symantec) продаются только в составе полных продуктов компании. Кроме того, обе программы работают из командной строки DOS (программа от Altiris похожа на NewSID).

NewSID — это программа, которую мы разработали для изменения идентификатора безопасности компьютера. Она бесплатна и предназначена для Win32, а это значит, что ее можно легко запускать на системах, которые были клонированы. Программа работает с операционными системами Windows NT 4, Windows 2000, Windows XP и Windows .NET Server.

Перед использованием программы прочтите эту статью целиком.

Информация о версиях:

  • В версии 4.0 добавлена поддержка ОС Windows XP и .NET Server, интерфейс в стиле мастера, возможность указывать идентификатор безопасности, которой нужно применить, сжатие реестра, а также возможность изменения имени компьютера (что приводит к изменению NetBIOS- и DNS-имен).

  • В версии 3.02 исправлена ошибка, в результате которой программа NewSid неправильно копировала значения по умолчанию с недопустимыми типами значений при изменении имени раздела со старым идентификатором на новый. ОС NT использует такие недопустимые значения в определенные моменты процесса управления лицензиями (SAM). Признаком этой ошибки были сообщения об отказе в доступе при обновлении информации учетной записи авторизованным пользователем.

  • В версии 3.01 добавлен обходной путь для проблемы с недоступным разделом реестра, создаваемым сервером транзакций. Без этого обходного пути программа NewSID преждевременно завершалась бы.

  • В версии 3.0 появилась функция синхронизации идентификаторов. Теперь возможно получить подлежащего использованию идентификатор от другого компьютера.

  • В версии 2.0 появился автоматический режим и возможность смены имени компьютера.

  • В версии 1.2 исправлена ошибка, которая появилась в версии 1.1 и приводила к тому, что некоторые дескрипторы безопасности файловой системы не обновлялись.

  • В версии 1.1 исправлена относительно небольшая ошибка, которая отражалась только на определенных установках. Эта версия также была дополнена функцией изменения идентификаторов безопасности, связанных с настройками прав совместного доступа к файлам и принтерам.


Клонирование и альтернативные методы развертывания

Один из наиболее популярных методов выполнения массового развертывания ОС Windows (обычно на сотнях компьютеров) в корпоративных средах основан на технологии клонирования дисков. Системный администратор устанавливает базовую операционную систему и дополнительное программное обеспечение, используемое в компании, на эталонный компьютер. После настройки машины для работы в корпоративной сети для копирования дисков эталонного компьютера на десятки или сотни других компьютеров используются автоматизированные средства копирования диска или системы (например программа Ghost компании Symantec, Image Drive компании PowerQuest или RapiDeploy компании Altiris). На полученных клонах выполняются окончательные настройки, например назначение уникальных имен. Затем готовые компьютеры поступают сотрудникам компании.

Еще одним популярным методом развертывания является использование служебной программы sysdiff корпорации Майкрософт (входит в пакет Windows Resource Kit). Это средство требует, чтобы администратор выполнил полную установку (обычно это автоматизированная установка с помощью сценария) на каждом компьютере, а затем служебная программа sysdiff автоматизирует применение образов установки дополнительного программного обеспечения.

Поскольку этап установки отсутствует, а посекторное копирование диска эффективнее пофайлового, развертывание с помощью клонирования может сэкономить десятки часов по сравнению с установкой при помощи служебной программы sysdiff. Кроме того, системному администратору не требуется изучать использование установок без участия пользователя или служебной программы sysdiff, а также создавать и отлаживать сценарии установки. Только это экономит многие часы работы.


Проблема дублирования SID

Недостатком клонирования является то, что этот процесс поддерживается корпорацией Майкрософт в очень ограниченной степени. Корпорация Майкрософт объявила, что клонирование систем поддерживается только в том случае, если оно выполняется до начала этапа установки ОС Windows, на котором используется графический интерфейс (GUI). Когда процесс установки достигает этого этапа, компьютеру присваивается имя и уникальный SID компьютера. Если система клонируется после этого этапа, клонированные машины будут иметь одинаковые SID компьютера. Следует заметить, что простое изменение имени компьютера или включение компьютера в другой домен не изменяет SID компьютера. Изменение имени или домена приводит лишь к изменению SID домена, и только в том случае, если компьютер был ранее связан с доменом.

Для понимания проблем, которые может вызвать клонирование, сначала необходимо разобраться с тем, как индивидуальным локальным учетным записям на компьютере назначаются SID. SID локальных учетных записей состоят из SID компьютера и дополнительного идентификатора RID (Relative Identifier — относительный идентификатор). Идентификатор RID начинается с фиксированного значения и увеличивается на единицу при создании каждой учетной записи. Так, второй учетной записи на том же компьютере будет присвоен такой же RID, как и второй учетной записи на клоне. В результате обе учетные записи будут иметь одинаковый SID.

Дублирование SID не является проблемой в среде на основе доменов, так как учетные записи домена получают SID, основанные на SID домена. Но, согласно статье базы знаний корпорации Майкрософт Q162001 “Не создавайте копии установок Windows на различных дисках”, в среде с использованием рабочих групп безопасность основана на SID локальных учетных записей. Таким образом, если два компьютера будут иметь пользователей с одинаковыми SID, рабочая группа не сможет различить этих пользователей. Все ресурсы, включая файлы и разделы реестра, к которым имеет доступ один пользователь, будут доступны и другому.

Еще одним примером, когда дублирование идентификаторов SID может вызвать проблемы, — наличие съемного носителя, отформатированного в файловой системе NTFS, к файлам и каталогам которого применяются атрибуты безопасности локальной учетной записи. Если такой носитель переносится на другой компьютер, обладающий таким же SID, то локальные учетные записи, которые иначе не получили бы доступа к файлам, могут получить его, если идентификаторы этих учетных записей совпадут с идентификатором в атрибутах безопасности. Такое невозможно, если компьютеры имеют разные SID.

В написанной Марком статье “ Варианты развертывания систем NT”, опубликованной в июньском выпуске журнала Windows NT Magazine, более подробно рассматривается вопрос дублирования SID, а также излагается официальная позиция корпорации Майкрософт в отношении клонирования. Чтобы узнать, есть ли в вашей сети проблема дублирования SID, воспользуйтесь программой PsGetSid, которая отображает SID компьютеров.


Программа NewSID

NewSID — программа, разработанная нами для изменения SID компьютера. Сначала генерируется случайный SID для компьютера, а затем выполняется обновление экземпляров существующего SID компьютера, которые находятся в реестре и дескрипторах безопасности файлов — старый SID заменяется на новый. Для работы программы NewSID необходимы права администратора. Она обладает двумя функциями: изменение SID и изменение имени компьютера.

Чтобы воспользоваться автоматическим режимом работы программы NewSID, укажите в командной строке параметр “/a”. Также существует возможность включить автоматическую замену имени компьютера, указав после этого параметра новое имя. Пример:

newsid /a [новое_имя]

При этом программа NewSID будет выполняться без выдачи запросов, изменит имя компьютера на новое_имя и перегрузит компьютер, если процесс пройдет без ошибок.

Примечание. Если в системе, в которой требуется запустить программу NewSID, работает служба IISAdmin, необходимо остановить ее до запуска программы. Для выключения службы IISAdmin воспользуйтесь следующей командой: net stop iisadmin /y

Функция синхронизации SID программы NewSID позволяет указать, что новый SID должен не генерироваться случайным образом, а быть получен у другого компьютера. Эта функция позволяет перемещать резервный контроллер домена в новый домен, так как отношение контроллера к домену определяется одинаковым SID этого контроллера и других контроллеров домена. Просто нажмите на кнопку “Synchronize SID” (синхронизировать SID) и введите имя целевого компьютера. Необходимо иметь разрешения на изменение параметров безопасности разделов реестра целевого компьютера. Обычно это означает, что для пользования этой функцией требуется выполнить вход в качестве администратора домена.

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

Важно! Следует помнить, что, несмотря на тщательное тестирование программы NewSID, вы берете все риски на себя, используя ее. Как при использовании любого программного обеспечения, вносящего изменения в настройки файлов и реестра, настоятельно рекомендуется выполнить полное резервное копирование имеющейся на компьютере информации до запуска программы NewSID.


Перемещение резервного контроллера домена

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

1.Включите доменный контроллер, который требуется переместить, и войдите в систему. Воспользуйтесь программой NewSID для синхронизации SID резервного контроллера домена с SID основного контроллера того домена, в который нужно переместить резервный контроллер.
2.Выполните перезагрузку системы, в которой был изменен SID (т.е. резервного контроллера). Так как в домене, с которым теперь связан резервный контроллер, уже есть действующий основной контроллер, резервный контроллер будет загружен в новом домене именно в качестве резервного.
3.Он будет показан в диспетчере серверов в качестве рабочей станции, поэтому воспользуйтесь кнопкой “Add to Domain” (добавить в домен), чтобы добавить резервный контроллер в новый домен. При добавлении обязательно установите переключатель в состояние “BDC” (резервный контроллер).


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

Программа NewSID начинает работу со считывания существующего SID компьютера. SID компьютера хранится в кусте реестра SECURITY в разделе SECURITY\SAM\Domains\Account. Этот раздел содержит значения F и V. Значение V является двоичным, и в конце его находится SID компьютера. Программа NewSID проверяет соответствие SID стандартному формату (три 32-разрядных поля защитного кода , за которыми идут три 32-разрядных поля подчиненного защитного кода).

Далее программа генерирует для компьютера новый случайный SID. Производится тщательное генерирование по-настоящему случайного 96-разрядного значения для замены 96 разрядов 3 полей подчиненного защитного кода, составляющих SID компьютера.

Далее следуют три этапа замены SID компьютера. На первом этапе разделы и значения кустов реестра SECURITY и SAM сканируются на предмет старого SID. При нахождении старого SID в значении оно заменяется новым SID, а при обнаружении в имени раздел и его подразделы копируются в новый подраздел, получающий то же имя, но с новым SID.

Последние два этапа — обновление дескрипторов безопасности. С разделами реестра и файлами системы NTFS связаны параметры безопасности. Дескриптор безопасности состоит из элемента, который определяет, какая учетная запись является владельцем ресурса; какая группа является основным групповым владельцем; необязательного списка элементов, определяющих действия, которые разрешены пользователям или группам — DACL (Discretionary Access Control List — список управления доступом на уровне пользователей); а также необязательного списка элементов, определяющих, какие действия определенных пользователей или групп должны генерировать записи в журнале событий системы — SACL (System Access Control List — системный список управления доступом). Пользователь или группа определяется в этих дескрипторах безопасности по SID. Как уже сказано выше, локальные учетные записи пользователей (кроме встроенных учетных записей, например “Администратор”, “Гость” и т.д.) имеют свои SID, состоящие из SID компьютера и идентификатора RID.

Первая часть обновления дескрипторов безопасности выполняется для всех файлов системы NTFS компьютера. Каждый дескриптор безопасности сканируется на наличие идентификатора SID компьютера. Когда программа NewSID находит такой идентификатор, он заменяется на новый идентификатор SID компьютера.

Вторая часть обновления дескрипторов безопасности выполняется для реестра. Во-первых, программа NewSID должна просканировать все кусты, а не только загруженные. Каждой учетной записи пользователя сопоставлен куст реестра, загружаемый в качестве HKEY_CURRENT_USER при входе пользователя в систему, но который остается на диске в каталоге профиля пользователя, пока вход не будет осуществлен. Программа NewSID определяет расположение кустов всех пользователей с помощью перечисления раздела реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList, указывающего каталоги, в которых сохранены кусты. Затем выполняется загрузка кустов в реестр с помощью функции RegLoadKey в HKEY_LOCAL_MACHINE и весь реестр сканируется для проверки каждого дескриптора безопасности на наличие старого SID компьютера. Обновление производится так же, как и для файлов, а по его завершении программа NewSID выгружает кусты пользователей, которые были загружены. На последнем этапе программа сканирует раздел HKEY_USERS, который содержит куст зарегистрированного в данный момент пользователя, и куст .Default. Это необходимо, потому что куст невозможно загрузить дважды и, соответственно, куст зарегистрированного пользователя не был загружен в раздел HKEY_LOCAL_MACHINE, когда программа NewSID выполняла загрузку других кустов.

Наконец, программа NewSID должна обновить подразделы ProfileList, чтобы они имели ссылки на новые SID учетных записей. Этот этап необходим для правильного сопоставления профилей ОС Windows NT с учетными записями пользователей после изменения SID учетных записей в соответствии с SID компьютера.

Программа NewSID обеспечивает себе доступ и возможность изменения каждого файла и раздела реестра в системе путем активизации следующих привилегий: System (система), Backup (архивация), Restore (восстановление) и Take Ownership (смена владельца).


Использование исходного текста программы

Полный исходный текст программы NewSID предоставляется для целей обучения. Использовать этот исходный текст в коммерческих или бесплатных программах для изменения SID не допускается, но можно использовать соответствующие методики в других программах для частного или коммерческого использования.