SSSD/AD: различия между версиями

Материал из ALT Linux Wiki
(pam_mount: дополнительная настройка параметра success в /etc/pam.d/system-auth-sss)
мНет описания правки
Строка 1: Строка 1:
Подготовка клиентской станции (подключение к домену AD), настройка и установка аутентификации и авторизации c помощью сервиса SSSD.
Подготовка клиентской станции (подключение к домену AD), настройка и установка аутентификации и авторизации c помощью сервиса SSSD.


= Подключение к домену =
== Подключение к домену ==
Нижеописанная процедура настройки автоматизирована с помощью пакета {{pkg|task-auth-ad-sssd}} и введения в домен через ЦУС (acc) - {{pkg|alterator-auth}} версии >=0.31
Нижеописанная процедура настройки автоматизирована с помощью пакета {{pkg|task-auth-ad-sssd}} и введения в домен через ЦУС (acc) {{pkg|alterator-auth}} версии >=0.31
  $ su -
  $ su -
  # apt-get update; apt-get install task-auth-ad-sssd
  # apt-get update; apt-get install task-auth-ad-sssd
  # acc
  # acc
{{note|Однако ознакомиться со всей статьей никто не запрещает}}
{{note|Однако ознакомиться со всей статьей никто не запрещает.}}


==Настройки сети==
=== Настройки сети ===


Для подключением к домену проводим проверку настроек сети:
Для подключением к домену проводим проверку настроек сети:
* в качестве первичного DNS (первая запись nameserver в /etc/resolv.conf) должен быть указан DNS-сервер домена
* в качестве первичного DNS (первая запись nameserver в {{path|/etc/resolv.conf}}) должен быть указан DNS-сервер домена:
  domain dom.loc
  domain dom.loc
  search dom.loc
  search dom.loc
Строка 22: Строка 22:
client2.dom.loc</source>
client2.dom.loc</source>


==Настройки kerberos==
=== Настройки kerberos ===


Далее проверяем клиентские настройки kerberos через DNS. В данном случае, для домена '''dom.loc.''':
Далее проверяем клиентские настройки kerberos через DNS. В данном случае, для домена '''dom.loc.''':
Строка 29: Строка 29:
$ dig _kerberos._tcp.dom.loc SRV | grep ^_kerberos
$ dig _kerberos._tcp.dom.loc SRV | grep ^_kerberos
_kerberos._tcp.dom.loc. 900    IN      SRV    0 100 88 server.dom.loc.</source>
_kerberos._tcp.dom.loc. 900    IN      SRV    0 100 88 server.dom.loc.</source>
И задаем их в файле /etc/krb5.conf
И задаем их в файле {{path|/etc/krb5.conf}}:
* kerberos-имя домена ("рилма", realm):
* kerberos-имя домена ("рилма", realm):
   default_realm = DOM.LOC
   default_realm = DOM.LOC
Строка 49: Строка 49:
         renew until 20.12.2016 04:13:18</source>
         renew until 20.12.2016 04:13:18</source>


==Настройки samba==
=== Настройки samba ===


Для подключения рабочей станции в домену требуется утилита ''net'' из пакета '''samba-common-tools''', кроме того стоит сразу установить пакет samba-client с набором клиентских утилит:
Для подключения рабочей станции в домену требуется утилита ''net'' из пакета {{pkg|samba-common-tools}}, кроме того стоит сразу установить пакет {{pkg|samba-client}} с набором клиентских утилит:
  # apt-get install samba-client
  # apt-get install samba-client


В файле /etc/samba/smb.conf, минимально, необходимо задать следующие параметры в секции [global]:
В файле {{path|/etc/samba/smb.conf}}, минимально, необходимо задать следующие параметры (в секции [global]):
* kerberos-имя домена:
* kerberos-имя домена:
  realm = DOM.LOC
  realm = DOM.LOC
Строка 63: Строка 63:
* уровень безопасности Active Directory:
* уровень безопасности Active Directory:
  security = ADS
  security = ADS
* Метод хранения kerberos-ключей рабочей станции:
* метод хранения kerberos-ключей рабочей станции:
  kerberos method = system keytab
  kerberos method = system keytab
* алгоритм преобразования SID'ов:
* алгоритм преобразования SID'ов:
Строка 104: Строка 104:
         browseable = No
         browseable = No
         printable = Yes</source>
         printable = Yes</source>
Ошибка {{path|rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)}} до перезагрузки исправляется командой:
Ошибка '''rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)''' до перезагрузки исправляется командой:
<pre># ulimit -n 16384</pre>
<pre># ulimit -n 16384</pre>
Что бы лимиты действовали и после перезагрузки необходимо отредактировать файл {{path|/etc/security/limits.conf}}:
Что бы лимиты действовали и после перезагрузки необходимо отредактировать файл {{path|/etc/security/limits.conf}}:
Строка 110: Строка 110:
root            -      nofile          16384</pre>
root            -      nofile          16384</pre>


==Подключение к домену==fgnhjfghdfgh
=== Подключение к домену ===


<source lang="text"># net ads join -U administrator
<source lang="text"># net ads join -U administrator
Строка 117: Строка 117:
Joined 'CLIENT2' to dns domain 'dom.loc'</source>
Joined 'CLIENT2' to dns domain 'dom.loc'</source>


Проверка наличия kerberos-ключей для рабочей станции
Проверка наличия kerberos-ключей для рабочей станции:
<source lang="text"># klist -k -e
<source lang="text"># klist -k -e
Keytab name: FILE:/etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab
Строка 138: Строка 138:
   7 CLIENT2$@DOM.LOC (arcfour-hmac)</source>
   7 CLIENT2$@DOM.LOC (arcfour-hmac)</source>


= Настройка SSSD =
== Настройка SSSD ==


==Установка sssd-модуля==
=== Установка sssd-модуля ===


Для работы с Active Directory в SSSD имеется специальный AD-провайдер:
Для работы с Active Directory в SSSD имеется специальный AD-провайдер:
  apt-get install sssd-ad
  # apt-get install sssd-ad


Минимальный конфигурационный файл (/etc/sssd/sssd.conf) для sssd-ad выглядит следующим образом:
Минимальный конфигурационный файл ({{path|/etc/sssd/sssd.conf}}) для sssd-ad выглядит следующим образом:
<source lang="text">[sssd]
<source lang="text">[sssd]
config_file_version = 2
config_file_version = 2
Строка 178: Строка 178:
Опция '''use_fully_qualified_names = True''' включает режим полных имён (включая домен) для пользователей и групп.
Опция '''use_fully_qualified_names = True''' включает режим полных имён (включая домен) для пользователей и групп.


Опция '''fallback_homedir = /home/%d/%u''' задает домашнюю папку для доменных пользователей. При такой записи %d означает FQDN. Здесь вручную можно указать имя рабочей группы, например /home/DOM/%u
Опция '''fallback_homedir = /home/%d/%u''' задает домашнюю папку для доменных пользователей. При такой записи %d означает FQDN. Здесь вручную можно указать имя рабочей группы, например /home/DOM/%u.


Опция '''cache_credentials''' включает режим кэширования аутентификационных данных (полезно при недоступности домена)
Опция '''cache_credentials''' включает режим кэширования аутентификационных данных (полезно при недоступности домена).


Опция '''user''' позволяет задать имя пользователя, под которым будет исполняться непривилегированная часть службы SSSD
Опция '''user''' позволяет задать имя пользователя, под которым будет исполняться непривилегированная часть службы SSSD.


{{Attention|Пока не решена задача [[https://bugzilla.altlinux.org/show_bug.cgi?id=34124 #34124]] опция '''user''' должна быть задана, как '''root'''.}}
{{Attention|Пока не решена задача [[https://bugzilla.altlinux.org/show_bug.cgi?id=34124 #34124]] опция '''user''' должна быть задана, как '''root'''.}}


==Настройка авторизации==
=== Настройка авторизации ===


Авторизационные NSS-базы GLibc настраиваются в файле /etc/nsswitch.conf
Авторизационные NSS-базы GLibc настраиваются в файле {{path|/etc/nsswitch.conf}}.
При использовании sssd, требуется внести исправления в следующие строчки:
При использовании sssd, требуется внести исправления в следующие строчки:
<source lang="text"># grep sss /etc/nsswitch.conf
<source lang="text"># grep sss /etc/nsswitch.conf
Строка 197: Строка 197:
netgroup:  files sss</source>
netgroup:  files sss</source>


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


Для изменения настроек аутентификации (параметров PAM) в ALT Linux используется утилита ''control'':
Для изменения настроек аутентификации (параметров PAM) в ALT Linux используется утилита ''control'':
  # control system-auth sss
  # control system-auth sss


==Запуск и проверка сервиса sssd==
=== Запуск и проверка сервиса sssd ===


Если все настройки выполнены правильно, то после запуска сервиса sssd:
Если все настройки выполнены правильно, то после запуска сервиса sssd:
Строка 230: Строка 230:
# systemctl start sssd</pre>}}
# systemctl start sssd</pre>}}


= Подключение файловых ресурсов =
== Подключение файловых ресурсов ==


Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).
Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).


== Через pam_mount ==
=== Через pam_mount ===


В этом случае заданный ресурс подключается с заданного сервера <u>автоматически при каждом входе</u> доменным пользователем.
В этом случае заданный ресурс подключается с заданного сервера <u>автоматически при каждом входе</u> доменным пользователем.
Строка 253: Строка 253:
<source lang="xml"><volume uid="10000-2000200000" fstype="cifs" server="c228" path="sysvol" mountpoint="~/share" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" /></source>
<source lang="xml"><volume uid="10000-2000200000" fstype="cifs" server="c228" path="sysvol" mountpoint="~/share" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" /></source>
где
где
* '''uid="10000-2000200000"''' — диапазон присваиваемых для доменных пользователей UID (подходит и для Winbind и для SSSD)
* '''uid="10000-2000200000"''' — диапазон присваиваемых для доменных пользователей UID (подходит и для Winbind и для SSSD);
* '''server="c228"''' — имя сервера с ресурсом
* '''server="c228"''' — имя сервера с ресурсом;
* '''path="sysvol"''' — имя файлового ресурса
* '''path="sysvol"''' — имя файлового ресурса;
* '''mountpoint="~/share"''' — путь монтирования в домашней папке пользователя
* '''mountpoint="~/share"''' — путь монтирования в домашней папке пользователя.
Опционально можно добавить
Опционально можно добавить:
* '''sgrp="group_name"''' — имя группы, при членстве пользователя в которой, папка будет примонтирована
* '''sgrp="group_name"''' — имя группы, при членстве пользователя в которой, папка будет примонтирована.
{{Attention|Обязательно указывайте настоящее имя сервера в параметре {{term|server}}, а не имя домена}}
{{Attention|Обязательно указывайте настоящее имя сервера в параметре {{term|server}}, а не имя домена}}


Строка 266: Строка 266:


Для проверки можно попробовать смонтировать ресурс в сессии:
Для проверки можно попробовать смонтировать ресурс в сессии:
<source> mount.cifs //server/share /mnt/  -o vers=2.0,user=altlinux</source>
<source lang="text"> mount.cifs //server/share /mnt/  -o vers=2.0,user=altlinux</source>
Также можно проверить доступность ресурса с помощью smbclient, например:
Также можно проверить доступность ресурса с помощью smbclient, например:
<source>
<source lang="text">
smbclient -L server -U altlinux -m SMB2
smbclient -L server -U altlinux -m SMB2
</source>
</source>

Версия от 12:11, 20 апреля 2022

Подготовка клиентской станции (подключение к домену AD), настройка и установка аутентификации и авторизации c помощью сервиса SSSD.

Подключение к домену

Нижеописанная процедура настройки автоматизирована с помощью пакета task-auth-ad-sssd и введения в домен через ЦУС (acc) — alterator-auth версии >=0.31

$ su -
# apt-get update; apt-get install task-auth-ad-sssd
# acc
Примечание: Однако ознакомиться со всей статьей никто не запрещает.


Настройки сети

Для подключением к домену проводим проверку настроек сети:

  • в качестве первичного DNS (первая запись nameserver в /etc/resolv.conf) должен быть указан DNS-сервер домена:
domain dom.loc
search dom.loc
nameserver 192.168.1.148

обычно, в таком качестве выступает один или несколько, контроллеров домена:

$ host dom.loc
dom.loc has address 192.168.1.148
  • имя подключаемого, клиентского узла должно быть определено, как FQDN. Например, для рабочей станции client2 в домене dom.loc:
$ hostname 
client2.dom.loc

Настройки kerberos

Далее проверяем клиентские настройки kerberos через DNS. В данном случае, для домена dom.loc.:

$ dig _kerberos._udp.dom.loc SRV | grep ^_kerberos
_kerberos._udp.dom.loc. 900     IN      SRV     0 100 88 server.dom.loc.
$ dig _kerberos._tcp.dom.loc SRV | grep ^_kerberos
_kerberos._tcp.dom.loc. 900     IN      SRV     0 100 88 server.dom.loc.

И задаем их в файле /etc/krb5.conf:

  • kerberos-имя домена ("рилма", realm):
 default_realm = DOM.LOC
  • отключаем поиск kerberos-имени домена через DNS:
 dns_lookup_realm = false
  • оставляем (или включаем) поиск kerberos-настроек домена через DNS:
 dns_lookup_kdc = true

Если настройки сети и kerberos выполнены правильно, то мы может получить kerberos TGT от контроллера домена:

$ kinit administrator
Password for administrator@DOM.LOC: 
Warning: Your password will expire in 21 days on Пн 09 янв 2017 15:35:39
$ klist 
Ticket cache: KEYRING:persistent:500:krb_ccache_Bw75rEI
Default principal: administrator@DOM.LOC

Valid starting       Expires              Service principal
19.12.2016 04:13:25  19.12.2016 14:13:25  krbtgt/DOM.LOC@DOM.LOC
        renew until 20.12.2016 04:13:18

Настройки samba

Для подключения рабочей станции в домену требуется утилита net из пакета samba-common-tools, кроме того стоит сразу установить пакет samba-client с набором клиентских утилит:

# apt-get install samba-client

В файле /etc/samba/smb.conf, минимально, необходимо задать следующие параметры (в секции [global]):

  • kerberos-имя домена:
realm = DOM.LOC
  • краткое имя домена, соответствующее имени рабочей группы:
workgroup = DOM
  • имя рабочей станции в сетевом окружении:
netbios name = CLIENT2
  • уровень безопасности Active Directory:
security = ADS
  • метод хранения kerberos-ключей рабочей станции:
kerberos method = system keytab
  • алгоритм преобразования SID'ов:
idmap config * : backend = tdb


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

$ testparm 
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER

Press enter to see a dump of your service definitions

# Global parameters
[global]
        realm = DOM.LOC
        server string = Samba Server Version %v
        workgroup = DOM
        log file = /var/log/samba/log.%m
        max log size = 50
        kerberos method = system keytab
        security = ADS
        idmap config * : backend = tdb
        cups options = raw


[homes]
        comment = Home Directories
        browseable = No
        read only = No


[printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = No
        printable = Yes

Ошибка rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) до перезагрузки исправляется командой:

# ulimit -n 16384

Что бы лимиты действовали и после перезагрузки необходимо отредактировать файл /etc/security/limits.conf:

*                -       nofile          16384
root             -       nofile          16384

Подключение к домену

# net ads join -U administrator
Enter administrator's password:
Using short domain name -- DOM
Joined 'CLIENT2' to dns domain 'dom.loc'

Проверка наличия kerberos-ключей для рабочей станции:

# klist -k -e
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   7 host/client2.dom.loc@DOM.LOC (des-cbc-crc) 
   7 host/CLIENT2@DOM.LOC (des-cbc-crc) 
   7 host/client2.dom.loc@DOM.LOC (des-cbc-md5) 
   7 host/CLIENT2@DOM.LOC (des-cbc-md5) 
   7 host/client2.dom.loc@DOM.LOC (aes128-cts-hmac-sha1-96) 
   7 host/CLIENT2@DOM.LOC (aes128-cts-hmac-sha1-96) 
   7 host/client2.dom.loc@DOM.LOC (aes256-cts-hmac-sha1-96) 
   7 host/CLIENT2@DOM.LOC (aes256-cts-hmac-sha1-96) 
   7 host/client2.dom.loc@DOM.LOC (arcfour-hmac) 
   7 host/CLIENT2@DOM.LOC (arcfour-hmac) 
   7 CLIENT2$@DOM.LOC (des-cbc-crc) 
   7 CLIENT2$@DOM.LOC (des-cbc-md5) 
   7 CLIENT2$@DOM.LOC (aes128-cts-hmac-sha1-96) 
   7 CLIENT2$@DOM.LOC (aes256-cts-hmac-sha1-96) 
   7 CLIENT2$@DOM.LOC (arcfour-hmac)

Настройка SSSD

Установка sssd-модуля

Для работы с Active Directory в SSSD имеется специальный AD-провайдер:

# apt-get install sssd-ad

Минимальный конфигурационный файл (/etc/sssd/sssd.conf) для sssd-ad выглядит следующим образом:

[sssd]
config_file_version = 2
services = nss, pam

domains = DOM.LOC
debug_level = 1

; Should be used until ALT#34124 will be resolved
user = root

[nss]
debug_level = 1

[pam]
debug_level = 1

[domain/DOM.LOC]
 id_provider = ad
 auth_provider = ad
 chpass_provider = ad

;ldap_id_mapping = False
 default_shell = /bin/bash
 fallback_homedir = /home/%d/%u
;use_fully_qualified_names = True
;cache_credentials = true

Опция ldap_id_mapping = False позволяет включить использование POSIX атрибутов, определённых в Active Directory, вместо встроенной, однозначной трансляции SID'ов. Основная проблема применения POSIX-атрибутов состоит в том, что они могут быть не заданы. В этом случае сервис sssd не загрузится.

Опция use_fully_qualified_names = True включает режим полных имён (включая домен) для пользователей и групп.

Опция fallback_homedir = /home/%d/%u задает домашнюю папку для доменных пользователей. При такой записи %d означает FQDN. Здесь вручную можно указать имя рабочей группы, например /home/DOM/%u.

Опция cache_credentials включает режим кэширования аутентификационных данных (полезно при недоступности домена).

Опция user позволяет задать имя пользователя, под которым будет исполняться непривилегированная часть службы SSSD.

Внимание! Пока не решена задача [#34124] опция user должна быть задана, как root.


Настройка авторизации

Авторизационные NSS-базы GLibc настраиваются в файле /etc/nsswitch.conf. При использовании sssd, требуется внести исправления в следующие строчки:

# grep sss /etc/nsswitch.conf
passwd:     files sss
shadow:     tcb files sss
group:      files sss
services:   files sss
netgroup:   files sss

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

Для изменения настроек аутентификации (параметров PAM) в ALT Linux используется утилита control:

# control system-auth sss

Запуск и проверка сервиса sssd

Если все настройки выполнены правильно, то после запуска сервиса sssd:

# service sssd start

будут доступны авторизационные данные для пользователя administrator:

# getent passwd administrator
administrator:*:1310400500:1310400513:Administrator:/home/DOM.LOC/administrator:/bin/bash
# id administrator
uid=1310400500(administrator) gid=1310400513(domain users) группы=1310400513(domain users),1310400520(group policy creator owners),1310400519(enterprise admins),1310400512(domain admins),1310400518(schema admins),1310400572(denied rodc password replication group)
# su - administrator
[administrator@client2 ~]$ whoami 
administrator
[administrator@client2 ~]$ pwd
/home/DOM.LOC/administrator

Или для administrator@dom.loc, если установлена опция use_fully_qualified_names = True:

# id administrator@dom.loc
uid=1310400500(administrator@DOM.LOC) gid=1310400513(domain users@DOM.LOC) группы=1310400513(domain users@DOM.LOC),1310400520(group policy creator owners@DOM.LOC),1310400519(enterprise admins@DOM.LOC),1310400512(domain admins@DOM.LOC),1310400518(schema admins@DOM.LOC),1310400572(denied rodc password replication group@DOM.LOC)
Внимание! Если машина до этого была в других доменах или есть проблемы со входом пользователей рекомендуется очистить кэш sssd:
# systemctl stop sssd
# rm -f /var/lib/sss/db/*
# rm -f /var/lib/sss/mc/*
# systemctl start sssd


Подключение файловых ресурсов

Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).

Через pam_mount

В этом случае заданный ресурс подключается с заданного сервера автоматически при каждом входе доменным пользователем.

1. Устанавливаем pam_mount:

apt-get install pam_mount

2. Прописываем pam_mount в схему /etc/pam.d/system-auth-sss:

(перед auth substack system-auth-sss-only)

auth            optional        pam_mount.so

и в секцию session:

session         optional        pam_mount.so

Дополнительно, в секциях auth и session нужно изменить параметр success=4 на success=5, так как изменилась нумерация строк.

3. Устанавливаем правило монтирования ресурса в файле /etc/security/pam_mount.conf.xml (перед тегом <cifsmount>):

<volume uid="10000-2000200000" fstype="cifs" server="c228" path="sysvol" mountpoint="~/share" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />

где

  • uid="10000-2000200000" — диапазон присваиваемых для доменных пользователей UID (подходит и для Winbind и для SSSD);
  • server="c228" — имя сервера с ресурсом;
  • path="sysvol" — имя файлового ресурса;
  • mountpoint="~/share" — путь монтирования в домашней папке пользователя.

Опционально можно добавить:

  • sgrp="group_name" — имя группы, при членстве пользователя в которой, папка будет примонтирована.
Внимание! Обязательно указывайте настоящее имя сервера в параметре server, а не имя домена


Внимание! По умолчанию для монтирования используется smb версии 1.0, если у вас он отключен, то укажите в параметрах версию 2 или 3.
<volume uid="10000-2000200000" fstype="cifs" server="c228" path="sysvol" mountpoint="~/share" options="sec=krb5,vers=2.0,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />


Для проверки можно попробовать смонтировать ресурс в сессии:

 mount.cifs //server/share /mnt/  -o vers=2.0,user=altlinux

Также можно проверить доступность ресурса с помощью smbclient, например:

smbclient -L server -U altlinux -m SMB2

Ссылки