Сравнение версий
Ключ
- Эта строка добавлена.
- Эта строка удалена.
- Изменено форматирование.
Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Предупреждение |
---|
При вводе клиента в несколько доменов необходимо помнить, что:
|
|
|
Информация |
---|
Данная статья применима к:
|
- Не удалось настроить трансляцию доменных имён Kerberos. Билеты от чужого домена удалось получить только по имени реалма Kerberos (IPADOMAIN1.RU), но не по имени домена (ipadomain1.ru).
Исходные данные
Стенд состоит из трёх четырёх компьютеров:
- Контроллер домена ipa0.ipadomain0.ru с IP-адресом 100.0.2.100. Это будет "основной" домен;
- Клиент host0.ipadomain0.ru в "основном" домене ipadomain0.ru. В "чужом" домене этот клиент будет зарегистрирован под именем hostx.ipadomain1.ru;
- Контроллер домена ipa0.ipadomain1.ru с IP-адресом 100.0.2.110. Это будет "чужой" домен;
- Клиент host0.ipadomain1.ru в "чужом" домене ipadomain1.ru. С этого клиента будем копировать конфигурационные файлы. В принципе, конфигурационные файлы можно копировать и не с клиентской машины, а непосредственно с контроллера домена, но они могут отличаться от клиентских;
Обратите внимание - имена клиентовхостов, находящихся в разных доменах (host0), в данном примере совпадают. Использовать одинаковые имена не обязательно, более того, это может быть нежелательно. Далее будет показано, как обойти возможный конфликт имён.
Дополнительно рекомендуется установить на все машины:
Пакеты dnsutils и sssd-tools для проверки корректности работы сервиса разрешения имён (DNS) и сервиса SSSD:
Command sudo apt install dnsutils sssd-tools Службу ssh, которая позволит копировать файлы между машинами из командной строки:
sudo apt updateИнформация Command sudo apt install ssh
sudo systemctl enable --now ssh
Настройка DNS
В первую очередь клиент "основного" домена должен получить доступ к разрешению IP-адресов "чужого" домена.
Проще всего это сделать, добавив зону перенаправления DNS в службу разрешения имён "основного" домена.
Эта операция выполняется на контроллере "основного" домена.
Добавление зоны перенаправления можно сделать через WEB-интерфейс FreeIPA:
- "Сетевые службы" - "DNS" - "Зоны перенаправления DNS" - "Добавить";
- В качестве имени зоны указать имя "чужого" домена и точка в конце (ipadomain1.ru.) ;
- В поле "Перенаправители зон" добавить IP-адрес контроллера "чужого" домена (в примере - 10.0.2.110).
Или из командной строки на "основном" контроллере домена (тут точку к имени добавлять не нужно):
Command |
---|
kinit admin ipa dnsforwardzone-add ipadomain1.ru --forward-policy=first --forwarder=10.0.2.110 |
Проверка
Если всё сделано правильно, то на компьютерах, входящих в "основной" домен можно будет получить IP-адреса серверов и служб "чужого" домена, использовав для этого, например, команду host:
Command |
---|
host ipa0.ipadomain1.ru |
или (если установлен пакет dnsutils)
командуразные варианты команды dig:
Информация |
---|
Command |
dig 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
Если на клиенте в "чужом" домене запущена служба ssh, то файлы можно скопировать командами:
Command |
---|
sudo scp -q admin@host0.ipadomain1.ru:/var/lib/ipa-client/pki/kdc-ca-bundle.pem /var/lib/ipa-client/pki/kdc-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 = ipa0.ipadomain1.ru:88
master_kdc = ipa0.ipadomain1.ru:88
admin_server = ipa0.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
}
.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 как "основного", так и "чужого" доменов:
Информация |
---|
kinit admin@IPADOMAIN1.RU |
Настройка sssd
Выполнить настройку SSSD в "основном" домене проще всего скопировав секцию параметров домена из конфигурации SSSD "чужого" домена.
Кроме того, из "чужого" контроллера домена нужно скопировать файл сертификата /etc/ipa/ca.crt. В примере ниже он скопирован в файл /etc/ipa/ca-other.crt.
Если на контроллере "чужого" домена запущена служба ssh сделать это можно командой:
Command |
---|
sudo scp -q admin@ipa0.ipadomain1.ru:/etc/ipa/ca.crt /etc/ipa/ca-other.crt |
В конфигурации следует указать корректное имя, которое должно sssd (файл /etc/sssd/sssd.conf ) можно указать отдельное имя хоста, которое будет применяться в "чужом" домене (параметр ipa_hostname в секции "чужого" домена. В примере имя хоста host0 подменяется на имя hostx).
Если используется конфигурация sssd, скопированная не с "чужого" клиента, а с"чужого" контроллера домена, то убрать параметр "ipa_server_mode = True" и в записи имён добавить параметр "_srv_".
В секцию [sssd] добавить имя "чужого" домена.
Ниже примерный вид конфигурации, добавленные и изменённые параметры выделены шрифтом:
Информация |
---|
[domain/ipadomain0.ru] [domain/ipadomain1.ru] [nss] [pam] [sudo] [autofs] [ssh] [pac] [ifp] [secrets] [session_recording] |
После внесения изменений в конфигурационный файл перезапустить службу sssd:
Command |
---|
sudo systemctl restart sssd |
Проверка
Если всё сделано правильно, то служба sssd должна перезапуститься без ошибок и начать обслуживать два домена:
Command | ||
---|---|---|
| ||
● sssd.service - System Security Services Daemon |
Если установлен пакет sssd-tools, то можно использовать команду sssctl:
Command | ||
---|---|---|
| ||
ipadomain0.ru ipadomain1.ru |
Command | ||
---|---|---|
| ||
Online status: OnlineOffline Active servers: Discovered IPA servers: |
Обратите внимание, на данном этапе cерверы "чужого" домена обнаружены, но сам домен находится в статусе "offline". Происходит это потому, что "чужой" домен не знает, что это за хост к нему обращается, и отказывается выдавать информацию.
Настройка Kerberos-авторизации хоста
Для настройки авторизации клиента через Kerberos нужно из "чужого" домена скопировать файлы сертификатов "чужого" домена, чтобы предъявлять их при подключении к этому домену. Это файлы:
- /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
Если на клиенте в "чужом" домене запущена служба ssh, то файлы можно скопировать командами:
Command |
---|
sudo scp -q admin@host0.ipadomain1.ru:/var/lib/ipa-client/pki/kdc-ca-bundle.pem /var/lib/ipa-client/pki/kdc-ca-bundle-other.pem |
Проверка
Если всё сделано правильно, то на клиенте "основного" домена можно будет получать билеты Kerberos как "основного", так и "чужого" доменов:
Command |
---|
kinit admin@IPADOMAIN1.RU |
При этом можно одновременно иметь билеты двух доменов:
Command | ||
---|---|---|
| ||
Ticket cache: KEYRING:persistent:0:krb_ccache_cY1rfoy Valid starting Expires Service principal Ticket cache: KEYRING:persistent:0:0 Valid starting Expires Service principal |
Регистрация клиента в чужом домене и запуск службы SSSD
Для того, чтобы "чужой"
доменконтроллер домена выдавал хосту информацию, необходимо
Зарегистрировать зарегистрировать этот хост на "чужом" контроллере домена. Это можно сделать через WEB-интерфейс контроллера: "Идентификация" - "Узлы" - "Добавить", или из командной строки на "чужом" контроллере домена:
Command kinit admin
ipa host-add hostx.ipadomain1.ru --forceВ общем случае клиентская машина не имеет постоянного IP-адреса, поэтому для регистрируем хост без IP-адреса (опция --force).
На хосте получить в таблицу ключей добавить ключ Kerberos для нового хоста"чужого" домена:
Command 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.
После того, как хост зарегистрирован в Kerberos и получил ключ, следует перезапустить службу sssd, которая теперь сможет предъявить ключ хоста, и получить доступ к информации о домене:
Command |
---|
sudo systemctl restart sssd |
Проверка
Если всё сделано правильно, то запись Запись про наличие ключа появится в записи о хосте в WEB-интерфейсе "чужого" сервера, также наличие ключа можно проверить выполнением на самом хосте команды:
Command | ||
---|---|---|
| ||
Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 2 host/host0.ipadomain0.ru@IPADOMAIN0.RU 3 host/hostXhostx.ipadomain1.ru@IPADOMAIN1.RU |
Если всё сделано правильно, то теперь статус домена в sssd должет быть "Online":
Command | ||
---|---|---|
| ||
Online status: Online Active servers: Discovered IPA servers: |
Кроме того, теперь можно получать информацию о клиентах разных доменов. Клиент "основного" домена ipadomain0.ru:
Command | ||
---|---|---|
| ||
uid=96001(ipauser01) gid=96001(ipauser01) группы=96001(ipauser01) |
Клиент "чужого" домена ipadomain1.ru:
Command | ||
---|---|---|
| ||
uid=312001(ipauser11) gid=312001(ipauser11) группы=312001(ipauser11) |
И, после всего этого, должен стать возможен вход пользователей "чужого" домена.
Диагностика проблем
В случае возникновения проблем с подключением следует включить отладочную диагностику в службе sssd, для чего добавить параметр
Информация |
---|
debug_level = 0x37F0 |
в секцию настроек "чужого" домена в конфигурационном файле /etc/sssd/sssd.conf и перезапустить службу sssd. Отладочную информацию искать в каталоге /var/log/sssd в файле с названием, сответствующим имени домена.
Добавочную Включить добавочную диагностику при получении билетов Kerberos командой kinit можно включить так:
Command |
---|
KRB5_TRACE=/dev/stdout kinit -V admin@IPADOMAIN1.RU |