Найти в Дзене
Тюнинг Админа

Контроллеры домена на Ubuntu 22.04LTS + Samba 4.15.13

Оглавление

В этом статье постараюсь как можно проще и доступнее изложить суть того, как настроить два контроллера домена Active Directory с помощью Samba 4 на Ubuntu 22.04LTS

1-й с именем ns1 будет основным контроллером домена, а 2-й ns2 резервным, dhcp сервер рекомендую поднимать на маршрутизаторе, в свою очередь использую Mikrotik. Предложенная схема реализации обеспечивает избыточность и отказоустойчивость в моменты обслуживания, обновлений или выхода из строя одного из серверов.

Системные требования

Требования по аппаратной части:

  • Процессор: 1 ядро от 1Ггц
  • Оперативная память: 512МБ
  • Жёсткий диск: от 5ГБ

Конфигурация сети:

  • Статические ip адреса
  • Имена хостов ns1.tuning-admina.local и ns2.tuning-admina.local

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

-2
-3

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

Предварительная настройка сервера

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

sudo -s

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

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

network:
ethernets:
ens18:
dhcp4: false
addresses: [192.168.1.1/24]
gateway4: 192.168.1.254
nameservers:
addresses: [192.168.1.1,8.8.8.8]
version: 2

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

CTRL+O,CTRL+X

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

netplan apply

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

apt update && apt upgrade -y

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

timedatectl set-timezone Europe/Moscow

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

hostnamectl set-hostname ns1

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

nano /etc/hosts

192.168.1.1 ns1.tuning-admina.local ns1

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

CTRL+O,CTRL+X

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

hostname -f

ping -c3 ns1.tuning-admina.local

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

systemctl disable --now systemd-resolved

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

unlink /etc/resolv.conf

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

touch /etc/resolv.conf

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

nano /etc/resolv.conf

# IP адрес Samba сервера

nameserver 192.168.1.1

# DNS Адреса для пересылки запросов

nameserver 8.8.8.8

# Главный домен для Samba поиска

tuning-admina.local

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

CTRL+O,CTRL+X

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

chattr +i /etc/resolv.conf

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

reboot

Установка Samba

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

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

Попутно отвечаем на вопросы инсталлятора:

Настройка домена Realm по умолчанию для Samba Active Directory:

Default Kerberos version 5 realm: tuning-admina.local

-4

Настройка сервера Kerberos по умолчанию для Samba Active Directory:

Kerberos servers for your realm: ns1.tuning-admina.local

-5

Настройка административного сервера для Samba Active Directory:

Administrative server for your Kerberos realm: ns1.tuning-admina.local

-6

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

systemctl disable --now smbd nmbd winbind

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

systemctl unmask samba-ad-dc

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

systemctl enable samba-ad-dc

Создадим резервную копию файла конфигурации Samba:

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

Запускаем команду для конфигурации нашего домена:

samba-tool domain provision

Realm [TUNING-ADMINA.LOCAL]: <ENTER>

Domain [TUNING-ADMINA]: <ENTER>

Server Role (dc, member, standalone) [dc]: <ENTER>

DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: SAMBA_INTERNAL

DNS forwarder IP address (write 'none' to disable forwarding) [77.246.158.188]: 8.8.8.8

Administrator password:

Retype password:

-7

Все прошло удачно, двигаемся дальше.

Сделаем резервную копию конфигурации Kerberos и заменим ее файлом конфигурации сгенерированным Samba tools:

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

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

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

systemctl start samba-ad-dc

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

systemctl status samba-ad-dc

-8

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

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 192.168.1.1

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

allow 192.168.1.0/24

# 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

-9

Проверка Samba Active Directory

Проверим работоспособность Samba, что для этого потребуется:

  • Проверить конфигурацию Samba DNS
  • Общии папки по умолчанию
  • Протестировать проверку подлинности Kerberos.

Проверим записи в ДНС:

host -t A tuning-admina.local

tuning-admina.local has address 192.168.1.1

host -t A ns1.tuning-admina.local

ns1.tuning-admina.local has address 192.168.1.1

Как видим ДНС отрабатывает четко.

Проверим SRV запись службы kerberos_ldap:

host -t SRV _kerberos._udp.tuning-admina.local

host -t SRV _ldap._tcp.tuning-admina.local

Должны увидеть следующее:

-10

Проверим ресурсы по умолчанию, доступные в Samba Active Directory:

smbclient -L tuning-admina.local -N

-11

Пробуем пройти аутентификацию под Администратором и проверим срок действия учетной записи:

kinit administrator

-12

klist

-13

Аутентификация прошла успешно и видим следующее, что срок действия пароля истекает через 41 день. Этот параметр меняется в групповых политиках.

Проверка владельца ролей FSMO, для этого выполним команду:

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

Поздравляю с успешной настройкой контроллера домена

Создание пользователя Samba Active Directory

Пришло время создать нашу первую учетную запись пользователя Samba AD, делается это с помощью команды samba-tool:

samba-tool user create John Pent@g0n

User 'John' added successfully

Проверим список пользователей Samba:

samba-tool user list

-14

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

Предварительная настройка сервера

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

sudo -s

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

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

network:
ethernets:
ens18:
dhcp4: false
addresses: [192.168.1.2/24]
gateway4: 192.168.1.254
nameservers:
addresses: [192.168.1.1,192.168.1.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

192.168.1.1 ns1.tuning-admina.local ns1

192.168.1.2 ns2.tuning-admina.local ns2

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

CTRL+O,CTRL+X

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

hostname -f

ping -c3 ns2.tuning-admina.local

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

systemctl disable --now systemd-resolved

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

unlink /etc/resolv.conf

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

touch /etc/resolv.conf

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

nano /etc/resolv.conf

# IP адрес основного Samba сервера

nameserver 192.168.1.1

# DNS Адреса для пересылки запросов

nameserver 8.8.8.8

# Главный домен для Samba поиска

tuning-admina.local

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

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

Попутно отвечаем на вопросы инсталлятора:

Настройка домена Realm по умолчанию для Samba Active Directory:

Default Kerberos version 5 realm: tuning-admina.local

-15

Настройка сервера Kerberos по умолчанию для Samba Active Directory:

Kerberos servers for your realm: ns1.tuning-admina.local

-16

Настройка административного сервера для Samba Active Directory:

Administrative server for your Kerberos realm: ns1.tuning-admina.local

-17

Для продолжения нам нужно убедиться, что Samba не слушает порты:

ps -ax | grep samba

-18

Убиваем процесс:

kill 18016

Переместим конфигурационные файлы 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 Administrator

-19

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

-20

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

Скопируем конфигурационный файл 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

-21

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

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 192.168.1.1

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

allow 192.168.1.0/24

# 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

-22

Проверяем настройки 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 ns1.tuning-admina.local

ns1.tuning-admina.local has address 172.30.150.1

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

samba-tool drs showrepl

Default-First-Site-Name\NS2
DSA Options: 0x00000001
DSA object GUID: 42dbef09-b8d7-4037-bfdf-7bb8bd51e577
DSA invocationId: 1be0317f-b6f9-4e27-ae68-be92a9a5f419

==== INBOUND NEIGHBORS ====

CN=Schema,CN=Configuration,DC=tuning-admina,DC=local
Default-First-Site-Name\NS1 via RPC
DSA object GUID: 561505e6-1239-4908-8110-b63b89a282e5
Last attempt @ Wed Jul 19 16:59:39 2023 MSK was successful
0 consecutive failure(s).
Last success @ Wed Jul 19 16:59:39 2023 MSK

DC=DomainDnsZones,DC=tuning-admina,DC=local
Default-First-Site-Name\NS1 via RPC
DSA object GUID: 561505e6-1239-4908-8110-b63b89a282e5
Last attempt @ Wed Jul 19 16:59:39 2023 MSK was successful
0 consecutive failure(s).
Last success @ Wed Jul 19 16:59:39 2023 MSK

CN=Configuration,DC=tuning-admina,DC=local
Default-First-Site-Name\NS1 via RPC
DSA object GUID: 561505e6-1239-4908-8110-b63b89a282e5
Last attempt @ Wed Jul 19 16:59:39 2023 MSK was successful
0 consecutive failure(s).
Last success @ Wed Jul 19 16:59:39 2023 MSK

DC=ForestDnsZones,DC=tuning-admina,DC=local
Default-First-Site-Name\NS1 via RPC
DSA object GUID: 561505e6-1239-4908-8110-b63b89a282e5
Last attempt @ Wed Jul 19 16:59:39 2023 MSK was successful
0 consecutive failure(s).
Last success @ Wed Jul 19 16:59:39 2023 MSK

DC=tuning-admina,DC=local
Default-First-Site-Name\NS1 via RPC
DSA object GUID: 561505e6-1239-4908-8110-b63b89a282e5
Last attempt @ Wed Jul 19 16:59:39 2023 MSK was successful
0 consecutive failure(s).
Last success @ Wed Jul 19 16:59:39 2023 MSK

==== OUTBOUND NEIGHBORS ====

CN=Schema,CN=Configuration,DC=tuning-admina,DC=local
Default-First-Site-Name\NS1 via RPC
DSA object GUID: 561505e6-1239-4908-8110-b63b89a282e5
Last attempt @ NTTIME(0) was successful
0 consecutive failure(s).
Last success @ NTTIME(0)

DC=DomainDnsZones,DC=tuning-admina,DC=local
Default-First-Site-Name\NS1 via RPC
DSA object GUID: 561505e6-1239-4908-8110-b63b89a282e5
Last attempt @ NTTIME(0) was successful
0 consecutive failure(s).
Last success @ NTTIME(0)

CN=Configuration,DC=tuning-admina,DC=local
Default-First-Site-Name\NS1 via RPC
DSA object GUID: 561505e6-1239-4908-8110-b63b89a282e5
Last attempt @ NTTIME(0) was successful
0 consecutive failure(s).
Last success @ NTTIME(0)

DC=ForestDnsZones,DC=tuning-admina,DC=local
Default-First-Site-Name\NS1 via RPC
DSA object GUID: 561505e6-1239-4908-8110-b63b89a282e5
Last attempt @ NTTIME(0) was successful
0 consecutive failure(s).
Last success @ NTTIME(0)

DC=tuning-admina,DC=local
Default-First-Site-Name\NS1 via RPC
DSA object GUID: 561505e6-1239-4908-8110-b63b89a282e5
Last attempt @ NTTIME(0) was successful
0 consecutive failure(s).
Last success @ NTTIME(0)

==== KCC CONNECTION OBJECTS ====

Connection --
Connection name: 629e6d3a-f98e-496c-8697-688fb6e0cabd
Enabled : TRUE
Server DNS name : ns1.tuning-admina.local
Server DN name : CN=NTDS Settings,CN=NS1,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!

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

Сравнение количества объектов каталогов на контроллерах домена с помощью ldapcmp:

samba-tool ldapcmp ldap://ns1.tuning-admina.local ldap://ns2.tuning-admina.local -Uadministrator

-23

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

На компьютере с windows 10 пробуем подцепиться к домену:

-24

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

-25
-26
-27

Ввод компьютера в домен прошло успешно, перезагружаемся:

-28

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

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

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

-29

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

-30

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

-31
-32
-33

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

-34

Запускаем оснастку DNS:

-35
-36

Запускаем оснастку Управление групповой политикой:

-37
-38

Выбираем Default Domain Policy, правой кнопкой Изменить:

-39

Можно приступить к настройке необходимых политик:

-40

На этом все, Всем удачи и хорошего настроения.