Получить билет kerberos linux

Домен/Kerberos

Kerberos — сетевой протокол аутентификации, позволяющий передавать данные через незащищённые сети для безопасной идентификации. Более подробно узнать об этом протоколе можете в статье про Kerberos на Wikipedia. В домене ALT Linux этот протокол занимает важное место, так как обеспечивает инфраструктуру для аутентификации пользователей (для входа в систему, для использования сетевых ресурсов по протоколу SMB и доступа в Интернет через прокси-сервер).

Сервер аутентификации выполняет одну функцию: получает запрос, содержащий имя клиента, запрашивающего аутентификацию, и возвращает ему зашифрованный TGT (Ticket Granting Ticket, билет для получения билета). Затем пользователь может использовать этот TGT для запроса дальнейших билетов на другие службы. Часто специалисты билет называют «тикетом».

С практической точки зрения нас интересуют нюансы использования и отладки Kerberos.

Проверка работы сервера

Итак, при создании ALT-домена настраивается также и служба Kerberos на сервере krb5kdc . Основной её чертой является крайняя немногословность (по соображениям безопасности), что затрудняет отладку.

В модуле «Домен» веб-интерфейса показывается текущее состояние в том числе и службы Kerberos. Если всё в порядке, то показывается

Альтернативный способ получить статус домена:

# alterator-cmdline /net-domain action read domain:test.altlinux resolver:OK access:OK ldap:OK kdc:OK smb:OK (TEST.ALTLINUX) dhcpd:OK master:#t

В ALT Linux Kerberos хранит все свои данные в LDAP. Поэтому для успешной работы Kerberos требуется как запуск сервера LDAP slapd , так и заполнение структуры базы для Kerberos (при проверке в LDAP ищутся записи класса krbRealmContainer ).

Если служба krb5kdc не запущена, то попробуйте запустить её вручную:

Настройка сервера Kerberos (KDC) осуществляется в файле /var/lib/kerberos/krb5kdc/kdc.conf

Там же видно, что журналы kdc и admin_server прописываются в секции [logging] и через syslogd попадают в файл /var/log/messages .

Внимание! Если служба krb5kdc не может быть запущена из-за того, что записи в LDAP не созданы (такое случалось на Шестой платформе, когда домен создавался до того, как настраивался сервер DHCP; в Седьмой платформе это исправлено), то нужно настроить DHCP и попробовать создать домен с другим именем.

Читайте также:  Install ruby and rails on linux

Принципалы (пользователи)

В Kerberos билеты (тикеты) выдаются только членам профсоюза зарегистрированным принципалам. Это могут быть как пользователи, так и службы. При создании домена создаются и принципалы поддерживаемых служб. В базу Kerberos пользователи добавляются через веб-интерфейс (раздел «Пользователи») или из командной строки в программе ldap-useradd.

Для заведения пользователей и в базе Kerberos в файле /etc/sysconfig/system должна быть указана роль сервера master:

Проверить, заведён ли пользователь можно программой kadmin.local .

kadmin.local

Проверка заведённых принципалов:

# kadmin.local -q 'listprincs *' Authenticating as principal root/admin@TEST.ALTLINUX with password. K/M@TEST.ALTLINUX krbtgt/TEST.ALTLINUX@TEST.ALTLINUX kadmin/admin@TEST.ALTLINUX kadmin/changepw@TEST.ALTLINUX kadmin/history@TEST.ALTLINUX kadmin/main.test.altlinux@TEST.ALTLINUX nfs/main.test.altlinux@TEST.ALTLINUX cifs/main.test.altlinux@TEST.ALTLINUX host/main.test.altlinux@TEST.ALTLINUX pop3/main.test.altlinux@TEST.ALTLINUX http/main.test.altlinux@TEST.ALTLINUX HTTP/main.test.altlinux@TEST.ALTLINUX pop/main.test.altlinux@TEST.ALTLINUX imap/main.test.altlinux@TEST.ALTLINUX smtp/main.test.altlinux@TEST.ALTLINUX cas@TEST.ALTLINUX l1@TEST.ALTLINUX admin@TEST.ALTLINUX tt@TEST.ALTLINUX karpov_d@TEST.ALTLINUX ldap/main.test.altlinux@TEST.ALTLINUX

Обратите внимание, выводятся как обычные пользователи, так и службы. Последние идут с FQDN (полным доменным именем) сервера, указанным через / от названия службы.

  • kadmin.local работает и при выключенной службе krb5kdc .
  • вы можете запустить kadmin.local без параметров и указывать команды прямо в появившейся командной строке
  • перечень команд можно посмотреть в man kadmin.local
  • команда listprinc может указываться с шаблоном. Например
# kadmin.local -q 'listprincs cas*'

Authenticating as principal root/admin@TEST.ALTLINUX with password. cas@TEST.ALTLINUX

# . alterator-kdc-princ-functions # addprinc princ Authenticating as principal root/admin@TEST.ALTLINUX with password. WARNING: no policy specified for princ@TEST.ALTLINUX; defaulting to no policy Principal "princ@TEST.ALTLINUX" created.

Вообще рекомендуется использовать функции alterator-kdc-princ-functions.

Далее проверяем заведённого пользователя (пусть у нас есть принципал cas):

# getprinc cas Authenticating as principal root/admin@TEST.ALTLINUX with password. Principal: cas@TEST.ALTLINUX Expiration date: [never] Last password change: Thu Nov 08 11:52:45 MSK 2012 Password expiration date: [none] Maximum ticket life: 12 days 12:00:00 Maximum renewable life: 0 days 00:00:00 Last modified: Thu Nov 08 11:52:45 MSK 2012 (root/admin@TEST.ALTLINUX) Last successful authentication: [never] Last failed authentication: [never] Failed password attempts: 0 Number of keys: 4 Key: vno 3, ArcFour with HMAC/md5, no salt Key: vno 3, DES cbc mode with CRC-32, no salt Key: vno 3, Triple DES cbc mode raw, no salt Key: vno 3, DES cbc mode with CRC-32, AFS version 3 Attributes: Policy: [none]

И смена пароля у принципала Kerberos:

# changepw cas 1234 Authenticating as principal root/admin@TEST.ALTLINUX with password. Enter password for principal "cas": Re-enter password for principal "cas": Password for "cas@TEST.ALTLINUX" changed.

Проверка получения билета

Для использования утилит работы с билетами Kerberos на стороне клиента необходимо установить пакет krb5-kinit .

Запросить билет у Kerberos

$ kinit cas Password for cas@TEST.ALTLINUX:

Укажите пароль и нажмите Enter

Показ полученных билетов

$ klist Ticket cache: FILE:/tmp/krb5cc_500 Default principal: cas@TEST.ALTLINUX Valid starting Expires Service principal 02/28/13 08:31:26 03/01/13 08:31:25 krbtgt/TEST.ALTLINUX@TEST.ALTLINUX

Обратите внимание, что билет для службы krbtgt выдан на сутки. Как управлять сроком выдаваемого билета и его обновлением, будет рассказано ниже.

Очистить локальный кэш билетов

Синхронизация времени

Одним из основных требований успешного использования Kerberos является обеспечение одинакового времени на сервере и клиенте. В рамках ALT-домена эта задача решена использованием синхронизации по RFC 867. Для этого на сервере включается через xinetd daytime-tcp:

# chkconfig --list | grep daytime-tcp daytime-tcp: вкл

А на клиенте — служба settime-rfc867 :

chkconfig settime-rfc867 on service settime-rfc867 start

Нюансы работы

Увеличиваем срок выдаваемого билета

Тикет Kerberos по умолчанию выдаётся не более чем на 1 сутки. Если хотите выдавать тикет больше, чем на сутки, пропишите:

Использование старых версий Kerberos с новыми

В новых версиях Kerberos слабые алгоритмы (например, des-cbc-crc:afs3 ) по умолчанию запрещены к использованию. А на старых системах (клиентах или серверах на Пятой или Шестой платформе) они используются. Чтобы включить их поддержку, на новой системе пропишите в раздел [libdefaults] файла /etc/krb5.conf строку

Без этого с билетами Kerberos (и, как следствие с монтированием каталогов и доступом к прокси-серверу) будут проблемы.

Ошибка запуска службы krb5kdc

Если в журнале при запуске службы krb5kdc появляется ошибка:

preauth pkinit failed to initialize: No realms configured correctly for pkinit support

то это означает, что сервер LDAP ( slapd ) ещё не успел проинициализироваться для доступа krb5kdc. Увеличьте уровень загрузки службы krb5kdc с 40 до 41 (между запуском этих служб появится служба anacron ):

# subst 's/chkconfig: 345 40 /chkconfig: 345 41 /' /etc/init.d/krb5kdc # chkconfig krb5kdc on

Исправлено в krb5-kdc с версии 1.11.2-alt3

Вход по билету

Источник

Настройка Kerberos-аутентификации для Linux

Настройки kerberos-аутентификации под Linux отличаются в зависимости от дистрибутива. В таблице представлены пакеты, которые необходимо установить для настройки аутентификации.

RHEL/ CentOS/ Fedora Debian/ Ubuntu/ Astra Alt
krb5-workstation
krb5-libs
krb5-pkinit
pam_krb5
sssd-krb5
sssd-krb5-common
gssntlmssp
krb5-user
krb5-config
krb5-pkinit
sssd-krb5
sssd-krb5-common
gss-ntlmssp
krb5-kinit
pam_krb5
sssd-krb5
sssd-krb5-common
gssntlmssp

Настройка подключения к серверу Kerberos

Чтобы настроить подключение к серверу Kerberos, внесите изменения в файл «/etc/krb5.conf»:

  1. В секции [libdefaults] укажите:
    • allow_weak_crypto = true
    • default_ccache_name = FILE:/home/%/krb5cc
    • default_tgs_enctypes = rc4-hmac
    • default_tkt_enctypes = rc4-hmac
    • permitted_enctypes = rc4-hmac
    • default_realm = название_домена_в_котором_находится_сервер_Kerberos_в_верхнем_регистре (например, default_realm = V2016.TESTINFOMAXIMUM.COM )

    Примечания:

    1. Если на сервере Kerberos включено другое шифрование, тогда его нужно указать вместо rc4-hmac.
    2. Если это шифрование относится к стойким, то параметр allow_weak_crypto можно поставить в false.
    • имя_домена = имя_домена_в_верхнем_регистре
    • имя_домена_с_сточкой_впереди = имя_домена_в_верхнем_регистре
    • [domain_realm]
    • v2016.testinfomaximum.com = V2016.TESTINFOMAXIMUM.COM
    • .v2016.testinfomaximum.com = V2016.TESTINFOMAXIMUM.COM
    • kinit пользователь_под_которым_будем_входить_в_систему@домен_в_верхнем_регистре
    • kinit SuperUser@V2016.TESTINFOMAXIMUM.COM

    После ввода пароля создается билет Kerberos, по которому можно будет входить в систему. Билет имеет время жизни, которое можно установить в «krb5.conf» в секции [libdefaults] (например, ticket_lifetime = 24h) или при вызове kinit (добавив перед именем пользователя ключ -l от времени жизни). После истечения времени жизни билет необходимо пересоздавать командой kinit.

    При использовании стойких шифров сервер Kerberos (KDC) добавляет к паролю дополнительные символы («соль»). В качестве «соли» Kerberos использует имя домена, объединённое с именем сервера. Клиент Kerberos под Linux в качестве «соли» по умолчанию использует имя домена, объединённое с именем сотрудника, под которым необходимо залогиниться. Таким образом, при использовании стойкого шифрования не удаётся наладить связь между KDC и клиентом, так как пароли оказываются разными. Чтобы избежать данной проблемы, мы советуем задать в клиенте Kerberos шифрование rca4-hmac.

    Настройки браузеров

    Firefox

    Чтобы настроить браузер Firefox:

    1. На вкладке about:config найдите все параметры со словом negotiate.
    2. Установите в true:
      • network.negotiate-auth.allow-non-fqdn ;
      • network.negotiate-auth.allow-proxies ;
      • network.negotiate-auth.using-native-gsslib .
    3. В параметрах network.negotiate-auth.delegation-uris и network.negotiate-auth.trusted-uris введите имя компьютера, на котором запущен сервер, с точкой вначале. Например:
      • .base2016.v2016.testinfomaximum.com

    Active Directory в браузере FireFox не работает со встроенной библиотекой обработки GSS-API. Инструкция по решению данной проблемы представлена на странице Настройка Kerberos-аутентификации для Firefox.

    Chrome/Chromium

    Чтобы настроить браузеры Chrome/Chromium, в директории /etc/chromium/policies/managed (или /etc/chromium-browser/policies/managed) создайте json-файл с произвольным именем (например, kerberos.json):

    Этот файл настроен на принятие любых адресов для использования Kerberos. Можно заменить «*» на конкретное доменное имя сервера.

    Вход в систему

    После создания билета и настройки браузера вход в систему осуществляется через нажатие кнопки Войти с помощью Active Directory. При этом ни имя, ни пароль дополнительно не запрашиваются (запрос пароля происходит в процессе создания билета Kerberos).

    Источник

Оцените статью
Adblock
detector