Авторизация пользователя MS AD в домене IPA(IDM - redhat) через керберос прокси

Модераторы: flash, mordor

Ответить
Аватара пользователя
flashdeath
Администратор
Сообщения: 25
Зарегистрирован: 08 ноя 2007, 14:22

Авторизация пользователя MS AD в домене IPA(IDM - redhat) через керберос прокси

Сообщение flashdeath »

Доброго времени суток, господа админы.

Столкнулся с нетривиальной проблемой при установленном трасте MS AD домена и IPA
Немного о схеме.
Есть MS AD домен который содержит пользователей
Есть IPA домен который содержит Linux машины (сервера и рабочие станции)
Сделано это для того чтобы централизовано управлять доступом на линукс машины и правами sudo, на удаленных машинах с минимальными затратами времени
Есть исходящее доверие от домена MS AD к домену IPA (пользователи AD могут логиниться на машине в домене IPA)
Траст настроен по ману
https://redos.red-soft.ru/base/server-c ... t-ad-ro73/

Все работает, но есть одна проблема - клиентская машина из домена ipa запрашивает Kerberos тикет в домене MS AD напрямую, что для меня неприемлемо.
Если закрыть доступ с клиентской машины на сервера MS AD по 88 и 464 портам, клиент перестает авторизовываться на машине.

Теперь подробнее:
MS AD домен = test02.local
MS AD DC = dc01.test02.local
MS AD USER = user3.test02.local
MS AD DC OS = windows server 2022 std
IPA домен = ipa8.local
IPA DC = ipa8dc01.ipa8.local
IPA DC OS = OEL8 (Oracle Enterprise Linux)
IPA Client hostname = ipa8cl01.ipa8.local

Между MS AD и IPA стоит FireWall на базе freebsd

Начал копать как это победить, перерыл кучу манов в итоге пришел к следующему:
1. Для начала включаем керберос прокси в LDAP ipa командой

Код: Выделить всё

ipa-ldap-updater /usr/share/ipa/kdcproxy-enable.uldif

2. На ipa8dc01.ipa8.local надо включить KDCProxy - делается это путем редактирования файла

Код: Выделить всё

/etc/ipa/kdcproxy/kdcproxy.conf
изначально он выглядит так

Код: Выделить всё

[global]
configs = mit
use_dns = false
Редактируем его

Код: Выделить всё

[global]
configs = mit
use_dns = true
[test02.local]
kerberos = kerberos+tcp://dc01-test02.test02.local:88
kpasswd = kpasswd+tcp://dc01-test02.test02.local:464
и перезапускаем ipa домен

Код: Выделить всё

ipactl restart
После этого должен начать отвечать URL

Код: Выделить всё

https://ipa8dc01.ipa8.local/KdcProxy
3. На клиенте в файл

Код: Выделить всё

/etc/krb5.conf

Дописываем

Код: Выделить всё

[libdefaults]
  dns_lookup_kdc = false #true (по умолчанию меняем на false)

#И дописываем наш домен test02.local
  test02.local = {
    kdc = https://ipa8dc01.ipa8.local/KdcProxy
    kpasswd_server = https://ipa8dc01.ipa8.local/KdcProxy
    admin_server = https://ipa8dc01.ipa8.local/KdcProxy
    default_domain = test02.local
}

  TEST02.LOCAL = {
    kdc = https://ipa8dc01.ipa8.local/KdcProxy
    kpasswd_server = https://ipa8dc01.ipa8.local/KdcProxy
    admin_server = https://ipa8dc01.ipa8.local/KdcProxy
    default_domain = TEST02.LOCAL
}
# Обязательно 2 секции т.к. запросы от приложений могут идти в нижнем регистре, а авторизация всегда в верхнем
4. На клиенте в файл

Код: Выделить всё

/etc/sssd/sssd.conf

В конец файла дописываем

Код: Выделить всё

[domain/test02.local]
krb5_use_kdcinfo = False
Перезапускаем клиента или рестартуем sssd с очисткой кэша

Код: Выделить всё

service sssd stop; rm -rf /var/lib/sss/db/*;sss_cache -E;service sssd start
Вот и вся хитрость
Ответить