ActiveDirectory/Migration/ADMT/Intermediary DC
Миграция подразделений, групп и пользователей из домена MS AD в Samba с использованием промежуточного контроллера домена на Windows.
Исходные данные:
- DC1 - Windows Server 2016, контроллер домена wind.old на MS AD
- DC2 - Windows Server 2019, контроллер домена samba.new на MS AD
- DC3 - ALT Server, контроллер домена samba.new на MS AD
Цель: произвести миграцию подразделений, групп и пользователей из домена wind.old, размещённого на контроллере домена Windows Server 2016 с MS AD, в домен samba.new, размещённый на контроллере ALT Server с Samba AD, используя промежуточный контроллер на Windows Server 2019.
Мы имеем старый домен wind.old, размещённый на контроллере домена Windows Server 2016 с MS AD, и необходимо заменить его новым доменом samba.new на контроллере ALT Server с Samba AD. Миграцию будем выполнять в два этапа:
- На Windows Server 2019 развернём домен samba.new и с помощью ADMT (Active Directory Migration Tool) проведём миграцию подразделений, групп и пользователей из домена wind.old в домен samba.new.
- На втором этапе сделаем ALT Server вторичным контроллером домена samba.new и выведем Windows Server 2019 из состава домена.
Миграция с использованием ADMT из домена wind.old в samba.new
Подготовка к миграции
- Для выполнения миграции необходимо настроить двустороннее доверительное отношение между доменами wind.old и samba.new. Подробное описание процесса можно найти в статье по следующей ссылке:Настройка доверительных отношений между доменами.
- На контроллере домена Windows Server 2016 необходимо установить SQL Server 2016 Express. Скачать можно по следующей ссылке: SQL Server 2016 Express.
- После установки SQL Server, нужно установить ADMT 3.2 (Active Directory Migration Tool). Скачайте его по следующему адресу:ADMT 3.2.
- Установите и запустите Password Export Server в сервисах Windows. Инструкции и скачивание доступны по ссылке: Password Export Server.
- Администратор домена wind.old должен быть добавлен в группу «Администраторы» в домене samba.new в разделе «Builtin».
Миграция подразделений
В ADMT не предусмотрена возможность миграции подразделений (OU). Однако подразделения можно экспортировать. Для этого необходимо выполнить следующие шаги:
- На контроллере домена Windows Server 2016 с помощью утилиты ldifde создадим файл для экспорта, содержащий информацию о подразделениях в домене wind.old.
- Для этого выполните следующую команду:
C:\Users\Администратор> ldifde -f C:\OUExport.ldif -d "DC=wind,DC=old" -p subtree -r "(objectClass=organizationalUnit)" -l "dn,objectClass" Подключение к "DC1.wind.old" Вход от имени текущего пользователя с помощью SSPI Экспорт каталога в файл C:\OUExport.ldif Поиск элементов... Записываются элементы... 3 элементов экспортировано Команда успешно выполнена
- Для этого выполните следующую команду:
- Полученный текстовый файл OUExport.ldif необходимо отправить на контроллер домена ALT Server, воспользовавшись общим диском или любым другим доступным способом передачи файлов.
- Для работы с файлом OUExport.ldif в новом домене, необходимо внести изменения в файл. В файле OUExport.ldif необходимо удалить информацию о подразделении Domain Controllers во избежание конфликтов при экспорте, а также заменить имя домена. Для замены имени домена выполните следующую команду в PowerShell:
(Get-Content -Path "C:\OUExport.ldif") -replace "wind", "samba" -replace "old", "new" | Set-Content -Path "C:\OUExport.ldif"
- Пример содержания файла до изменений:
dn: OU=Domain Controllers,DC=wind,DC=old changetype: add objectClass: top objectClass: organizationalUnit dn: OU=OU1,DC=wind,DC=old changetype: add objectClass: top objectClass: organizationalUnit dn: OU=OU2,DC=wind,DC=old changetype: add objectClass: top objectClass: organizationalUnit
- Пример содержания файла после изменений:
dn: OU=OU1,DC=samba,DC=new changetype: add objectClass: top objectClass: organizationalUnit dn: OU=OU2,DC=samba,DC=new changetype: add objectClass: top objectClass: organizationalUnit
- Пример содержания файла до изменений:
- После выполнения всех необходимых изменений в файле можно произвести импорт данных в новый AD. Для этого откройте командную строку от имени администратора и выполните следующую команду:
C:\Users\Администратор> ldifde -i -f C:\OUExport.ldif Connecting to "DC2.samba.new" Logging in as current user using SSPI Importing directory from file "C:\OUExport.ldif" Loading entries... 2 entries modified successfully. The command has completed successfully
- В выводе видно, что 2 записи успешно обновлены, и команда завершена без ошибок. Также в RSAT (Remote Server Administration Tools) можно увидеть подразделения из старого домена.
- Миграция подразделений OU1 и OU2 успешно выполнена.
Миграция групп
Для выполнения миграции групп в данном примере используется Active Directory Migration Tool (ADMT). Один из важных моментов при работе с ADMT заключается в том, что группу можно мигрировать вместе с её пользователями, без необходимости выполнения отдельных действий для переноса пользователей. Однако если миграция группы выполняется одновременно с её участниками, все пользователи будут перемещены в то же подразделение (OU), что и группа.
Например, в исходном домене:
- OU1 содержит трёх пользователей: test1, test2, test3.
- OU2 содержит группу Group1.
Если при миграции группы Group1 в новый домен её участники будут переноситься одновременно, то все пользователи (test1, test2, test3) окажутся в том же OU, что и группа, а именно в OU2 на целевом сервере Samba. Это может нарушить исходную структуру домена. Поэтому целесообразно мигрировать группы и пользователей раздельно, если они не принадлежат одному и тому же подразделению.
Пошаговая инструкция по миграции групп с использованием ADMT
- Запуск ADMT и выбор параметров миграции
- Откройте ADMT на сервере с Windows Server 2016.
- На панели программы выберите «Action» → Group Account Migration Wizard.
- В появившемся окне выберите:
- Исходный домен: wind.old (контроллер: \DC1.wind.old).
- Целевой домен: samba.new (контроллер: \DC2.samba.new).
- Нажмите Далее.
- Выбор группы для миграции
- В разделе Select Groups from Domain выберите группу, которую нужно перенести, например, Group1.
- Нажмите Далее.
- Указание целевого OU
- Укажите целевое подразделение (OU) для миграции группы. В данном примере это OU2.
- Нажмите Далее.
- Настройка параметров группы
- В разделе Group Options: Если необходимо перенести группу вместе с её участниками, установите галочку Copy Group Members. Если перенос пользователей вместе с группой не требуется, оставьте параметры по умолчанию.
- При миграции SID будет предложено включить аудит и создание специальной группы с чем необходимо согласиться.
- Нажмите Далее.
- Исключение атрибутов
- В разделе Object Property Exclusion можно исключить определённые атрибуты группы из процесса миграции.
- В данном примере оставьте настройки по умолчанию и нажмите Далее.
- Управление конфликтами
- В окне Conflict Management задаются параметры для разрешения конфликтов при миграции. Например, при совпадении имён объектов.
- Оставьте настройки по умолчанию и нажмите Далее.
- Завершение миграции
- После проверки настроек нажмите Готово.
- В появившемся окне будет отображён процесс миграции, а также статус её завершения. Убедитесь, что миграция завершилась без ошибок.
- Проверка на целевом домене
- Выполните проверку наличия в RSAT на целевом домене samba.new в подразделении OU2 группы Group1.
Миграция пользователей
Миграция пользователей осуществляется с помощью Active Directory Migration Tool (ADMT). Этот процесс включает перенос учетных записей пользователей из исходного домена в целевой, с возможностью настройки паролей, сохранения членства в группах и других параметров.
Пошаговая инструкция по миграции пользователей
- Запуск ADMT и настройка параметров миграции
- Запустите ADMT на сервере с Windows Server 2016.
- На панели программы выберите «Action» → User Account Migration Wizard.
- В появившемся окне укажите:
- Исходный домен: wind.old (контроллер: \DC1.wind.old).
- Целевой домен: samba.new (контроллер: \DC2.samba.new).
- Нажмите Далее.
- Выбор пользователей для миграции
- В разделе Select Users from Domain выберите учетные записи, которые необходимо перенести. Например, test1, test2, test3.
- Нажмите Далее.
- Указание целевого OU
- Укажите целевое подразделение (OU) для миграции пользователей. В данном примере это OU1.
- Нажмите Далее.
- Настройка параметров паролей
- В разделе Password Options выберите Migrate Passwords.
- Нажмите Далее.
- Настройка перехода учетных записей
- В окне Account Transition Options выберите параметр Target same as source, если нет необходимости применять другие настройки.
- Нажмите Далее.
- Настройка членства в группах
- В разделе User Options выберите Fix Users' Membership. Эта настройка автоматически добавляет пользователей в группы целевого домена, соответствующие их участию в исходных группах.
- Нажмите Далее.
- Исключение атрибутов
- В разделе Object Property Exclusion можно исключить определённые атрибуты учетных записей из процесса миграции.
- В данном примере оставьте настройки по умолчанию. Нажмите Далее.
- Управление конфликтами
- В разделе Conflict Management задайте параметры для разрешения конфликтов, например, при совпадении имён учетных записей.
- Оставьте настройки по умолчанию.
- Нажмите Далее.
- Завершение миграции
- Проверьте параметры, нажмите Готово.
- В появившемся окне отобразится процесс миграции и статус её завершения. Убедитесь, что миграция завершилась без ошибок.
- Проверка наличия пользователей в целевом домене
- В RSAT в домене samba.new в OU1 проверьте наличие пользователей и принадлежность их к группам.
- По умолчанию у пользователей после миграции будет выставлен атрибут «требовать смены пароля при следующем входе в систему», для того что бы продолжить использовать такой же пароль для учётной записи пользователя как в старом домене, необходимо сменить на атрибут «срок действия пароля не ограничен».
- Действия после миграции
- По завершению процесса миграции подразделений, групп и пользователей, необходимо удалить на целевом домене из подразделения Buitin в группе Администраторы администратора домена с которого проводилась миграция, который был добавлен ранее на этапе подготовки к миграции.
- Так же необходимо удалить отношение доверия между доменами.
Создание второго контроллера домена на Samba AD и вывод первого контроллера из домена
В данном разделе рассматривается процесс добавления второго контроллера домена (DC3) в существующий домен Samba AD (samba.new) и замены первого контроллера домена (DC2) на новый. Этот процесс включает установку необходимых пакетов, настройку Kerberos, ввод нового сервера в домен, проверку репликации, передачу ролей FSMO и удаление старого контроллера.
- Установка и настройка второго контроллера домена (DC3)
- Установка пакетов
- Для корректной работы второго контроллера домена на сервере DC3 необходимо установить пакет task-samba-dc, который включает поддержку Heimdal Kerberos.Samba на базе Heimdal Kerberos использует KDC, несовместимый с MIT Kerberos. Поэтому на контроллере домена на базе Heimdal Kerberos из пакета samba-dc, для совместимости с клиентской библиотекой libkrb5, в файле krb5.conf (в блоке libdefaults) необходимо отключить использование ядерного кеша ключей — KEYRING:persistent:%{uid}:
# apt-get install task-samba-dc
# control krb5-conf-ccache default
- Для корректной работы второго контроллера домена на сервере DC3 необходимо установить пакет task-samba-dc, который включает поддержку Heimdal Kerberos.
- Отключение конфликтующих сервисов
- Перед настройкой нового контроллера отключаем ненужные службы:
# for service in bind krb5kdc nmb smb slapd; do chkconfig $service off; service $service stop; done
- Перед настройкой нового контроллера отключаем ненужные службы:
- Очистка предыдущих данных
- Удаляем конфигурационные файлы и создаём каталог:
# rm -f /etc/samba/smb.conf # rm -rf /var/lib/samba # rm -rf /var/cache/samba # mkdir -p /var/lib/samba/sysvol
- Удаляем конфигурационные файлы и создаём каталог:
- Настройка Kerberos
- Редактируем файл /etc/krb5.conf, чтобы задать параметры домена SAMBA.NEW:
[libdefaults] dns_lookup_kdc = true dns_lookup_realm = false default_realm = SAMBA.NEW
- Редактируем файл /etc/krb5.conf, чтобы задать параметры домена SAMBA.NEW:
- Получение билета администратора
- Аутентифицируемся в домене с помощью Kerberos:Проверяем билет:
# kinit Администратор
Вывод должен содержать информацию о выданном билете Kerberos.# klist
- Аутентифицируемся в домене с помощью Kerberos:
- Ввод DC3 в домен
- Теперь вводим сервер DC3 в домен Samba:После успешного ввода в домен в файле resolv.conf необходимо сменить адрес PDC на адрес вторичного DC.
# samba-tool domain join --option="ad dc functional level = 2016" samba.new DC -U SAMBA\\Администратор --realm=samba.new
- Теперь вводим сервер DC3 в домен Samba:
- Настройка Kerberos
- В момент создания домена Samba автоматически конфигурирует шаблон файла /var/lib/samba/private/krb5.conf для вашего домена. Его можно просто скопировать с заменой:
# cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
- В момент создания домена Samba автоматически конфигурирует шаблон файла /var/lib/samba/private/krb5.conf для вашего домена. Его можно просто скопировать с заменой:
- Запуск и проверка сервиса Samba
- Включаем автоматический запуск Samba и проверяем её работу:Проверяем информацию о домене:
# systemctl enable --now samba
Просмотр предоставляемых служб:# samba-tool domain info 127.0.0.1 Forest : samba.new Domain : samba.new Netbios domain : SAMBA DC name : dc3.samba.new DC netbios name : DC3 Server site : Default-First-Site-Name Client site : Default-First-Site-Name
Проверяем имена хостов:# smbclient -L localhost -U Администратор Password for [SAMBA\Администратор]: Sharename Type Comment --------- ---- ------- sysvol Disk netlogon Disk IPC$ IPC IPC Service (Samba 4.20.6-alt3) SMB1 disabled -- no workgroup available
# host -t SRV _kerberos._udp.samba.new _kerberos._udp.samba.new has SRV record 0 100 88 dc2.samba.new. _kerberos._udp.samba.new has SRV record 0 100 88 dc3.samba.new. # host -t SRV _ldap._tcp.samba.new. _ldap._tcp.samba.new has SRV record 0 100 389 dc2.samba.new. _ldap._tcp.samba.new has SRV record 0 100 389 dc3.samba.new. # host -t A samba.new. samba.new has address 10.64.238.200 samba.new has address 10.64.238.173
- Включаем автоматический запуск Samba и проверяем её работу:
- Проверка репликации
- Проверяем статус репликации между контроллерами:Если репликация успешна, переходим к следующему шагу.
# samba-tool drs showrepl
- Проверяем статус репликации между контроллерами:
- Проверка наличия целевых объектов для миграции
- Проверяем наличие пользователей:
# samba-tool user list Гость test2 Администратор test3 test1 krbtgt
- Проверяем группы:
# samba-tool group list Группа с запрещением репликации паролей RODC Пользователи журналов производительности Гости Пользователи Пользователи системного монитора Администраторы основного уровня предприятия Администраторы предприятия Group1 …
- Проверяем членов группы Group1:
# samba-tool group listmembers Group1 test3 test1 test2
- Проверяем наличие пользователей:
- Передача ролей FSMO и удаление DC2
- Перед тем как удалить DC2, необходимо убедиться, что он не является владельцем ролей FSMO. Проверяем текущее состояние:Все роли принадлежат DC2.
# samba-tool fsmo show SchemaMasterRole owner: CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new InfrastructureMasterRole owner: CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new RidAllocationMasterRole owner: CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new PdcEmulationMasterRole owner: CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new DomainNamingMasterRole owner: CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new
- Передаем все роли FSMO на DC3:После выполнения команды проверяем ещё раз:
# samba-tool fsmo seize --force --role=all
Теперь все роли FSMO принадлежат контроллеру домена ALT Server c именем DC3, что необходимо для последующих действий по выводу из домена контроллере DC2.# samba-tool fsmo show SchemaMasterRole owner: CN=NTDS Settings,CN=DC3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new InfrastructureMasterRole owner: CN=NTDS Settings,CN=DC3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new RidAllocationMasterRole owner: CN=NTDS Settings,CN=DC3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new PdcEmulationMasterRole owner: CN=NTDS Settings,CN=DC3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new DomainNamingMasterRole owner: CN=NTDS Settings,CN=DC3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=DC3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samba,DC=new
- Перед тем как удалить DC2, необходимо убедиться, что он не является владельцем ролей FSMO. Проверяем текущее состояние:
- Установка пакетов
- Вывод контроллера на базе Windows Server 2019 из домена
- Удаление DC2 из домена
- Выводим контроллер домена из эксплуатации, удаляя всю информацию о нём. Для этого на контроллере домена ALT Server выполните команду:Если процесс прошёл успешно, DC2 больше не будет числиться в домене.
# samba-tool domain demote --remove-other-dead-server=dc2 -U Администратор
- Проверяем отсутствие записей о DC2:
# host -t SRV _ldap._tcp.samba.new. _ldap._tcp.samba.new has SRV record 0 100 389 dc3.samba.new. # host -t SRV _kerberos._udp.samba.new. _kerberos._udp.samba.new has SRV record 0 100 88 dc3.samba.new. # host -t A samba.new. samba.new has address 10.64.238.200
- Выводим контроллер домена из эксплуатации, удаляя всю информацию о нём. Для этого на контроллере домена ALT Server выполните команду:
- Очистка метаданных старого контроллера
- После удаления DC2 необходимо очистить его записи в AD.
- Проверяем список компьютеров:Удаляем DC2 из базы LDAP:
# samba-tool computer list DC3$ DC2$
# ldbdel -H /var/lib/samba/private/sam.ldb "CN=DC2,OU=Domain Controllers,DC=samba,DC=new" Deleted 1 record # samba-tool computer list DC3$
- Используя оснастку RSAT на клиентской машине введённой в домен samba.new необходимо удалить сервер DC3 из Sites and Services.
- Необходимо произвести очистку dns записей старого сервера в домене, такие как A записи и NS записи если они присутвуют в списке.
- Проверка записей:
# samba-tool dns query 10.64.238.200 samba.new @ ALL -U "Администратор" Password for [SAMBA\Администратор]: Name=, Records=3, Children=0 A: 10.64.238.200 (flags=600000f0, serial=126, ttl=900) NS: dc3.samba.new. (flags=600000f0, serial=126, ttl=900) SOA: serial=129, refresh=900, retry=600, expire=86400, minttl=3600, ns=dc2.samba.new., email=hostmaster.samba.new. (flags=600000f0, serial=129, ttl=3600) Name=_sites, Records=0, Children=1 Name=_tcp, Records=0, Children=4 Name=_udp, Records=0, Children=2 Name=DC3, Records=1, Children=0 A: 10.64.238.200 (flags=f0, serial=22, ttl=900) Name=DomainDnsZones, Records=0, Children=2 Name=ForestDnsZones, Records=0, Children=2 Name=PC1, Records=1, Children=0 A: 10.64.238.152 (flags=f0, serial=110, ttl=1200) # samba-tool dns query 10.64.238.200 _msdcs.samba.new @ ALL -U "Администратор" Password for [SAMBA\Администратор]: Name=, Records=2, Children=0 SOA: serial=4, refresh=900, retry=600, expire=86400, minttl=3600, ns=dc3.samba.new., email=hostmaster.samba.new. (flags=600000f0, serial=4, ttl=3600) NS: dc3.samba.new. (flags=600000f0, serial=110, ttl=900) Name=83314e92-209e-412a-905e-3f67ed139b94, Records=1, Children=0 CNAME: DC3.samba.new. (flags=f0, serial=13, ttl=900) Name=dc, Records=0, Children=2 Name=domains, Records=0, Children=1 Name=gc, Records=0, Children=2 Name=pdc, Records=0, Children=1
- Удаление записей:
# samba-tool dns delete 10.64.238.200 samba.new @ NS dc2.samba.new -U "Администратор" Password for [SAMBA\Администратор]: Record deleted successfully # samba-tool dns delete 10.64.238.200 samba.new dc2 A 10.64.238.173 -U "Администратор" Password for [SAMBA\Администратор]: Record deleted successfully
- Удаление DC2 из домена
Заключение
Процесс миграции включает несколько ключевых этапов, таких как подготовка доверительных отношений, настройка инструментов для миграции и перенос данных и ролей на новую платформу. Применение промежуточного контроллера домена на Windows Server 2019 позволяет обеспечить плавную миграцию от Windows AD к Samba AD, минимизируя риски потери данных и нарушений в структуре домена. Поскольку использование инструмента ADMT не поддерживает миграцию паролей учётных записей в Samba AD, для решения этой задачи был использован дополнительный сервер на базе Windows, что позволило корректно перенести пароли пользователей и сохранить их работоспособность в новом домене.