Настройки сервера Kerberos
Основная настройка сервера Kerberos
РЕКОМЕНДАЦИЯ
Приведенная ниже инструкция может быть использована также для замены основного и дополнительного KDC.
|
-
Установите Kerberos на сервер, выполнив команду:
$ sudo yum install -y krb5-server pam_krb5 krb5-workstation xinetd
-
Отредактируйте и внесите в файл /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
-
Отредактируйте и внесите в файл /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 }
-
Отредактируйте и внесите в файл /var/keberos/krb5kdc/kadm5.acl следующие изменения:
kadm5.acl*/admin@ADREALM.IO *
-
Используйте утилиту
kdb5_util
для настройки базы данных Kerberos.$ sudo kdb5_util create -s -r ADREALM.IO
-
Запомните пароль Master KDC и запустите сервис, выполнив команды:
$ sudo systemctl enable kadmin $ sudo systemctl enable krb5kdc $ sudo systemctl start kadmin $ sudo systemctl start krb5kdc
-
Создайте новые хост-принципалы для каждого экземпляра 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
-
На главном сервере Kerberos сгенерируйте файл keytab, который будет использоваться для вторичного сервера Kerberos.
$ ktadd -k /tmp/kerberos-secondary-host.keytab host/kerberos-secondary-host.ru-central1.internal
Настройка вторичного сервера Kerberos для обеспечения высокой доступности
-
Установите необходимые пакеты на второй сервер:
$ sudo yum install -y krb5-server krb5-workstation xinetd
-
В файле /etc/ssh/sshd_config раскомментируйте следующую строку для включения аутентификации по паролю.
PasswordAuthentication yes
-
Перезапустите сервис:
$ sudo systemctl restart sshd
-
Скопируйте файл keytab вторичного сервера, который был создан ранее, на вторичный узел KDC.
$ sudo scp /tmp/kerberos-secondary-host.keytab <user>@<ip address>:/tmp/
-
Находясь на вторичном сервере, переместите файл keytab в каталог /etc/ и переименуйте его.
$ sudo cp /tmp/kerberos-secondary-host.keytab /etc/krb5.keytab
-
База данных принципалов передается от главного KDC к репликам KDC с помощью демона kpropd. Необходимо указать принципалов, которым разрешено получать обновления дампов вторичного сервера Kerberos. Эти обновления содержат новую базу данных.
Создайте файл kpropd.acl в каталоге мониторинга состояния KDC. Файл kpropd.acl содержит имена хостов принципалов для каждого KDC.
$ sudo vi /var/kerberos/krb5kdc/kpropd.acl
-
Добавьте следующие строки в файл 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 необходимо указать только основной хост. -
Скопируйте следующие файлы с первичного узла KDC на вторичный узел KDC.
-
krb5.conf
-
kdc.conf
-
kadm5.acl
-
master key stash file
-
-
Переместите файлы, которые были скопированы, в соответствующие каталоги. Структура файлов и каталогов должна быть точно такой же, как на основном KDC.
РЕКОМЕНДАЦИЯФайл kadm5.acl нужен для того, чтобы реплика могла взаимодействовать с основным KDC. -
На основном сервере выполните последовательно следующие команды:
$ 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/
-
На вторичном сервере выполните последовательно следующие команды:
$ 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/
-
Создайте конфигурационный файл /etc/xinetd.d/krb5_prop.
/etc/xinetd.d/krb5_propservice 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 }
-
На каждом KDC добавьте следующую строку в файл /etc/services:
krb5_prop 754/tcp # Kerberos replica propagation
-
Выполните следующую команду:
$ sudo systemctl restart xinetd
-
Перед копированием базы данных создайте файл дампа базы данных на первичном KDC.
$ sudo kdb5_util dump /var/kerberos/krb5kdc/slavedump
-
Скопируйте базу данных в каждую реплику KDC:
$ sudo kprop -f /var/kerberos/krb5kdc/slavedump kerberos-secondary-host.ru-central1.internal
Database propagation to kerberos-secondary-host.ru-central.internal: SUCCEEDED
-
Запустите KDC на вторичном узле:
$ sudo systemctl enable krb5kdc $ sudo systemctl start krb5kdc
-
Войдите в консоль
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