Добрый день, ребята. Я уже просматривал различные сообщения о том, как заставить системы 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, посмотрите, работает ли?