Установка Контроллера Домена Active Directory на Ubuntu под управлением Samba

SAMBA это открытая реализация протокола SMB который предоставляет сервис файлов и печати для клиентов SMB / CIFS. Samba помогает в успешном взаимодействии по сети вашей системы Ubuntu с клиентами под Windows, обеспечивая тем самым и интеграции с общими сервисами для среды Windows. Эти услуги помогают обмену данными и информацией о компьютерах и пользователях, участвующих в сети, и могут быть классифицированы по трем основным категориям с точки зрения функциональности:

Сервис общих файлов и печати: Использует протокол Server Message Block (SMB) для облегчения обмена файлами, директориями, разделами, и работе печати через сеть.

Сервис Директорий: предоставляет жизненно важную информацию о компьютерах и пользователях сети с помощью Lightweight Directory Access Protocol (LDAP) и Microsoft Active Directory.

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

В этой статье рассказывается как установить Active Directory Domain Controller под управлением Samba на Ubuntu 16.04. Samba как AD DC требует версию минимум 4.0.0. Настоятельно рекомендуется использовать последний стабильный релиз Samba который содержит исправление ошибок прошлых релизов и улучшение поддержки Microsoft Active Directory и дополнительные возможности.

Основное преимущество этого заключается в том, что нам не нужно устанавливать отдельный Kerberos KDC. Samba включает в себя AD совместимый KDC и предоставляет свою собственную реализацию LDAP для AD бекэнда.

Перед началом

  • Убедитесь что ваш сервер настроен на использование статичного IP адреса. DHCP может вызвать проблему, если у сервера сменить адрес.
  • Обновите ваш resolv.conf на использование правильных серверов имен.
  • Обновите ваш файл /etc/hosts для использования правильных записей. Ваше имя сервера должно разрешаться в IP сервера.

Начнем по порядку. Изменяем настройки сервера согласно нашим трем пунктам выше.

1) Настройте ваш сервер на использование статичного IP.  Отредактируйте файл /etc/network/interfaces на  IP «96.126.107.141», имя контроллера домена «some-org.com» и другие детали:

root@ubuntu:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 96.126.107.141
netmask 255.255.255.0
network 96.126.107.0
broadcast 96.126.107.255
gateway 96.126.107.1
dns-nameservers 96.126.107.141 8.8.8.8
dns-search some-org.com

# This is an autoconfigured IPv6 interface
iface eth0 inet6 auto

Мы изменил iface eth0 inet dhcp на iface eth0 inet static и то что выделено жирным — это конфигурация сети.

2) Исправьте ваш файл resolv.conf — добавьте имя вашего контроллера домена.

root@ubuntu:~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND — YOUR CHANGES WILL BE OVERWRITTEN
nameserver 96.126.107.141
nameserver 8.8.8.8
nameserver 207.192.69.4
search some-org.com

3) Наконец — поправьте ваш /etc/hosts file и установите «ubuntu.some-org.com»  как имя хоста:

root@ubuntu:~# cat /etc/hosts
127.0.0.1 localhost
96.126.107.141 ubuntu.some-org.com ubuntu

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

root@ubuntu:~# echo ubuntu.some-org.com > /etc/hostname

root@ubuntu:~# /etc/init.d/networking restart
[ ok ] Restarting networking (via systemctl): networking.service.

После изменение требуется перезапустить сеть.

Наконец, всё готово к установке пакетов.

Установка пакетов

Сначала требуется установить пакеты необходимые для установки нашего Domain controller Active directory.

root@ubuntu:~# apt-get update && apt-get upgrade -y

root@ubuntu:~# apt-get install git attr build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev libpam0g-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl ntp ntpdate winbind

При установке пакетов у вас спросят информацию о вашем kerberos. Вам требуется предоставить зону по умолчанию Kerberos и информацию об администраторе. Вы можете указать вашу зону по умолчанию как some-org.com и администрирующий сервер как имя хоста указанное выше.

Установка и настройка SAMBA

Вам потребуется скачать последние пакеты Samba с git репозитория в директории»samba4″.

root@ubuntu:~# git clone -b v4-1-stable git://git.samba.org/samba.git samba4
Cloning into ‘samba4’…
remote: Counting objects: 1276826, done.
remote: Compressing objects: 100% (280630/280630), done.
remote: Total 1276826 (delta 992350), reused 1267276 (delta 984263)
Receiving objects: 100% (1276826/1276826), 249.03 MiB | 10.51 MiB/s, done.
Resolving deltas: 100% (992350/992350), done.
Checking connectivity… done.

После скачивания войдите в директорию «samba4» и настройте ваш пакет Samba.

root@ubuntu:~#cd samba4
root@ubuntu:~#./configure —enable-debug —enable-selftest
root@ubuntu:~#make
root@ubuntu:~/samba4# make
WAF_MAKE=1 python ./buildtools/bin/waf build
Waf: Entering directory /root/samba4/bin'
Selected embedded Heimdal build
Waf: Leaving directory
/root/samba4/bin’
‘build’ finished successfully (6.288s)
root@ubuntu:~#make install

Сборка SAMBA достаточно продолжительна. После того как все будет сделано — проверьте версии SAMBA и клиента SMB — они должны совпадать.

root@ubuntu:~# /usr/local/samba/sbin/samba -V
Version 4.1.23
root@ubuntu:~# /usr/local/samba/bin/smbclient -V
Version 4.1.23

Создание Samba Active Directory

Следующий шаг — инициализация вашего контроллера. Вы можете просто выполнить команду:

root@ubuntu:~/samba4# /usr/local/samba/bin/samba-tool domain provision —realm=some-org.com —domain=some-org —adminpass=»password» —server-role=dc —dns-backend=SAMBA_INTERNAL
Looking up IPv4 addresses
Looking up IPv6 addresses
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=some-org,DC=com
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=some-org,DC=com
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: ubuntu
NetBIOS Domain: SOME-ORG
DNS Domain: some-org.com
DOMAIN SID: S-1-5-21-4019752003-3807572232-1148719748

Можно, конечно, использовать Bind9 как DNS, но SAMBA уже содержит в себе собственный полнофункциональный DNS сервер. Это указано командой SAMBA_INTERNAL. Далее нам требуется запустить сервис SAMBA после настройки контроллера.

root@ubuntu:~# /usr/local/samba/sbin/samba
root@ubuntu:~#

Проверка вашего Samba Domain Controller

Мы можем запустить «smbclient», для проверки того, что Samba предоставляет стандартные AD DC общие директории «netlogon» и «sysvol», которые были указаны в «smb.conf» во время настройки.

root@ubuntu:~# /usr/local/samba/bin/smbclient -L localhost -U%
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu]

Sharename Type Comment
——— —- ——-
print$ Disk Printer Drivers
IPC$ IPC IPC Service (ubuntu server (Samba, Ubuntu))
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu]

Server Comment
——— ——-
UBUNTU ubuntu server (Samba, Ubuntu)

Workgroup Master
——— ——-
WORKGROUP UBUNTU

Для проверки работы аутентификации вы можете попробовать подключиться к общей директории «netlogon», используя аккаунт администратора домена, который был создан во время настройки.

root@ubuntu:~/samba4# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c ‘ls’
Enter Administrator’s password:
Domain=[SOME-ORG] OS=[Unix] Server=[Samba 4.1.23]
. D 0 Sun Oct 16 09:30:02 2016
.. D 0 Sun Oct 16 09:31:09 2016

47431 blocks of size 524288. 40274 blocks available

Настройка SAMBA_INTERNAL DNS

Работающий DNS имеет важное значение для правильной работы с Active Directory. Без правильных записей DNS, Kerberos не будет работать, что в свою очередь означает, что многие из основных функций так же не будут работать. Всегда стоит потратить некоторое дополнительное время, обеспечивая ваши настройки DNS, чтобы убедиться, что они должным образом сделаны.

Требуется изменить файл /etc/resolv.conf для внесения нашего имени домена:

root@ubuntu:~#echo domain some-org.com >> /etc/resolv.conf

Ваш контроллер домена требуется сервер имен, который способен разрешить запросы в зоны Active Directory. Поскольку это ваш первый контроллер домена в лесу AD.

Так же требуется изменить файл  «/usr/local/samba/etc/smb.conf» и добавить dns от google как dns_forwarder.

root@ubuntu:~# cat /usr/local/samba/etc/smb.conf
# Global parameters
[global]
workgroup = SOME-ORG
realm = SOME-ORG.COM
netbios name = UBUNTU
server role = active directory domain controller
dns forwarder = 8.8.8.8

Тестирование DNS

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

root@ubuntu:~# host -t SRV _ldap._tcp.some-org.com
_ldap._tcp.some-org.com has SRV record 0 100 389 ubuntu.some-org.com

root@ubuntu:~# host -t SRV _kerberos._udp.some-org.com.
_kerberos._udp.some-org.com has SRV record 0 100 88 ubuntu.some-org.com.

root@ubuntu:~# host -t A ubuntu.some-org.com
ubuntu.some-org.com has address 96.126.107.141

Настройка Kerberos

Kerberos важная часть Active Directory. Обычно настраивается в файле /etc/krb5.conf. Во время инициализации рабочий пример будет создан в файле /usr/local/samba/share/setup/krb5.conf. Вы можете заменить файл krb5.conf на файл примера путем копирования или создания символьной ссылки.

root@ubuntu:~# ln -s /usr/local/samba/share/setup/krb5.conf /etc/krb5.conf

Вам потребуется отредактировать этот файл и изменить default_realm на имя вашего DC:

root@ubuntu:~# cat /etc/krb5.conf
[libdefaults]
default_realm = SOME-ORG.COM
dns_lookup_realm = false
dns_lookup_kdc = true

Имя realmдолжно быть указано ВЕРХНИМ РЕГИСТРОМ.

Тестирование Kerberos

Вы можете использовать kinit для тестирования вашей конфигурации Kerberos:

root@ubuntu:~# kinit administrator@SOME-ORG.COM
Password for administrator@SOME-ORG.COM:
Warning: Your password will expire in 41 days on Sun 27 Nov 2016 09:31:07 AM UTC

Вам потребуется отключить срок действия пароля администратора active directory для того чтобы исключить проблемы аутентификации в будущем.

root@ubuntu:~# /usr/local/samba/bin/samba-tool user setexpiry administrator —noexpiry
Expiry for user ‘administrator’ disabled.

Примечание: Всегда указывайте ваш realm в верхнем регистре. Для проверки работы Kerberos запустите:

root@ubuntu:~# klist -e
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SOME-ORG.COM

Valid starting Expires Service principal
10/17/2016 04:19:31 10/17/2016 14:19:31 krbtgt/SOME-ORG.COM@SOME-ORG.COM
renew until 10/18/2016 04:19:19, Etype (skey, tkt): arcfour-hmac, arcfour-hmac

Создание директории пользователей

Создадим теперь директорию пользователей и установим правильные права и владельца.

root@ubuntu:~# mkdir -m 770 /Users
root@ubuntu:~# chmod g+s /Users
root@ubuntu:~# chown root:users /Users

Далее отредактируйте ваш файл конфигурации SMB «/usr/local/samba/etc/smb.conf»:

[Users]
directory_mode: parameter = 0700
read only = no
path = /Users
csc policy = documents

Настройка NTP

Active Directory требует синхронизации времени для всех участников домена чтобы Kerberosработал правильно. Строго рекомендуется использовать NTP на вашем контроллере домена для синхронизации времени. Эта  документация предоставит вам всю необходимую информацию для настройки NTP on anна вашем контроллере домена AD.

Итоги

И, наконец, мы создали наш контроллер домена AD на сервере Ubuntu 16.04. Вы можете создать свой собственный Active Directory DC и обмениваться данными по сети. Главным преимуществом этой конфигурации является возможность централизовать учетные данные пользователей и компьютеров. Он имеет ряд и других преимуществ. Некоторые из ключевых преимуществ:

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

Это перевод статьи. Оригинал можно почитать здесь.

Автор: Mirivlad

Скромный труженик консоли и окошек.

Комментарии: