Записи с меткой «Active Directory»

Недавно довелось оказывать помощь одной небольшой компании, с наведением порядка во внутренней сети. Одним из первых пунктов было переименование домена, которое было успешно проведено. Но проведено было в спешке и в военно-полевых условиях, поэтому план работ и чеклист перед носом не лежал, к чему это привело сейчас расскажу.

(далее…)

Реклама

Microsoft IT Academy в СибАДИ запускает новый курс Администрирование служб Active Directory (Windows Server 2008 R2).

Курс рассчитан на 72 часа (9 суббот),  вам по полочкам разложат знания, которые необходимы для грамотного построения и управления службой каталогов, причем стоить это будет очень вменяемые деньги.

Курс читает Юрий Лебедев, IT-специалист высокого уровня, Активный участник Омского MCP-клуба, автор большого количества web-кастов, призер программы IT-Bonus, и просто мой хороший друг.

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


Это была реклама фундаментальных знаний, новых технологий и Юрия Лебедева

Недавно меня попросили рассказать, что как и в какой последовательности сделать для того, чтобы перенести роль контроллера домена с одного сервера на другой. Именно этому посвящена статья.

К чему сводится развёртывание второго контроллера домена в существующем домене и перенос всей структуры службы каталогов на него:

  1. Установка операционной системы (Microsoft Windows Server 200x)
  2. Присоединение сервера, в качестве рядового  сервера в существующий домен
  3. Установка службы каталогов и DNS-сервера на сервер
  4. Перенос ролей хозяев операций (FSMO)
  5. Удаление старого контроллера домена из структуры

 

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

Для записи примеров, я использовал 2 виртуальные машины, развернутые в Microsoft VirtualPC 2007. На одной из них уже установлена роль контроллера домена (domain.local), служба DNS (хранящая информацию о зоне в службе каталогов (рис.1)). Вторая – рядовой сервер, член существующего домена.

Чтобы проверить где хранятся зоны, необходимо на контроллере домена открыть консоль управления DNS-сервером (Пуск –> Выполнить –> dnsmgmt.msc), развернуть зоны прямого просмотра, щелкнуть правой кнопкой по зоне, выбрать Свойства (Properties). На вкладке Основное (General) в разделе Тип (Type) должно быть указано Интегрировано в Active Directory (Active Directory-Integrating)

Zone_Store

Рисунок 1. Хранение зоны

Настройки сетевых интерфейсов показаны на рисунках 2 и 3. Обращаю внимание, что оба адреса статические.

IPsettinsDC

IPsettinsServer

Рисунок 2. Настройки сетевого интерфейса на контроллере домена

Рисунок 3. Настройки сетевого интерфейса на рядовом сервере

 

Итак, приступаем к п.3. Разворачиваем службу каталогов (видеофрагмент 1) и сервер DNS (видеофрагмент 2) на рядовом сервере

Видеофрагмент 1. Установка второго контроллера домена в существующий домен

 

Видеофрагмент 2. Установка DNS сервера на новый контроллер домена существующего домена

 

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

Уровень ЛЕСА — Единственные для леса роли
Хозяин схемы (Schema master FSMO).
В каждом лесу существует один хозяин схемы. Эта роль необходима для расширения схемы леса Active Directory или для выполнения команды adprep /domainprep.

Хозяин именования домена(Domain naming master FSMO). В каждом лесу существует один хозяин именования домена. Эта роль необходима для добавления или удаления доменов или разделов приложений в лесу.

Уровень ДОМЕНА — Единственные для домена роли
Хозяин RID (RID Master FSMO).
В каждом домене существует один хозяин RID. Эта роль необходима для выделения идентификаторов RID, которые необходимы новым или существующим контроллерам доменов учетных записей пользователей, учетных записей компьютеров, а также групп безопасности. 

Эмулятор PDC(PDC emulator). В каждом домене существует один эмулятор PDC. Эта роль необходима для контроллера домена, отправляющего обновления базы данных резервным контроллерам домена Windows NT. Контроллер домена, владеющий этой ролью, также используется некоторыми средствами администрирования и получает обновления паролей учетных записей пользователей и компьютеров. 

Хозяин инфраструктуры (Infrastructure Master). В каждом домене существует один хозяин инфраструктуры. Эта роль необходима контроллерам доменов для успешного выполнения команды adprep /forestprep, а также для обновления атрибутов идентификаторов безопасности (SID) и различающихся атрибутов имен для объектов, на которые указывают междоменные ссылки.

Существует еще важная шестая роль контроллера домена – это хранение глобального каталога. Такую роль может иметь любой контроллер в домене, т.е. она не относится к единственно возможной ни для леса, ни для домена. Другими словами Global Catalog это не FSMO – flexible single master operation

Вариантов их переноса существует два: с помощью команды ntdsutil и с помощью оснасток.

Для переноса ролей с помощью команды ntdsutil необходимо совершить следующие действия:

Запускаем команду ntdsutil.
ntdsutil: roles
fsmo maintenance: connection
server connections: connect to server имя_сервера
Имя_сервера — это имя контроллера домена, которому назначается роль FSMO.
Binding to имя_сервера
Connected to имя_сервера using credentials of locally logged on user
server connection: quit
fsmo maintenance transfer schema master
fsmo maintenance transfer domain naming master
fsmo maintenance transfer PDC
fsmo maintenance transfer RID master
fsmo maintenance transfer infrastructure master
fsmo maintenance quit
ntdsutil: quit
Для захвата ролей, при не доступном владельце контролера домена, вместо transfer пишем seize.

Перенос хозяев операций с помощью оснасток рассмотрим в третьем видеофрагменте:

Видеофрагмент 3. Перенос хозяев операций на новый контроллер домена

 

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

netdom query fsmo

Результат команды должен выглядеть следующим образом:

FSMO

Чтобы netdom стал доступным необходима установка support tools, который есть на установочном диске D:\SUPPORT\TOOLS\SUPTOOLS.MSI

После этого мы можем удалить со старого контролера домена службу каталогов и службу DNS, тем самым понизив его до рядового сервера, провести на нем какие-либо технические работы либо вовсе списать. Однако настоятельно рекомендую после проведения ТО, снова установит на сервер роль  контроллера домена, т.к. проблем, которые можно огрести в случае падения единственного контроллера домена это поможет избежать с вероятностью 100%. После удаления службы DNS не необходимо изменит DNS сервер в настройках сетевых подключений всех серверов и рабочих станций. Там где эти настройки не автоматические – заменит вручную, там где настройки сети получают по DHCP – в настройках DHCP-сервера.

Видеофрагмент 4. Удаление контроллера домена в существующем домене.


P.S. При подготовке стати, в целях сокращения времени ее написания, использовались следующие материалы:

Вчера на MCP-клубе, после доклада, во время обсуждения Ю.Лебедеву был задан вопрос о практических сценариях применения PoSH в среде предприятия. Как я уже писал, из-за проблем с оборудованием, Юрию пришлось показывать и рассказывать про Posh без использования заготовок и виртуальных машин.
Несмотря на наличие на сайте у Юры web-каста про управление объектами Active Directory различными способами, в т.ч. PowerShell, хочу поделится своими заготовками.
Обычно примеры сценариев для создания объектов  Active Directory выглядят следующим образом:
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objUser = $objDomain.Create(«user», «CN=» + $UserDisplayName) #This creates a local object for you to update
$objUser.Put(«givenName»,$UserFirstName)
$objUser.Put(«initials»,$UserMiddleInit)
$objUser.Put(«sn»,$UserLastName)
$objUser.Put(«sAMAccountName»,$UserLoginID)
$objUser.Put(«displayName»,$UserDisplayName)
$objUser.Put(«userPrincipalName»,$UserPrincipalName)
$objUser.SetInfo() #This will create the User ID on the domain, disabled.  This is required for you to set a password or enable the ID.
$objUser.AccountDisabled = $false #By default the User ID is disabled and must be enabled to use.
$objUser.SetPassword(«Default123») #Set this password to anything you need it to be
$objUser.SetInfo()
Однако в моём случае выполнение такого сценария не заладилось, и чтобы долго не искать причины, я набросал несколько своих, создающих основные типы объектов в Active Directory. Создавать десятки и сотни объектов необходимости не было, поэтому подгрузка данных из внешних файлов не рассматривалась.
Сценарий 1: Создание OU.
$objADSI = [ADSI]“LDAP://dc=domain,dc=local”
$Class = “organizationalUnit”
$OU = “OU=NewOU”
$objOU = $objADSI.create($Class, $OU)
$objOU.SetInfo()
$Desription = «Описание создаваемого OU»
$objOU.Description=$Desription
$objOU.SetInfo()
Сценарий 2: Создание групп безопасности.
$objADSI = [ADSI]“LDAP://ou=NewOU,dc=oesk,dc=local”
$ADS_GROUP_TYPE_GLOBAL_GROUP = 0x00000002
$GroupName = «SecurityGroupName»
$Description=»Описание создаваемой группы»
$objGroup=$objADSI.Create(«group», «CN=»+ $GroupName)
$objGroup.SetInfo()
$objGroup.sAMAccountName=$GroupName
$objGroup.Description=$Description
$objGroup.SetInfo()
Сценарий 3: Создание пользователей.
$objADSI = [ADSI]“LDAP://ou=NewOU,dc=oesk,dc=local”
$Class = “user”
#Создание объекта
$CN = “CN=Иванов Иван Иванович”
$objUser = $objADSI.create($Class, $CN)
$objUser.SetInfo()
#Ввод данных о сотруднике
$Login=»IvanovII»
$objUser.SamaccountName=$Login
$objUser.DisplayName=»Иванов Иван Иванович»
$objUser.GivenName=»Иван Иванович»
$objUser.sn=»Иванов»
$objUser.Description=»специалист отдела»
$objUser.mail=$Login+»@pochta.ru»
$objUser.userPassword=»P@r0l15″
$objUser.SetInfo()
#Активация аккаунта
$objUser.psbase.invokeset(«AccountDisabled»,»False»)
$objUser.SetInfo()
Как и рассказывал Юрий, я тоже присоединяюсь к его словам, создание сценариев, выполнение и просмотр их результатов удобнее всего с использование графической консоли PowerShell_ISE. В ней в любой момент удобнее всего отследить в каком месте вкралась ошибка, и исправить ее.

24.12.2009 состоялся мой дебют в качестве докладчика на собрании MCP-клуба в Омске.

Тема доклада «Повышение уровня домена 2000->2008. Переименование домена. Плюшки, грабли, etc».. Тема вызвала интерес и резонанс (как мне показалась) у участников, как в части повышения уровня доменов, так и в плане переименования. Особый интерес, как я ожидал, вызвал вопрос переименования.

Презентация моего выступления здесь, увы она малоинформативна, потому что основные моменты показывались на предварительно развернутых виртуальных машинках. Если всё удачно сложится – подготовлю отдельный каст, и подробную статейку там где люди пишут статьи об IT, доступно о сложном.

Был в процессе презентации был один вопрос, который поставил меня в тупик. Каким образом переименование домена скажется в том случае, если в сети развернут RIS сервер. Не сталкиваясь на практике с подобным, я честно говоря даже не нашелся что ответить, т.к. и в инструкции по переименованию домена такой аспект тоже не рассматривался.

Ну и наконец самое вкусное: за выступление на клубе мне достался набор волшебных инструментов… самый полезный из которых конечно же МОЛОТОК.

P1030768 P1030767

И баллы в программе ИТ-бонус.