samba-ad-dc

Ответить
ya
^-^
Сообщения: 2673
Зарегистрирован: 16 дек 2021, 19:56

samba-ad-dc

Сообщение ya »

https://documentation.ubuntu.com/server/how-to/samba/provision-samba-ad-controller/

Настройка контроллера домена Samba Active Directory

Контроллер домена Samba Active Directory (также известный как Samba AD/DC) — это сервер, на котором запущены службы Samba, которые могут обеспечивать аутентификацию пользователей и компьютеров домена, работающих под управлением Linux или Windows. Он должен быть предназначен исключительно для предоставления услуг аутентификации и авторизации и не должен предоставлять услуги по работе с файлами или печати: это должна быть роль серверов-членов, присоединенных к домену.

Для получения дополнительной информации о том, почему сервер Samba AD/DC не следует использовать для предоставления файловых и печатных служб, ознакомьтесь со списком причин и предостережений в Samba Wiki.
В этом руководстве показано, как запустить сервер Samba AD/DC и проверить его работоспособность.

Установка
Эта команда установит пакеты, необходимые для запуска и тестирования служб Samba AD/DC:

Код: Выделить всё

sudo apt install samba-ad-dc krb5-user bind9-dnsutils
Обратите внимание, что при установке krb5-user могут появиться некоторые вопросы. На этом этапе достаточно ответить стандартными значениями (просто нажмите ENTER), в том числе когда будет задан вопрос о том, что такое область Kerberos и серверы.

Далее необходимо убедиться, что обычные службы Samba smbd, nmbd и windind отключены:

Код: Выделить всё

sudo systemctl disable --now smbd nmbd winbind
sudo systemctl mask smbd nmbd winbind
И включите службу Samba AD/DC, но пока не запускайте ее:

Код: Выделить всё

sudo systemctl unmask samba-ad-dc
sudo systemctl enable samba-ad-dc
Развертывание Samba AD/DC представляет собой набор взаимосвязанных служб и требует собственного специального модуля службы systemd.
Инструмент Samba AD/DC provisioning tool захочет создать новый файл конфигурации Samba, предназначенный для роли AD/DC, но не будет заменять существующий файл. Поэтому перед продолжением нам необходимо удалить его:

Код: Выделить всё

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
Подготовка
После установки пакетов можно приступить к подготовке службы Samba AD/DC. В данном руководстве мы будем использовать следующие значения:

Домен: EXAMPLE
Область: EXAMPLE.INTERNAL
Пароль администратора: Passw0rd (выберите свой собственный)

Код: Выделить всё

sudo samba-tool domain provision \
    --domain EXAMPLE \
    --realm=EXAMPLE.INTERNAL \
    --adminpass=Passw0rd \
    --server-role=dc \
    --use-rfc2307 \
    --dns-backend=SAMBA_INTERNAL
Если вы не укажете опцию --adminpass, будет выбран случайный пароль, который будет включен в вывод командной строки. Обязательно сохраните его!
Ввод паролей в командной строке, как правило, небезопасен. Другие пользователи системы, которые могут видеть список процессов, могут увидеть пароль, который также будет сохранен в истории оболочки, если команда не начинается с пробела.
Выполнение команды займет несколько секунд, и будет выведено много информации. В конце результат должен выглядеть примерно так (длинные строки сокращены для удобства чтения):

Код: Выделить всё

(...)
INFO ... #498: Server Role:     active directory domain controller
INFO ... #499: Hostname:        ad
INFO ... #500: NetBIOS Domain:  EXAMPLE
INFO ... #501: DNS Domain:      example.internal
INFO ... #502: DOMAIN SID:      S-1-5-21-2373640847-2123283686-338028823
Если вы не использовали опцию --adminpass, пароль администратора будет частью вывода выше в строке, подобной этой:

Код: Выделить всё

INFO ... #497: Admin password:  sbruR-Py>];k=KDn1H58PB#
Действия после установки
Службы AD/DC еще не запущены. Перед запуском служб необходимо выполнить некоторые действия после установки.

Сначала настройте переадресацию DNS в файле /etc/samba/smb.conf, чтобы она указывала на ваш DNS-сервер. Она будет использоваться для всех запросов, которые не являются локальными для только что развернутого домена Active Directory (EXAMPLE.INTERNAL). Скрипт подготовки просто скопировал IP-адрес сервера из файла /etc/resolv.conf в этот параметр, но если оставить его в таком виде, он будет указывать на себя самого:

Код: Выделить всё

[global]
    dns forwarder = 127.0.0.53
Если вы не уверены, лучше всего использовать текущий DNS-сервер, который уже используется этой системой. Его можно увидеть с помощью команды resolvectl status. Найдите строку Current DNS Server и запишите IP-адрес:

Код: Выделить всё

Global
         Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
  resolv.conf mode: stub

Link 2 (enp5s0)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.10.17.1
       DNS Servers: 10.10.17.1
        DNS Domain: lxd
В приведенном выше примере DNS-сервер имеет адрес 10.10.17.1, поэтому его следует использовать в файле /etc/samba/smb.conf в разделе dns forwarder:

Код: Выделить всё

[global]
    dns forwarder = 10.10.17.1
Далее, нам нужно убедиться, что эта система будет использовать DNS-сервер Samba для своих запросов, и для этого нам нужно настроить файл /etc/resolv.conf. Этот файл будет символьной ссылкой, поэтому вместо того, чтобы просто переписать его содержимое, сначала мы должны удалить его:

Код: Выделить всё

sudo unlink /etc/resolv.conf
Примечание: после этого sudo будет выдавать сообщения об ошибках DNS до тех пор, пока служба Samba DNS не заработает.

Теперь воссоздайте файл /etc/resolv.conf с таким содержанием:

Код: Выделить всё

nameserver 127.0.0.1
search example.internal
Остановите и отключите systemd-resolved, так как теперь резолвер будет напрямую использовать DNS-сервер Samba:

Код: Выделить всё

sudo systemctl disable --now systemd-resolved
Наконец, нам нужно обновить файл /etc/krb5.conf с помощью содержимого, сгенерированного скриптом Samba provisioning. Поскольку эта система предназначена для работы в качестве сервера Samba AD/DC, мы можем просто скопировать сгенерированный файл:

Код: Выделить всё

sudo cp -f /var/lib/samba/private/krb5.conf /etc/krb5.conf
Если задействованы другие области Kerberos, вам необходимо вручную объединить два файла.

Теперь мы готовы запустить службы Samba AD/DC:

Код: Выделить всё

sudo systemctl start samba-ad-dc
На этом установка завершена. В следующем разделе будет показано, как выполнить некоторые базовые проверки.

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

Аутентификация Kerberos
Билет Kerberos для администратора можно получить с помощью команды kinit. Обратите внимание, что для выполнения этой команды не требуется права root. Совершенно нормально получить билет для другого пользователя, даже привилегированного:

Код: Выделить всё

kinit Administrator
Команда запросит пароль. Пароль — это тот, который был введен ранее в команде samba-tool при настройке домена, или случайно выбранный пароль, если не был использован параметр --adminpass.

Код: Выделить всё

Password for Administrator@EXAMPLE.INTERNAL:
Если вы не знакомы с Kerberos, ознакомьтесь с нашим введением в Kerberos.
https://documentation.ubuntu.com/server/explanation/intro-to/kerberos/#introduction-to-kerberos
Чтобы проверить, что билет был получен, используйте klist, который должен выдать результат, похожий на следующий:

Код: Выделить всё

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: Administrator@EXAMPLE.INTERNAL

Valid starting     Expires            Service principal
07/24/24 13:52:33  07/24/24 23:52:33  krbtgt/EXAMPLE.INTERNAL@EXAMPLE.INTERNAL
        renew until 07/25/24 13:52:02
DNS-тесты
Используя билет Kerberos из предыдущего шага, мы можем проверить DNS-сервер, на котором работает Samba.

Если все в порядке, команда hostname должна вернуть как короткое имя хоста, так и полное имя хоста.

Для короткого имени хоста используйте команду:

Код: Выделить всё

hostname
Для полного имени хоста выполните следующую команду:

Код: Выделить всё

hostname -f
Например, команда hostname -f вернет что-то вроде ad.example.internal, а команда hostname вернет только ad.

Информация о сервере
Имея эту информацию под рукой и проверив ее, мы можем выполнить дальнейшие проверки. Давайте получим информацию о службе DNS, предоставляемой этим контроллером домена:

Код: Выделить всё

samba-tool dns serverinfo $(hostname -f)
Эта команда выведет длинный результат, который ниже представлен в сокращенном виде:

Код: Выделить всё

dwVersion                   : 0xece0205
fBootMethod                 : DNS_BOOT_METHOD_DIRECTORY
fAdminConfigured            : FALSE
fAllowUpdate                : TRUE
fDsAvailable                : TRUE
pszServerName               : AD.example.internal
pszDsContainer              : CN=MicrosoftDNS,DC=DomainDnsZones,DC=example,DC=internal
(...)
Хотя это и не похоже, команда samba-tool dns serverinfo использовала аутентификацию Kerberos. Вывод команды klist теперь показывает другой билет, который был получен автоматически:

Код: Выделить всё

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: Administrator@EXAMPLE.INTERNAL

Valid starting     Expires            Service principal
07/24/24 14:29:55  07/25/24 00:29:55  krbtgt/EXAMPLE.INTERNAL@EXAMPLE.INTERNAL
        renew until 07/25/24 14:29:53
07/24/24 14:29:59  07/25/24 00:29:55  host/ad.example.internal@EXAMPLE.INTERNAL
        renew until 07/25/24 14:29:53
Билет для главного пользователя службы «host/ad.example.internal@EXAMPLE.INTERNAL» теперь также является частью кэша билетов.

Записи DNS
DNS-сервер, поддерживающий развертывание Samba Active Directory, также должен иметь в своих зонах некоторые специфические записи DNS, которые необходимы для обнаружения служб. Давайте проверим, были ли они добавлены правильно, с помощью этого простого скрипта:

Код: Выделить всё

for srv in _ldap._tcp _kerberos._tcp _kerberos._udp _kpasswd._udp; do
    echo -n "${srv}.example.internal: "
    dig @localhost +short -t SRV ${srv}.example.internal
done
Вывод должен быть без ошибок и отображать записи DNS для каждого запроса:

Код: Выделить всё

_ldap._tcp.example.internal: 0 100 389 ad.example.internal.
_kerberos._tcp.example.internal: 0 100 88 ad.example.internal.
_kerberos._udp.example.internal: 0 100 88 ad.example.internal.
_kpasswd._udp.example.internal: 0 100 464 ad.example.internal.
И, конечно же, наше собственное имя хоста также должно быть в DNS:

Код: Выделить всё

dig @localhost +short -t A $(hostname -f)
Вышеуказанная команда должна вернуть ваш собственный IP-адрес.

Тест создания пользователя
Пользователи (а также группы и другие объекты) могут быть созданы с помощью команды samba-tool. Она может использоваться удаленно для управления пользователями на удаленном сервере Samba AD или локально на том же сервере, которым она управляет.

При запуске локально с правами root дополнительная аутентификация не требуется:

Код: Выделить всё

samba-tool user add noble
Вышеуказанная команда запросит желаемый пароль для пользователя noble, и если он соответствует критериям сложности пароля, пользователь будет создан. Как и в случае с пользователем Administrator Samba, для проверки возможности аутентификации пользователя noble можно использовать команду kinit noble.
samba-tool создает пользователей Samba, а не локальных пользователей Linux! Эти пользователи Samba существуют только для компьютеров, присоединенных к домену, и других SMB-соединений/общих ресурсов.
По умолчанию политика паролей довольно строгая и требует использования сложных паролей. Чтобы отобразить текущую политику, выполните:

Код: Выделить всё

sudo samba-tool domain passwordsettings show
Это покажет политику по умолчанию для домена:

Код: Выделить всё

Password information for domain 'DC=example,DC=internal'

Password complexity: on
Store plaintext passwords: off
Password history length: 24
Minimum password length: 7
Minimum password age (days): 1
Maximum password age (days): 42
Account lockout duration (mins): 30
Account lockout threshold (attempts): 0
Reset account lockout after (mins): 30
Каждый из этих параметров можно изменить, включая сложность пароля. Например, чтобы установить минимальную длину пароля равной 12 символам:

Код: Выделить всё

sudo samba-tool domain passwordsettings set --min-pwd-length=12
Чтобы увидеть все варианты, выполните:

Код: Выделить всё

samba-tool domain passwordsettings set --help
Следующие шаги
Этот сервер Samba AD/DC можно рассматривать как сервер Active Directory для систем Windows и Linux. Обычно следующими шагами являются создание пользователей и групп, а также присоединение серверов-членов и рабочих станций к этому домену. Пользователи рабочих станций будут входить в систему, используя учетные данные домена, а серверы-члены будут использоваться для предоставления файловых и печатных служб.

Ссылки
Обзор доменных служб Active Directory

Справочная страница samba-tool(8)

Интеграция с Active Directory:

Выбор метода интеграции
https://documentation.ubuntu.com/server/explanation/active-directory/choosing-an-integration-method/#choosing-an-integration-method

Присоединение сервера-члена
https://documentation.ubuntu.com/server/how-to/active-directory/join-a-domain-with-winbind-preparation/#join-a-domain-with-winbind-preparation

Присоединение рабочих станций (без служб Samba)
https://documentation.ubuntu.com/server/how-to/sssd/with-active-directory/#sssd-with-active-directory
Ответить