Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

  • Key Distribution Center (KDC) - хранилище информации о паролях пользователей.
  • Admin server - основной сервер kerberos. У нас KDC и admin server находятся на одной машине.
  • Realm - "среда", в которой производится аутентификация.
  • Principal - пользователь или сервис, участвующий в механизме аутентификации. Мы пока рассматриваем только пользователей.

Перед

...

настройкой

Центральной частью схемы аутентификации Kerberos является третья доверенная сторона - Key Distribution Center (KDC), которая является централизованным хранилище хранилищем информации о пользователях. Перед разворачиванием Kerberos, должен быть выбран сервер, который будет выполнять роль KDC. Физическая и сетевая безопасность критичны для этого сервера, так как его компрометация ведет к компрометации всего realm.   

...

Kerberos так же ожидает, что FQDN сервера является reverse-resolvable. Если выяснение доменного имени по IP недостпнонедоступно, то установите значение переменной rdns в значение false на клиентах в файле krb5.conf.

Note

Active Directory сильно зависит от DNS, поэтому весьма вероятно что ваш Active Directory Domain Controller уже имеет роль DNS. В этом случае убедитесь в том, что каждый сервер имеет свое FQDN перед выполнением тестов, описанных ниже в этом разделе.

Если сервер уже имеет назначенное FQDN, проверьте коректность обнаружение корректность обнаружения forward и reverse выполнив на клиенте следующие команды: 

...

Для проверки соединения между хостави хостами, выполните ping для каждого хоста по его FQDN: 

Code Block
languagebash
$ ping server.aktiv-test.ru
PING server.aktiv-test.ru (10.0.0.1) 56(84) bytes of data.
64 bytes from server.aktiv-test.ru (10.0.0.1): icmp_seq=1 ttl=128 time=0.176ms 

Вывод комнады команды ping показывает успешное определение IP адреса по FQDN, и простой ответ от сервера. Ответ от сервера является подтверждением того, что между хостом и сервером есть соединение.   

...

Протокол Kerberos требует синхронизации времени сервера и клиента: если системные часы клиентов и сревера сервера расходятся, то аутентификация не будет выполнена. Простейший способ синхронизировать системные часы - использование Network Time Protocol (NTP) сервера. Некоторый линуксы, например, Astra Linux 1.4 по-умолчанию синхронизует синхронизирует время с российскими NTP-серверами. Для настройки собственного NTP-сервера смотрите документацию на ваш дистрибутив (например, UbuntuTime для Ubuntu).   

...

Так же как и все остальные сетевые службы, Kerberos должен иметь возможность проходить через любые брандмауеры брандмауэры между хостами. Инструкция Kerberos System Administration Manual имеет детальное описание портов, которые необходимо открыть при настройке брандмауэров.

...

  • Установлены krb5-user, libpam-krb5, libpam-ccreds, auth-client-config, krb5-pkinit, opensc, libengine-pkcs11-openssl
  • default realm: AKTIV-TEST
  • сервера серверы (kdc, admin) указаны по IP-адресу (лучше указать их в /etc/hosts)

...

Code Block
languagebash
title/etc/krb5.conf
[domain_realm]
	.aktiv-test.ru = AKTIV-TEST
	aktiv-test.ru = AKTIV-TEST

...

Создать на сервере нового пользователя

Code Block
languagebash
$ sudo kadmin.local
# username = testuser
# password = test
kadmin.local:$ addprinc <username>
# ...
kadmin.local:$ quit

...

Code Block
languagebash
$ kinit <username>
...
$ klist
...
$ kdestroy

Клиент

Скачаем Загрузим rtengine для openssl из sdk и поместим в папку с энджинами

...

Code Block
languagebash
title/etc/krb5kdc/kdc.conf
[realms]
    AKTIV-TEST = {
        database_name = /var/lib/krb5kdc/principal
        admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
        acl_file = /etc/krb5kdc/kadm5.acl
        key_stash_file = /etc/krb5kdc/stash
        max_life = 10h 0m 0s
        max_renewable_life = 7d 0h 0m 0s
        master_key_type = des3-hmac-sha1
        supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
        default_principal_flags = +preauth
        pkinit_anchors = FILE:/etc/krb5/cacert.pem
        pkinit_identity = FILE:/etc/krb5/kdc.pem,/etc/krb5/kdckey.pem
    } 

...

Включим preauth для пользователя

Code Block
languagebash
$ sudo kadmin.local
$ kadmin.local$: modprinc +requires_preauth <username>

...

Code Block
languagebash
$ REALM=<realm>; export REALM
$ CLIENT=<username>; export CLIENT
$ openssl x509 -CAkey cakey.pem -CA cacert.pem -req -in client.req -extensions client_cert -extfile pkinit_extensions -out client.pem

...

Перезапустим сервер и KDC

Code Block
 $ /etc/init.d/krb5-admin-server restart
 $ /etc/init.d/krb5-kdc restart

...

Code Block
languagebash
$ kinit <username>

Примечание

Если по каким-то причинам не удалось аутентифицироваться, то можно узнать об причине неисправности с помощью

...

логирования. Для этого в файле

...

настройки /etc/krb5.conf и /etc/krb5kdc/kdc.conf.

Code Block
languagebash
[logging]
	default = FILE:/var/log/krb5.log
	kdc = FILE:/var/log/krb5kdc.log
	admin_server = FILE:/var/log/kadmin.log

При этом после этого нужно перезагрузить KDC с

...

помощью команд:

Code Block
 $ /etc/init.d/krb5-admin-server restart
 $ /etc/init.d/krb5-kdc restart