Для контроля доступа к Kerberos используется основной
ключ (master key), который по сути представляет собой пароль и хранится в stash-файле. Stash-файл — это специальный файл, который читает сервер при запуске и определяет, разрешено ли его выполнение. Если stash-файл отсутствует, основной ключ необходимо вручную вводить при запуске сервера.
Поскольку stash-файл содержит чрезвычайно важную информацию, он должен храниться на том же диске, что и KDC, и быть доступным для чтения только пользователю
root
. Создавать резервную копию этого файла можно лишь в том случае, если носитель информации будет храниться в надежном месте. При выборе основного ключа следует руководствоваться теми же правилами, что и при выборе пароля: в качестве основного ключа нельзя использовать слово ни одного из существующих языков, его нельзя создавать на основе каких-либо данных, которые злоумышленник может узнать из официальных источников. В основном ключе должны присутствовать символы верхнего и нижнего регистра, цифры и знаки пунктуации. Ключ должен напоминать случайный набор символов и в то же время достаточно легко запоминаться. Основу ключа могут составлять начальные буквы слов некоторой фразы. Например, из фразы "yesterday I went to the dentist" формируется последовательность
yiwttd
. Изменяя случайным образом регистр символов и добавляя цифры и знаки пунктуации, можно получить набор знаков
yi9Wt%Td
, который вполне подходит для использования в качестве основного ключа.
Для создания основного ключа и записи его в stash-файл используется команда
kdb5_util
.
# kdb5_util create -r THREEROOMCO.COM -s
Initializing database '/var/kerberos/krb5kdc/principal' for
realm 'THREEROOMCO.COM',
master key name 'K/M@THREEROOMCO.COM'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:
Re-enter KDC database master key to verify:
На заметку
Из соображений безопасности символы, вводимые в ответ на приглашение, не отображаются на экране.
В процессе выполнения утилита
kdb5_util
создает и инициализирует несколько файлов. Эти файлы помещаются в каталог
/var/kerberos/krb5kdc
либо в другой каталог, используемый системой Kerberos, например в
/usr/local/var/krb5kdc
. Ниже приведен перечень файлов, создаваемых с помощью утилиты
kdb5_util
.
• Stash-файл с именем
.k5.имя_области
или
.k5stash
.
• Файлы
principal
и
principal.ok
, содержащие базу данных Kerberos. (В некоторых системах файл
principal
называется
principal.db
.)
• Файлы
principal.kadm5
и
principal.kadm5.lock
, предназначенные для администрирования Kerberos.
Если вы по каким-то причинам не хотите создавать stash-файл, то, вызывая
kdb5_util
, не надо указывать опцию -
s
. В этом случае при каждом запуске сервера Kerberos придется задавать основной ключ.
Администрирование области
Отредактировав конфигурационные файлы Kerberos и вызвав
kdb5_util
для создания основного ключа и инициализации базы данных Kerberos, можно приступать к администрированию области. Этот процесс в основном сводится к определению принципалов. Для выполнения действий по добавлению принципалов необходимо обладать полномочиями администратора.
Определение базовых ACL
Информация о принципалах Kerberos хранится в формате ACL (Access Control Lists — списки контроля доступа) в файле, имя которого определяет запись
acl_file
в составе
kdc.conf
. Этот файл содержит строки, представленные в следующем формате:
Принципал_Kerberos Полномочия Целевой_принципал
На
заметку
Несмотря на то что в ACL Kerberos и ACL для файловой системы представляют механизмы контроля доступа, они несколько отличаются друг от друга. ACL файловой системы определяют, кто имеет право доступа к файлам. ACL Kerberos предоставляют права модификации базы данных Kerberos. ACL Kerberos не зависят от средств поддержки ACL файловой системы.
Первое поле (Принципал Kerberos) содержит идентификатор принципала (правила формирования идентификатора принципала были рассмотрены ранее). Любой компонент идентификатора можно заменить символом "
*
". Например, имя
*/admin@THREEROOMCO.СОМ
соответствует любой основе для экземпляра
admin
и области
THREEROOMCO.СОМ
. Подобное определение позволяет предоставить доступ к KDC всем администраторам.
Второе поле (Полномочия) — это код ACL, соответствующего принципалу. Типы полномочий задаются с помощью односимвольных кодов. Назначение символов описано в табл. 6.1. Объединяя разные коды, можно задать различные типы доступа. Например, код
ali
означает, что принципал может добавлять пользователей, выводить списки принципалов и передавать запросы базе данных.
Таблица 6.1. Коды полномочий в файле ACL
Код
Описание
а
Позволяет добавлять принципалов или политики
А
Запрещает добавлять принципалов или политики
d
Позволяет удалять принципалов или политики
D
Запрещает удалять принципалов или политики
m
Позволяет модифицировать принципалов или политики
M
Запрещает модифицировать принципалов или политики
с
Позволяет изменять пароли принципалов
С
Запрещает изменять пароли принципалов
i
Позволяет передавать запросы базе данных
I
Запрещает передавать запросы базе данных
1
Позволяет выводить списки принципалов или политик из базы данных
L
Запрещает выводить списки принципалов или политик из базы данных
x
или
*
Признак групповой операции
Последнее поле (Целевой принципал) может отсутствовать. Оно определяет имена принципалов, к которыми применяются заданные полномочия. Например, вы можете ограничить возможности пользователя по доступу и модификации прав конкретных принципалов. Как и при определении принципала Kerberos, в идентификаторе целевого принципала можно использовать символ "
*
".
Рассмотрим в качестве примера следующую запись:
*/admin@THREEROOMCO.COM *
Эта запись предоставляет всем принципалам экземпляра
admin
полный доступ к базе данных Kerberos. Подобная запись включается в файл по умолчанию. Первое, что надо сделать, — модифицировать запись так, чтобы она соответствовала нужной вам области.
Создание принципалов
Для администрирования базы пользователей Kerberos применяются программы
kadmin
и
kadmin.local
. Программа
kadmin
позволяет администрировать KDC с удаленного компьютера; она организует обмен шифрованными сообщениями. Программа
kadmin.local
дает возможность модифицировать базу данных без применения сетевых средств. Вначале необходимо с помощью
kadmin.local
создать хотя бы одного пользователя, обладающего правами администратора, затем можно использовать
kadmin
для работы с удаленного узла. Очевидно, что удаленное администрирование можно осуществлять только в том случае, если на узле присутствуют специализированные серверы Kerberos, предназначенные для выполнения подобных задач.