[Из песочницы] Linux машина в домене Windows AD с помощью sssd и krb5

habr.png

Была необходимость ввести в домен Windows машину с Ubuntu. Для этих целей обычно используют Samba и Winbind. Но возможен альтернативный вариант с sssd, краткое руководство по нему ниже.

Для примера будем использовать:

Домен = contoso.com
Контроллер домена = dc.contoso.com
Запускаем терминал Ubuntu:

1. Переключаемся под рута

sudo -i


2. Устанавливаем необходимые пакеты

apt install sssd heimdal-clients msktutil


3. Редактируем /etc/krb5.conf, в качестве отступов используется табуляция

[libdefaults]
        default_realm = CONTOSO.DOMAIN

[realms]
        CONTOSO.COM = {
                kdc = DC 
                admin_server = dc.contoso.domain
                default_domain = contoso.domain
        }

[login]
        krb4_convert = true
        krb4_get_tickets = false
        
[domain_realm]
        .contoso.domain = CONTOSO.DOMAIN
        contoso.domain = CONTOSO.DOMAIN


4. Редактируем файл /etc/hosts, указываем FQDN для данного хоста:

127.0.0.1       localhost
127.0.1.1       .contoso.domain  


5. Пробуем получить Kerberos ticket от имени администратора домена:

root@ubuntu:~# kinit YourDomainAdmin
YourDomainAdmin@CONTOSO.COM's Password:


Проверяем:

root@ubuntu:~# klist
Credentials cache: FILE:/tmp/krb5cc_0
        Principal: YourDomainAdmin@CONTOSO.COM.DOMAIN

  Issued                Expires               Principal
Dec  1 15:08:27 2018  Dec  2 01:08:22 2018  krbtgt/CONTOSO.COM@CONTOSO.COM


Если тикет получен успешно, то теперь можно сгенерировать Kerberos principals для данного хоста, регистр важен:

msktutil -c -b 'CN=YourComputersOU' -s HOST/HOSTNAME.contoso.domain -k /etc/sssd/HOSTNAME.keytab --computer-name HOSTNAME --upn HOSTNAME$ --server dc.contoso.domain —user-creds-only

msktutil -c -b 'CN=YourComputersOU' -s HOST/HOSTNAME -k /etc/sssd/HOSTNAME.keytab --computer-name HOSTNAME --upn HOSTNAME$ --server dc.contoso.domain --user-creds-only


Сейчас наш хост должен отобразиться в списке компьютеров в каталоге. Если все так — удаляем полученный Kerberos ticket:

kdestroy


6. Создаем файл /etc/sssd/sssd.conf со следующим содержимым:

[sssd]

services = nss, pam
config_file_version = 2
domains = contoso.domain


[nss]

entry_negative_timeout = 0
debug_level = 3


[pam]

debug_level = 3


[domain/contoso.domain]

debug_level = 3

ad_domain = contoso.domain
ad_server = dc.contoso.domain
enumerate = false

id_provider = ad
auth_provider = ad
chpass_provider = ad
access_provider = simple
simple_allow_groups = users #каким группам разрешено логиниться, через запятую. Есть ограничение — названия групп должны быть с маленькой буквы.
ldap_schema = ad
ldap_id_mapping = true
fallback_homedir = /home/%u
default_shell = /bin/bash
ldap_sasl_mech = gssapi
ldap_sasl_authid = $
ldap_krb5_init_creds = true
krb5_keytab = /etc/sssd/.keytab


Описание параметров конфигфайла sssd можно посмотреть тут

Устанавливаем права доступа для файла sssd.conf:

chmod 600 /etc/sssd/sssd.conf


Перезапускаем SSSD service

service sssd restart


7. Редактируем настройки PAM

Плохое решение:

редактируем файл /etc/pam.d/common-session, после строки

session required        pam_unix.so


добавляем строку

session required pam_mkhomedir.so skel=/etc/skel umask=0022


Хорошее решение:

переопределить параметры через системные настройки PAM, вызываем

pam-auth-update


и отмечаем пункты sss auth и makehomdir. Это автоматически добавит
строчку выше в common-session и она не будет перезатерта при обновлении системы.

Теперь мы можем логиниться на машине доменными пользователями, которым разрешен вход.

P.S.: Можно дать права на использование sudo доменным группам. Редактируем файл /etc/sudoers, добавляем требуемую группу — например, Domain Admins (если в названии группы есть пробелы — их необходимо экранировать):

%Domain\ Admins ALL=(ALL) ALL

© Habrahabr.ru