Samba Active Directory domain controller

samba_ad-dsНачиная с версии 4.0, появилась возможность запускать Samba в роли контроллера домена Active Directory. В данной статье описана пошаговая инструкция, как это сделать. В примере использовалась Samba версии 4.3. Установка производилась на Ubuntu Server 16.04.

После установки Ubuntu Server 16.04, изменим имя сервера на dc1

# hostnamectl set-hostname dc1

Добавим запись в /etc/hosts

# nano /etc/hosts

127.0.0.1       localhost
192.168.10.11   dc1.4skill.loc   dc1
. . .

Укажем сетевые настройки

# lshw -C network | grep name
logical name: ens32

# nano /etc/network/interfaces
. . . 
# The primary network interface
auto ens32
iface ens32 inet static
        address 192.168.10.11
        netmask 255.255.255.0
        gateway 192.168.10.254
        dns-nameservers 8.8.8.8 8.8.4.4
        dns-search 4skill.loc

Чтобы изменения вступили в силу, перезапустим сетевую службу

# service networking restart

Обновим индексы пакетов и систему

# apt update
# apt upgrade

Установим DNS сервер bind

# apt install bind9

Добавим в bind адреса серверов пересылки

# nano /etc/bind/named.conf.options
. . .
        forwarders {
                8.8.8.8;
                8.8.4.4;
        };
. . .

Запустим bind

# service bind9 start

Проверим разрешение имен

# nslookup 4skill.ru 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53
                
Non-authoritative answer:
Name:   4skill.ru
Address: 185.72.144.107

После команды nslookup нужно указать имя узла, которое нужно разрешить в ip адрес, и через пробел указать имя или ip адрес DNS сервера.

Укажем в сетевых настройках локальный DNS сервер в качестве предпочтительного

# nano /etc/network/interfaces
. . .
        dns-nameservers 127.0.0.1
. . .

Чтобы изменения вступили в силу, перезапустим сетевую службу

# service networking restart

Установим пакеты samba, winbind и krb5-user

# apt install samba winbind krb5-user

На вопросы от установщика Kerberos везде нажимаем OK, так как оригинальный конфигурационный файл Kerberos будет заменён готовым файлом из пакета samba.

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

# ps ax | egrep "samba|smbd|nmbd|winbindd"
  4858 ?        Ss     0:00 /usr/sbin/smbd -D
  4861 ?        S      0:00 /usr/sbin/smbd -D
  4877 ?        S      0:00 /usr/sbin/smbd -D
  4934 ?        Ss     0:00 /usr/sbin/nmbd -D
  5115 ?        Ss     0:00 /usr/sbin/winbindd
  5116 ?        S      0:00 /usr/sbin/winbindd
  5191 pts/1    R+     0:00 /bin/sh /bin/egrep --color=auto samba|smbd|nmbd|winbindd

Во время подготовки контроллера домена, службы samba должны быть остановлены. Остановим запущенные службы

# service smbd stop && service nmbd stop && service winbind stop

Удалим оригинальный файл конфигурации samba

# rm /etc/samba/smb.conf

Запустим процесс подготовки контроллера домена в интерактивном режиме

# samba-tool domain provision --use-rfc2307 --interactive
Realm [4SKILL.LOC]:
Domain [4SKILL]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password:
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=4skill,DC=loc
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=4skill,DC=loc
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
See /var/lib/samba/private/named.conf for an example configuration include file for BIND
and /var/lib/samba/private/named.txt for further documentation required for secure DNS updates
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
Setting up fake yp server settings
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              dc1
NetBIOS Domain:        4SKILL
DNS Domain:            4skill.loc
DOMAIN SID:            S-1-5-21-3247551096-2523217690-2608157957

В поле Realm нужно указать полное имя домена, в Domain указывается NetBIOS имя домена. В параметре Server Role нужно указать значение dc, в DNS backend выбираем BIND9_DLZ. В поле Administrator password нужно указать пароль администратора домена, в Retype password повторить пароль.

Заменим оригинальный конфигурационный файл Kerberos на файл из пакета samba

# ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf

Добавим в конфигурацию bind файл, с описанием DNS зон, необходимых для работы контроллера

# nano /etc/bind/named.conf
. . .
include "/var/lib/samba/private/named.conf";

Для поддержки динамического обновления DNS записей, в /etc/bind/named.conf.options нужно добавить параметр, указывающий путь до dns.keytab файла

# nano /etc/bind/named.conf.options

options {
. . .
        tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
};

Проверим конфигурацию bind на наличие ошибок

# named-checkconf

Добавим необходимые разрешения в AppArmor

# nano /etc/apparmor.d/local/usr.sbin.named

/var/lib/samba/private/named.conf r,
/var/lib/samba/private/krb5.conf r,
/var/lib/samba/private/dns/** rwk,
/var/lib/samba/private/dns.keytab r,
/var/tmp/** rwmk,
/dev/urandom rw,

Перезапустим систему

# reboot

Добавим зону обратного просмотра

# samba-tool dns zonecreate dc1 10.168.192.in-addr.arpa -U administrator
Password for [4SKILL\administrator]:
Zone 10.168.192.in-addr.arpa created successfully

dc1 — имя контроллера, на котором добавляется зона;
10.168.192.in-addr.arpa — название зоны обратного просмотра;
-U administrator — пользователь, от имени которого производится операция.

Перезапустим bind

# service bind9 restart

Добавим PTR запись для контроллера

# samba-tool dns add dc1 10.168.192.in-addr.arpa 11 PTR dc1.4skill.loc -U administrator
Password for [4SKILL\administrator]:
Record added successfully

dc1 — имя контроллера, на котором добавляется запись;
10.168.192.in-addr.arpa — зона, для которой добавляется запись;
11 — последний октет ip адреса. В данном примере 192.168.10.11;
PTR — тип записи;
dc1.4skill.loc — узел, для которого добавляется запись;
-U administrator — пользователь, от имени которого производится операция.

Более подробно об управлении DNS сервером на контроллере, можно прочитать тут.

Для управления контроллером из системы Windows, используется пакет RSAT. Его можно скачать с официального сайта microsoft

О том, как предоставить право входа на контроллер доменным пользователям, можно прочитать в статье Samba DC authenticating domain users using PAM.

Настройка сервера времени на Samba DC описана в статье Samba DC time synchronisation.

О настройке DHCP сервера на контроллере Samba написано в статье Samba DC DDNS update.

Дополнительную информацию по развёртыванию AD DS на samba, можно найти на Samba Wiki в разделе Setting up Samba as an Active Directory Domain Controller.

Добавить комментарий

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