Назад | Перейти на главную страницу

Вопрос: RHEL, SSSD, Active Directory

Добрый день, ребята. Я уже просматривал различные сообщения о том, как заставить системы Linux аутентифицироваться с помощью AD, но не видел ничего похожего на то, о чем я бьюсь головой.

Здесь много настроек, так что потерпите меня.

Во-первых, цель состоит в том, чтобы все наши системы Linux и Unix аутентифицировались в AD. Это не обязательно для нескольких сотен систем; управление учетными записями пользователей давно перестало быть проблемой.

У нас есть несколько экземпляров AD: один из них - это «AD управления» («MAD»), в котором должны находиться все учетные записи системных администраторов. MAD не доверяет другим доменам. Все остальные домены («CAD», «FAD», «BAD») доверяют MAD. Большинство систем будут связаны с CAD, FAD или BAD. Только внутренние системы будут связаны с MAD.

Основная платформа - RHEL, и у меня есть смесь из 5, 6 и 7. 5 не исчезнет в ближайшее время, и, несмотря на то, что она перестанет поддерживать RH менее чем через год, мне все еще нужно получить популяцию из 5 интегрированных с AD. Любое решение должно работать в 5, 6 и 7, поскольку мы не хотим поддерживать несколько способов работы.

Мои основные варианты (по крайней мере, те, над которыми я работаю) - это Winbind и SSSD. Учитывая выбор между двумя, я бы предпочел SSSD, поскольку Winbind «довольно старый». Еще одно требование состоит в том, что «группы» и «идентификатор» производят информацию из AD, поскольку мы намерены использовать функцию openssh «AllowGroups» для ограничения входа в систему для определенных групп AD.

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

Я довольно силен в unix / linux в целом, но я не силен в AD, Kerberos или LDAP.

В лабораторных целях я начинаю с новой установки RHEL7 с ISO (кикстарт с некоторыми базовыми настройками), без установки битов аутентификации в KS.

Шаг 1. Синхронизация времени. Готово.

Шаг 2: Установите / активируйте oddjob. Готово.

Шаг 3. Убедитесь, что для целевой системы есть как прямые, так и обратные записи DNS. Готово. Пока что вручную я не могу полагаться на более поздние шаги, чтобы исправить это. Я справлюсь.

Шаг 4: Настройте Kerberos. Обновленная версия /etc/krb5.conf:

includedir /var/lib/sss/pubconf/krb5.include.d/
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = CAD.LAB
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 CAD.LAB = {
  kdc = cad_dc_01.cad.lab
 }

[domain_realm]
 .cad.lab = CAD.LAB
 cad.lab = CAD.LAB

Шаг 5: Установите samba.conf, достаточный для работы с SSSD. Раздел /etc/samba/smb.conf [globals] очищен:

[global]
workgroup = CAD
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab
log file = /var/log/samba/%m.log
log level = 0
password server = cad_dc_01.cad.lab
realm = CAD.LAB
security = ads

Шаг 6: Присоедините систему к САПР. «Администратор kinit», за которым следует «присоединиться к сетевой рекламе -k». Работает без проблем.

Шаг 7: Настройте SSSD. Санитировал /etc/sss/sssd.conf:

[sssd]
domains = CAD
services = nss, pam
config_file_version = 2
cache_credentials = true
debug_level = 7

[domain/CAD]
enumerate = true
# I know enumerate will cause problems later, I'm only turning it on for lab
debug_level = 7
id_provider = ad
ad_server = cad_dc_01.cad.lab
auth_provider = ad
chpass_provider = ad
access_provider = ad
default_shell = /bin/bash
fallback_homedir = /home/%u

[nss]
debug_level = 7

[pam]
debug_level = 7

Затем следует "systemctl start sssd". Кажется, что это работает, но никакие логины AD не работают.

Просматривая /var/log/sssd/sssd_CAD.log, я нахожу несколько вещей, которые дают мне представление о том, где что-то не так, но мне не удалось найти способ их исправить: каждое руководство, которое я прочитал дает последовательность шагов и предполагает, что каждый шаг работает. Я не нашел ничего, что могло бы помочь мне понять, что случилось, если один из этих шагов не работает.

Я не буду публиковать весь sssd_CAD.log, если кто-то не спросит, но вот первые признаки того, что что-то не так.

(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [ad_set_sdap_options] (0x0100): Option krb5_realm set to CAD
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [sdap_set_sasl_options] (0x0100): Will look for rhel7lab.CAD.LAB@CAD in default keytab
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [select_principal_from_keytab] (0x0200): trying to select the most appropriate principal from keytab
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [find_principal_in_keytab] (0x0400): No principal matching rhel7lab.CAD.LAB@CAD found in keytab.
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [find_principal_in_keytab] (0x0400): No principal matching rhel7lab$@CAD found in keytab.
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [find_principal_in_keytab] (0x0400): No principal matching host/rhel7lab.CAD.LAB@CAD found in keytab.
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [find_principal_in_keytab] (0x0400): No principal matching *$@CAD found in keytab.
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [find_principal_in_keytab] (0x0400): No principal matching host/*@CAD found in keytab.
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [match_principal] (0x1000): Principal matched to the sample (host/*@(null)).
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [select_principal_from_keytab] (0x0200): Selected primary: host/rhel7lab.CAD.LAB
(Tue May 31 12:35:05 2016) [sssd[be[CAD]]] [select_principal_from_keytab] (0x0200): Selected realm: CAD.LAB

Есть более поздние записи, в которых жалуются на то, что sssd_ad не подключен к AD, но это неудивительно, учитывая то, что я здесь вижу.

Итак: свежий образ с timesync / krb5.conf / smb.conf все готово, теперь "kinit Administrator", за которым следует "klist"

[root@rhel7lab]# kinit Administrator
Password for Administrator@CAD.LAB: 
[root@rhel7lab]# net ads join -k
Using short domain name -- CAD
Joined 'RHEL7LAB' to dns domain 'CAD.dev'
[root@rhel7lab]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrator@CAD.LAB

Valid starting       Expires              Service principal
05/31/2016 12:46:35  05/31/2016 22:46:35  krbtgt/CAD.LAB@CAD.LAB
        renew until 06/07/2016 12:46:30
05/31/2016 12:46:39  05/31/2016 22:46:35  cifs/CADDC01.CAD.LAB@CAD.LAB
        renew until 06/07/2016 12:46:30
05/31/2016 12:46:39  05/31/2016 22:46:35  ldap/cad_dc_01.cad.lab@CAD.LAB
        renew until 06/07/2016 12:46:30
[root@rhel7lab]# 

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

С этой штукой у меня иссякла веревка, и я начинаю думать, что приготовление бутербродов было бы менее неприятным выбором карьеры.

Будем очень признательны за любые рекомендации от вас. Если мне нужно добавить сюда что-то еще, просто скажи слово, и оно будет.

Спасибо, -9

Я не уверен, что он напрямую отвечает на ваш вопрос, но вы пробовали realmd? Он обрабатывает МНОГО conf файл настраивается автоматически. Это имеет тенденцию приводить к более предсказуемым ошибкам с сообщениями, которые легче найти в Google.

В вашем случае поиск по клавишам со смешанным регистром мне кажется неправильным:

rhel7lab.CAD.LAB

Ваш hostname или hosts запись с большой буквы? Области Kerberos должны быть полностью заглавными, но я не думаю, что это применимо ни к чему другому. Вот пример списка, созданного во время тестового стенда "realm join":

LIN3$@LDAP.<REALM>.COM
host/LIN3@LDAP.<REALM>.COM
host/lin3.ldap.<domain>.com@LDAP.<REALM>.COM

Ваша конфигурация SSSD может быть виновником:

В keytab не найдено совпадений по принципу rhel7lab.CAD.LAB@CAD.

Разве это не должно быть CAD.LAB@CAD.LAB в соответствии с выводом klist?

Можете ли вы попробовать эту конфигурацию SSSD (обратите внимание на суффикс по умолчанию):

[sssd]
domains = CAD
default_domain_suffix = CAD.LAB
services = nss, pam
config_file_version = 2
cache_credentials = true
debug_level = 7

Перезагрузите SSSD, посмотрите, работает ли?