В этом статье постараюсь как можно проще и доступнее изложить суть того, как настроить два контроллера домена 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
Потребление ресурсов настроенного контроллера домена
Настройка основного контроллера домена
Предварительная настройка сервера
Повысим наши права в системе:
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
Настройка сервера Kerberos по умолчанию для Samba Active Directory:
Kerberos servers for your realm: ns1.tuning-admina.local
Настройка административного сервера для Samba Active Directory:
Administrative server for your Kerberos realm: ns1.tuning-admina.local
После установки 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:
Все прошло удачно, двигаемся дальше.
Сделаем резервную копию конфигурации 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
Настройка синхронизации времени
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
Проверка 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
Должны увидеть следующее:
Проверим ресурсы по умолчанию, доступные в Samba Active Directory:
smbclient -L tuning-admina.local -N
Пробуем пройти аутентификацию под Администратором и проверим срок действия учетной записи:
kinit administrator
klist
Аутентификация прошла успешно и видим следующее, что срок действия пароля истекает через 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
Настройка резервного контроллера домена
Предварительная настройка сервера
Повысим наши права в системе:
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
Настройка сервера Kerberos по умолчанию для Samba Active Directory:
Kerberos servers for your realm: ns1.tuning-admina.local
Настройка административного сервера для Samba Active Directory:
Administrative server for your Kerberos realm: ns1.tuning-admina.local
Для продолжения нам нужно убедиться, что Samba не слушает порты:
ps -ax | grep samba
Убиваем процесс:
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
Вводим пароль администратора и видим успешное завершение:
Настройка и тестирование после установки
Скопируем конфигурационный файл 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 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
Проверяем настройки 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
На этом настройка закончена, теперь вы можете протестировать избыточность решения выдергивая контроллеры из сети и проверяя при этом работоспособность.
На компьютере с windows 10 пробуем подцепиться к домену:
Вводим учетную запись администратора домена:
Ввод компьютера в домен прошло успешно, перезагружаемся:
Установим средство для удаленного администрирования сервера RSAT для Windows 10
Проходим по ссылке и скачиваем: https://download.microsoft.com/download/1/D/8/1D8B5022-5477-4B9A-8104-6A71FF9D98AB/WindowsTH-KB2693643-x64.msu
После завершения установки идем в меню "ПУСК" --> Параметры --> Приложения, нажимаем Дополнительные компоненты --> Добавить компонент и выбираем следующие компоненты:
В меню "ПУСК" вам станет доступна консоль администрирования, запускаем ее:
Запускаем оснастку Пользователи и компьютеры Active Directory:
Проверяем режимы работы леса и домена:
Запускаем оснастку DNS:
Запускаем оснастку Управление групповой политикой:
Выбираем Default Domain Policy, правой кнопкой Изменить:
Можно приступить к настройке необходимых политик: