Skip to content

Document Header

Передача ролей FSMO с windows server (PDC) на samba 4 server (BDC)

Передача ролей FSMO с windows server (PDC) на samba 4 server (BDC) published on 4 комментария к записи Передача ролей FSMO с windows server (PDC) на samba 4 server (BDC)

В прошлой статье я описал процесс создания леса и домена, добавления samba 4 server в режиме domain controller к существующему windows домену.
В этой статье будет описан механизм миграции домена, включающий передачу ролей FSMO от windows server к samba 4 server domain controller.

Прежде, чем начать какие-то действия сделайте резервную копию active directory. Это позволит вам «откатиться» в исходное состояние, если что-то пойдет не так.

Все контроллеры домена в сети по умолчанию равноправны, за исключением 5 ролей, которые устанавливаются на 1-ый контроллер при создании леса. Эти роли называются FSMO (Flexible single-master operations).

Роли и их значение:

1. Schema Master (Хозяин схемы) – отвечает за изменение (обычно расширение схемы). Эта роль необходима для развертывания, например, microsoft exchange и isa. Недоступность владельца роли не даст возможности изменения схемы.
2. Domain Naming Master (Хозяин операции именования доменов) – данная роль необходима для работы (создание, удаление) с доменами и поддоменами в существующем лесу.
3. Relative ID Master (RID) (Хозяин относительных идентификаторов) – отвечает за уникальность ID для каждого объекта в AD.
4. Primary Domain Controller Emulator (Эмулятор основного контроллера домена) – отвечает за работу с учётными записями пользователей и политику безопасности. Если владелец роли недоступен, то недоступна, например, возможность смены пароля. Однако, под старым паролем пользователь будет благополучно получать доступ.
5. Infrastructure Master (Хозяин Инфраструктуры) – осуществляет координацию передачи информации об объектах AD контроллерам домена в лесу.
Так же важным компонентом функционирования AD является Global Catalog (GC) – (Глобальный Каталог). Он может быть установлен на любой (или на все) контроллер(ы) домена. Если в сети нет ни одного доступного глобального каталога, то пользователи не смогут получить доступ в домен.

Определение хозяина ролей FSMO.

Если в сети несколько контроллеров домена, то требуется определить владельцев ролей FSMO. Это можно сделать следующим образом.

Команды для windows server:

Schema Master (Хозяин схемы):

dsquery server -hasfsmo schema

Domain Naming Master (Хозяин операции именования доменов):

dsquery server -hasfsmo name

Relative ID Master (Хозяин относительных идентификаторов):

dsquery server -hasfsmo rid

Primary Domain Controller Emulator (Эмулятор основного контроллера домена):

dsquery server -hasfsmo pdc

Infrastructure Master (Хозяин Инфраструктуры):

dsquery server -hasfsmo infr

Global Catalog (GC) – (Глобальный Каталог):

dsquery server -forest -isgc


"CN=WIN-2008,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc"
"CN=ALARMPI,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc"

Команды Для samba4:

# samba-tool fsmo show


InfrastructureMasterRole owner: CN=NTDS Settings,CN=WIN-2008,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
RidAllocationMasterRole owner: CN=NTDS Settings,CN=WIN-2008,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
PdcEmulationMasterRole owner: CN=NTDS Settings,CN=WIN-2008,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
DomainNamingMasterRole owner: CN=NTDS Settings,CN=WIN-2008,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
SchemaMasterRole owner: CN=NTDS Settings,CN=WIN-2008,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc

В нашем случае все роли принадлежат контроллеру домена win-2008, а глобальный каталог существует на обоих контроллерах.

Передача ролей.

Передача ролей должна осуществляться под пользователем, членом групп «Администраторы домена», «Администраторы схемы» и «Администраторы предприятия». Передать роли можно 2-умя способами с PDC передать (добровольно) роль BDC. Или с BDC забрать (принудительно) роль у PDC. Опишу оба способа, хотя добровольный способ передачи мне кажется более надежным.

Передачу роли можно осуществлять графическими средствами windows server. Я опишу только консольный способ.

Для подключения к серверу выполним последовательность команд:

ntdsutil
roles
connections
connect to server alarmpi
q

Где alarmpi – название нашего samba 4 domain controller server, которому мы планируем передать роли.

По описаниям в интернете последовательность передачи ролей имеет значение.
Корректная последовательность передачи ролей следующая:

— хозяин идентификаторов;
— хозяин схемы;
— хозяин именования;
— хозяин инфраструктуры;
— контроллер домена;

После успешного подключения к серверу мы получаем приглашение к управлению ролями (fsmo maintenance), и можем начать передавать роли :

transfer naming master
transfer infrastructure master
transfer rid master
transfer schema master
transfer pdc

Примечание: в windows 2003 возможно отличается синтаксис transfer domain naming master и transfer pdc master для 1-ой и 5-ой роли соответственно.

Если ошибок не произошло проверяем:

# samba-tool fsmo show


InfrastructureMasterRole owner: CN=NTDS Settings,CN=ALARMPI,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
RidAllocationMasterRole owner: CN=NTDS Settings,CN=ALARMPI,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
PdcEmulationMasterRole owner: CN=NTDS Settings,CN=ALARMPI,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
DomainNamingMasterRole owner: CN=NTDS Settings,CN=ALARMPI,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
SchemaMasterRole owner: CN=NTDS Settings,CN=ALARMPI,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc

Все роли переданы успешно!

Принудительное принятие роли на samba 4 domain controller server (не рекомендуется):

# samba-tool fsmo seize --role=ROLE
rid=RidAllocationMasterRole
schema=SchemaMasterRole
pdc=PdcEmulationMasterRole
naming=DomainNamingMasterRole
infrastructure=InfrastructureMasterRole
all=all

Если вы хотите передать роли с samba 4 domain controller другому домен контроллеру, то это можно сделать так:

# samba-tool fsmo transfer --role=ROLE
rid=RidAllocationMasterRole
schema=SchemaMasterRole
pdc=PdcEmulationMasterRole
naming=DomainNamingMasterRole
infrastructure=InfrastructureMasterRole
all=all

Если после передачи ролей планируется выключить старый PDC, то перед этим не забудьте проверить сетевые настройки DNS, DHCP, NTP и прочее.

Подключение samba 4 (BDC) к windows server (PDC)

Подключение samba 4 (BDC) к windows server (PDC) published on 3 комментария к записи Подключение samba 4 (BDC) к windows server (PDC)

Задумал написать статью по миграции с windows server (PDC) на samba 4 server (BDC) с передачей ролей.
Эта статья описывает подключение samba 4 в режиме domain controller (BDC) к существующему лесу и домену, что является предшествующим этапом к миграции. Для создания домена будем использовать windows server 2008 eng.

Создание домена (кратко).

На нашем windows 2008 server предварительно установлены следующие сетевые настройки:
Server name: win-2008
Static IP: 192.168.1.1/24
Primary DNS: 127.0.0.1
Secondary DNS: 8.8.8.8

1. Запускаем dcpromo. Я выберу расширенный режим установки.

Запуск dcpromo

2. Создаем новый домен и лес.

New Domain and Forest

3. Выбираем название. В моем случае test.loc

domain name

4. Выбираем function level. Я выбрал максимальный 2008, чтобы убедиться, что samba 4 умеет работать с уровнем 2008 и 2008 R2 (в будущем)

function level

5. Поддержку DNS сервера и глобального каталога оставляем.
6. Если у вас динамический IP, то вам будет выдано следующее предупреждение:
ip alarm
7. Дальше будет предложено выбрать пути, потом установка пароля режима восстановления. После этого начнется установка. По окончании установки потребуется перезагрузка.

Подключение samba 4 server в режиме domain controller (BDC) к существующему лесу и домену.

На этот раз я использую систему arch linux, установленную на raspberry pi.
Samba 4 установлена в виде пакета samba-4.0.7-3

Установку проводил так:

# pacman -S samba

Как устанавливать из исходников, можно почитать здесь.

Samba 4 name: alarmpi (оставил по умолчанию)
ip: 192.168.1.2/24

1. Подготавливаем /etc/krb.conf:

[libdefaults]
dns_lookup_realm = true
dns_lookup_kdc = true
default_realm = test.loc

2. Прописываем primary DNS /etc/resolve.conf:

nameserver 192.168.1.1
nameserver 8.8.8.8

3. На всякий случай проверяем соответствие времени на обоих серверах (разница не должна превышать более 5 минут, иначе могут быть проблемы). В случае raspberry pi это особенно актуально ;=)

Если все в порядке проводим test Kerberos и DNS (не забываем про ВЕРХНИЙ регистр):

# kinit administrator@TEST.LOC

Если на команду klist вы получили, что-то похожее. Можно добавлять samba 4 в домен.

#klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@TEST.LOC

Valid starting       Expires              Service principal
07/10/2013 23:26:27  07/11/2013 09:26:27  krbtgt/TEST.LOC@TEST.LOC
renew until 07/11/2013 23:26:25

4. Для добавления samba 4 в режиме domain controller (BDC) к существующему windows домену введите следующую команду:

# samba-tool domain join test.loc DC -Uadministrator --realm=test.loc

Если в качестве DNS вы планируете использовать Bind, то:

# samba-tool domain join test.loc DC -Uadministrator --realm=test.loc --dns-backend=BIND9_DLZ

Если в конце процесса мы получили сообщение:

Joined domain TEST (SID S-1-5-21-1253393912-4244980978-340559521) as a DC

то наша samba 4 стала domain controller (BDC) в существующем домене windows server.

Тесты:

DNS

# host -t A alarmpi.test.loc.

У меня данная запись не создалась автоматически, пришлось делать ее вручную.

Проверка доступности GUID объектов для нового хоста.

# ldbsearch -H /usr/local/samba/private/sam.ldb '(invocationid=*)' --cross-ncs objectguid

Сначала мне была выдана следующая ошибка:

WARNING: Module [samba_dsdb] not found - do you need to set LDB_MODULES_PATH?
Unable to load modules for /var/lib/samba/private/sam.ldb: (null)
Failed to connect to /var/lib/samba/private/sam.ldb - (null)

Решение нашлось быстро:

# export LDB_MODULES_PATH=/usr/lib/samba/ldb/

Повторно:

# ldbsearch -H /usr/local/samba/private/sam.ldb '(invocationid=*)' --cross-ncs objectguid

Теперь все нормально:

# record 1
dn: CN=NTDS Settings,CN=WIN-2008,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
objectGUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639

# record 2
dn: CN=NTDS Settings,CN=ALARMPI,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
objectGUID: a4d52cb9-6cca-4224-a3a0-c14d72a107cd

# returned 2 records
# 2 entries
# 0 referrals

Наш GUID a4d52cb9-6cca-4224-a3a0-c14d72a107cd , используем его для следующего запроса:

# host -t CNAME a4d52cb9-6cca-4224-a3a0-c14d72a107cd._msdcs.test.loc.

И эту запись мне пришлось создавать вручную:

Создание CNAME GUID в DNS
Запускаем samba, (я воспользуюсь штатным стартовым скриптом):

# systemctl start samba

Проверим репликацию между контроллерами доменов:

# samba-tool drs showrepl

Приятно удивлен, но все нормально. Когда я тестировал samba 4 (PDC) с (BDC) в виде windows server разных версий, то успешная репликация осуществлялась не сразу. Сначала выдавались ошибки, которые через несколько часов сами исчезали.
Успешная репликация выглядит так:

Default-First-Site-NameALARMPI
DSA Options: 0x00000001
DSA object GUID: a4d52cb9-6cca-4224-a3a0-c14d72a107cd
DSA invocationId: 777c974c-0c54-434f-af95-881217493e20

==== INBOUND NEIGHBORS ====

DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

DC=ForestDnsZones,DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

CN=Schema,CN=Configuration,DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

CN=Configuration,DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

DC=DomainDnsZones,DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

==== OUTBOUND NEIGHBORS ====

DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
L—————————————— was successful
0 consecutive failure(s).

CN=Schema,CN=Configuration,DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

CN=Configuration,DC=test,DC=loc
Default-First-Site-NameWIN-2008 via RPC
DSA object GUID: bf0b4dd6-2b32-4ff6-b813-fc8660e95639
—————————————— was successful
0 consecutive failure(s).

==== KCC CONNECTION OBJECTS ====

Connection —
Connection name: 8add9398-269c-4e13-8d5b-70421c071601
Enabled        : TRUE
Server DNS name : WIN-2008.test.loc
Server DN name  : CN=NTDS Settings,CN=WIN-2008,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
TransportType: RPC
options: 0x00000001
Warning: No NC replicated for Connection!

Для окончательной проверки осталось создать по новому объекту на каждом контроллере домена. Создадим по пользователю на каждом контроллере домена и проверим реплицируются ли они. Перед этим просмотрим текущий список пользователей:

# wbinfo –u

Administrator
Guest
Krbtgt

1. Создадим пользователя user1 в windows 2008 server  (PDC).
2. Создадим пользователя user2 в samba 4 server (BDC):

# samba-tool user add user2

User ‘user2’ created successfully

Ждем репликации, по ее окончанию проверяем:

# wbinfo –u

Administrator
Guest
krbtgt
user1
user2

На windows 2008 server учетные записи тоже появились.

Примечание: В данной статье не учитывается, что схема могла быть предварительно расширена, например Microsoft Exchange. Проверить на практике мне пока не удалось, однако есть основания полагать, что samba 4 корректно подключится и к этому домену. Если у вас есть положительный опыт, просьба оставить комментарий под этой статьей.

Squid и radius авторизация в active directory samba 4 (squid radius auth proxy)

Squid и radius авторизация в active directory samba 4 (squid radius auth proxy) published on 5 комментариев к записи Squid и radius авторизация в active directory samba 4 (squid radius auth proxy)

В данной статье хочу представить еще один способ авторизации пользователей squid в active directory samba 4 через radius. Ранее я описывал авторизацию squid через ldap. Этот способ (radius авторизации) имеет такой же недостаток в виде ввода пароля при открытии любого из браузеров, как и в случае с ldap модулем squid.

Так же критерии принятия положительного или отрицательного решения об авторизации пользователя squid в данном случае зависит от модуля авторизации и модульного фильтра radius.

Я уже описывал настройку radius для vpn pptpd.

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

 

Добавим в /etc/squid/squid.conf следующие строки:

auth_param basic program /usr/lib64/squid/squid_radius_auth -f /etc/squid/squid_radius_auth.conf
auth_param basic children 5
auth_param basic realm pdc.test.loc Squid
auth_param basic credentialsttl 8 hours
auth_param basic casesensitive off
acl radius-auth proxy_auth REQUIRED
...
http_access allow radius-auth
http_access deny all

Все. Теперь через radius пользователи squid могут авторизовываться в active directory samba 4.

Samba 4 (4.0.x и 4.1 rc1) и Windows 2012 server

Samba 4 (4.0.x и 4.1 rc1) и Windows 2012 server published on 1 комментарий к записи Samba 4 (4.0.x и 4.1 rc1) и Windows 2012 server

Решил попробовать «подружить» samba 4 (4.0.7) (аналогично и для samba 4.1 rc1) и windows 2012 server.
Результат был ожидаем.
samba 4 не может добавиться в роли контроллера домена в существующий windows domain, если выбран function level 2012.
И наоборот, windows 2012 server не может добавиться к домену samba 4.
Надеюсь, данная статья сэкономит вам время при изучении этого вопроса.
Ниже представлены основные шаги.

Windows 2012 server к Samba 4, считая что samba 4 уже установлен и запущен в качестве PDC.

1. Добавляем роли

add roles to windows 2012 server

2. После успешной установки входим в настройку Active Directory Domain Services (нажимаем More…)

ad ds

3. Promote server (Promote this server to a domain controller)

promote server

4. Добавляем domain controller к существующему домену

add dc

5. Выбираем существующий лес и домен

Выбор домена

6. Проходим еще несколько шагов, и получаем ошибку.

Ошибка

 

Samba 4 к Windows 2012 server

Windows 2012 server

1. Выполняем с 1-3 шаг предыдущего примера
2. Выбираем add new forest

Создание домена и леса

3. Выбираем function level “windows server 2012”

уровень домена windows 2012 server

4. Проходим еще несколько шагов, нажимаем install. Перегружаемся, для проверки заходим под test.locadministrator

Samba 4
(Более подробно здесь)

1. Настраиваем /etc/krb5conf

[libdefaults]
dns_lookup_realm = true
dns_lookup_kdc = true
default_realm = test.loc

2. Прописываем win-2012 сервер в качестве dns в /etc/resolve.conf

domain test.loc
nameserver 192.168.1.1
nameserver 8.8.8.8

где 192.168.1.1 ip нашего windows 2012 server

3. Делаем kinit/klist для проверки

# kinit administrator@TEST.LOC
Password for administrator@TEST.LOC:


# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@TEST.LOC


Valid starting Expires Service principal
07/13/2013 13:50:29 07/13/2013 23:50:29 krbtgt/TEST.LOC@TEST.LOC
renew until 07/14/2013 13:50:26

4. Запускаем процесс добавления samba 4 dc:

# samba-tool domain join test.loc DC -Uadministrator --realm=test.loc
Finding a writeable DC for domain 'test.loc'
Found DC WIN-2012.test.loc
Password for [WORKGROUPadministrator]:
workgroup is TEST
realm is test.loc
checking sAMAccountName
Adding CN=ALARMPI,OU=Domain Controllers,DC=test,DC=loc
Adding CN=ALARMPI,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
Adding CN=NTDS Settings,CN=ALARMPI,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
DsAddEntry failed with status (5, 'WERR_ACCESS_DENIED') info (8567, 'WERR_DS_INCOMPATIBLE_VERSION')
Join failed - cleaning up
checking sAMAccountName
Deleted CN=ALARMPI,OU=Domain Controllers,DC=test,DC=loc
Deleted CN=ALARMPI,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=loc
ERROR(runtime): uncaught exception - DsAddEntry failed
File "/usr/lib/python2.7/site-packages/samba/netcmd/__init__.py", line 175, in _run
return self.run(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/samba/netcmd/domain.py", line 552, in run
machinepass=machinepass, use_ntvfs=use_ntvfs, dns_backend=dns_backend)
File "/usr/lib/python2.7/site-packages/samba/join.py", line 1104, in join_DC
ctx.do_join()
File "/usr/lib/python2.7/site-packages/samba/join.py", line 1007, in do_join
ctx.join_add_objects()
File "/usr/lib/python2.7/site-packages/samba/join.py", line 525, in join_add_objects
ctx.join_add_ntdsdsa()
File "/usr/lib/python2.7/site-packages/samba/join.py", line 458, in join_add_ntdsdsa
ctx.DsAddEntry([rec])
File "/usr/lib/python2.7/site-packages/samba/join.py", line 421, in DsAddEntry
raise RuntimeError("DsAddEntry failed")

Как и в предыдущем примере попытка окончилась неудачей. Будем ждать версии samba 4.1, в которой подобные возможности будут реализованы.

Таблица совместимости samba 4 (4.0.x) (4.1 rc1) в режиме DC с windows

Таблица совместимости samba 4 (4.0.x) (4.1 rc1) в режиме DC с windows published on 4 комментария к записи Таблица совместимости samba 4 (4.0.x) (4.1 rc1) в режиме DC с windows

 

Windows Samba 4 PDC windows член домена Samba 4 PDC Windows BDC Windows PDC Samba 4 BDC
Windows XP

Да

Windows Vista

Да

Windows 7

Да

Windows 8

Да

Windows 2003 server

Да

Да

Да

Windows 2003 R2 server

Да

Да

Да

Windows 2008 server

Да

Да

Да

Windows 2008 R2 server

Да

Да

Да

Windows 2012 server

Да

нет

 нет

Для совместимости с windows 2012 server будем ждать версии samba 4.1, в которой подобные возможности будут реализованы.