Родерик Смит - Сетевые средства Linux
При настройке DNS-сервера целесообразно создать записи CNAME, определив с их помощью имена узлов, указанные в krb5.conf и в других конфигурационных файлах. Это поможет вам быстро ввести в строй резервный KDC, расположенный на другом компьютере, не редактируя конфигурационные файлы. Кроме того, для обращения к KDC можно использовать виртуальный IP-адрес. В этом случае компьютер, поддерживающий протокол NAT (Network Address Translation — преобразование сетевых адресов), определяется на DNS-сервере как KDC, но при обращении к нему он перенаправляет запрос тому компьютеру, на котором размещается реальный KDC. Это также позволяет перемещать KDC с одного компьютера на другой, не изменяя записи DNS.
Редактирование файла kdc.confВ файле kdc.conf содержатся те же записи, что и в файле krb5.conf. Пример содержимого файла kdc.conf приведен в листинге 6.2. Информация об областях Kerberos помещается в раздел [realms]. Редактируя файл kdc.conf, необходимо обратить внимание на имя области, так как во многих конфигурационных файлах по умолчанию используется имя области EXAMPLE.COM. В разделе [realms] также содержатся записи, в которых указываются типы ключей, поддерживаемых в данной области. Эти записи можно изменять только в том случае, если вы ясно представляете себе последствия таких изменений. В разделе [kdcdefaults] указаны дополнительные конфигурационные файлы.
Листинг 6.2. Пример файла kdc.conf
[kdcdefaults]
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
[realms]
THREEROOMCO.COM = {
master_key_type = des-cbc-crc
supported_enctypes = des-cbc-crc:normal des3-cbc-raw:normal
des3-cbc-shal:normal des-cbc-crc:v4 des-cbc-crc:afs3
}
Создание основного ключа
Для контроля доступа к 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/[email protected]'
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) содержит идентификатор принципала (правила формирования идентификатора принципала были рассмотрены ранее). Любой компонент идентификатора можно заменить символом "*". Например, имя */[email protected]СОМ соответствует любой основе для экземпляра admin и области THREEROOMCO.СОМ. Подобное определение позволяет предоставить доступ к KDC всем администраторам.
Второе поле (Полномочия) — это код ACL, соответствующего принципалу. Типы полномочий задаются с помощью односимвольных кодов. Назначение символов описано в табл. 6.1. Объединяя разные коды, можно задать различные типы доступа. Например, код ali означает, что принципал может добавлять пользователей, выводить списки принципалов и передавать запросы базе данных.
Таблица 6.1. Коды полномочий в файле ACL
Код Описание а Позволяет добавлять принципалов или политики А Запрещает добавлять принципалов или политики d Позволяет удалять принципалов или политики D Запрещает удалять принципалов или политики m Позволяет модифицировать принципалов или политики M Запрещает модифицировать принципалов или политики с Позволяет изменять пароли принципалов С Запрещает изменять пароли принципалов i Позволяет передавать запросы базе данных I Запрещает передавать запросы базе данных 1 Позволяет выводить списки принципалов или политик из базы данных L Запрещает выводить списки принципалов или политик из базы данных x или * Признак групповой операцииПоследнее поле (Целевой принципал) может отсутствовать. Оно определяет имена принципалов, к которыми применяются заданные полномочия. Например, вы можете ограничить возможности пользователя по доступу и модификации прав конкретных принципалов. Как и при определении принципала Kerberos, в идентификаторе целевого принципала можно использовать символ "*".