Использование сервера MIT Kerberos

Настройка сервера Kerberos

ПРИМЕЧАНИЕ
  • Kerberos KDC может быть установлен на любом хосте, который имеет доступ к хосту с установленным ADCM (возможность подключения по FQDN).

  • Допускается также установить Kerberos KDC на одном хосте с ADCM.

В приведенном в данной статье примере Kerberos KDC устанавливается на хост dev-adcm-test.ru-central1.internal с операционной системой CentOS. На этом же хосте установлен ADCM.

  1. Установите Kerberos KDC на хост:

    $ sudo -i
    yum install krb5-libs krb5-server krb5-workstation
  2. Внесите изменения в файлы конфигурации.

    • В файле /var/kerberos/krb5kdc/kdc.conf замените realm на RU-CENTRAL1.INTERNAL:

      [kdcdefaults]
       kdc_ports = 88
       kdc_tcp_ports = 88
      
      [realms]
       RU-CENTRAL1.INTERNAL = {
        #master_key_type = aes256-cts
        acl_file = /var/kerberos/krb5kdc/kadm5.acl
        dict_file = /usr/share/dict/words
        admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
        supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
       }
    • В файле /etc/krb5.conf укажите значение параметра default_realm, а также заполните разделы [realms] и [domain_realm]:

      # Configuration snippets may be placed in this directory as well
      includedir /etc/krb5.conf.d/
      
      [logging]
       default = FILE:/var/log/krb5libs.log
       kdc = FILE:/var/log/krb5kdc.log
       admin_server = FILE:/var/log/kadmind.log
      
      [libdefaults]
       dns_lookup_realm = false
       ticket_lifetime = 24h
       renew_lifetime = 7d
       forwardable = true
       rdns = false
       pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
       default_realm = RU-CENTRAL1.INTERNAL
       default_ccache_name = KEYRING:persistent:%{uid}
      
      [realms]
       RU-CENTRAL1.INTERNAL = {
        kdc = dev-adcm-test.ru-central1.internal
        admin_server = dev-adcm-test.ru-central1.internal
       }
      
      [domain_realm]
       .ru-central1.internal = RU-CENTRAL1.INTERNAL
       ru-central1.internal = RU-CENTRAL1.INTERNAL
    • Измените содержимое файла /var/kerberos/krb5kdc/kadm5.acl следующим образом, чтобы любой принципал /admin в области RU-CENTRAL1.INTERNAL имел все административные привилегии, кроме извлечения ключей:

      */admin@RU-CENTRAL1.INTERNAL    *

    Полное описание значений тегов для разделов данных файлов приведено в статях kdc.conf, krb5.conf и kadm5.acl документации MIT Kerberos.

  3. Создайте базу данных принципалов Kerberos с помощью утилиты kdb5_util:

    kdb5_util create -s -P P@ssw0rd
  4. Запустите сервисы Kerberos и KDC, выполнив поочередно следующие команды:

    systemctl start kadmin
    systemctl start krb5kdc

    Проверить статус запущенных сервисов можно с помощью команд:

    systemctl status kadmin
    systemctl status krb5kdc
  5. Создайте принципалы пользователей, используя консоль администратора Kerberos — kadmin.local.

    Имя принципала пользователя в базе данных Kerberos обычно имеет вид primary/instance@REALM, где:

    • primary — базовое имя пользователя (для успешной аутентификации в ADQM необходимо, чтобы это имя совпадало с именем пользователя ADQM, настроенного для использования Kerberos);

    • instance — необязательный компонент, квалифицирующий primary. Если primary — имя пользователя, то instance обычно не указывается или может использоваться, чтобы определить дополнительный принципал для пользователя (например, принципалы john@RU-CENTRAL1.INTERNAL и john/admin@RU-CENTRAL1.INTERNAL — отдельные принципалы с разными паролями и разрешениями).

    kadmin.local -q "add_principal -pw P@ssw0rd admin/admin"
    kadmin.local -q "add_principal -pw P@ssw0rd adqm_kerb"

    Полное описание функций интерфейса командной строки kadmin.local и применяемых опций приведены в статье kadmin документации MIT Kerberos.

Включение MIT Kerberos KDC на кластере ADQM

  1. В интерфейсе ADCM на странице Clusters выберите установленный и подготовленный кластер ADQM.

  2. Инициируйте включение Kerberos для кластера — нажмите на иконку Actions actions default dark actions default light и выберите действие Manage Kerberos.

    Включение Kerberos в кластере ADQM
    Включение Kerberos в кластере ADQM
  3. В открывшемся окне включите опцию Existing MIT KDC, заполните конфигурационные параметры в соответствии с ранее установленными настройками сервера Kerberos и нажмите Run.

    Параметры MIT KDC
    Параметры MIT KDC
  4. Дождитесь завершения активации Kerberos. Процесс и результат выполнения задачи Manage Kerberos отображается на странице Jobs.

    Процесс запуска Kerberos
    Процесс запуска Kerberos

После того, как Kerberos успешно установлен на кластере ADQM, соответствующие настройки появятся на странице конфигурации кластера (секция Kerberos) и сервиса ADQMDB (секция Kerberos configuration).

Настройки Kerberos в конфигурации кластера ADQM
Настройки Kerberos в конфигурации кластера ADQM
Настройки Kerberos в конфигурации сервиса ADQMDB
Настройки Kerberos в конфигурации сервиса ADQMDB

Проверка аутентификации пользователя через Kerberos

После успешной керберизации выполнение ADQM-команд на узлах кластера возможно только после получения соответствующего тикета Kerberos. Ниже приведен пример доступа к керберизованному кластеру:

  1. Создайте в ADQM пользователя, для которого существует принципал в базе данных Kerberos. Для этого используйте выражение IDENTIFIED WITH kerberos в запросе CREATE USER:

    CREATE USER adqm_kerb IDENTIFIED WITH kerberos;
  2. Создайте для принципала пользователя тикет Kerberos:

    $ kinit -V adqm_kerb@RU-CENTRAL1.INTERNAL

    Введите пароль:

    Password for adqm_kerb@RU-CENTRAL1.INTERNAL:

    Опции команды kinit описаны в статье kinit документации MIT Kerberos.

  3. Проверьте тикет:

    $ klist
    Ticket cache: FILE:/tmp/krb5cc_1000
    Default principal: adqm_kerb@RU-CENTRAL1.INTERNAL
    
    Valid starting       Expires              Service principal
    05/04/2023 07:13:58  05/05/2023 07:13:58  krbtgt/RU-CENTRAL1.INTERNAL@RU-CENTRAL1.INTERNAL
  4. Для проверки аутентификации через Kerberos отправьте в ADQM тестовую команду, используя утилиту curl с поддержкой механизма SPNEGO:

    $ echo "select currentUser()" | curl --negotiate -u : http://<host_name>:8123/ --data-binary @-

    Вывод на экран при успешной аутентификации:

adqm_kerb
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней