ActiveDirectory/Login/DC: различия между версиями
Liannnix (обсуждение | вклад) Нет описания правки |
Liannnix (обсуждение | вклад) |
||
(не показаны 23 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
Настройка аутентификации доменных пользователей на контроллере домена ([[ActiveDirectory/DC|Samba в режиме AD DC]]). | Настройка аутентификации доменных пользователей на контроллере домена ([[ActiveDirectory/DC|Samba в режиме AD DC]]) через '''SSSD'''. | ||
{{Note|Это временное решение. В будущем реализация данной задачи запланирована на системном уровне.}} | |||
{{Attention|На текущий момент (samba 4.16.7-alt5, gpupdate 0.9.12.2-alt2) данный метод не позволяет применять групповые политики на контроллере домена.}} | |||
{{Attention|На текущий момент (samba 4.16.7-alt5, sssd 2.8.1-alt1) для директории /var/lib/samba/sysvol SID'ы домена не корректно транслируются в UNIX user id и group id.}} | |||
<div id="prep"></div> | <div id="prep"></div> | ||
== Описание == | == Описание == | ||
Контроллер домена в рамках доменной инфраструктуры является, в том числе, ещё одной машиной и имеет соответствующий машинный аккаунт. После применения настроек, описанных ниже, машина с контроллером домена сможет выполнять, в том числе, и | Контроллер домена в рамках доменной инфраструктуры является, в том числе, ещё одной машиной и имеет соответствующий машинный аккаунт. После применения настроек, описанных ниже, машина с контроллером домена сможет выполнять, в том числе, и функции обычного члена домена, такие как: | ||
* Аутентификация доменными пользователями (в том числе по ssh) | * Аутентификация доменными пользователями (в том числе по ssh) | ||
* Применение групповых | * Применение групповых политик | ||
* Всё, что поддерживает обычная клиентская машина (в качестве клиента SSSD) | * Всё, что поддерживает обычная клиентская машина (в качестве клиента SSSD или WinBind) | ||
В качестве клиента на контроллере домена можно использовать как WinBind, так и SSSD (с ограничениями). | |||
{{attention|В качестве клиента на контроллере домена рекомендуется использовать WinBind. Использование SSSD не желательно.}} | |||
== Параметры конфигурации домена == | == Параметры конфигурации домена == | ||
Строка 27: | Строка 33: | ||
|} | |} | ||
== Установка пакетов == | == Winbind == | ||
=== Установка пакетов === | |||
Необходимо установить следующие пакеты: | |||
* {{pkg|task-auth-ad-winbind}} | |||
* {{pkg|gpupdate}} | |||
<source lang="bash"># apt-get install task-auth-ad-winbind gpupdate</source> | |||
=== Изменение файлов конфигурации === | |||
==== krb5.conf ==== | |||
Необходимо убедиться, что в файле {{path|/etc/krb5.conf}} заданы следующие параметры: | |||
* dns_lookup_realm = false | |||
* default_realm = DOMAIN.ALT | |||
Пример {{path|/etc/krb5.conf}}: | |||
<source lang="ini">[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> | |||
==== smb.conf ==== | |||
Необходимо убедиться, что в файле {{path|/etc/samba/smb.conf}} заданы следующие параметры: | |||
* kerberos method = dedicated keytab | |||
* dedicated keytab file = /etc/krb5.keytab | |||
Остальное содержимое файла должно соответствовать аналогичному файлу на обычных клиентах домена. | |||
Пример {{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 | |||
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</source> | |||
==== nsswitch.conf ==== | |||
Необходимо убедиться, что в файле {{path|/etc/nsswitch.conf}} заданы следующие параметры: | |||
* passwd: files winbind systemd | |||
* shadow: tcb files winbind | |||
* group: files [SUCCESS=merge] winbind role systemd | |||
Пример {{path|/etc/nsswitch.conf}}: | |||
<source lang="ini">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</source> | |||
=== Настройка аутентификации === | |||
Необходимо переключить PAM-стэк на использование winbind модуля для аутентификации: | |||
<source lang="bash"># control system-auth winbind</source> | |||
== SSSD == | |||
=== Установка пакетов === | |||
Необходимо установить следующие пакеты: | Необходимо установить следующие пакеты: | ||
* {{pkg|task-auth-ad-sssd}} | * {{pkg|task-auth-ad-sssd}} | ||
Строка 33: | Строка 130: | ||
<source lang="bash"># apt-get install task-auth-ad-sssd gpupdate</source> | <source lang="bash"># apt-get install task-auth-ad-sssd gpupdate</source> | ||
== | === Изменение файлов конфигурации === | ||
=== krb5.conf === | ==== krb5.conf ==== | ||
Необходимо убедиться, что в файле {{path|/etc/krb5.conf}} заданы следующие параметры: | Необходимо убедиться, что в файле {{path|/etc/krb5.conf}} заданы следующие параметры: | ||
* includedir /etc/krb5.conf.d/ | * includedir /etc/krb5.conf.d/ | ||
* dns_lookup_realm = false | * dns_lookup_realm = false | ||
* default_realm = DOMAIN.ALT | * default_realm = DOMAIN.ALT | ||
Пример {{path|/etc/krb5.conf}}: | Пример {{path|/etc/krb5.conf}}: | ||
<source lang="ini">includedir /etc/krb5.conf.d/ | <source lang="ini">includedir /etc/krb5.conf.d/ | ||
Строка 53: | Строка 149: | ||
rdns = false | rdns = false | ||
default_realm = DOMAIN.ALT | default_realm = DOMAIN.ALT | ||
[realms] | [realms] | ||
Строка 59: | Строка 154: | ||
[domain_realm]</source> | [domain_realm]</source> | ||
=== | ==== sssd.conf ==== | ||
== | |||
Необходимо убедиться, что в файле {{path|/etc/sssd/sssd.conf}} заданы следующие параметры: | Необходимо убедиться, что в файле {{path|/etc/sssd/sssd.conf}} заданы следующие параметры: | ||
* user = root | * user = root | ||
Строка 96: | Строка 187: | ||
ad_maximum_machine_account_password_age = 0</source> | ad_maximum_machine_account_password_age = 0</source> | ||
== | ==== smb.conf ==== | ||
Необходимо убедиться, что в файле {{path|/etc/samba/smb.conf}} заданы следующие параметры: | Необходимо убедиться, что в файле {{path|/etc/samba/smb.conf}} заданы следующие параметры: | ||
* idmap config * : range = 200000-2000200000 | * idmap config * : range = 200000-2000200000 | ||
* idmap config * : backend = sss | * idmap config * : backend = sss | ||
Остальное содержимое файла должно соответствовать аналогичному файлу на обычных клиентах домена. | Остальное содержимое файла должно соответствовать аналогичному файлу на обычных клиентах домена. | ||
Строка 112: | Строка 202: | ||
dns forwarder = 8.8.8.8 | dns forwarder = 8.8.8.8 | ||
server role = active directory domain controller | 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 | |||
idmap config * : range = 200000-2000200000 | |||
idmap config * : backend = sss | |||
[netlogon] | [netlogon] | ||
path = /var/lib/samba/sysvol/domain/scripts | path = /var/lib/samba/sysvol/domain/scripts | ||
Строка 131: | Строка 223: | ||
read only = No</source> | read only = No</source> | ||
== | ==== nsswitch.conf ==== | ||
Необходимо убедиться, что в файле {{path|/etc/nsswitch.conf}} заданы следующие параметры: | Необходимо убедиться, что в файле {{path|/etc/nsswitch.conf}} заданы следующие параметры: | ||
* passwd: files sss systemd | * passwd: files sss systemd | ||
Строка 139: | Строка 231: | ||
<source lang="ini">passwd: files sss systemd | <source lang="ini">passwd: files sss systemd | ||
shadow: tcb files sss | shadow: tcb files sss | ||
group: files [SUCCESS=merge] sss role | group: files [SUCCESS=merge] sss systemd role | ||
gshadow: files | gshadow: files | ||
Строка 154: | Строка 246: | ||
aliases: files</source> | aliases: files</source> | ||
== | === Настройка аутентификации === | ||
Необходимо переключить PAM-стэк на использование sss модулей для аутентификации: | Необходимо переключить PAM-стэк на использование sss модулей для аутентификации: | ||
<source lang="bash"># control system-auth sss</source> | <source lang="bash"># control system-auth sss</source> | ||
== Генерация keytab файла == | |||
Необходимо сгенерировать системный keytab файл для машинного аккаунта контроллера домена. Для этого следует выполнить следующую команду: | |||
<source lang="bash"># net ads keytab create</source> | |||
== Сервисы == | |||
Необходимо отключить сервис nscd: | |||
<source lang="bash"># systemctl disable --now nscd</source> | |||
В заключении, если используется схема с SSSD клиентом, то необходимо запустить и включить автоматический запуск для сервиса sssd: | |||
<source lang="bash"># systemctl enable --now sssd</source> | |||
== Роли == | |||
Необходимо указать, какие локальные роли каким группам домена соответствуют. | |||
Обычные пользователи домена (Domain Users) соответствуют локальной роли '''users''': | |||
<source lang="bash"># roleadd 'domain users' users</source> | |||
Администраторы домена (Domain Admins) соответствуют локальной роли '''localadmins''': | |||
<source lang="bash"># roleadd 'domain admins' localadmins</source> | |||
{{Attention|В русскоязычных версиях MS Windows Server встроенные группы "Domain Users" и "Domain Admins" имеют русифицированные названия "Пользователи домена" и "Администраторы домена"}} | |||
== Групповые политики == | == Групповые политики == | ||
Для включения поддержки групповых политик необходимо выполнить: | Для включения поддержки групповых политик необходимо выполнить: | ||
<source lang="bash"># gpupdate-setup enable --local-policy ad-domain-controller</source> | <source lang="bash"># gpupdate-setup enable --local-policy ad-domain-controller</source> | ||
{{Attention|Работа групповых политик на контроллере домена c SSSD клиентом может быть не стабильной}} | |||
== SSH == | == SSH == | ||
Строка 169: | Строка 282: | ||
При необходимости можно разрешить аутентификацию по Kerberos билетам: | При необходимости можно разрешить аутентификацию по Kerberos билетам: | ||
<source lang="bash"># control sshd-gssapi-auth enabled</source> | <source lang="bash"># control sshd-gssapi-auth enabled</source> | ||
В заключении, необходимо перезапустить сервис sshd: | |||
<source lang="bash"># systemctl restart sshd</source> | |||
{{Note|Данные настройки можно применить с помощью механизма групповых политик '''control'''}} | {{Note|Данные настройки можно применить с помощью механизма групповых политик '''control'''}} | ||
Текущая версия от 15:30, 22 июня 2023
Настройка аутентификации доменных пользователей на контроллере домена (Samba в режиме AD DC) через SSSD.
Описание
Контроллер домена в рамках доменной инфраструктуры является, в том числе, ещё одной машиной и имеет соответствующий машинный аккаунт. После применения настроек, описанных ниже, машина с контроллером домена сможет выполнять, в том числе, и функции обычного члена домена, такие как:
- Аутентификация доменными пользователями (в том числе по ssh)
- Применение групповых политик
- Всё, что поддерживает обычная клиентская машина (в качестве клиента SSSD или WinBind)
В качестве клиента на контроллере домена можно использовать как WinBind, так и SSSD (с ограничениями).
Параметры конфигурации домена
В данной статье в качестве примера используются следующие параметры конфигурации доменной инфраструктуры:
Параметр | Значение |
---|---|
Имя домена | DOMAIN.ALT |
Рабочая группа | DOMAIN |
Имя компьютера в Netbios | DC0 |
Имя пользователя-администратора | Administrator |
Пароль администратора | Pa$$word |
Winbind
Установка пакетов
Необходимо установить следующие пакеты:
- 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 = dedicated keytab
- dedicated keytab file = /etc/krb5.keytab
Остальное содержимое файла должно соответствовать аналогичному файлу на обычных клиентах домена.
Пример /etc/samba/smb.conf:
[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
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
SSSD
Установка пакетов
Необходимо установить следующие пакеты:
- task-auth-ad-sssd
- gpupdate
# apt-get install task-auth-ad-sssd gpupdate
Изменение файлов конфигурации
krb5.conf
Необходимо убедиться, что в файле /etc/krb5.conf заданы следующие параметры:
- includedir /etc/krb5.conf.d/
- dns_lookup_realm = false
- default_realm = DOMAIN.ALT
Пример /etc/krb5.conf:
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]
sssd.conf
Необходимо убедиться, что в файле /etc/sssd/sssd.conf заданы следующие параметры:
- user = root
- ad_maximum_machine_account_password_age = 0
Остальное содержимое файла должно соответствовать аналогичному файлу на обычных клиентах домена.
Пример /etc/sssd/sssd.conf:
[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
smb.conf
Необходимо убедиться, что в файле /etc/samba/smb.conf заданы следующие параметры:
- idmap config * : range = 200000-2000200000
- idmap config * : backend = sss
Остальное содержимое файла должно соответствовать аналогичному файлу на обычных клиентах домена.
Пример /etc/samba/smb.conf:
[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
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
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
nsswitch.conf
Необходимо убедиться, что в файле /etc/nsswitch.conf заданы следующие параметры:
- passwd: files sss systemd
- shadow: tcb files sss
- group: files [SUCCESS=merge] sss role systemd
Пример /etc/nsswitch.conf:
passwd: files sss systemd
shadow: tcb files sss
group: files [SUCCESS=merge] sss 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-стэк на использование sss модулей для аутентификации:
# control system-auth sss
Генерация keytab файла
Необходимо сгенерировать системный keytab файл для машинного аккаунта контроллера домена. Для этого следует выполнить следующую команду:
# net ads keytab create
Сервисы
Необходимо отключить сервис nscd:
# systemctl disable --now nscd
В заключении, если используется схема с SSSD клиентом, то необходимо запустить и включить автоматический запуск для сервиса sssd:
# systemctl enable --now sssd
Роли
Необходимо указать, какие локальные роли каким группам домена соответствуют.
Обычные пользователи домена (Domain Users) соответствуют локальной роли users:
# roleadd 'domain users' users
Администраторы домена (Domain Admins) соответствуют локальной роли localadmins:
# roleadd 'domain admins' localadmins
Групповые политики
Для включения поддержки групповых политик необходимо выполнить:
# gpupdate-setup enable --local-policy ad-domain-controller
SSH
Следует убедиться, что удалённый доступ по ssh разрешён только Администраторам домена:
# control sshd-allow-groups enabled
# control sshd-allow-groups-list remote
При необходимости можно разрешить аутентификацию по Kerberos билетам:
# control sshd-gssapi-auth enabled
В заключении, необходимо перезапустить сервис sshd:
# systemctl restart sshd