Участник:AlenkaGlukhovskaya/ActiveDirectory/DC

Материал из ALT Linux Wiki
Samba logo.png

Использование Samba 4 в роли контроллера домена Active Directory. Такой способ позволяет вводить Windows 7/8 в домен безо всяких манипуляций с реестром.

Возможности

Поддерживаются

базовые возможности Active Directory:

  • Аутентификация рабочих станций Windows и Linux и служб;
  • Авторизация и предоставление ресурсов;
  • Групповые политики (GPO);
  • Перемещаемые профили (Roaming Profiles);
  • Поддержка инструментов Microsoft для управления серверами (Remote Server Administration Tools) с компьютеров под управлением Windows (под WINE не работает);
  • Поддержка протоколов SMB2 и SMB3 (в том числе с поддержкой шифрования);
  • Репликация с другими серверами (в том числе с Windows 2012).

Не поддерживается

Не поддерживаются следующие возможности[1]:

  • Не реплицируется хранилище SYSVOL (можно использовать osync[2][3]);
  • Доверительные отношения только в одном направлении (от Windows к Samba, но не наоборот[4]) (что не позволяет реализовать лес доменов);
  • Не поддерживаются поддомены[5];
    • В Samba отсутствует глобальный каталог (GC) и полноценная поддержка фантомных объектов;
    • Проблемы при построении структуры AD (Active Directory browser), проблемы при поиске объектов в другом домене;
    • При применении групповых политик в многодоменной среде могут быть проблемы с определением, в каком домене находится компьютер;
  • DFS работает только в режиме одиночного сервера;
  • Не реализовано DFS-R;
  • Не полностью реализовано RODC;
  • Ограничения размера базы TDB в 4 ГБ. Это ограничение приводит к невозможности перехода от леса доменов к плоской структуре с одним доменом.[6]
  • Не закончено тестирование поддержки CTDB (хранение данных в кластерной инфраструктуре);
  • Не закончено тестирование работы Winbind.

Смотрите также статью Возможности и ограничения Samba 4 как контроллера домена Active Directory на http://habrahabr.ru/.

Внимание! Samba AD DC несовместима с OpenLDAP и MIT Kerberos, поэтому службы, использующие MIT Kerberos, несовместимы с ним.
Внимание! Samba AD DC функционирует на уровне контроллера доменов Windows 2008 R2. Вы можете ввести его в домен Windows 2012 как клиента, но не как контроллер домена.


Заведение первичного DC

Предусловия

Установка первоначальная

0. Установлена и обязательно обновлена ОС Altlinux Server версии 9.1

1. Установите пакет task-samba-dc , который установит необходимые пакеты.

# apt-get update
...
# apt-get install task-samba-dc
...

# rpm -qR task-samba-dc
krb5-kinit
ldb-tools
samba-dc = 4.12.10-alt2:p9+260060.144.9.2
samba-winbind-clients = 4.12.10-alt2:p9+260060.144.9.2
samba-doc = 4.12.10-alt2:p9+260060.144.9.2
rpmlib(PayloadIsLzma)


2. Так как Samba в режиме контроллера домена (Doman Controller, DC) использует как свой LDAP, так и свой сервер Kerberos, несовместимый с MIT Kerberos, перед установкой остановите конфликтующие службы krb5kdc и slapd, а также bind:

Примечание: Вы так же можете отключить службы и выключить автозагрузку служб графическим способом. В ALT Linux Server зайдите в Система > Администрирование > ЦУС > Режим эксперта> Системные службы.
for service in smb nmb krb5kdc slapd bind; do chkconfig $service off; service $service stop; done

Восстановление к начальному состоянию samba

Очищаем базы и конфигурацию Samba (если уже создавался домен):

rm -f /etc/samba/smb.conf
rm -rf /var/lib/samba
rm -rf /var/cache/samba
mkdir -p /var/lib/samba/sysvol
Внимание! Обязательно удаляйте /etc/samba/smb.conf перед созданием домена:
rm -f /etc/samba/smb.conf


Выбор имени домена и realm

1. Имя домена и realm для kerberos должны совпадать согласно требованиям Active Directory

Внимание! должна быть ссылка


2. Имя домена для разворачиваемого DC должно состоять минимум из двух компонентов, разделённых точкой.

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

  • HOSTNAME=dc.domain.alt в /etc/sysconfig/network
  • # hostname dc.domain.alt
  • # domainname domain.alt
Внимание! При указании домена, имеющего суффикс .local, потребуется на сервере и подключаемых компьютерах под управлением Linux отключить службу avahi-daemon.


3. Правильно задать зону домена и realm

При определении зоны домена - она не должна быть .local, т.к.

  1. Зону .local некоторые используют по привычке, т.к. ранее Microsoft рекомендовал. Однако, позднее Microsoft отказался от своих рекомендаций. Подробнее читать https://en.wikipedia.org/wiki/.local
  2. Зона .local дополнительно конфликтует с зоной .local, которую использует mDNS avahi , сервис который позволяет осуществлять браузинг ресурсов в локальной одноранговой сети. У Microsoft это называется рабочей группой. В одноранговых сетях небольших предприятий в linux иcпользуется для поиска ресурсов сервис avahi. В терминологии apple это tdns. И в альте он включен и настроен по умолчанию, т.е. зона .local занята.

Если по какой-то причине есть необходимость использовать зону .local, то сервис avahi необходимо остановить не только на сервере, но и на всех узлах (где установлен ALT Linux), которые будут введены в домен.

4. При развертывании домен контроллера, обычно поднимается и роль dns-сервера (если нужно выключить надо написать в smb.conf в секции global, есть секция services = -dns - проверить по документации)

 Evgeny Sinelnikov: Переводим samba-dc на bind в стеке:

[root@dc0 ~]# service samba stop
[root@dc0 ~]# samba_upgradedns --dns-backend=BIND9_DLZ
Reading domain information
DNS accounts already exist
No zone file /var/lib/samba/bind-dns/dns/DOMAIN.ALT.zone
/usr/sbin/samba_upgradedns:338: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
  logger.warn("DNS records will be automatically created")
DNS records will be automatically created
DNS partitions already exist
Adding dns-dc0 account
See /var/lib/samba/bind-dns/named.conf for an example configuration include file for BIND
and /var/lib/samba/bind-dns/named.txt for further documentation required for secure DNS updates
Finished upgrading DNS
You have switched to using BIND9_DLZ as your dns backend, but still have the internal dns starting. Please make sure you add '-dns' to your server services line in your smb.conf.
[root@dc0 ~]# control bind-chroot disabled
[root@dc0 ~]# cat >>/etc/bind/named.conf

dlz "AD DNS Zone" {
    # database "dlopen /usr/lib64/samba/bind9/dlz_bind9_11.so -d 5";
     database "dlopen /usr/lib64/samba/bind9/dlz_bind9_11.so";
};

[root@dc0 ~]# mcedit /etc/bind/options.conf
[root@dc0 ~]# grep -e forwarders -e allow-query -e tkey-gssapi-keytab -e allow-recursion /etc/bind/options.conf | grep ';$'
        tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab";
        forwarders { 8.8.8.8; };
        allow-query { localnets; 10.64.6.0/24; };
        //allow-query-cache { localnets; };
        allow-recursion { localnets; 10.64.6.0/24; };

[root@dc0 ~]# mcedit /etc/samba/smb.conf
[root@dc0 ~]# grep services /etc/samba/smb.conf
        server services = -dns

[root@dc0 ~]# service samba start
[root@dc0 ~]# service bind start
[root@dc0 ~]# systemctl enable bind
Synchronizing state of bind.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable bind
Created symlink /etc/systemd/system/multi-user.target.wants/bind.service → /lib/systemd/system/bind.service.

Evgeny Sinelnikov: В man smb.conf можно прочитать подробности про опцию server services.


5. настройка сети Участник:AlenkaGlukhovskaya/Режимы настройки сети static ip

6. на будущее: сделать страничку как ставить пакеты без интернет (ставить галочку при установке, или доставлять с флешки)

Создание нового домена

Создание домена одной командой

Создание контроллера домена domain.alt с паролем администратора Pa$$word:

samba-tool domain provision --realm=DOMAIN.ALT --domain DOMAIN --adminpass='Pa$$word' --dns-backend=SAMBA_INTERNAL --server-role=dc --use-rfc2307

realm - это пространство имён в kerberos, т.к. оно должно быть идентично имени домена и написано в uppercase согласно ограничениям AD, поэтому при выборе зоны в этот же момент определяется и выбор realm!


# samba-tool domain provision --realm=DOMAIN.ALT --domain DOMAIN --adminpass='Pa$$word' --dns-backend=SAMBA_INTERNAL --server-role=dc --use-rfc2307
INFO 2020-12-14 20:56:56,791 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2133: Looking up IPv4 addresses
INFO 2020-12-14 20:56:56,791 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2150: Looking up IPv6 addresses
WARNING 2020-12-14 20:56:56,791 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2157: No IPv6 address will be assigned
INFO 2020-12-14 20:56:57,080 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2301: Setting up share.ldb
INFO 2020-12-14 20:56:57,159 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2305: Setting up secrets.ldb
INFO 2020-12-14 20:56:57,220 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2311: Setting up the registry
INFO 2020-12-14 20:56:57,494 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2314: Setting up the privileges database
INFO 2020-12-14 20:56:57,668 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2317: Setting up idmap db
INFO 2020-12-14 20:56:57,786 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2324: Setting up SAM db
INFO 2020-12-14 20:56:57,813 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #897: Setting up sam.ldb partitions and settings
INFO 2020-12-14 20:56:57,816 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #909: Setting up sam.ldb rootDSE
INFO 2020-12-14 20:56:57,842 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1338: Pre-loading the Samba 4 and AD schema
Unable to determine the DomainSID, can not enforce uniqueness constraint on local domainSIDs

INFO 2020-12-14 20:56:57,924 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1416: Adding DomainDN: DC=domain,DC=alt
INFO 2020-12-14 20:56:57,975 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1448: Adding configuration container
INFO 2020-12-14 20:56:58,004 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1463: Setting up sam.ldb schema
INFO 2020-12-14 20:56:59,893 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1481: Setting up sam.ldb configuration data
INFO 2020-12-14 20:56:59,996 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1522: Setting up display specifiers
INFO 2020-12-14 20:57:01,299 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1530: Modifying display specifiers and extended rights
INFO 2020-12-14 20:57:01,326 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1537: Adding users container
INFO 2020-12-14 20:57:01,328 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1543: Modifying users container
INFO 2020-12-14 20:57:01,329 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1546: Adding computers container
INFO 2020-12-14 20:57:01,330 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1552: Modifying computers container
INFO 2020-12-14 20:57:01,331 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1556: Setting up sam.ldb data
INFO 2020-12-14 20:57:01,427 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1586: Setting up well known security principals
INFO 2020-12-14 20:57:01,460 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1600: Setting up sam.ldb users and groups
INFO 2020-12-14 20:57:01,549 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1608: Setting up self join
Repacking database from v1 to v2 format (first record CN=ms-DS-Az-Script-Engine-Cache-Max,CN=Schema,CN=Configuration,DC=domain,DC=alt)
Repack: re-packed 10000 records so far
Repacking database from v1 to v2 format (first record CN=localPolicy-Display,CN=413,CN=DisplaySpecifiers,CN=Configuration,DC=domain,DC=alt)
Repacking database from v1 to v2 format (first record CN=Server Operators,CN=Builtin,DC=domain,DC=alt)
INFO 2020-12-14 20:57:02,634 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/sambadns.py #1143: Adding DNS accounts
INFO 2020-12-14 20:57:02,703 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/sambadns.py #1177: Creating CN=MicrosoftDNS,CN=System,DC=domain,DC=alt
INFO 2020-12-14 20:57:02,742 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/sambadns.py #1190: Creating DomainDnsZones and ForestDnsZones partitions
INFO 2020-12-14 20:57:02,804 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/sambadns.py #1195: Populating DomainDnsZones and ForestDnsZones partitions
Repacking database from v1 to v2 format (first record DC=@,DC=RootDNSServers,CN=MicrosoftDNS,DC=DomainDnsZones,DC=domain,DC=alt)
Repacking database from v1 to v2 format (first record CN=LostAndFound,DC=ForestDnsZones,DC=domain,DC=alt)
INFO 2020-12-14 20:57:03,057 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2037: Setting up sam.ldb rootDSE marking as synchronized
INFO 2020-12-14 20:57:03,066 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2042: Fixing provision GUIDs
INFO 2020-12-14 20:57:03,691 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2377: A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf
INFO 2020-12-14 20:57:03,691 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2378: Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink!
INFO 2020-12-14 20:57:03,775 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2107: Setting up fake yp server settings
INFO 2020-12-14 20:57:03,850 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #490: Once the above files are installed, your Samba AD server will be ready to use
INFO 2020-12-14 20:57:03,850 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #494: Server Role:           active directory domain controller
INFO 2020-12-14 20:57:03,850 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #495: Hostname:              localhost
INFO 2020-12-14 20:57:03,850 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #496: NetBIOS Domain:        DOMAIN
INFO 2020-12-14 20:57:03,850 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #497: DNS Domain:            domain.alt
INFO 2020-12-14 20:57:03,850 pid:11334 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #498: DOMAIN SID:            S-1-5-21-3166472470-273683501-3328384909

Интерактивное создание домена

Примечание: У Samba свой собственный DNS-сервер. В DNS forwarder IP address нужно указать внешний DNS-сервер, чтобы DC мог разрешать внешние доменные имена.

В примере показано создание домена domain.alt.

Запустите samba-tool domain provision:

# samba-tool domain provision
Realm [LOCALDOMAIN]:  DOMAIN.ALT
Domain [DOMAIN]:  
Server Role (dc, member, standalone) [dc]:  
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:  
DNS forwarder IP address (write 'none' to disable forwarding) [8.8.8.8]:  
Administrator password: 
Retype password: 
INFO 2020-12-14 21:04:08,371 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2133: Looking up IPv4 addresses
INFO 2020-12-14 21:04:08,372 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2150: Looking up IPv6 addresses
WARNING 2020-12-14 21:04:08,372 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2157: No IPv6 address will be assigned
INFO 2020-12-14 21:04:08,611 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2305: Setting up secrets.ldb
INFO 2020-12-14 21:04:08,676 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2311: Setting up the registry
INFO 2020-12-14 21:04:08,714 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2314: Setting up the privileges database
INFO 2020-12-14 21:04:08,860 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2317: Setting up idmap db
INFO 2020-12-14 21:04:08,975 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2324: Setting up SAM db
INFO 2020-12-14 21:04:08,993 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #897: Setting up sam.ldb partitions and settings
INFO 2020-12-14 21:04:08,994 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #909: Setting up sam.ldb rootDSE
INFO 2020-12-14 21:04:09,013 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1338: Pre-loading the Samba 4 and AD schema
Unable to determine the DomainSID, can not enforce uniqueness constraint on local domainSIDs

INFO 2020-12-14 21:04:09,065 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1416: Adding DomainDN: DC=domain,DC=alt
INFO 2020-12-14 21:04:09,095 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1448: Adding configuration container
INFO 2020-12-14 21:04:09,128 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1463: Setting up sam.ldb schema
INFO 2020-12-14 21:04:11,075 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1481: Setting up sam.ldb configuration data
INFO 2020-12-14 21:04:11,177 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1522: Setting up display specifiers
INFO 2020-12-14 21:04:12,508 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1530: Modifying display specifiers and extended rights
INFO 2020-12-14 21:04:12,537 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1537: Adding users container
INFO 2020-12-14 21:04:12,538 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1543: Modifying users container
INFO 2020-12-14 21:04:12,539 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1546: Adding computers container
INFO 2020-12-14 21:04:12,540 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1552: Modifying computers container
INFO 2020-12-14 21:04:12,540 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1556: Setting up sam.ldb data
INFO 2020-12-14 21:04:12,639 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1586: Setting up well known security principals
INFO 2020-12-14 21:04:12,675 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1600: Setting up sam.ldb users and groups
INFO 2020-12-14 21:04:12,761 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #1608: Setting up self join
Repacking database from v1 to v2 format (first record CN=ms-DS-Phonetic-First-Name,CN=Schema,CN=Configuration,DC=domain,DC=alt)
Repack: re-packed 10000 records so far
Repacking database from v1 to v2 format (first record CN=default-Display,CN=C0A,CN=DisplaySpecifiers,CN=Configuration,DC=domain,DC=alt)
Repacking database from v1 to v2 format (first record CN=f58300d1-b71a-4DB6-88a1-a8b9538beaca,CN=Operations,CN=DomainUpdates,CN=System,DC=domain,DC=alt)
INFO 2020-12-14 21:04:13,773 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/sambadns.py #1143: Adding DNS accounts
INFO 2020-12-14 21:04:13,825 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/sambadns.py #1177: Creating CN=MicrosoftDNS,CN=System,DC=domain,DC=alt
INFO 2020-12-14 21:04:13,853 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/sambadns.py #1190: Creating DomainDnsZones and ForestDnsZones partitions
INFO 2020-12-14 21:04:13,921 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/sambadns.py #1195: Populating DomainDnsZones and ForestDnsZones partitions
Repacking database from v1 to v2 format (first record DC=_kpasswd._tcp,DC=domain.alt,CN=MicrosoftDNS,DC=DomainDnsZones,DC=domain,DC=alt)
Repacking database from v1 to v2 format (first record DC=@,DC=_msdcs.domain.alt,CN=MicrosoftDNS,DC=ForestDnsZones,DC=domain,DC=alt)
INFO 2020-12-14 21:04:14,228 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2037: Setting up sam.ldb rootDSE marking as synchronized
INFO 2020-12-14 21:04:14,239 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2042: Fixing provision GUIDs
INFO 2020-12-14 21:04:14,949 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2377: A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf
INFO 2020-12-14 21:04:14,950 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #2378: Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink!
INFO 2020-12-14 21:04:15,020 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #490: Once the above files are installed, your Samba AD server will be ready to use
INFO 2020-12-14 21:04:15,020 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #494: Server Role:           active directory domain controller
INFO 2020-12-14 21:04:15,021 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #495: Hostname:              localhost
INFO 2020-12-14 21:04:15,021 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #496: NetBIOS Domain:        DOMAIN
INFO 2020-12-14 21:04:15,021 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #497: DNS Domain:            domain.alt
INFO 2020-12-14 21:04:15,021 pid:11365 /usr/lib64/samba-dc/python3.7/samba/provision/__init__.py #498: DOMAIN SID:            S-1-5-21-1348216441-3303689712-388297173

При запросе ввода если нажать Enter, будет выбран вариант по умолчанию, который обозначен в квадратных скобках. Важно правильно указать realm, а также ввести пароль администратора («Administrator password:» и «Retype password:»), прочие запросы можно выбрать по-умолчанию.

Примечание: Пароль администратора должен быть не менее 7 символов и содержать символы как минимум трёх групп из четырёх возможных: латинских букв в верхнем и нижнем регистрах, чисел и других небуквенно-цифровых символов.


Параметры --use-rfc2307 --use-xattrs=yes позволяют поддерживать расширенные атрибуты типа UID и GID в схеме LDAP и ACL на файловой системе Linux.

Запуск службы

Установите службу по умолчанию и запустите её:

# chkconfig samba on
Внимание: Отправляется запрос 'systemctl enable samba.service'.
Synchronizing state of samba.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable samba
Created symlink /etc/systemd/system/multi-user.target.wants/samba.service → /lib/systemd/system/samba.service.
chkconfig samba on
# systemctl start samba.service 
Примечание: Если служба после установки никаким способом не запускается, перезагрузите сервер


Настройка Kerberos

Откройте от имени суперпользователя файл /etc/krb5.conf.

Раскомментируйте строку "default realm" и введите название области заглавными буквами.

Ниже, под строкой [realms] вместо EXAMPLE.COM введите название области, а вместо example.com в "default domain" введите IP-адрес сервера с Samba.

Под строкой [domain_realm] example.com и EXAMPLE.COM замените на ваш домен сохраняя регистр.

Критерии успешного создания домена

1. Общая информация о домене:

# samba-tool domain info 127.0.0.1
Forest           : school.alt
Domain           : school.alt
Netbios domain   : SCHOOL
DC name          : c228.school.alt
DC netbios name  : C228
Server site      : Default-First-Site-Name
Client site      : Default-First-Site-Name

2. Просмотр предоставляемых служб:

# smbclient -L localhost -U administrator
Enter administrator's password: 
Domain=[SCHOOL] OS=[Unix] Server=[Samba 4.0.21]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk      
        sysvol          Disk      
        IPC$            IPC       IPC Service (Samba 4.0.21)
Domain=[SCHOOL] OS=[Unix] Server=[Samba 4.0.21]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
        SCHOOL.ALT           C228
        WORKGROUP            HOST-15

3. Проверка конфигурации DNS

3.1 Убедитесь в наличии nameserver 127.0.0.1 в /etc/resolv.conf:

host school.alt

3.2 Проверяем имена хостов:

  • адрес _kerberos._udp.*адрес домена с точкой
# host -t SRV _kerberos._udp.school.alt.
_kerberos._udp.school.alt has SRV record 0 100 88 c228.school.alt.
  • адрес _ldap._tcp.*адрес домена с точкой
# host -t SRV _ldap._tcp.school.alt.
_ldap._tcp.school.alt has SRV record 0 100 389 c228.school.alt.
  • адрес хоста.*адрес домена с точкой
# host -t A c228.school.alt.
c228.school.alt has address 192.168.1.1

Если имена не находятся, проверяйте выключение службы named.

4. Проверка Kerberos:

Внимание! Имя домена должно быть в верхнем регистре, иначе выдаст:
kinit: KDC reply did not match expectations while getting initial credentials
# kinit administrator
Password for administrator@SCHOOL.ALT: 
Warning: Your password will expire in 41 days on Вт 11 ноя 2014 08:58:30

Просмотр полученного билета:

# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SCHOOL.ALT

Valid starting       Expires              Service principal
30.09.2014 10:23:54  30.09.2014 20:23:54  krbtgt/SCHOOL.ALT@SCHOOL.ALT
        renew until 01.10.2014 10:23:45
Внимание! Для серверов, не внесённых в зону обратного просмотра DNS, авторизация через nslcd по GSSAPI будет вылетать с диагностикой:
Local error: SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information (Server not found in Kerberos database)


Управление пользователями

Создать пользователя с паролем[7], :

samba-tool user create <имя пользователя>
samba-tool user setexpiry <имя пользователя>

Например,

samba-tool user create ivanov --given-name='Иван Иванов' --mail-address='ivanov@stand.alt'

Просмотреть доступных пользователей:

samba-tool user list

Удалить пользователя:

samba-tool user delete <имя пользователя>

Отключить пользователя:

samba-tool user disable <имя пользователя>

Включить пользователя:

samba-tool user enable <имя пользователя>

Изменить пароль пользователя:

samba-tool user setpassword <имя пользователя>

Не забудьте разблокировать пользователя:

samba-tool user setexpiry <имя пользователя> --noexpiry
Внимание! Не допускайте одинаковых имён для пользователя и компьютера, это может привести к коллизиям (например, такого пользователя нельзя добавить в группу). [8]


Если компьютер с таким именем заведён, удалить его можно командой:

pdbedit -x -m <имя>

Заведение вторичного DC

Подробная инструкция на английском языке: https://wiki.samba.org/index.php/Join_a_domain_as_a_DC

Предусловие

Имя узла: dc2.school.alt (192.168.1.106). Предполагается, что пакет task-samba-dc уже установлен.

Порядок действий

1. Заводим IP-адрес для dc2 на PDC (с версии Samba 4.7 и выше - запись вносится автоматически):

Внимание! Указание аутентифицирующей информации (имени пользователя и пароля) обязательно!
# samba-tool dns add 192.168.1.1 school.alt DC2 A 192.168.1.106 -Uadministrator

2. На dc2.school.alt правим файл /etc/krb5.conf:

[libdefaults]
default_realm = SCHOOL.ALT
dns_lookup_realm = true
dns_lookup_kdc = true
Примечание: Перед вводом в домен в resolvconf обязательно должен быть добавлен PDC как nameserver.


3. Получаем билет и убеждаемся, что билет получен:

Внимание! Имя домена должно быть указано в верхнем регистре
# kinit administrator@SCHOOL.ALT
Password for administrator@SCHOOL.ALT: 
Warning: Your password will expire in 37 days on Пт 14 ноя 2014 14:31:40
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SCHOOL.ALT

Valid starting       Expires              Service principal
07.10.2014 18:51:01  08.10.2014 04:51:01  krbtgt/SCHOOL.ALT@SCHOOL.ALT
        renew until 08.10.2014 18:50:51

4. Вводим в домен:

# samba-tool domain join school.alt DC -Uadministrator --realm=school.alt

Если всё нормально, в конце видим:

Joined domain SCHOOL (SID S-1-5-21-80639820-2350372464-3293631772) as a DC

5. После успешного ввода в домен в resolvconf необходимо сменить адрес PDC на адрес вторичного DC (в нашем примере 192.168.1.106).

6. Делаем службу samba запускаемой по умолчанию:

# chkconfig samba on

7. Запускаем службу, соответственно:

# service samba start


Критерии проверки успешного создания вторичного DC

...

Репликация

Внимание! Помните, что без успешной двунаправленной репликации в течение 14 дней DC исключается из Active Directory
Внимание! Указание аутентифицирующей информации (имени пользователя и пароля) обязательно!

1. Реплицируем на вторичном DC (с первичного):

# samba-tool drs replicate dc2.school.alt c228.school.alt dc=school,dc=alt -Uadministrator

(сначала указывается приемник, затем источник, после этого реплицируемая ветка в LDAP).

2. Реплицируем на вторичном DC (на первичный):

# samba-tool drs replicate с228.school.alt dc2.school.alt dc=school,dc=alt -Uadministrator

(сначала указывается приемник, затем источник, после этого реплицируемая ветка в LDAP).

Примечание: Имя домена в именах серверов можно опустить (если они одинаковые)


3. Просмотр статуса репликации на PDC:

# samba-tool drs showrepl
Примечание: Если репликация на Windows не работает, добавьте в Active Directory Sites and Services новое соединение Active Directory. Реплицируйте на DC, подождите минут 5 и пробуйте реплицировать с Samba на Windows


Ссылки

Советы

  • Введите в домен машину с Windows, установите на неё Remote Server Administration Tools и управляйте доменом из графического интерфейса.
  • Для того, чтобы посмотреть конфигурацию LDAP контроллера домена, получите билет Kerberos (через kinit) и выполните:
ldapsearch -LLL -b '' -s base -x
  • Для отключения проверки необходимой длины и стойкости паролей выполните:
samba-tool domain passwordsettings set --complexity=off
samba-tool domain passwordsettings set --history-length=0
samba-tool domain passwordsettings set --min-pwd-age=0
samba-tool domain passwordsettings set --max-pwd-age=0
  • Для просмотра всех записей DNS домена выполните:
samba-tool dns query localhost test.altlinux '@' ALL -U 'Administrator%Pa$$word'
  • Для удаления заведённого хоста выполните:
samba-tool dns delete localhost test.altlinux host-51 A 192.168.3.51 -U 'Administrator%Pa$$word'

Troubleshooting

Если домен не создаётся с ошибкой типа ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:2241
Удалите директиву include или includedir в /etc/krb5.conf[9]