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

Основная настройка сервера Kerberos

РЕКОМЕНДАЦИЯ
Приведенная ниже инструкция может быть использована также для замены основного и дополнительного KDC.
  1. Установите Kerberos на сервер, выполнив команду:

    $ sudo yum install -y krb5-server pam_krb5 krb5-workstation xinetd
  2. Отредактируйте и внесите в файл /etc/krb5.conf следующие изменения:

    krb5.conf
    # 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 = ADREALM.IO
    default_ccache_name = KEYRING:persistent:%{uid}
    [realms]
    ADREALM.IO = {
    kdc = kerberos-primary-host.ru-central1.internal #primary KDC host
    kdc = kerberos-secondary-host.ru-central1.internal #secondary KDC host
    admin_server = kerberos-primary-host.ru-central1.internal
    }
    [domain_realm]
    .adrealm.io = ADREALM.IO
    adrealm.io  = ADREALM.IO
  3. Отредактируйте и внесите в файл /var/kerberos/krb5kdc/kdc.conf следующие изменения:

    kdc.conf
    [kdcdefaults]
    kdc_ports = 88
    kdc_tcp_ports = 88
    [realms]
    ADREALM.IO = {
    #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
    }
  4. Отредактируйте и внесите в файл /var/keberos/krb5kdc/kadm5.acl следующие изменения:

    kadm5.acl
    */admin@ADREALM.IO *
  5. Используйте утилиту kdb5_util для настройки базы данных Kerberos.

    $ sudo kdb5_util create -s -r ADREALM.IO
  6. Запомните пароль Master KDC и запустите сервис, выполнив команды:

    $ sudo systemctl enable kadmin
    $ sudo systemctl enable krb5kdc
    $ sudo systemctl start kadmin
    $ sudo systemctl start krb5kdc
  7. Создайте новые хост-принципалы для каждого экземпляра KDC. Используя консоль администратора Kerberos, выполните команды:

    $ sudo kadmin.local
    $ addprinc root/admin
    $ addprinc -randkey host/kerberos-primary-host.ru-central1.internal
    $ addprinc -randkey host/kerberos-secondary-host.ru-central1.internal
    $ ktadd host/kerberos-primary-host.ru-central1.internal
  8. На главном сервере Kerberos сгенерируйте файл keytab, который будет использоваться для вторичного сервера Kerberos.

    $ ktadd -k /tmp/kerberos-secondary-host.keytab host/kerberos-secondary-host.ru-central1.internal

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

  1. Установите необходимые пакеты на второй сервер:

    $ sudo yum install -y krb5-server krb5-workstation xinetd
  2. В файле /etc/ssh/sshd_config раскомментируйте следующую строку для включения аутентификации по паролю.

    PasswordAuthentication yes
  3. Перезапустите сервис:

    $ sudo systemctl restart sshd
  4. Скопируйте файл keytab вторичного сервера, который был создан ранее, на вторичный узел KDC.

    $ sudo scp /tmp/kerberos-secondary-host.keytab <user>@<ip address>:/tmp/
  5. Находясь на вторичном сервере, переместите файл keytab в каталог /etc/ и переименуйте его.

    $ sudo cp /tmp/kerberos-secondary-host.keytab /etc/krb5.keytab
  6. База данных принципалов передается от главного KDC к репликам KDC с помощью демона kpropd. Необходимо указать принципалов, которым разрешено получать обновления дампов вторичного сервера Kerberos. Эти обновления содержат новую базу данных.

    Создайте файл kpropd.acl в каталоге мониторинга состояния KDC. Файл kpropd.acl содержит имена хостов принципалов для каждого KDC.

    $ sudo vi /var/kerberos/krb5kdc/kpropd.acl
  7. Добавьте следующие строки в файл kpropd.acl:

    host/kerberos-primary-host.ru-central1.internal@ADREALM.IO
    host/kerberos-secondary-host.ru-central1.internal@ADREALM.IO
    ПРИМЕЧАНИЕ
    Если предполагается, что первичный и вторичный KDC могут поменяться местами, необходимо указать адреса хостов всех серверов KDC в файле kpropd.acl на каждом KDC. В противном случае в файле kpropd.acl на репликах KDC необходимо указать только основной хост.
  8. Скопируйте следующие файлы с первичного узла KDC на вторичный узел KDC.

    • krb5.conf

    • kdc.conf

    • kadm5.acl

    • master key stash file

  9. Переместите файлы, которые были скопированы, в соответствующие каталоги. Структура файлов и каталогов должна быть точно такой же, как на основном KDC.

    РЕКОМЕНДАЦИЯ
    Файл kadm5.acl нужен для того, чтобы реплика могла взаимодействовать с основным KDC.
  10. На основном сервере выполните последовательно следующие команды:

    $ sudo scp /etc/krb5.conf <user>@<ip address>:/tmp/
    $ sudo scp /var/kerberos/krb5kdc/kdc.conf <user>@<ip address>:/tmp/
    $ sudo scp /var/kerberos/krb5kdc/kadm5.acl <user>@<ip address>:/tmp/
    $ sudo scp /var/kerberos/krb5kdc/.k5.ADREALM.IO <user>@<ip address>:/tmp/
    $ sudo scp /var/kerberos/krb5kdc/kpropd.acl <user>@<ip address>:/tmp/
  11. На вторичном сервере выполните последовательно следующие команды:

    $ sudo cp /tmp/krb5.conf /etc/
    $ sudo cp /tmp/kdc.conf /var/kerberos/krb5kdc/
    $ sudo cp /tmp/kadm5.acl /var/kerberos/krb5kdc/
    $ sudo cp /tmp/.k5.ADREALM.IO /var/kerberos/krb5kdc/
    $ sudo cp /tmp/kpropd.acl /var/kerberos/krb5kdc/
  12. Создайте конфигурационный файл /etc/xinetd.d/krb5_prop.

    /etc/xinetd.d/krb5_prop
    service krb5_prop
    
    {
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/kpropd
    only_from = 0.0.0.0/0
    log_on_success = PID HOST EXIT DURATION
    }
  13. На каждом KDC добавьте следующую строку в файл /etc/services:

    krb5_prop       754/tcp               # Kerberos replica propagation
  14. Выполните следующую команду:

    $ sudo systemctl restart xinetd
  15. Перед копированием базы данных создайте файл дампа базы данных на первичном KDC.

    $ sudo kdb5_util dump /var/kerberos/krb5kdc/slavedump
  16. Скопируйте базу данных в каждую реплику KDC:

    $ sudo kprop -f /var/kerberos/krb5kdc/slavedump kerberos-secondary-host.ru-central1.internal
    Database propagation to kerberos-secondary-host.ru-central.internal: SUCCEEDED
  17. Запустите KDC на вторичном узле:

    $ sudo systemctl enable krb5kdc
    $ sudo systemctl start krb5kdc
  18. Войдите в консоль admin.local и выполните команду listprincs для просмотра списка принципалов, чтобы убедиться, что список совпадает со списком на основном хосте.

Чтобы реализовать регулярную синхронизацию базы данных принципалов, необходимо создать cron-задачу. Пример такого скрипта доступен ниже:

#!/bin/sh

kdclist = "kerberos-primary-host.ru-central1.internal kerberos-secondary-host.ru-central1.internal"
kdb5_util dump /var/kerberos/krb5kdc/slavedump
for kdc in $kdclist
do
    kprop -f /var/kerberos/krb5kdc/slavedump $kdc
done
Пример настроек нескольких хостов KDC
Пример настроек нескольких хостов KDC
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней