Главная > Windows, Linux > Миграция с Linux (samba+LDAP) на Windows Server 2003 Active Directory

Миграция с Linux (samba+LDAP) на Windows Server 2003 Active Directory


31 мая 2009. Разместил: dimon
Хочу обратить внимание, что данная последовательность операций была заточена под нашу сеть.
Мы имели контроллер домена на CentOS Samba+LDAP, причем на этом же сервере хранятся расшаренные ресурсы доступ к которым с windows-клиентов осуществляется при помощи самбы.
Планируется перенести PDC с линукса на винду, понизив роль старого контроллера домена до простого файлового сервера на самбе.
Так же у нас имеется файл, в котором перечислены доменные пароль юзверей в нешифрованном виде.



Этап 1 – “Подготовительный”

За неделю до времени “Ч” через netlogon.bat на рабочих станциях домена отключили бэндмауэр и перевели энергосбережение в режим «всегда включен». В течение недели несколько раз циркулярно разослали по корпоративной почте письмо с требованием вечером в пятницу оставить компьютеры включенными.



Остальные этапы выполняются в субботу – официальный выходной день.


Этап 2

Ставим на боевом железе Windows Server 2003 (далее везде W2k3) на машину которую впоследствии будем использовать в качестве PDC (соответственно назвав сервер именем PDC). AD пока не поднимаем.


Этап 3

Ставим на VMware ОС W2k3, имя BDC
Ставим на виртуальную машину, а не боевое железо в связи с тем, что впоследствии будет необходимо несколько раз откатываться к предыдущему состоянию, что на много проще сделать на виртуалке (надеюсь, все знакомы с понятием snapshot).


Этап 4

Гасим самбу на старом контроллере домена.
Настраиваем BDC:
- с помощью утилиты NewSID из пакета Sysinternals меняем SID на SID старого домена
- поднимаем Active Directory на BDC
- настраиваем Параметры безопасности - Политику паролей – нам пришлось временно уменьшить «минимальную длину пароля»
Делаем snapshot системы.


Этап 5 – Перенос пользователей и компьютеров со старого сервера домена на новый (BDC)

Подключаемся к LDAP серверу старого домена с помощью утилиты LDAP Admin и выгружаем ветки в xml-файлы:
ou=Users -> users.xml
ou=Computers -> computers.xml
ou=Groups -> groups.xml
Из файлов users.xml, computers.xml и файла в котором перечислены не зашифрованные пароли пользователей с помощью Microsoft Excel формируем текстовый файл со строками вида:

для пользователей домена строка выглядела так =
RID, login, ФИО, password, e-mail

для компьютеров домена строка выглядела так =
RID, computename

т.к. в домен объекты добавляются с последовательным заполнением RID-ов, то вместо строк с пропущенными RID-ами были добавлены строки:
RID, computenameRID

Для того чтобы заполнить базу AD начальник написал программку на VB.NET. Там есть специальный класс для работы с AD.
В принципе эта программа выполняет функции утилиты от Microsoft Addusers.exe.
Отличие только в том, что самопальная программа помещает строки с пользователями в ou=Users, а с компьютерами в ou=Computers.

Впоследствии мы пришли к выводу, что компьютеры можно было не создавать в новом домене, т.к. они автоматически создадутся при заведении рабочих станций в новый домен. А, следовательно, не нужно было «городить огород» - нужно было просто воспользоваться утилитой от Microsoft-а. Для этого нужно было создать файл вида:

[Users]
login, ФИО, password, описание, диск, путь, профиль, сценарий



Который и импортировать с помощью Addusers в AD

Т.к. не известно, какой RID «текучий свободный» в домене, пришлось сначала загнать одного пользователя в домен с помощью addusers.exe, потом посмотреть его SID (точнее RID) c помощью утилиты PsGetSid и удалить из файла лишних пользователей – нужно чтобы в файле первым был пользователь как раз с RID-ом, который был присвоен этому созданному пользователю.
После этого мы откатили систему до предыдущего snapshot-a, заполнили базу Active Directory пользователями и компьютерами, удалили «фиктивные» компьютеры с именами computenameRID


Этап 6 – Перенос групп со старого сервера домена на новый (BDC)

Из файла groups.xml с помощью Microsoft Excel формируем текстовый файл со строками вида:

[Global]
groupname, Камент, user1, user2,…


Каждая строка это перечень пользователей, которых необходимо включить в группу, с названия которой и начинается строка (во загнул winked )
Выполняем эту операцию с помощью addusers:

addusers.exe \\BDC /c groups.txt


Этап 7 – Создаем DHCP сервер

На сервере PDC (на боевом железе) поднимаем DHCP сервер.
Со старого сервера берем файл dhcpd.conf и гасим службу dhcpd.
C помощью Microsoft Excel и блокнота формируем строки для добавления резервирования для компьютеров домена.
Вид строки:
Dhcp Server 192.168.0.1 Scope 192.0.0.0 Add reservedip 192.168.0.22 f0123456789f "computer" "Комп бухгалтера" "BOTH"

где:
192.168.0.1 – ip адрес сервера
192.0.0.0 – область ip адресов
192.168.0.22 – резервируемый ip адрес компьютера
f0123456789f – MAC адрес сетевого интерфейса компьютера
computer – имя компьютера
"Комп бухгалтера" – описание коспьютера

Сформированные строки сохраняем в текстовый файл c:\dhcp.txt
Теперь добавляем резервирование на наш сервер с помощью команды:

netsh exec c:\dhcp.txt > log.txt

В файл log.txt будут записаны результаты выполнения этой команды.


Этап 8 – Понижение роли samba до простого файлового сервера

Бэкапим конфиги самбы, ставим kerberos, настраиваем kerberos, настраиваем samba как файловый сервер с авторизацией в AD.
Инструкции не привожу т.к. все умеют пользоваться поиском.
При настройке считаем контроллером домена BDC, установленный на виртуальной машине.
Однако стоит обратить внимание на то, что нам пришлось сменить владельцев и группы расшаренных ресурсов на новые, чтобы пользователи, прошедшие авторизацию на в AD, могли получить доступ к своим папкам.
Если раньше у нас было, например, так

[root@server share]# ll
drwx------ 6 vasia smb_users 4096 Feb 3 12:06 vasia


то должно стать вот так:

[root@server share]# ll
drwx------ 6 DOMAIN+vasia DOMAIN+smb_users 4096 Feb 3 12:06 vasia


Возможно, что это делать придется не всем – все зависит от настройки Kerberos и Samba.


Этап 9 – Загоняем рабочие станции в новый домен

Была написана программка на VB которая с помощью утилиты PsExec выполняла следующий bat-файл на каждой рабочей станции:

net use N: \\PDC\netdom run /USER:PDC\run

@rem echo "Defining variables"
@SET HOST=%computername%
@SET DUSER=Domain\dmn
@SET DPASS=********
@SET LOCUSER=%computername%\Администратор
@SET LOCPASS=********

@CALL N:\netdom.exe REMOVE %HOST% /DOMAIN:Domain /UserD:%DUSER% /PasswordD:%DPASS% /UserO:%LOCUSER% /PasswordO:%LOCPASS%
@CALL N:\netdom.exe JOIN %HOST% /DOMAIN:Domain /UserD:%DUSER% /PasswordD:%DPASS% /UserO:%LOCUSER% /PasswordO:%LOCPASS% /REBoot

net use N: /DELETE


Переменные:
DUSER – пользователь домена, имеющий право подключать рабочие станции к домену
DPASS – его пароль
LOCUSER – локальный администратор
LOCPASS – его пароль
Netdom.exe – утилита из пакета Windows support tools, который лежит на диске в папке SUPPORT\TOOLS\ SUPTOOLS.MSI

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


Этап 12

На сервере PDC устанавливаем DNC.
Ставим на PDC Active Directory, установив роль Backup Domain Controller
Да – да – именно резервный несмотря на имя.
После репликации AD с сервером, установленным на виртуальной машине, передаем ему (PDC поднятому на боевом железе) все роли, таким образом делаем его первичным контроллером домена (PDC как и называется сервер smile ).
Перенастраиваем самбу – теперь нужно ей указать, что контроллером домена является PDC, а не BDC, как было ранее.


Этап 13

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


Этап 14

Идем пить пиво и надеяться, что в понедельник не всплывут какие-нибудь не учтенные моменты.

Вернуться назад