Настройка контроллера домена Samba Active Directory
Контроллер домена Samba Active Directory (также известный как Samba AD/DC) — это сервер, на котором запущены службы Samba, которые могут обеспечивать аутентификацию пользователей и компьютеров домена, работающих под управлением Linux или Windows. Он должен быть предназначен исключительно для предоставления услуг аутентификации и авторизации и не должен предоставлять услуги по работе с файлами или печати: это должна быть роль серверов-членов, присоединенных к домену.
В этом руководстве показано, как запустить сервер Samba AD/DC и проверить его работоспособность.Для получения дополнительной информации о том, почему сервер Samba AD/DC не следует использовать для предоставления файловых и печатных служб, ознакомьтесь со списком причин и предостережений в Samba Wiki.
Установка
Эта команда установит пакеты, необходимые для запуска и тестирования служб Samba AD/DC:
Код: Выделить всё
sudo apt install samba-ad-dc krb5-user bind9-dnsutils
Далее необходимо убедиться, что обычные службы Samba smbd, nmbd и windind отключены:
Код: Выделить всё
sudo systemctl disable --now smbd nmbd winbind
sudo systemctl mask smbd nmbd winbind
Код: Выделить всё
sudo systemctl unmask samba-ad-dc
sudo systemctl enable samba-ad-dc
Инструмент Samba AD/DC provisioning tool захочет создать новый файл конфигурации Samba, предназначенный для роли AD/DC, но не будет заменять существующий файл. Поэтому перед продолжением нам необходимо удалить его:Развертывание Samba AD/DC представляет собой набор взаимосвязанных служб и требует собственного специального модуля службы systemd.
Код: Выделить всё
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
Выполнение команды займет несколько секунд, и будет выведено много информации. В конце результат должен выглядеть примерно так (длинные строки сокращены для удобства чтения):Ввод паролей в командной строке, как правило, небезопасен. Другие пользователи системы, которые могут видеть список процессов, могут увидеть пароль, который также будет сохранен в истории оболочки, если команда не начинается с пробела.
Код: Выделить всё
(...)
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
Код: Выделить всё
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
Код: Выделить всё
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
Код: Выделить всё
[global]
dns forwarder = 10.10.17.1
Код: Выделить всё
sudo unlink /etc/resolv.conf
Теперь воссоздайте файл /etc/resolv.conf с таким содержанием:
Код: Выделить всё
nameserver 127.0.0.1
search example.internal
Код: Выделить всё
sudo systemctl disable --now systemd-resolved
Код: Выделить всё
sudo cp -f /var/lib/samba/private/krb5.conf /etc/krb5.conf
Теперь мы готовы запустить службы Samba AD/DC:
Код: Выделить всё
sudo systemctl start samba-ad-dc
Проверка
Ниже приведены некоторые шаги проверки, которые можно выполнить, чтобы убедиться, что подготовка была выполнена правильно и служба готова к работе.
Аутентификация Kerberos
Билет Kerberos для администратора можно получить с помощью команды kinit. Обратите внимание, что для выполнения этой команды не требуется права root. Совершенно нормально получить билет для другого пользователя, даже привилегированного:
Код: Выделить всё
kinit Administrator
Код: Выделить всё
Password for Administrator@EXAMPLE.INTERNAL:
Чтобы проверить, что билет был получен, используйте klist, который должен выдать результат, похожий на следующий:Если вы не знакомы с Kerberos, ознакомьтесь с нашим введением в Kerberos.
https://documentation.ubuntu.com/server/explanation/intro-to/kerberos/#introduction-to-kerberos
Код: Выделить всё
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
Используя билет Kerberos из предыдущего шага, мы можем проверить DNS-сервер, на котором работает Samba.
Если все в порядке, команда hostname должна вернуть как короткое имя хоста, так и полное имя хоста.
Для короткого имени хоста используйте команду:
Код: Выделить всё
hostname
Код: Выделить всё
hostname -f
Информация о сервере
Имея эту информацию под рукой и проверив ее, мы можем выполнить дальнейшие проверки. Давайте получим информацию о службе 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
(...)
Код: Выделить всё
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
Записи 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
Код: Выделить всё
_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.
Код: Выделить всё
dig @localhost +short -t A $(hostname -f)
Тест создания пользователя
Пользователи (а также группы и другие объекты) могут быть созданы с помощью команды samba-tool. Она может использоваться удаленно для управления пользователями на удаленном сервере Samba AD или локально на том же сервере, которым она управляет.
При запуске локально с правами root дополнительная аутентификация не требуется:
Код: Выделить всё
samba-tool user add 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
Код: Выделить всё
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