Содержание

Перейти к концу метаданных
Переход к началу метаданных


Kerberos — сетевая служба аутентификации, основанная на одноименном протоколе аутентификации,
предлагающем механизм взаимной аутентификации клиента и сервера перед установлением связи между ними с учётом того факта,
что начальный обмен информацией  происходит в незащищенной среде, а передаваемые пакеты могут быть перехвачены и модифицированы.

Аутентификация через Kerberos является фактическим стандартом аутентификации доменных пользователей, и применяется в Windows Active Directiry, Samba AD DC, FreeIPA.

В Linux-системах существуют две основные реализаций Kerberos - MIT и Heimdal. В ASTRALINUX (и далее в примерах этой статьи) используется MIT Kerberos.

При описании работы Kerberos применяются некоторые специфические термины:

  • Область (realm) - область (области), обслуживаемые сервисом. Примерно соответствует термину "домен";
  • Принципал - учетная запись Kerberos, с соответствующим набором прав. Примерно соответствет термину "пользователь". Но, при этом, пользователь может получать разные наборы прав от Керберос (разные принципалы).

Подготовка к установке

Все серверы и клиенты, участвующие в работе Kerberos, должны иметь возможность коммуницировать друг с другом, и иметь точные показания системных часов.

Далее в примере используются

  • условное имя домена astradomain.ru;
  • условное имя севрера kdc.astradomain.ru. 

В терминологии Kerberos домену соответствует область (realm), которая обозначается заглавными буквами. Для домена astradomain.ru это будет область ASTRADOMAIN.RU

Имена и доступность компьютеров 

Сервис Kerberos следует устанавливать в сети, в которой уже настроена служба DNS. Каждому серверу, входящему в область Kerberos, должно быть присвоено Полное Квалифицированное Доменное Имя (Fully Qualified Domain Name, FQDN).
Настроенный DNS-сервис должен обеспечивать прямое и обратное (реверсивное) разрешение FQDN (для отключения реверсивного разрешения можно в файле конфигурации клиента krb5.conf установить переменной rdns начение false)

Проверить настройку прямого и обратного разрешения имён можно командами:

nslookup <FQDN_имя_сервера>
nslookup <IP_адрес_сервера>

(для использования команды nslookup следует установить пакет dnsutils: apt install dnsutils)

Для проверки доступности компьютеров можно использовать команду ping:

ping kerberos.astradomain.ru

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

Протокол Kerberos требует соответствия показаний часов всех клиентов и серверов, и при рассинхронизации часов аутентификация становится невозможной.
Простой и стандартный путь обеспечения синхронизации - использование сервиса Network Time Protocol (NTP).

Установка пакета (сервер)

Пакеты сервиса Kerberos входят в стандартные дистрибутивы ОСОН Орёл и ОССН Смоленск, и могут быть установлены с помощью графического менеджера пакетов,
или из командной строки командой

apt install krb5-kdc krb5-admin-server

При установке выдаётся предупреждение о том, что пакет не настроен, которое пока можно проигнорировать.

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

Настройка пакета (сервер Kerberos)

При установке пакета будет создан файл конфигурации сервиса /etc/krb5kdc/kdc.conf со стандартным содержимым, в котором автоматически будет указано имя области Kerberos, полученное из FQDN сервера, на котором выполняется установка:

[kdcdefaults]
kdc_ports = 750,88

[realms]
ASTRADOMAIN.RU = {
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
kdc_ports = 750,88
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
master_key_type = des3-hmac-sha1
#supported_enctypes = aes256-cts:normal aes128-cts:normal
default_principal_flags = +preauth
}

Kerberos использует для контроля доступа к администрированию сервиса Списки Управления Доступом (Access Control List, ACL) .
По умолчанию, список располагается в файле /etc/krb5kdc/kadm5.acl.

Для примера, создадим файл /etc/krb5kdc/kadm5.acl, дающий неограниченные права любому принципалу, чьё  имя заканчивается на /admin:

*/admin@ASTRADOMAIN.RU *

И создадим новую область Kerberos командой:

krb5_newrealm

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

Далее, для выполнения задач по администрированию сервиса Kerberos нужно создать принципала с правами администратора.
Для этого используем инструмент командной строки kadmin.local, предназначенный для администрировния Kerberos на локальном компьютере.

При использовании инструмента kadmin.local подразумевается, что этот инструмент вызывается с защищенного сервера Kerberos,
поэтому инструмент не требует логинов и паролей, и автоматически получает все полномочия для администрирования сервиса Kerberos.

Инструмент вызывается из командной строки командой 

kadmin.local

После вызова инструмента можно ввести симовл "вопросительный знак", в ответ на это будет выдана подсказка по списку команд.

Добавим нового принципала admin/admin командой addprinc:

kadmin.local: addprinc admin/admin

После ввода команды будет запрошен пароль для создаваемого принципала.

Выход из инструмента kadmin.local осуществляется командой quit.

После создания принципала admin/admin его можно использовать для администрирования сервера Kerberos с удалённых компьютеров с помощью инструмента командной строки  kadmin.
Этот инструмент аналогичен инстрменту kadmin.local, однако рассчитан на удалённое подключение, и требует авторизации пользователя через указание принципала и ввод пароля:

kadmin -p admin/admin

Настройка DNS для автоматизации подключения клиентов

Для автоматического получения клиентами адреса сервера Kerberos можно использовать специальные настройки сервера DNS: служебные записи (SRV-записи).
Пример таких записей для службы Kerberos см. в статье про сервер DNS

Установка пакетов (клиент)

Клиентский пакет Kerberos krb5-user входит в дистрибутивы ОСОН Орёл и ОССН Смоленск, но по умолчанию не устанавливается. Пакет может быть установлен с помощью графического менеджера пакетов
или из командной строки командой

apt install krb5-user

При установке пакета krb5-user, кроме самого пакета, автоматически будет установлен пакет krb5-config для настройки клиента

Настройка клиентов

Настройка клиента Kerberos выполняется командой

dpkg-reconfigure krb5-config

При этом команда

  • Попросит указать имя домена (в нашем примере - ASTRADOMAIN.RU);
  • Задаст вопрос о необходимости указать сервер(ы) Kerberos в файле конфигурации клиента /etc/krb5.conf.
    Если ответить "да", то программа попросит ввести имена сервера (серверов) Kerberos 
    Если DNS уже настроен (см "Настройка DNS для автоматизации подключения клиентов"), можно просто ответить "нет".

После завершения работы программы настройки результат настройки можно проверить получением принципала.
Команда kinit должна выполняться без ошибок:

kinit admin/admin

Проверить содержимое полученного принципала можно командой

klist

Настройка авторизации клиентов через Kerberos

Для обеспечения возможности авторизации пользователей через Kerberos требуется дополнительно установить пакет libpam-krb5:

apt install libpam-krb5

После установки пакета необходимые модули авторизации будут автоматически добавлены в стек авторизации PAM.


  • Нет меток