ActiveDirectory/Login/DC: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
(не показано 6 промежуточных версий 2 участников)
Строка 1: Строка 1:
Настройка аутентификации доменных пользователей на контроллере домена ([[ActiveDirectory/DC|Samba в режиме AD DC]]) через '''SSSD'''.
Настройка аутентификации доменных пользователей на контроллере домена ([[ActiveDirectory/DC|Samba в режиме AD DC]]).
{{Note|Это временное решение. В будущем реализация данной задачи запланирована на системном уровне.}}
{{Note|Настройка аутентификации доменных пользователей на контроллере домена с использованием SSSD не поддерживается.}}
{{Attention|На текущий момент (samba 4.16.7-alt5, gpupdate 0.9.12.2-alt2) данный метод не позволяет применять групповые политики на контроллере домена.}}
{{Attention|На текущий момент (samba 4.19.9-alt5, gpupdate 0.12.2-alt1) данный метод не позволяет применять пользовательские групповые политики на контроллере домена, при этом машинные политики применяются успешно.}}
{{Attention|На текущий момент (samba 4.16.7-alt5, sssd 2.8.1-alt1) для директории /var/lib/samba/sysvol SID'ы домена не корректно транслируются в UNIX user id и group id.}}
{{Attention|Для директории /var/lib/samba/sysvol SID'ы домена сопоставляются с UID/GID по особому алгоритму, и изменить этот процесс с помощью настроек невозможно.}}
 
{{Attention|Winbind не поддерживает аутентификацию с использованием UPN (User Principal Name, например user@domain.alt). Для входа и других операций следует использовать формат DOMAIN\user.}}
<div id="prep"></div>
<div id="prep"></div>


Строка 12: Строка 12:
* Всё, что поддерживает обычная клиентская машина (в качестве клиента SSSD или WinBind)
* Всё, что поддерживает обычная клиентская машина (в качестве клиента SSSD или WinBind)


В качестве клиента на контроллере домена можно использовать как WinBind, так и SSSD (с ограничениями).
В качестве клиента на контроллере домена необходимо использовать Winbind.
{{attention|В качестве клиента на контроллере домена рекомендуется использовать WinBind. Использование SSSD не желательно.}}


== Параметры конфигурации домена ==
== Параметры конфигурации домена ==
Строка 33: Строка 32:
|}
|}


== Winbind ==
== Установка пакетов ==
 
=== Установка пакетов ===
Необходимо установить следующие пакеты:
Необходимо установить следующие пакеты:
* {{pkg|task-auth-ad-winbind}}
* {{pkg|task-auth-ad-winbind}}
Строка 41: Строка 38:
<source lang="bash"># apt-get install task-auth-ad-winbind gpupdate</source>
<source lang="bash"># apt-get install task-auth-ad-winbind gpupdate</source>


=== Изменение файлов конфигурации ===
== Изменение файлов конфигурации ==
==== krb5.conf ====
=== krb5.conf ===
Необходимо убедиться, что в файле {{path|/etc/krb5.conf}} заданы следующие параметры:
Необходимо убедиться, что в файле {{path|/etc/krb5.conf}} заданы следующие параметры:
* dns_lookup_realm = false
* dns_lookup_realm = false
Строка 62: Строка 59:
[domain_realm]</source>
[domain_realm]</source>


==== smb.conf ====
=== smb.conf ===
Необходимо убедиться, что в файле {{path|/etc/samba/smb.conf}} заданы следующие параметры:
Необходимо убедиться, что в файле {{path|/etc/samba/smb.conf}} заданы следующие параметры:
* kerberos method = dedicated keytab
* kerberos method = system keytab
* dedicated keytab file = /etc/krb5.keytab
Остальное содержимое файла должно соответствовать аналогичному файлу на обычных клиентах домена. Приведённый ниже пример конфигурации актуален при использовании Samba с DNS-бэкендом SAMBA_INTERNAL, ваша конфигурация может отличаться.
Остальное содержимое файла должно соответствовать аналогичному файлу на обычных клиентах домена.


Пример {{path|/etc/samba/smb.conf}}:
Пример {{path|/etc/samba/smb.conf}}:
<source lang="ini">[global]
<source lang="ini">[global]
        dns forwarder = 8.8.8.8
        netbios name = DC0
         realm = DOMAIN.ALT
         realm = DOMAIN.ALT
         workgroup = DOMAIN
         workgroup = DOMAIN
        netbios name = DC0
         kerberos method = system keytab
         kerberos method = dedicated keytab
        dedicated keytab file = /etc/krb5.keytab
        dns forwarder = 8.8.8.8
         server role = active directory domain controller
         server role = active directory domain controller
        idmap_ldb:use rfc2307 = yes


         template shell = /bin/bash
         template shell = /bin/bash
         template homedir = /home/%U
         template homedir = /home/%D/%U


         wins support = no
         wins support = no
Строка 96: Строка 90:
         read only = No</source>
         read only = No</source>


==== nsswitch.conf ====
=== nsswitch.conf ===
Необходимо убедиться, что в файле {{path|/etc/nsswitch.conf}} заданы следующие параметры:
Необходимо убедиться, что в файле {{path|/etc/nsswitch.conf}} заданы следующие параметры:
* passwd:    files winbind systemd
* passwd:    files winbind systemd
Строка 104: Строка 98:
<source lang="ini">passwd:    files winbind systemd
<source lang="ini">passwd:    files winbind systemd
shadow:    tcb files winbind
shadow:    tcb files winbind
group:      files [SUCCESS=merge] winbind role systemd
group:      files [SUCCESS=merge] winbind systemd role
gshadow:    files
gshadow:    files


Строка 119: Строка 113:
aliases:    files</source>
aliases:    files</source>


=== Настройка аутентификации ===
== Настройка аутентификации ==
Необходимо переключить PAM-стэк на использование winbind модуля для аутентификации:
Необходимо переключить PAM-стэк на использование winbind модуля для аутентификации:
<source lang="bash"># control system-auth winbind</source>
<source lang="bash"># control system-auth winbind</source>
== SSSD ==
=== Установка пакетов ===
Необходимо установить следующие пакеты:
* {{pkg|task-auth-ad-sssd}}
* {{pkg|gpupdate}}
<source lang="bash"># apt-get install task-auth-ad-sssd gpupdate</source>
=== Изменение файлов конфигурации ===
==== krb5.conf ====
Необходимо убедиться, что в файле {{path|/etc/krb5.conf}} заданы следующие параметры:
* includedir /etc/krb5.conf.d/
* dns_lookup_realm = false
* default_realm = DOMAIN.ALT
Пример {{path|/etc/krb5.conf}}:
<source lang="ini">includedir /etc/krb5.conf.d/
[logging]
[libdefaults]
dns_lookup_kdc = true
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = DOMAIN.ALT
[realms]
[domain_realm]</source>
==== sssd.conf ====
Необходимо убедиться, что в файле {{path|/etc/sssd/sssd.conf}} заданы следующие параметры:
* user = root
* ad_maximum_machine_account_password_age = 0
Остальное содержимое файла должно соответствовать аналогичному файлу на обычных клиентах домена.
Пример {{path|/etc/sssd/sssd.conf}}:
<source lang="ini">[sssd]
config_file_version = 2
services = nss, pam
# Managed by system facility command:
## control sssd-drop-privileges unprivileged|privileged|default
user = root
# SSSD will not start if you do not configure any domains.
domains = DOMAIN.ALT
[nss]
[pam]
[domain/DOMAIN.ALT]
id_provider = ad
auth_provider = ad
chpass_provider = ad
access_provider = ad
default_shell = /bin/bash
fallback_homedir = /home/%d/%u
debug_level = 0
ad_gpo_ignore_unreadable = true
ad_gpo_access_control = permissive
ad_maximum_machine_account_password_age = 0</source>
==== smb.conf ====
Необходимо убедиться, что в файле {{path|/etc/samba/smb.conf}} заданы следующие параметры:
* idmap config * : range = 200000-2000200000
* idmap config * : backend = sss
Остальное содержимое файла должно соответствовать аналогичному файлу на обычных клиентах домена.
Пример {{path|/etc/samba/smb.conf}}:
<source lang="ini">[global]
        realm = DOMAIN.ALT
        workgroup = DOMAIN
        netbios name = DC0
        kerberos method = dedicated keytab
        dedicated keytab file = /etc/krb5.keytab
        dns forwarder = 8.8.8.8
        server role = active directory domain controller
        idmap_ldb:use rfc2307 = yes
        template shell = /bin/bash
        template homedir = /home/%U
        wins support = no
        winbind use default domain = yes
        winbind enum users = no
        winbind enum groups = no
        winbind refresh tickets = yes                                                                                                                   
        winbind offline logon = yes
        idmap config * : range = 200000-2000200000
        idmap config * : backend = sss
[netlogon]
        path = /var/lib/samba/sysvol/domain/scripts
        read only = No
[sysvol]
        path = /var/lib/samba/sysvol
        read only = No</source>
==== nsswitch.conf ====
Необходимо убедиться, что в файле {{path|/etc/nsswitch.conf}} заданы следующие параметры:
* passwd:    files sss systemd
* shadow:    tcb files sss
* group:      files [SUCCESS=merge] sss role systemd
Пример {{path|/etc/nsswitch.conf}}:
<source lang="ini">passwd:    files sss systemd
shadow:    tcb files sss
group:      files [SUCCESS=merge] sss role systemd
gshadow:    files
hosts:      files myhostname dns
ethers:    files
netmasks:  files
networks:  files
protocols:  files
rpc:        files
services:  files
automount:  files
aliases:    files</source>
=== Настройка аутентификации ===
Необходимо переключить PAM-стэк на использование sss модулей для аутентификации:
<source lang="bash"># control system-auth sss</source>


== Генерация keytab файла ==
== Генерация keytab файла ==
Необходимо сгенерировать системный keytab файл для машинного аккаунта контроллера домена. Для этого следует выполнить следующую команду:
Необходимо сгенерировать системный keytab файл для машинного аккаунта контроллера домена. Для этого следует выполнить следующую команду:
<source lang="bash"># net ads keytab create</source>
<source lang="bash"># net ads keytab create</source>
 
Сообщение об ошибке Kerberos является ожидаемым в данной конфигурации и не указывает на неисправность:<source lang="text">kerberos_kinit_password DOMAIN@DOMAIN.ALT failed: Client not found in Kerberos database</source>
Посмотреть результат:
<source lang="bash"># klist -ket</source>
== Сервисы ==
== Сервисы ==
Необходимо отключить сервис nscd:
Необходимо отключить сервис nscd:
<source lang="bash"># systemctl disable --now nscd</source>
<source lang="bash"># systemctl disable --now nscd</source>
В заключении, если используется схема с SSSD клиентом, то необходимо запустить и включить автоматический запуск для сервиса sssd:
<source lang="bash"># systemctl enable --now sssd</source>
== Роли ==
== Роли ==
Необходимо указать, какие локальные роли каким группам домена соответствуют.
Необходимо указать, какие локальные роли каким группам домена соответствуют.
Строка 274: Строка 137:
== Групповые политики ==
== Групповые политики ==
Для включения поддержки групповых политик необходимо выполнить:
Для включения поддержки групповых политик необходимо выполнить:
<source lang="bash"># gpupdate-setup enable --local-policy ad-domain-controller</source>
<source lang="bash"># gpupdate-setup enable </source>
{{Attention|Работа групповых политик на контроллере домена c SSSD клиентом может быть не стабильной}}
Для применения групповых политик необходимо выполнить:
 
<source lang="bash"># gpupdate</source>
== SSH ==
== SSH ==
Следует убедиться, что удалённый доступ по ssh разрешён только Администраторам домена:
Следует убедиться, что удалённый доступ по ssh разрешён только Администраторам домена:
Строка 287: Строка 150:
<source lang="bash"># systemctl restart sshd</source>
<source lang="bash"># systemctl restart sshd</source>
{{Note|Данные настройки можно применить с помощью механизма групповых политик '''control'''}}
{{Note|Данные настройки можно применить с помощью механизма групповых политик '''control'''}}
==Проверка результатов присоединения==
Для проверки возможности поиска доменных пользователей отобразить сведения о пользователе AD (ivanov — пользователь в домене):<source lang="bash"># getent passwd ivanov
ivanov:*:1187401105:1187400513:Иван Иванов:/home/TEST.ALT/ivanov:/bin/bash</source>

Версия от 15:45, 10 апреля 2025

Настройка аутентификации доменных пользователей на контроллере домена (Samba в режиме AD DC).

Примечание: Настройка аутентификации доменных пользователей на контроллере домена с использованием SSSD не поддерживается.
Внимание! На текущий момент (samba 4.19.9-alt5, gpupdate 0.12.2-alt1) данный метод не позволяет применять пользовательские групповые политики на контроллере домена, при этом машинные политики применяются успешно.
Внимание! Для директории /var/lib/samba/sysvol SID'ы домена сопоставляются с UID/GID по особому алгоритму, и изменить этот процесс с помощью настроек невозможно.
Внимание! Winbind не поддерживает аутентификацию с использованием UPN (User Principal Name, например user@domain.alt). Для входа и других операций следует использовать формат DOMAIN\user.

Описание

Контроллер домена в рамках доменной инфраструктуры является, в том числе, ещё одной машиной и имеет соответствующий машинный аккаунт. После применения настроек, описанных ниже, машина с контроллером домена сможет выполнять, в том числе, и функции обычного члена домена, такие как:

  • Аутентификация доменными пользователями (в том числе по ssh)
  • Применение групповых политик
  • Всё, что поддерживает обычная клиентская машина (в качестве клиента SSSD или WinBind)

В качестве клиента на контроллере домена необходимо использовать Winbind.

Параметры конфигурации домена

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

Параметр Значение
Имя домена DOMAIN.ALT
Рабочая группа DOMAIN
Имя компьютера в Netbios DC0
Имя пользователя-администратора Administrator
Пароль администратора Pa$$word

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

Необходимо установить следующие пакеты:

  • task-auth-ad-winbind
  • gpupdate
# apt-get install task-auth-ad-winbind gpupdate

Изменение файлов конфигурации

krb5.conf

Необходимо убедиться, что в файле /etc/krb5.conf заданы следующие параметры:

  • dns_lookup_realm = false
  • default_realm = DOMAIN.ALT

Пример /etc/krb5.conf:

[logging]

[libdefaults]
 dns_lookup_kdc = true
 dns_lookup_realm = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 default_realm = DOMAIN.ALT

[realms]

[domain_realm]

smb.conf

Необходимо убедиться, что в файле /etc/samba/smb.conf заданы следующие параметры:

  • kerberos method = system keytab

Остальное содержимое файла должно соответствовать аналогичному файлу на обычных клиентах домена. Приведённый ниже пример конфигурации актуален при использовании Samba с DNS-бэкендом SAMBA_INTERNAL, ваша конфигурация может отличаться.

Пример /etc/samba/smb.conf:

[global]
        dns forwarder = 8.8.8.8
        netbios name = DC0
        realm = DOMAIN.ALT
        workgroup = DOMAIN
        kerberos method = system keytab
        server role = active directory domain controller

        template shell = /bin/bash
        template homedir = /home/%D/%U

        wins support = no
        winbind use default domain = yes
        winbind enum users = no
        winbind enum groups = no
        winbind refresh tickets = yes                                                                                                                     
        winbind offline logon = yes

[netlogon]
        path = /var/lib/samba/sysvol/domain/scripts
        read only = No
[sysvol]
        path = /var/lib/samba/sysvol
        read only = No

nsswitch.conf

Необходимо убедиться, что в файле /etc/nsswitch.conf заданы следующие параметры:

  • passwd: files winbind systemd
  • shadow: tcb files winbind
  • group: files [SUCCESS=merge] winbind role systemd

Пример /etc/nsswitch.conf:

passwd:     files winbind systemd
shadow:     tcb files winbind
group:      files [SUCCESS=merge] winbind systemd role
gshadow:    files

hosts:      files myhostname dns

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

automount:  files
aliases:    files

Настройка аутентификации

Необходимо переключить PAM-стэк на использование winbind модуля для аутентификации:

# control system-auth winbind

Генерация keytab файла

Необходимо сгенерировать системный keytab файл для машинного аккаунта контроллера домена. Для этого следует выполнить следующую команду:

# net ads keytab create

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

kerberos_kinit_password DOMAIN@DOMAIN.ALT failed: Client not found in Kerberos database

Посмотреть результат:

# klist -ket

Сервисы

Необходимо отключить сервис nscd:

# systemctl disable --now nscd

Роли

Необходимо указать, какие локальные роли каким группам домена соответствуют.

Обычные пользователи домена (Domain Users) соответствуют локальной роли users:

# roleadd 'domain users' users

Администраторы домена (Domain Admins) соответствуют локальной роли localadmins:

# roleadd 'domain admins' localadmins
Внимание! В русскоязычных версиях MS Windows Server встроенные группы "Domain Users" и "Domain Admins" имеют русифицированные названия "Пользователи домена" и "Администраторы домена"


Групповые политики

Для включения поддержки групповых политик необходимо выполнить:

# gpupdate-setup enable

Для применения групповых политик необходимо выполнить:

# gpupdate

SSH

Следует убедиться, что удалённый доступ по ssh разрешён только Администраторам домена:

# control sshd-allow-groups enabled
# control sshd-allow-groups-list remote

При необходимости можно разрешить аутентификацию по Kerberos билетам:

# control sshd-gssapi-auth enabled

В заключении, необходимо перезапустить сервис sshd:

# systemctl restart sshd
Примечание: Данные настройки можно применить с помощью механизма групповых политик control


Проверка результатов присоединения

Для проверки возможности поиска доменных пользователей отобразить сведения о пользователе AD (ivanov — пользователь в домене):

# getent passwd ivanov
ivanov:*:1187401105:1187400513:Иван Иванов:/home/TEST.ALT/ivanov:/bin/bash