Миграция Active Directory с Windows Server 2022 на Ubuntu 22.04 + Samba 4.15.13

В рамках программы импортозамещения и перехода на Российское или открытое ПО, данная риторика в последнее время звучит всё чаще и чаще, не за горами и меня могут попросить реализовать в компании нечто подобное. Поэтому немного проштудировав интернет понял для себя, что в этом вопросе всё печально и придётся долго и упорно импровизировать прежде чем добьюсь успеха.

Итак в этой статье мы рассмотрим вопрос и действительно рабочую схему миграции инфраструктуры Active Directory с Windows 2022 Server на Samba 4.15.13 под управлением Ubuntu Server 22.04 LTS. Начнём с того, что подниму контроллер домена на Windows server 2022 с демонстрацией режимов работы Леса и Домена, изменю групповые политики связанные с паролями. Введу в домен компьютер с Windows 10, подготовлю и настрою Samba в роли второго контроллера домена на Ubuntu Server 22.04LTS. Также подниму второй контроллер домена на Samba, Выполним перенос ролей FSMO, выведем из работы Windows Server 2022. Заключительным этапом будет настройка автоматизированного бэкапа Active Directory средствами Samba Tools.

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

Содержание

  • Преследуемые цели
  • Поднятие контроллера домена на Windows Server 2022
  • Демонстрация режимов работы домена и леса
  • Ввод в домен компьютер с Windows 10
  • Установим средство для удаленного администрирования сервера RSAT для Windows 10
  • Понижение режима работы леса и домена
  • Настройка резервного контроллера домена
  • Установка Samba и ввод в домен
  • Перенос ролей FSMO на Samba
  • Настраиваем второй контроллер домена
  • Установка Samba и ввод в домен
  • Понижение контроллера домена на Windows Server 2022
  • Проверка работоспособности.
  • Настройка бэкапа средствами Samba Tools
  • Вывод

Преследуемые цели

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

Поднятие контроллера домена на Windows Server 2022

Установку сервера описывать не буду, тот кто читает эту статью априори должен это уметь.

Dhcp сервер я настраивать не буду он у меня поднят на маршрутизаторе.

Настраиваем сетевые параметры:

Имена у наших контроллеров будут такие:

ns3 //Windows Server 2022 — имя исходя из того, что он временный пациент.

ns1 //Ubuntu Server 22.04LTS

ns2 //Ubuntu Server 22.04LTS

Переименовываем наш сервер:

Добавляем роли нашему серверу:

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

Запустится мастер настройки и первым делом, выбираем Добавить новый лес и указываем имя домена который мы создаем:

После указания всех необходимых параметров нажимаем Установить:

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

Меняем групповые политики связанные с паролями:

Это делается для того, чтобы понять реплицируются ли они на Samba контроллер.

Меняем политики паролей:

Демонстрация режимов работы леса

Ввод в домен компьютер с Windows 10

Компьютер в домене, он нам потребуется в дальнейшем для управления инфраструктурой, установим на него RSAT.

Установим средство для удаленного администрирования сервера RSAT для Windows 10

Проходим по ссылке и скачиваем: https://download.microsoft.com/download/1/D/8/1D8B5022-5477-4B9A-8104-6A71FF9D98AB/WindowsTH-KB2693643-x64.msu

После завершения установки идем в меню «ПУСК» —> Параметры —> Приложения, нажимаем Дополнительные компоненты —> Добавить компонент и выбираем следующие компоненты:

В меню «ПУСК» вам станет доступна консоль администрирования, запускать ее пока не будем:

Понижение режима работы леса и домена

На текущий момент времени Samba 4.15.13 поддерживает:

  • Режим работы леса на уровне 2008R2
  • Режим работы домена на уровне 2012R2

В связи с чем рекомендую понизить уровень работы леса и домена, прежде чем вводить Samba в роли контроллера. Есть нюансы, которые вам могут помешать это сделать — Exchange server, один из основных.

Мы понизим режимы работы в 2 этапа, с 2016 до 2012R2 и с 2012R2 до 2008R2.

На контроллере домена Запускаем PowerShell:

1) Понижаем режим работы леса

set-ADForestMode -ForestMode Windows2012R2Forest

Указываем имя нашего леса и команду Enter, нас переспрашивают действительно ли мы хотим, пишем Y

Видим, что режим работы леса у нас изменился:

2) Понижаем режим работы домена

Set-ADDomainMode -DomainMode windows2012R2Domain

Как видим процедура схожая

Указываем имя домена и повторяем действия:

Проверяем работу сервера и клиентов домена на всякий случай

Повторяем операции понижая режимы работы леса и домена до 2008R2:

Теперь можно переходить к настройке и вводу в домен контроллера на Samba.

Настройка резервного контроллера домена

Всё манипуляции делаем под root:

sudo -s

Настраиваем сеть:

nano /etc/netplan/00-installer-config.yaml

network:

ethernets:

ens18:

dhcp4: false

addresses: [172.30.150.1/16]

gateway4: 172.30.1.100

nameservers:

addresses: [172.30.150.3,172.30.150.1]

version: 2

Сохраняем и закрываем редактор:

CTRL+O,CTRL+X

Применяем настройки:

netplan apply

Обновим систему:

apt update && apt upgrade -y

Установим mc, net-tools:

apt install mc net-tools -y

Перезагрузим сервер и продолжим:

reboot

Установите имя для контроллера домена ns1:

hostnamectl set-hostname ns1

Добавляем в файл hosts информацию о сопоставлении имени хостов ns1, ns2, ns3 и IP-адресов.

nano /etc/hosts

172.30.150.1  ns1.tuning-admina.local ns1

172.30.150.2  ns2.tuning-admina.local ns2

172.30.150.3  ns3.tuning-admina.local ns3

Отключим службу сопоставления DNS:

systemctl disable —now systemd-resolved

Удалим символьную ссылку на файл конфигурации:

unlink /etc/resolv.conf

Создадим новый файл конфигурации:

touch /etc/resolv.conf

Приведем файл к следующему виду:

nano /etc/resolv.conf

domain tuning-admina.local

nameserver 172.30.150.3

nameserver 172.30.150.1

Сохраняем и закрываем редактор:

CTRL+O,CTRL+X

Делаем файл конфигурации неизменяемым:

chattr +i /etc/resolv.conf

Перезагрузим сервер и продолжим:

reboot

Установка Samba и ввод в домен

Установим все необходимые пакеты и саму Samba:

apt install -y acl attr samba samba-dsdb-modules samba-vfs-modules winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user dnsutils chrony net-tools

Переместим дефолтные конфигурационные файлы smb.conf и krb5.conf:

mv /etc/samba/smb.conf /etc/samba/smb.conf.orig

mv /etc/krb5.conf /etc/krb5.conf.orig

Теперь добавляем наш сервер в домен с привилегиями контроллера:

samba-tool domain join tuning-admina.local DC -W AD -U Администратор

Вводим пароль администратора и видим успешное завершение:

Настройка и тестирование после установки

Скопируем конфигурационный файл krb5.conf:

cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

После установки Samba остановим и отключим службы, которые не требуются серверу Samba Active Directory:

systemctl disable —now smbd nmbd winbind

Активируем службу samba-ad-dc:

systemctl unmask samba-ad-dc

Добавляем службу в автозапуск:

systemctl enable samba-ad-dc

Запустим службу Samba Active Directory:

systemctl start samba-ad-dc

Проверим статус службы:

systemctl status samba-ad-dc

Проверяем настройки DNS:

host -t SRV _ldap._tcp.tuning-admina.local
_ldap._tcp.tuning-admina.local has SRV record 0 100 389 ns1.tuning-admina.local.
_ldap._tcp.tuning-admina.local has SRV record 0 100 389 ns3.tuning-admina.local.
host -t SRV _kerberos._udp.tuning-admina.local
_kerberos._udp.tuning-admina.local has SRV record 0 100 88 ns1.tuning-admina.local.
_kerberos._udp.tuning-admina.local has SRV record 0 100 88 ns3.tuning-admina.local.
host -t A ns1.tuning-admina.local

ns1.tuning-admina.local has address 172.30.150.1

Проверка статуса репликации:

samba-tool drs showrepl

Default-First-Site-Name\NS1
DSA Options: 0x00000001
DSA object GUID: 2b94330a-79e5-4e2b-82f0-ee89cfd52f0f
DSA invocationId: 1f1128ad-c937-403b-b6df-e0560ed817b1

==== INBOUND NEIGHBORS ====

DC=DomainDnsZones,DC=tuning-admina,DC=local
Default-First-Site-Name\NS3 via RPC
DSA object GUID: 8c2f3547-4f6b-4909-a364-c8e0fd5b6484
Last attempt @ Fri Aug 4 08:32:04 2023 UTC was successful
0 consecutive failure(s).
Last success @ Fri Aug 4 08:32:04 2023 UTC

DC=tuning-admina,DC=local
Default-First-Site-Name\NS3 via RPC
DSA object GUID: 8c2f3547-4f6b-4909-a364-c8e0fd5b6484
Last attempt @ Fri Aug 4 08:32:04 2023 UTC was successful
0 consecutive failure(s).
Last success @ Fri Aug 4 08:32:04 2023 UTC

CN=Configuration,DC=tuning-admina,DC=local
Default-First-Site-Name\NS3 via RPC
DSA object GUID: 8c2f3547-4f6b-4909-a364-c8e0fd5b6484
Last attempt @ Fri Aug 4 08:32:04 2023 UTC was successful
0 consecutive failure(s).
Last success @ Fri Aug 4 08:32:04 2023 UTC

DC=ForestDnsZones,DC=tuning-admina,DC=local
Default-First-Site-Name\NS3 via RPC
DSA object GUID: 8c2f3547-4f6b-4909-a364-c8e0fd5b6484
Last attempt @ Fri Aug 4 08:32:04 2023 UTC was successful
0 consecutive failure(s).
Last success @ Fri Aug 4 08:32:04 2023 UTC

CN=Schema,CN=Configuration,DC=tuning-admina,DC=local
Default-First-Site-Name\NS3 via RPC
DSA object GUID: 8c2f3547-4f6b-4909-a364-c8e0fd5b6484
Last attempt @ Fri Aug 4 08:32:04 2023 UTC was successful
0 consecutive failure(s).
Last success @ Fri Aug 4 08:32:04 2023 UTC

==== OUTBOUND NEIGHBORS ====

DC=DomainDnsZones,DC=tuning-admina,DC=local
Default-First-Site-Name\NS3 via RPC
DSA object GUID: 8c2f3547-4f6b-4909-a364-c8e0fd5b6484
Last attempt @ Fri Aug 4 08:30:55 2023 UTC was successful
0 consecutive failure(s).
Last success @ Fri Aug 4 08:30:55 2023 UTC

DC=tuning-admina,DC=local
Default-First-Site-Name\NS3 via RPC
DSA object GUID: 8c2f3547-4f6b-4909-a364-c8e0fd5b6484
Last attempt @ Fri Aug 4 08:30:55 2023 UTC was successful
0 consecutive failure(s).
Last success @ Fri Aug 4 08:30:55 2023 UTC

CN=Configuration,DC=tuning-admina,DC=local
Default-First-Site-Name\NS3 via RPC
DSA object GUID: 8c2f3547-4f6b-4909-a364-c8e0fd5b6484
Last attempt @ Fri Aug 4 08:30:55 2023 UTC was successful
0 consecutive failure(s).
Last success @ Fri Aug 4 08:30:55 2023 UTC

DC=ForestDnsZones,DC=tuning-admina,DC=local
Default-First-Site-Name\NS3 via RPC
DSA object GUID: 8c2f3547-4f6b-4909-a364-c8e0fd5b6484
Last attempt @ Fri Aug 4 08:30:55 2023 UTC was successful
0 consecutive failure(s).
Last success @ Fri Aug 4 08:30:55 2023 UTC

CN=Schema,CN=Configuration,DC=tuning-admina,DC=local
Default-First-Site-Name\NS3 via RPC
DSA object GUID: 8c2f3547-4f6b-4909-a364-c8e0fd5b6484
Last attempt @ Fri Aug 4 08:30:55 2023 UTC was successful
0 consecutive failure(s).
Last success @ Fri Aug 4 08:30:55 2023 UTC

==== KCC CONNECTION OBJECTS ====

Connection —
Connection name: 28d89a63-c92d-45e9-a8ef-c2bac9e25e83
Enabled : TRUE
Server DNS name : ns3.tuning-admina.local
Server DN name : CN=NTDS Settings,CN=NS3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
TransportType: RPC
options: 0x00000001
Warning: No NC replicated for Connection!

Как видим все хорошо

В оснастке Active Direcory Пользователи и компьютеры видим наш добавленный контроллер:

Перенос ролей FSMO на Samba

На Windows 10 запускаем Диспетчер серверов:

Запускаем оснастку Пользователи и компьютеры Active Directory:

Щелкаем по нашему доменному имени и выбираем сменить контроллер домена:

Выбираем контроллер на Samba:

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

Щелкаем по доменному имени и выбираем хозяева операций:

Меняем значение для всех ролей:

Проверяем перенос ролей на Samba контроллере:

samba-tool fsmo show

SchemaMasterRole owner: CN=NTDS Settings,CN=NS3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
InfrastructureMasterRole owner: CN=NTDS Settings,CN=NS1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
RidAllocationMasterRole owner: CN=NTDS Settings,CN=NS1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
PdcEmulationMasterRole owner: CN=NTDS Settings,CN=NS1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
DomainNamingMasterRole owner: CN=NTDS Settings,CN=NS3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=NS3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=NS3,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local

Передача ролей средствами samba-tool:

samba-tool fsmo transfer —role=Роль

Список ролей:

  • rid — хозяин RID;
  • pdc — эмулятор PDC;
  • infrastructure — хозяин инфраструктуры;
  • schema — хозяин схемы;
  • naming — хозяин именования доменов;
  • domaindns — хозяин зоны DNS домена;
  • forestdns — хозяин зоны DNS домена;
  • all — все роли.

Можно перенести роли одной командой:

samba-tool fsmo transfer —role=all

This DC already has the ‘rid’ FSMO role
This DC already has the ‘pdc’ FSMO role
This DC already has the ‘naming’ FSMO role
This DC already has the ‘infrastructure’ FSMO role
This DC already has the ‘schema’ FSMO role
ERROR: Failed to add role ‘domaindns’: LDAP error 50 LDAP_INSUFFICIENT_ACCESS_RIGHTS — <00002098: SecErr: DSID-0315283E, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0
> <>
На ошибку не обращаем внимание, мы выполним принудительный захват ролей:

samba-tool fsmo seize —force —role=all

Seizing rid FSMO role…
FSMO seize of ‘rid’ role successful
Seizing pdc FSMO role…
FSMO seize of ‘pdc’ role successful
Seizing naming FSMO role…
FSMO seize of ‘naming’ role successful
Seizing infrastructure FSMO role…
FSMO seize of ‘infrastructure’ role successful
Seizing schema FSMO role…
FSMO seize of ‘schema’ role successful
Seizing domaindns FSMO role…
FSMO seize of ‘domaindns’ role successful
Seizing forestdns FSMO role…
FSMO seize of ‘forestdns’ role successful

Проверяем роли:

samba-tool fsmo show
SchemaMasterRole owner: CN=NTDS Settings,CN=NS1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
InfrastructureMasterRole owner: CN=NTDS Settings,CN=NS1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
RidAllocationMasterRole owner: CN=NTDS Settings,CN=NS1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
PdcEmulationMasterRole owner: CN=NTDS Settings,CN=NS1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
DomainNamingMasterRole owner: CN=NTDS Settings,CN=NS1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
DomainDnsZonesMasterRole owner: CN=NTDS Settings,CN=NS1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local
ForestDnsZonesMasterRole owner: CN=NTDS Settings,CN=NS1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=tuning-admina,DC=local

Отлично двигаемся дальше

Настраиваем второй контроллер домена

Повысим наши права в системе:

sudo -s

Настраиваем сеть, для этого отредактируем конфигурационный файл:

nano /etc/netplan/00-installer-config.yaml

network:
ethernets:
ens18:
dhcp4: false
addresses: [172.30.150.2/16]
gateway4: 172.30.1.100
nameservers:
addresses: [172.30.150.1,172.30.150.2]
version: 2

Сохраняем и закрываем редактор:

CTRL+O,CTRL+X

Применяем настройки:

netplan apply

Обновим систему:

apt update && apt upgrade -y

Устанавливаем временную зону:

timedatectl set-timezone Europe/Moscow

Установим нашему резервному контроллеру домена:

hostnamectl set-hostname ns2

Отредактируем файл hosts, чтобы система могла сопоставить имя ns2 с IP-адресом сервера:

nano /etc/hosts

172.30.150.1 ns1.tuning-admina.local ns1

172.30.150.2 ns2.tuning-admina.local ns2

Сохраняем и закрываем редактор:

CTRL+O,CTRL+X

Отключим службу сопоставления DNS:

systemctl disable —now systemd-resolved

Удалим символьную ссылку на файл конфигурации:

unlink /etc/resolv.conf

Создадим новый файл конфигурации:

touch /etc/resolv.conf

Приведем файл к следующему виду:

nano /etc/resolv.conf

domain tuning-admina.local

nameserver 172.30.150.1

nameserver 172.30.150.2

Сохраняем и закрываем редактор:

CTRL+O,CTRL+X

Делаем файл конфигурации неизменяемым:

chattr +i /etc/resolv.conf

Перезагрузим сервер и продолжим:

reboot

Установка Samba и ввод в домен

Установим все необходимые пакеты и саму Samba:

apt install -y acl attr samba samba-dsdb-modules samba-vfs-modules winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user dnsutils chrony net-tools

Переместим конфигурационные файлы smb.conf и krb5.conf:

mv /etc/samba/smb.conf /etc/samba/smb.conf.orig

mv /etc/krb5.conf /etc/krb5.conf.orig

Теперь добавляем наш сервер в домен с привилегиями контроллера:

samba-tool domain join tuning-admina.local DC -W AD -U Администратор

Вводим пароль администратора и видим успешное завершение:

Настройка и тестирование после установки

Скопируем конфигурационный файл krb5.conf:

cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

После установки Samba остановим и отключим службы, которые не требуются серверу Samba Active Directory:

systemctl disable —now smbd nmbd winbind

Активируем службу samba-ad-dc:

systemctl unmask samba-ad-dc

Добавляем службу в автозапуск:

systemctl enable samba-ad-dc

Запустим службу Samba Active Directory:

systemctl start samba-ad-dc

Проверим статус службы:

systemctl status samba-ad-dc

Настройка синхронизации времени

Samba Active Directory зависит от протокола Kerberos, а тот в свою очередь требует, чтобы время сервера и рабочей станции было синхронизировано. Чтобы обеспечить надлежащую синхронизацию времени, нам необходимо настроить сервер NTP.

Изменим владельца каталога:

chown root:_chrony /var/lib/samba/ntp_signd/

А также дадим разрешение на чтение каталога:

chmod 750 /var/lib/samba/ntp_signd/

Отредактируем файл конфигурации добавив следующее в его нижнюю часть файла:

nano /etc/chrony/chrony.conf

# bind the chrony service to IP address of the Samba AD

bindcmdaddress 172.30.150.1

# Клиентам каких сетей разрешен доступ к NTP серверу

allow 172.30.0.0/16

# specify the ntpsigndsocket directory for the Samba AD

ntpsigndsocket /var/lib/samba/ntp_signd

Сохраняем и закрываем редактор:

CTRL+O,CTRL+X

Перезапускаем службу chronyd:

systemctl restart chronyd

Проверяем статус службы:

systemctl status chronyd

Проверяем настройки DNS:

host -t SRV _ldap._tcp.tuning-admina.local
_ldap._tcp.tuning-admina.local has SRV record 0 100 389 ns1.tuning-admina.local.
host -t SRV _kerberos._udp.tuning-admina.local
_kerberos._udp.tuning-admina.local has SRV record 0 100 88 ns1.tuning-admina.local.
host -t A ns2.tuning-admina.local

ns2.tuning-admina.local has address 172.30.150.2

Понижение контроллера домена на Windows Server 2022

Открываем Диспетчер серверов и в разделе Управление Удалить роли и компоненты:

Снимаем галочку над Доменные службы Active Directory:

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

Ставим галочку продолжить удаление:

Нажимаем Понизить уровень:

Проверка работоспособности.

Настройка бэкапа средствами Samba Tools

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *