SSSD-KRB5(5) Формати файлів та правила SSSD-KRB5(5)

sssd-krb5 - Модуль надання даних Kerberos SSSD

ОПИС

На цій сторінці довідника описано налаштування засобу розпізнавання Kerberos 5 для sssd(8). Щоб дізнатися більше про синтаксис налаштування, зверніться до розділу «ФОРМАТ ФАЙЛА» сторінки довідника sssd.conf(5).

Модуль розпізнавання Kerberos 5 містити засоби розпізнавання та зміни паролів. З метою отримання належних результатів його слід використовувати разом з інструментом обробки профілів (наприклад, id_provider = ldap). Деякі з даних, потрібних для роботи модуля розпізнавання Kerberos 5, має бути надано інструментом обробки профілів, серед цих даних Kerberos Principal Name (UPN) або реєстраційне ім’я користувача. У налаштуваннях інструменту обробки профілів має бути запис з визначенням UPN. Докладні настанови щодо визначення такого UPN має бути викладено на сторінці довідника (man) відповідного інструменту обробки профілів.

У цьому інструменті керування даними також передбачено можливості керування доступом, засновані на даних з файла k5login у домашньому каталозі користувача. Докладніші відомості можна отримати з підручника до k5login(5). Зауважте, що якщо файл .k5login виявиться порожнім, доступ користувачеві буде заборонено. Щоб задіяти можливість керування доступом, додайте рядок «access_provider = krb5» до ваших налаштувань SSSD.

У випадку, коли доступу до UPN у модулі профілів не передбачено, sssd побудує UPN у форматі ім’я_користувача@область_krb5.

ПАРАМЕТРИ НАЛАШТУВАННЯ

Якщо у домені SSSD використано auth-module krb5, має бути використано вказані нижче параметри. Зверніться до сторінки довідника (man) sssd.conf(5), розділ «РОЗДІЛИ ДОМЕНІВ», щоб дізнатися більше про налаштування домену SSSD.

krb5_server, krb5_backup_server (рядок)

Визначає список IP-адрес або назв вузлів, відокремлених комами, серверів Kerberos, з якими SSSD має встановлювати з’єднання. Список має бути впорядковано за пріоритетом. Докладніше про резервування та додаткові сервери можна дізнатися з розділу «РЕЗЕРВ». До адрес або назв вузлів може бути додано номер порту (перед номером слід вписати двокрапку). Якщо параметр матиме порожнє значення, буде увімкнено виявлення служб. Докладніше про виявлення служб можна дізнатися з розділу «ПОШУК СЛУЖБ».

Під час використання виявлення служб для серверів KDC або kpasswd SSSD спочатку намагається знайти записи DNS, у яких визначається протокол _udp. Використання протоколу _tcp відбувається, лише якщо таких записів не вдасться знайти.

У попередніх випусках SSSD цей параметр мав назву «krb5_kdcip». У поточній версії передбачено розпізнавання цієї застарілої назви, але користувачам варто перейти на використання «krb5_server» у файлах налаштувань.

krb5_realm (рядок)

Назва області Kerberos. Цей параметр є обов’язковим, його неодмінно слід вказати.

krb5_kpasswd, krb5_backup_kpasswd (рядок)

Якщо службу зміни паролів не запущено на KDC, тут можна визначити альтернативні сервери. До адрес або назв вузлів можна додати номер порту (перед яким слід вписати двокрапку).

Додаткові відомості щодо резервних серверів можна знайти у розділі «РЕЗЕРВ». Зауваження: навіть якщо список всіх серверів kpasswd буде вичерпано, модуль не перемкнеться у автономний режим роботи, якщо розпізнавання за KDC залишатиметься можливим.

Типове значення: використання KDC

krb5_ccachedir (рядок)

Каталог для зберігання кешу реєстраційних даних. Тут також можна використовувати усі замінники з krb5_ccname_template, окрім %d та %P. Каталог створюється як конфіденційний, власником є користувач, права доступу — 0700.

Типове значення: /tmp

krb5_ccname_template (рядок)

Розташування кешу з реєстраційними даними користувача У поточній версії передбачено підтримку трьох типів кешу реєстраційних даних: “FILE”, “DIR” та “KEYRING:persistent”. Кеш може бути вказано або у форматі ТИП:РЕШТА, або у форматі абсолютного шляху (тоді вважається, що типом кешу є “FILE”). У шаблоні передбачено можливість використання таких послідовностей-замінників:

%u

ім'я користувача

%U

ідентифікатор користувача

%p

назва реєстраційного запису

%r

назва області

%h

домашній каталог

%d

значення krb5_ccachedir

%P

ідентифікатор процесу клієнтської частини SSSD

%%

символ відсотків («%»)

Якщо шаблон завершується послідовністю «XXXXXX», для безпечного створення назви файла використовується mkstemp(3).

Якщо використовуються типи KEYRING, єдиним підтримуваним механізмом є «KEYRING:persistent:%U», тобто використання сховища ключів ядра Linux для зберігання реєстраційних даних на основі поділу за UID. Цей варіант є рекомендованим, оскільки це найбезпечніший та найпередбачуваніший спосіб.

Типове значення назви кешу реєстраційних даних буде запозичено з загальносистемного профілю, що зберігається у файлі налаштувань krb5.conf, розділ [libdefaults]. Назва параметра — default_ccache_name. Див. розділ щодо розгортання параметрів (PARAMETER EXPANSION) у довідці щодо krb5.conf(5), щоб отримати додаткові дані щодо формату розгортання, використаного у krb5.conf.

ЗАУВАЖЕННЯ: майте на увазі, що шаблон розширення ccache libkrb5 з krb5.conf(5) використовує інші послідовності розширення, що не збігаються із використаними у SSSD.

Типове значення: (з libkrb5)

krb5_keytab (рядок)

Розташування таблиці ключів, якою слід скористатися під час перевірки реєстраційних даних, отриманих від KDC.

Типове значення: системна таблиця ключів, зазвичай /etc/krb5.keytab

krb5_store_password_if_offline (булівське значення)

Зберігати пароль користувача, якщо засіб перевірки перебуває поза мережею, і використовувати його для запитів TGT після встановлення з’єднання з засобом перевірки.

Зауваження: ця можливість у поточній версії доступна лише на платформі Linux. Паролі зберігатимуться у форматі звичайного тексту (без шифрування) у сховищі ключів ядра, потенційно до них може отримати доступ адміністративний користувач (root), але йому для цього слід буде подолати деякі перешкоди.

Типове значення: false

krb5_use_fast (рядок)

Вмикає безпечне тунелювання для гнучкого розпізнавання (flexible authentication secure tunneling або FAST) для попереднього розпізнавання у Kerberos. Передбачено такі варіанти:

never використовувати FAST, рівнозначний варіанту, за якого значення цього параметра взагалі не задається.

try — використовувати FAST. Якщо на сервері не передбачено підтримки FAST, продовжити розпізнавання без FAST.

demand — використовувати FAST. Якщо на сервері не передбачено підтримки FAST, спроба розпізнавання зазнає невдачі.

Типове значення: не встановлено, тобто FAST не використовується.

Зауваження: будь ласка, зауважте, що для використання FAST потрібна таблиця ключів або підтримка анонімного PKINIT.

Зауваження: у SSSD передбачено підтримку FAST лише у разі використання MIT Kerberos версії 1.8 або новішої. Якщо SSSD буде використано зі старішою версією MIT Kerberos і цим параметром, буде повідомлено про помилку у налаштуваннях.

krb5_fast_principal (рядок)

Визначає реєстраційний запис сервера, який слід використовувати для FAST.

krb5_fast_use_anonymous_pkinit (булеве значення)

Якщо встановлено значення «true» намагатися скористатися анонімним PKINIT замість таблиці ключів для отримання бажаних реєстраційних даних для FAST. У цьому випадку параметри krb5_fast_principal буде проігноровано.

Типове значення: false

krb5_use_kdcinfo (булеве значення)

Визначає, чи слід SSSD вказувати бібліотекам Kerberos, яку область і які значення KDC слід використовувати. Типово, дію параметра увімкнено. Якщо ви вимкнете його, вам слід налаштувати бібліотеку Kerberos за допомогою файла налаштувань krb5.conf(5).

Див. сторінку підручника (man) sssd_krb5_locator_plugin(8), щоб дізнатися більше про додаток пошуку.

Типове значення: true

krb5_kdcinfo_lookahead (рядок)

Якщо для krb5_use_kdcinfo встановлено значення true, ви можете обмежити кількість серверів, які буде передано sssd_krb5_locator_plugin(8). Це може бути корисним, якщо за допомогою запису SRV виявляється надто багато серверів.

Параметр krb5_kdcinfo_lookahead містить два числа, які відокремлено двокрапкою. Перше число визначає кількість основних серверів, а друге — кількість резервних серверів.

Наприклад, 10:0 означає «буде передано до 10 основних серверів до sssd_krb5_locator_plugin(8)», але не буде передано резервні сервери

Типове значення: 3:1

krb5_use_enterprise_principal (булеве значення)

Визначає, чи слід вважати реєстраційні дані користувача даними промислового рівня. Див. розділ 5 RFC 6806, щоб дізнатися більше про промислові реєстраційні дані.

Типове значення: false (надається AD: true)

Засіб надання даних IPA встановить для цього параметра значення «true», якщо виявить, що сервер здатен обробляти реєстраційні дані промислового класу, і параметр на встановлено явним чином у файлі налаштувань.

krb5_use_subdomain_realm (булеве значення)

Визначає використання областей піддоменів для розпізнавання користувачів з довірених доменів. Для цього параметра можна встановити значення «true», якщо промислові реєстраційні записи використовуються із upnSuffixes, який не є відомим KDC батьківського домену. Якщо для параметра встановлено значення «true», SSSD спробує надіслати запит безпосередньо до KDC довіреного домену, з якого прийшов користувач.

Типове значення: false

krb5_map_user (рядок)

Список прив’язок визначається як список пар «користувач:основа», де «користувач» — ім’я користувача UNIX, а «основа» — частина щодо користувача у реєстраційному записі kerberos. Ця прив’язка використовується, якщо користувач проходить розпізнавання із використанням «auth_provider = krb5».

приклад:

krb5_realm = REALM
krb5_map_user = joe:juser,dick:richard

“joe” і “dick” — імена користувачів UNIX, а “juser” і “richard” основні частини реєстраційних записів kerberos. Для користувачів “joe” та, відповідно, “dick” SSSD намагатиметься виконати ініціалізацію kinit як “juser@REALM” і, відповідно, “richard@REALM”.

Типове значення: not set

krb5_auth_timeout (ціле число)

Час очікування, по завершенню якого буде перервано запит щодо розпізнавання або зміни пароля у мережі. Якщо це можливо, обробку запиту щодо розпізнавання буде продовжено у автономному режимі.

Типове значення: 6

krb5_validate (булеве значення)

Перевірити за допомогою krb5_keytab, чи отриманий TGT не було підмінено. Перевірка записів у таблиці ключів виконується послідовно. Для перевірки використовується перший запис з відповідним значенням області. Якщо не буде знайдено жодного відповідного області запису, буде використано останній запис з таблиці ключів. Цим процесом можна скористатися для перевірки середовищ за допомогою зв’язків довіри між записами областей: достатньо розташувати відповідний запис таблиці ключів на останньому місці або зробити його єдиним записом у файлі таблиці ключів.

Типове значення: false (надається IPA та AD: true)

Будь ласка, зауважте, що перевірка квитка є першим кроком при перевірці PAC (див. «pac_check» на сторінці підручника щодо sssd.conf(5), щоб дізнатися більше). Якщо перевірку квитків вимкнено, також буде вимкнено і перевірки PAC.

krb5_renewable_lifetime (рядок)

Надіслати запит щодо поновлюваного квитка з загальним строком дії, вказаним за допомогою цілого числа, за яким одразу вказано одиницю часу:

s — секунди

m — хвилини

h — години

d — дні.

Якщо одиниці часу не буде вказано, вважатиметься, що використано одиницю s.

Зауваження: не можна використовувати одразу декілька одиниць. Якщо вам потрібно встановити строк дії у півтори години, слід вказати «90m», а не «1h30m».

Типове значення: не встановлено, тобто TGT не є оновлюваним

krb5_lifetime (рядок)

Надіслати запит щодо квитка з загальним строком дії, вказаним за допомогою цілого числа, за яким одразу вказано одиницю часу:

s — секунди

m — хвилини

h — години

d — дні.

Якщо одиниці часу не буде вказано, вважатиметься, що використано одиницю s.

Зауваження: не можна використовувати одразу декілька одиниць. Якщо вам потрібно встановити строк дії у півтори години, слід вказати «90m», а не «1h30m».

Типове значення: не встановлено, тобто типовий строк дії квитка визначатиметься у налаштуваннях KDC.

krb5_renew_interval (рядок)

Час у секундах між двома послідовними перевірками того, чи слід оновлювати записи TGT. Записи TGT оновлюються після завершення приблизно половини їхнього строку дії, що задається як ціле число з наступним позначенням одиниці часу:

s — секунди

m — хвилини

h — години

d — дні.

Якщо одиниці часу не буде вказано, вважатиметься, що використано одиницю s.

Зауваження: не можна використовувати одразу декілька одиниць. Якщо вам потрібно встановити строк дії у півтори години, слід вказати «90m», а не «1h30m».

Якщо значення для цього параметра встановлено не буде або буде встановлено значення 0, автоматичного оновлення не відбуватиметься.

Типове значення: not set

krb5_canonicalize (булеве значення)

Визначає, чи слід перетворювати реєстраційний запис вузла і користувача у канонічну форму. Цю можливість передбачено з версії MIT Kerberos 1.7.

Типове значення: false

РЕЗЕРВ

Можливість резервування надає змогу модулям обробки автоматично перемикатися на інші сервери, якщо спроба встановлення з’єднання з поточним сервером зазнає невдачі.

Синтаксичні конструкції визначення резервного сервера

Список записів серверів, відокремлених комами. Між комами можна використовувати довільну кількість пробілів. Порядок у списку визначає пріоритет. У списку може бути будь-яка кількість записів серверів.

Для кожного з параметрів налаштування з увімкненим резервним отриманням існує два варіанти: основний і резервний. Ідея полягає у тому, що сервери з основного списку мають вищий пріоритет за резервні сервери, пошук же на резервних серверах виконується, лише якщо не вдасться з’єднатися з жодним з основних серверів. Якщо буде вибрано резервний сервер, встановлюється час очікування у 31 секунду. Після завершення часу очікування SSSD періодично намагатиметься повторно встановити з’єднання з основними серверами. Якщо спроба буде успішною, поточний активний резервний сервер буде замінено на основний.

Механізм визначення резервного сервера

Механізмом резервного використання розрізняються окремі комп’ютери і служби. Спочатку модуль намагається визначити назву вузла вказаного комп’ютера. Якщо спроби визначення зазнають невдачі, комп’ютер вважатиметься від’єднаним від мережі. Подальших спроб встановити з’єднання з цим комп’ютером для всіх інших служб не виконуватиметься. Якщо вдасться виконати визначення, модуль зробити спробу встановити з’єднання зі службою на визначеному комп’ютері. Якщо спроба з’єднання зі службою не призведе до успіху, непрацездатною вважатиметься лише служба, модуль автоматично перемкнеться на наступну службу. Комп’ютер служби вважатиметься з’єднаним з мережею, можливі подальші спроби використання інших служб.

Подальші спроби встановлення з’єднання з комп’ютерами або службами, позначеними як такі, що перебувають поза мережею, буде виконано за певний проміжок часу. У поточній версії цей проміжок є незмінним і дорівнює 30 секундам.

Якщо список комп’ютерів буде вичерпано, основний модуль перейде у режим автономної роботи і повторюватиме спроби з’єднання кожні 30 секунд.

Час очікування на перемикання на резервний ресурс та точне налаштовування

Для визначення сервера для з'єднання достатньо одного запиту DNS або декількох кроків, зокрема визначення відповідного сайта або спроба використати декілька назв вузлів у випадку, якщо якісь із налаштованих серверів недоступні. Складніші сценарії можуть потребувати додаткового часу, а SSSD треба збалансувати надання достатнього часу для завершення процесу визначення і використання притомного часу на виконання цього запиту перед переходом до автономного режиму. Якщо діагностичний журнал SSSD показує, що під час визначення сервера перевищено час очікування на з'єднання із працездатним сервером, варто змінити значення параметрів часу очікування.

У цьому розділі наведено списки доступних для коригування параметрів. Будь ласка, ознайомтеся із їхніми описами за допомогою сторінки підручника sssd.conf(5).

dns_resolver_server_timeout

Час у мілісекундах, протягом якого SSSD має намагатися обмінятися даними із окремим сервером DNS, перш ніж перейти до спроб зв'язатися із наступним.

Типове значення: 1000

dns_resolver_op_timeout

Час у секундах, який визначає тривалість періоду, протягом якого SSSD намагатиметься обробити окремий запит DNS (наприклад встановити назву вузла або запис SRV), перш ніж перейти до наступної назви вузла або наступного домену пошуку.

Типове значення: 3

dns_resolver_timeout

Наскільки довго має чекати SSSD на визначення резервної служби надання даних. На внутрішньому рівні визначення такої служби може включати декілька кроків, зокрема визначення адрес запитів DNS SRV або пошук розташування сайта.

Типове значення: 6

Для заснованих на LDAP постачальників даних дія з визначення виконується як частина дії зі встановлення з'єднання із LDAP. Тому слід також встановити для часу очікування “ldap_opt_timeout” значення, яке перевищуватиме значення “dns_resolver_timeout”, яке також має перевищувати значення “dns_resolver_op_timeout”, яке має перевищувати значення “dns_resolver_server_timeout”.

ПОШУК СЛУЖБ

За допомогою можливості виявлення служб основні модулі мають змогу автоматично визначати відповідні сервери для встановлення з’єднання на основі даних, отриманих у відповідь на спеціальний запит до DNS. Підтримки цієї можливості для резервних серверів не передбачено.

Налаштування

Якщо серверів не буде вказано, модуль автоматично використає визначення служб для пошуку сервера. Крім того, користувач може використовувати і фіксовані адреси серверів і виявлення служб. Для цього слід вставити особливе ключове слово, «_srv_», до списку серверів. Пріоритет визначається за вказаним порядком. Ця можливість є корисною, якщо, наприклад, користувач надає перевагу використанню виявлення служб, якщо це можливо, з поверненням до використання певного сервера, якщо за допомогою DNS не вдасться виявити жодного сервера.

Назва домену

З докладнішими відомостями щодо параметра «dns_discovery_domain» можна ознайомитися на сторінці підручника (man) sssd.conf(5).

Протокол

Запитами зазвичай визначається протокол _tcp. Виключення документовано у описі відповідного параметра.

Також прочитайте

Докладніші відомості щодо механізмів визначення служб можна знайти у RFC 2782.

ПРИКЛАД

У наведеному нижче прикладі припускається, що SSSD налаштовано належним чином, а FOO є одним з доменів у розділі [sssd]. У прикладі продемонстровано лише налаштування розпізнавання аз допомогою Kerberos, там не вказано інструменту обробки профілів.

[domain/FOO]
auth_provider = krb5
krb5_server = 192.168.1.1
krb5_realm = EXAMPLE.COM

ТАКОЖ ПЕРЕГЛЯНЬТЕ

sssd(8), sssd.conf(5), sssd-ldap(5), sssd-ldap-attributes(5), sssd-krb5(5), sssd-simple(5), sssd-ipa(5), sssd-ad(5), sssd-files(5), sssd-sudo(5), sssd-session-recording(5), sss_cache(8), sss_debuglevel(8), sss_obfuscate(8), sss_seed(8), sssd_krb5_locator_plugin(8), sss_ssh_authorizedkeys(8), sss_ssh_knownhostsproxy(8), sssd-ifp(5), pam_sss(8). sss_rpcidmapd(5)

Основна гілка розробки SSSD — https://pagure.io/SSSD/sssd/

04/02/2024 SSSD