Сравнение версий
Ключ
- Эта строка добавлена.
- Эта строка удалена.
- Изменено форматирование.
Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Предупреждение |
---|
При вводе клиента в несколько доменов необходимо помнить, что:
|
Данная статья применима к:
Исходные данные
Стенд состоит из четырёх компьютеров:
- Контроллер домена 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, которая позволит копировать файлы между машинами из командной строки:
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 |
Настройка 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: Offline 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/hostx.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 |