ActiveDirectory/Login/DC
Настройка аутентификации доменных пользователей на контроллере домена (Samba в режиме AD DC) через SSSD.
Описание
Контроллер домена в рамках доменной инфраструктуры является, в том числе, ещё одной машиной и имеет соответствующий машинный аккаунт. После применения настроек, описанных ниже, машина с контроллером домена сможет выполнять, в том числе, и функции обычного члена домена, такие как:
- Аутентификация доменными пользователями (в том числе по ssh)
- Применение групповых политик
- Всё, что поддерживает обычная клиентская машина (в качестве клиента SSSD или WinBind)
В качестве клиента на контроллере домена можно использовать как WinBind, так и SSSD (с ограничениями).
Параметры конфигурации домена
В данной статье в качестве примера используются следующие параметры конфигурации доменной инфраструктуры:
Параметр | Значение |
---|---|
Имя домена | DOMAIN.ALT |
Рабочая группа | DOMAIN |
Имя компьютера в Netbios | DC0 |
Имя пользователя-администратора | Administrator |
Пароль администратора | Pa$$word |
Установка пакетов
Необходимо установить следующие пакеты:
- task-auth-ad-sssd
- gpupdate
# apt-get install task-auth-ad-sssd gpupdate
Kerberos
krb5.conf
Необходимо убедиться, что в файле /etc/krb5.conf заданы следующие параметры:
- includedir /etc/krb5.conf.d/
- dns_lookup_realm = false
- default_realm = DOMAIN.ALT
- default_ccache_name = KEYRING:persistent:%{uid}
Пример /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
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
[domain_realm]
krb5.keytab
Необходимо предоставить libkrb5 и SSSD возможность получить доступ к keytab файлу для машинного аккаунта контроллера домена DC0$ (/var/lib/samba/private/secrets.keytab). Для этого следует создать на этот файл символьную ссылку /etc/krb5.keytab.
# ln -s /var/lib/samba/private/secrets.keytab /etc/krb5.keytab
SSSD
Необходимо убедиться, что в файле /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
Winbind
Необходимо убедиться, что в файле /etc/samba/smb.conf заданы следующие параметры:
- idmap config * : range = 200000-2000200000
- idmap config * : backend = sss
- machine password timeout = 0
Остальное содержимое файла должно соответствовать аналогичному файлу на обычных клиентах домена.
Пример /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
idmap_ldb:use rfc2307 = yes
template shell = /bin/bash
wins support = no
winbind use default domain = yes
winbind enum users = no
winbind enum groups = no
template homedir = /home/%U
idmap config * : range = 200000-2000200000
idmap config * : backend = sss
machine password timeout = 0
[netlogon]
path = /var/lib/samba/sysvol/domain/scripts
read only = No
[sysvol]
path = /var/lib/samba/sysvol
read only = No
NSS
Необходимо убедиться, что в файле /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 role systemd
gshadow: files
hosts: files myhostname dns
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files
automount: files
aliases: files
PAM
Необходимо переключить PAM-стэк на использование sss модулей для аутентификации:
# control system-auth sss
Сервисы
В заключении, необходимо запустить и включить автоматический запуск для сервиса 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