- Создатель Александр Левдонский, отредактировано 06.02.20
Вы просматриваете старую версию данной страницы. Смотрите текущую версию.
Сравнить с текущим просмотр истории страницы
« Предыдущий Версия 3 Следующий »
Данная статья применима к:
- ОС ОН Орёл 2.12
- ОС СН Смоленск 1.6
- ОС СН Ленинград 8.1
Ограничения и нерешённые вопросы
- Не удалось настроить трансляцию доменных имён Kerberos. Билеты от чужого домена удалось получить только по имени реалма Kerberos (IPADOMAIN1.RU), но не по имени домена (ipadomain1.ru).
Исходные данные
Стенд состоит из трёх компьютеров:
- Контроллер домена ipa0.ipadomain0.ru с IP-адресом 100.0.2.100. Это будет "основной" домен;
- Клиент host0.ipadomain0.ru в "основном" домене ipadomain0.ru;
- Контроллер домена ipa0.ipadomain1.ru с IP-адресом 100.0.2.110. Это будет "чужой" домен;
Настройка DNS
В первую очередь клиент "основного" домена должен получить доступ к разрешению IP-адресов "чужого" домена.
Проще всего это сделать, добавив зону перенаправления DNS в службу разрешения имён "основного" домена.
Это можно сделать через WEB-интерфейс FreeIPA:
- "Сетевые службы" - "DNS" - "Зоны перенаправления DNS" - "Добавить";
- В качестве имени зоны указать имя "чужого" домена и точка в конце (ipadomain1.ru.) ;
- В поле "Перенаправители зон" добавить IP-адрес контроллера "чужого" домена (10.0.2.110).
Или из командной строки на "основном" контроллере домена:
ipa dnsforwardzone-add ipadomain1.ru --forward-policy=first --forwarder=10.0.2.110
Проверка
Если всё сделано правильно то на компьютерах, входящих в "основной" домен можно будет получить IP-адреса сервров и служб "чужого домена", например, командой dig:
dig ipadomain1.ru
dig ipa0.ipadomain1.ru
dig SRV _ldap._tcp.ipadomain1.ru
dig SRV _kerberos._tcp.ipadomain1.ru
Настройка клиента Kerberos
Конфигурацию клиента Kerberos так же проще всего настроить скопировав соответствующую секцию из конфигурационого файла /etc/krb5.conf "чужого" домена.
Кроме этого, из "чужого" домена нужно скопировать файлы сертификатов:
- /var/lib/ipa-client/pki/kdc-ca-bundle.pem
- /var/lib/ipa-client/pki/ca-bundle.pem
В примере ниже они скопирован в файлы:
- /var/lib/ipa-client/pki/kdc-ca-bundle-other.pem
- /var/lib/ipa-client/pki/ca-bundle-other.pem
В результате файл /etc/krb5.conf должен выглядеть примерно так:
includedir /etc/krb5.conf.d/
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 = IPADOMAIN0.ru
dns_lookup_realm = false
dns_lookup_kdc = true
rdns = false
ticket_lifetime = 24h
forwardable = true
udp_preference_limit = 0
pkinit_kdc_hostname = ipa0.ipadomain0.ru
pkinit_eku_checking = none
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
IPADOMAIN0.ru = {
kdc = ipa0.ipadomain0.ru:88
master_kdc = ipa0.ipadomain0.ru:88
admin_server = ipa0.ipadomain0.ru:749
default_domain = ipadomain0.ru
pkinit_anchors = FILE:/var/lib/ipa-client/pki/kdc-ca-bundle.pem
pkinit_pool = FILE:/var/lib/ipa-client/pki/ca-bundle.pem
}
IPADOMAIN1.ru = {
kdc = ipa1.ipadomain1.ru:88
master_kdc = ipa1.ipadomain1.ru:88
admin_server = ipa1.ipadomain1.ru:749
default_domain = ipadomain1.ru
pkinit_anchors = FILE:/var/lib/ipa-client/pki/kdc-ca-bundle-other.pem
pkinit_pool = FILE:/var/lib/ipa-client/pki/ca-bundle-other.pem
}
[domain_realm]
.ipadomain0.ru = IPADOMAIN0.ru
ipadomain0.ru = IPADOMAIN0.ru
ipa0.ipadomain0.ru = IPADOMAIN0.ru
.ipadomain1.ru = IPADOMAIN1.ru
ipadomain1.ru = IPADOMAIN1.ru
ipa1.ipadomain1.ru = IPADOMAIN1.ru
[dbmodules]
IPADOMAIN0.ru = {
db_library = ipadb.so
}
[plugins]
certauth = {
module = ipakdb:kdb/ipadb.so
enable_only = ipakdb
}
Проверка
Если всё сделано правильно, то на клиенте "основного" домена можно будет получать билеты Kerberos как "основного", так и "чужого" доменов:
Регистрация клиента в чужом домене
Зарегистрировать хост на "чужом" контроллере домена. Это можно сделать через WEB-интерфейс контроллера: "Идентификаци" - "Узлы" - "Добавить".
Или из командной строки на "чужом" контроллере домена:kinit admin
ipa host-add hostX.ipadomain1.ruПолучить ключ Kerberos для нового хоста:
sudo kinit admin@IPADOMAIN1.RU
sudo ipa-getkeytab -k /etc/krb5.keytab -s ipa0.ipadomain1.ru -p host/hostX.ipadomain1.ru@IPADOMAIN1.RU --cacert=/var/lib/ipa-client/pki/ca-bundle-other.pem
где:
-k /etc/krb5.keytab - таблица ключей, к которой будет добавлен новый ключ;
-s ipa0.ipadomain1.ru - "чужой" сервер, от которого получаем ключ;
-p host/hostX.ipadomain1.ru@IPADOMAIN1.RU - принципал, для котрого получаем ключ;
--cacert=/var/lib/ipa-client/pki/ca-bundle-other.pem - "чужой" сертификат, который используем для подключения к "чужому" Kerberos.
Проверка
Если всё сделано правильно, то запись про новый ключ появится в WEB-интерфейсе "чужого" сервера, а сам ключ можно посмотреть командой:
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
2 host/host0.ipadomain0.ru@IPADOMAIN0.RU
3 host/hostX.ipadomain1.ru@IPADOMAIN1.RU
Настройка sssd
Выполнить настройку SSSD в "основном" домене проще всего скопировав секцию параметров домена из конфигурации SSSD "чужого" домена.
Кроме того, из чужого домена нужно скопировать файл сертификата /etc/ipa/ca.crt. В примере ниже он скопирован в файл /etc/ipa/ca-other.crt.
В конфигурации следует указать корректное имя, которое должно применяться в "чужом" домене (параметр ipa_hostname в секции "чужого" домена).
Если используется конфигурация sssd, скопированная не с "чужого" клиента, а с"чужого" контроллера домена, то убрать параметр "ipa_server_mode = True" и в записи имён добавить параметр "_srv_".
В секцию [sssd] добавить имя "чужого" домена.
Ниже примерный вид конфигурации, добавленные и изменённые параметры выделены шрифтом:
[domain/ipadomain0.ru]
cache_credentials = True
krb5_store_password_if_offline = True
ipa_domain = ipadomain0.ru
id_provider = ipa
auth_provider = ipa
access_provider = ipa
ipa_hostname = _srv_, host0.ipadomain0.ru
chpass_provider = ipa
ipa_server = ipa0.ipadomain0.ru
default_shell = /bin/bash
ldap_tls_cacert = /etc/ipa/ca.crt
[domain/ipadomain1.ru]
cache_credentials = True
krb5_store_password_if_offline = True
ipa_domain = ipadomain1.ru
id_provider = ipa
auth_provider = ipa
access_provider = ipa
ipa_hostname = hostX.ipadomain1.ru
chpass_provider = ipa
ipa_server = _srv_, ipa0.ipadomain1.ru
default_shell = /bin/bash
# ipa_server_mode = True # убрать если такая запись есть
ldap_tls_cacert = /etc/ipa/ca-other.crt
[sssd]
services = sudo, nss, ifp, pam, ssh
domains = ipadomain0.ru, ipadomain1.ru
[nss]
memcache_timeout = 600
homedir_substring = /home
[pam]
[sudo]
[autofs]
[ssh]
[pac]
[ifp]
allowed_uids = 0, 33, 114, 999
[secrets]
[session_recording]
После внесения изменений в конфигурационный файл перезапустить службу sssd:
Проверка
Если всё сделано правильно, то служба sssd должна перезапуститься без ошибок и начать обслуживать два домена:
● sssd.service - System Security Services Daemon
Loaded: loaded (/lib/systemd/system/sssd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-02-06 13:45:07 MSK; 14min ago
Main PID: 5601 (sssd)
Tasks: 9 (limit: 4915)
CGroup: /system.slice/sssd.service
├─5601 /usr/sbin/sssd -i --logger=files
├─5603 /usr/lib/x86_64-linux-gnu/sssd/sssd_be --domain ipadomain0.ru --uid 0 --gid 0 --logger=files
├─5604 /usr/lib/x86_64-linux-gnu/sssd/sssd_be --domain ipadomain1.ru --uid 0 --gid 0 --logger=files
├─5605 /usr/lib/x86_64-linux-gnu/sssd/sssd_sudo --uid 0 --gid 0 --logger=files
├─5606 /usr/lib/x86_64-linux-gnu/sssd/sssd_nss --uid 0 --gid 0 --logger=files
├─5607 /usr/lib/x86_64-linux-gnu/sssd/sssd_ifp --uid 0 --gid 0 --logger=files
├─5608 /usr/lib/x86_64-linux-gnu/sssd/sssd_pam --uid 0 --gid 0 --logger=files
├─5609 /usr/lib/x86_64-linux-gnu/sssd/sssd_ssh --uid 0 --gid 0 --logger=files
└─5610 /usr/lib/x86_64-linux-gnu/sssd/sssd_pac --uid 0 --gid 0 --logger=files
ipadomain0.ru
ipadomain1.ru
Online status: Online
Active servers:
IPA: ipa1.ipadomain1.ru
Discovered IPA servers:
- ipa1.ipadomain1.ru
- ipa1.ipadomain1.ru
Диагностика проблем
В случае возникновения проблем с подключением следует включить отладочную диагностику в службе sssd, для чего добавить параметр
в секцию настроек "чужого" домена в конфигурационном файле /etc/sssd/sssd.conf и перезапустить службу sssd. Отладочную информацию искать в каталоге /var/log/sssd в файле с названием, сответствующим имени домена.
- Нет меток