Для примера будем использовать:
Домен = contoso.com
Контроллер домена = dc.contoso.com
Запускаем терминал Ubuntu:
1. Переключаемся под рута
sudo -i
2. Устанавливаем необходимые пакеты
apt install sssd heimdal-clients msktutil
3. Редактируем /etc/krb5.conf, в качестве отступов используется табуляция
[libdefaults]
default_realm = CONTOSO.COM
[realms]
CONTOSO.COM = {
kdc = DC
admin_server = dc.contoso.com
default_domain = contoso.com
}
[login]
krb4_convert = true
krb4_get_tickets = false
[domain_realm]
.contoso.com = CONTOSO.COM
contoso.com = CONTOSO.COM
4. Редактируем файл /etc/hosts, указываем FQDN для данного хоста:
127.0.0.1 localhost
127.0.1.1 <hostname>.contoso.com <hostname>
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
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.com -k /etc/sssd/HOSTNAME.keytab --computer-name HOSTNAME --upn HOSTNAME$ --server dc.contoso.com —user-creds-only
msktutil -c -b 'CN=YourComputersOU' -s HOST/HOSTNAME -k /etc/sssd/HOSTNAME.keytab --computer-name HOSTNAME --upn HOSTNAME$ --server dc.contoso.com --user-creds-only
Сейчас наш хост должен отобразиться в списке компьютеров в каталоге. Если все так — удаляем полученный Kerberos ticket:
kdestroy
6. Создаем файл /etc/sssd/sssd.conf со следующим содержимым:
[sssd]
services = nss, pam
config_file_version = 2
domains = contoso.com
[nss]
entry_negative_timeout = 0
debug_level = 3
[pam]
debug_level = 3
[domain/contoso.com]
debug_level = 3
ad_domain = contoso.com
ad_server = dc.contoso.com
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 = <HOSTNAME>$
ldap_krb5_init_creds = true
krb5_keytab = /etc/sssd/<HOSTNAME>.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 доменным группам. Используя visudo, редактируем файл /etc/sudoers, или лучше, как рекомендует maxzhurkin и iluvar, создаем новый файл в /etc/sudoers.d/ и редактируем его
visudo -f /etc/sudoers.d/ваш_файл
добавляем требуемую группу — например, Domain Admins (если в названии группы есть пробелы — их необходимо экранировать):
%Domain\ Admins ALL=(ALL) ALL
Комментарии (17)
MinamotoSoft
26.01.2019 01:29-1Как все интуитивно-понятно и это при том, что в SUSE — ввод машины в домен существует «исскаропки» уже лет 10-15.
(у вас в начале текста contoso.com потом contoso.domain)splinehip Автор
26.01.2019 12:03(у вас в начале текста contoso.com потом contoso.domain)
Спасибо, исправил.
bordakovsky
26.01.2019 10:39Для того что бы sudo работало корректно нужно добавить
[sssd]
services = nss, pam, sudo
у меня на CentOS такsplinehip Автор
26.01.2019 12:02Про CentOS не могу комментировать — не знаю, но в Ubuntu c 16.04 и выше корректно работает без указания sudo.
Mantikor
26.01.2019 10:41Название не совсем корректное. Для rhel based дистрибутивов все делается куда проще, через authconfig.
splinehip Автор
26.01.2019 12:00Не имел опыта работы с rhel based дистрибутивами, не могу ничего сказать. Исходя из того, что sssd — это продукт red hat, то вполне логично, что у них есть дополнительный инструмент для настройки.
iluvar
26.01.2019 12:18Редактируем файл /etc/sudoers
Лучше добавить — «используя visudo»maxzhurkin
27.01.2019 21:49А еще лучше создать новый файл в /etc/sudoers.d/ и ничего не править кроме этого файла
iluvar
27.01.2019 21:54Файлы в /etc/sudoers.d/ правятся по тем же правилам, что и /etc/sudoers:
visudo -f /etc/sudoers.d/ваш_файл
Просто так править файлы в /etc/sudoers.d/ не стоит
sub31
27.01.2019 11:53Спасибо за интересное описание.
Меня сейчас интересует авторизация с использованием AD учетных данных в CentOS 6.10. Так как там пока отсутствует realmd.
Возможна ли замена heimdal-client на пакет krb5-workstation?splinehip Автор
27.01.2019 22:47Точно не могу сказать, не работал с CentOS. Судя по описанию krb5-workstation, основной функционал в нем реализован (kinit, klist, kdestroy, kpasswd), так что возможно будет работать — нужно пробовать.
leschenko
Скажите, а с какой практической целью вы добавляете Linux машины в AD?
Групповых политик нет — т.е. управлять данной машиной на ровне с Windows не получится.
Аутентификация на самой машине — ну Ok. Можете ли вы прозрачно аутентифицироваться на других машинах (на самом деле не знаю и хочу узнать)? Имеете ли доступ к DFS?
bordakovsky
На других… Если вы имеете в виду Linux машины которые в домене, то да. Можно ходить прозрачно, но надо покрутить параметр GSSAPI.
WicRus
У нас на работе применяют для того, чтобы не вводить пароль для расшаренных папок. Ссылки вида smb://filesrap при наличии у пользователя необходимых прав открываются сразу.
splinehip Автор
Да, основная цель — аутентификация пользователей на машине. При логине пользователя, в отличии от Windows, для него не генерируется Kerberos tiket, и я не знаю, есть ли дополнительный механизм для этого, поэтому у пользователя прозрачного доступа к общим файловым ресурсам домена не будет. Возможно, такой доступ можно реализовать с помощью дополнительной настройки, но так как задачи такой не было, я данным вопросом не занимался.
PS Проще прощения, не обновил страницу — не видел, что выше уже ответили.