ActiveDirectory/Login/DC

Материал из ALT Linux Wiki

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

Описание

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

  • Аутентификация доменными пользователями (в том числе по ssh)
  • Применение групповых политики
  • Всё, что поддерживает обычная клиентская машина (в качестве клиента 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

        winbind separator = +
                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

Роли

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

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

# roleadd 'domain users' users

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

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


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

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

# 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
Примечание: Данные настройки можно применить с помощью механизма групповых политик control


Сервисы

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

# systemctl enable --now sssd