Руководство по Ubuntu Server



Pdf просмотр
страница5/16
Дата17.11.2016
Размер1.78 Mb.
Просмотров3721
Скачиваний3
ТипРуководство
1   2   3   4   5   6   7   8   9   ...   16

loginShell:
gecos:
description: User account title: Employee
Обратите внимание на опцию , использованную для атрибута sn.
Это заставит ldapadduser запросить у вас его значение.
В пакете имеются утилиты, которые не были рассмотрены здесь. Вот полный список:
ldaprenamemachine
5
ldapadduser
6
ldapdeleteuserfromgroup
7
ldapfinger
8
ldapid
9
ldapgid
10
ldapmodifyuser
11
ldaprenameuser
12
lsldap
13
ldapaddusertogroup
14
ldapsetpasswd
15
ldapinit
16
ldapaddgroup
17
ldapdeletegroup
18
ldapmodifygroup
19
ldapdeletemachine
20
ldaprenamegroup
21
ldapaddmachine
22 5
http://manpages.ubuntu.com/manpages/en/man1/ldaprenamemachine.1.html
6
http://manpages.ubuntu.com/manpages/en/man1/ldapadduser.1.html
7
http://manpages.ubuntu.com/manpages/en/man1/ldapdeleteuserfromgroup.1.html
8
http://manpages.ubuntu.com/manpages/en/man1/ldapfinger.1.html
9
http://manpages.ubuntu.com/manpages/en/man1/ldapid.1.html
10
http://manpages.ubuntu.com/manpages/en/man1/ldapgid.1.html
11
http://manpages.ubuntu.com/manpages/en/man1/ldapmodifyuser.1.html
12
http://manpages.ubuntu.com/manpages/en/man1/ldaprenameuser.1.html
13
http://manpages.ubuntu.com/manpages/en/man1/lsldap.1.html
14
http://manpages.ubuntu.com/manpages/en/man1/ldapaddusertogroup.1.html
15
http://manpages.ubuntu.com/manpages/en/man1/ldapsetpasswd.1.html
16
http://manpages.ubuntu.com/manpages/en/man1/ldapinit.1.html
17
http://manpages.ubuntu.com/manpages/en/man1/ldapaddgroup.1.html
18
http://manpages.ubuntu.com/manpages/en/man1/ldapdeletegroup.1.html
19
http://manpages.ubuntu.com/manpages/en/man1/ldapmodifygroup.1.html
20
http://manpages.ubuntu.com/manpages/en/man1/ldapdeletemachine.1.html
21
http://manpages.ubuntu.com/manpages/en/man1/ldaprenamegroup.1.html
22
http://manpages.ubuntu.com/manpages/en/man1/ldapaddmachine.1.html

Сетевая аутентификация
133
ldapmodifymachine
23
ldapsetprimarygroup
24
ldapdeleteuser
25 1.12. Резервное копирование и восстановление
Есть утилиты из пакета, которые здесь не рассматривались. Вот их полный список:
Что нам требуется, это способ сделать резервные копии для базы данных ldap, специфичные для данных баз заднего (cn=config) и переднего плана
(dc=example,dc=com). Если мы собираемся сохранить эти базы, скажем, в
/export/backup
, мы можем использовать slapcat как показано в следующем сценарии с именем
/usr/local/bin/ldapbackup
:
#!/bin/bash
BACKUP_PATH=/export/backup
SLAPCAT=/usr/sbin/slapcat nice ${SLAPCAT} -n 0 > ${BACKUP_PATH}/config.ldif nice ${SLAPCAT} -n 1 > ${BACKUP_PATH}/example.com.ldif nice ${SLAPCAT} -n 2 > ${BACKUP_PATH}/access.ldif chmod 640 ${BACKUP_PATH}/*.ldif
Это несжатые текстовые файлы, содержащие все данные из вашей ldap базы, включая расположение дерева, имена пользователей и каждый пароль. Поэтому вы можете решить сделать
/export/backup шифрованным разделом и даже иметь сценарии шифрования этих файлов сразу после создания. В идеале вы можете сделать и то и другое, но это зависит от ваших требований безопасности.
Затем имеет смысл создать сценарии cron для запуска этой программы настолько часто, насколько вам будет комфортно. Для большинства достаточно одного раза в день. Для некоторых требуется чаще. Здесь пример сценария cron, названного
/etc/cron.d/ldapbackup
, который срабатывает каждую ночь в 22:45:
MAILTO=backup-emails@domain.com
45 22 * * * root /usr/local/bin/ldapbackup
Теперь файлы созданы и они могут быть скопированы на резервный сервер.
23
http://manpages.ubuntu.com/manpages/en/man1/ldapmodifymachine.1.html
24
http://manpages.ubuntu.com/manpages/en/man1/ldapsetprimarygroup.1.html
25
http://manpages.ubuntu.com/manpages/en/man1/ldapdeleteuser.1.html

Сетевая аутентификация
134
Предположим мы сделали переустановку ldap; процесс восстановления будет подобен следующему: sudo service slapd stop
sudo service slapd stop
sudo mkdir /var/lib/ldap/accesslog
sudo slapadd -F /etc/ldap/slapd.d -n 0 -l /export/backup/config.ldif
sudo slapadd -F /etc/ldap/slapd.d -n 1 -l /export/backup/domain.com.ldif
sudo slapadd -F /etc/ldap/slapd.d -n 2 -l /export/backup/access.ldif
sudo chown -R openldap:openldap /etc/ldap/slapd.d/
sudo chown -R openldap:openldap /var/lib/ldap/
sudo service slapd start
1.13. Ресурсы
• Основной ресурс — это документация из апстрима: www.openldap.org
26
• Существует много страниц руководств пакета slapd. Здесь наиболее важные, особенно в плане рассматриваемых в этом руководстве материалов:
slapd
27
slapd-config
28
slapd.access
29
slapo-syncprov
30
• Другие man-страницы:
auth-client-config
31
pam-auth-update
32
LDAP for Rocket Scientists
33
от Zytrax; руководство менее педантичное, но содержащее всесторонне рассмотренный LDAP.
OpenLDAP wiki
34
страница сообщества Ubuntu имеет коллекцию заметок.
LDAP System Administration
35
от O'Reilly (текст, 2003)
Mastering OpenLDAP
36
от Packt (текст, 2007)
26
http://www.openldap.org/
27
http://manpages.ubuntu.com/manpages/en/man8/slapd.8.html
28
http://manpages.ubuntu.com/manpages/en/man5/slapd-config.5.html
29
http://manpages.ubuntu.com/manpages/en/man5/slapd.access.5.html
30
http://manpages.ubuntu.com/manpages/en/man5/slapo-syncprov.5.html
31
http://manpages.ubuntu.com/manpages/en/man8/auth-client-config.8.html
32
http://manpages.ubuntu.com/manpages/en/man8/pam-auth-update.8.html
33
http://www.zytrax.com/books/ldap/
34
https://help.ubuntu.com/community/OpenLDAPServer
35
http://www.oreilly.com/catalog/ldapsa/
36
http://www.packtpub.com/OpenLDAP-Developers-Server-Open-Source-Linux/book

Сетевая аутентификация
135
2. Samba и LDAP
В этом разделе описана интеграция Samba и LDAP. В этом случае сервер
Samba выполняет роль «отдельного» сервера, а LDAP обеспечивает уровень аутентификации с описанием пользователя, группы и информации о пользователе компьютера для нормального функционирования и выполнения своих ролей (из 3 возможных). Отправной точкой в этом может служить сервер OpenLDAP с определённой директорией, которая принимает запросы аутентификации. Подробнее эта процедура описана в предыдущей главе Раздел 1, «Сервер OpenLDAP» [107]. После прочтения этой главы, вы должны решить для себя что вы хотите от вашего сервера
Samba, а затем настроить его относительно ваших потребностей.
2.1. Установка программного обеспечения
Для интеграции Samba с LDAP необходимы три пакета: samba, samba-doc и smbldap-tools.
Строго говоря, пакет smbldap-tools не является необходимым, но, пока у вас нет других способов управления различными сущностями Samba
(пользователями, группами, компьютерами) в контексте LDAP, вам следует установить его.
Установите эти пакеты сейчас:
sudo apt-get install samba samba-doc smbldap-tools
2.2. Конфигурация LDAP
Теперь настроим LDAP-сервер, чтобы он мог хранить данные Samba. Для этого нам необходимо выполнить три пункта:
1. Импортировать схему
2. Индексировать записи
3. Добавить объекты
2.2.1. Схема Samba
Для того чтобы OpenLDAP использовался как дополнение к Samba,
теоретически в дереве (DIT) должны присутствовать атрибуты, которые корректно описывают данные Samba. Такие атрибуты могут быть получены путём введения схемы Samba в LDAP. Сейчас мы это сделаем.
Для более детальной информации о схемах и их установке смотрите
Раздел 1.4, «Изменение базы данных настройки slapd» [113].

Сетевая аутентификация
136 1. Такая схема находится в свежеустановленном вами пакете samba-doc.
Её требуется скопировать и разархивировать в каталог
/etc/ldap/schema
:
sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema
sudo gzip -d /etc/ldap/schema/samba.schema.gz
2. Получаем файл конфигурации schema_convert.conf
, который должен содержать следующие строки:
include /etc/ldap/schema/core.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/java.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/ldapns.schema include /etc/ldap/schema/pmi.schema include /etc/ldap/schema/samba.schema
3. Оставляем каталог ldif_output для вывода.
4. Определите индекс схемы:
slapcat -f schema_convert.conf -F ldif_output -n 0 | grep samba,cn=schema
dn: cn={14}samba,cn=schema,cn=config
5. Конвертируем схему в формат LDIF:
slapcat -f schema_convert.conf -F ldif_output -n0 -H \ ldap:///cn={14}samba,cn=schema,cn=config -l cn=samba.ldif
6. Редактируем созданный файл cn=samba.ldif
, удаляя индексную информацию, по достижению:
dn: cn=samba,cn=schema,cn=config cn: samba
Удалите нижние строки:
structuralObjectClass: olcSchemaConfig entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95
creatorsName: cn=config

Сетевая аутентификация
137
createTimestamp: 20080827045234Z
entryCSN: 20080827045234.341425Z#000000#000#000000
modifiersName: cn=config modifyTimestamp: 20080827045234Z
Значения ваших атрибутов могут быть другими.
7. Добавляем новую схему:
sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn\=samba.ldif
Для запроса и просмотра новой схемы введите:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config 'cn=*samba*'
2.2.2. Индексы Samba
Теперь, когда slapd знает о атрибутах Samba, мы можем создать несколько индексов на их основе. Индексация записей является способом повышения производительности, когда клиент осуществляет выборочный поиск в дереве (DIT).
Создайте файл samba_indices.ldif со следующим содержимым:
dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: uidNumber eq olcDbIndex: gidNumber eq olcDbIndex: loginShell eq olcDbIndex: uid eq,pres,sub olcDbIndex: memberUid eq,pres,sub olcDbIndex: uniqueMember eq,pres olcDbIndex: sambaSID eq olcDbIndex: sambaPrimaryGroupSID eq olcDbIndex: sambaGroupType eq olcDbIndex: sambaSIDList eq olcDbIndex: sambaDomainName eq olcDbIndex: default sub
Используйте утилиту ldapmodify для загрузки новых индексов:
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f samba_indices.ldif
Если всё настроено правильно, вы увидите новые индексы, используя утилиту ldapsearch:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H \ ldapi:/// -b cn=config olcDatabase={1}hdb olcDbIndex

Сетевая аутентификация
138 2.2.3. Добавление объектов Samba к LDAP
Далее настройте пакет smbldap-tools для соответствия вашей рабочей среде. Пакет поставляется со сценарием конфигурации, который будет задавать вопросы о необходимых опциях установки. Для запуска сценария введите в терминале:
sudo gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz
sudo perl /usr/share/doc/smbldap-tools/configure.pl
Вам может понадобиться закомментировать strict pragma в файле configure.pl
После того, как вы ответили на вопросы, должны быть сгенерированы файлы
/etc/smbldap-tools/smbldap.conf и
/etc/smbldap-tools/smbldap_bind.conf
Если вы сделали какие-либо ошибки при выполнении сценария, вы всегда можете впоследствии отредактировать файлы.
Сценарий smbldap-populate добавит объекты LDAP, необходимые для
Samba. Неплохая идея — сначала сделать резервную копию всего каталога с помощью slapcat:
sudo slapcat -l backup.ldif
После создания резервной копии, приступите к наполнению каталога:
sudo smbldap-populate
Вы можете создать файл LDIF, содержащий новые объекты Samba,
выполнив sudo smbldap-populate -e samba.ldif. Это позволит просматривать изменения, убедившись, что всё работает правильно. Если это так, перезапустите сценарий без опции '-e'. Либо вы можете взять файл
LDIF и импортировать его данные в обычном режиме.
Теперь ваш каталог LDAP содержит всю необходимую информацию для аутентификации пользователей Samba.
2.3. Настройка Samba
Существуют различные способы настроить Samba. Информацию о некоторых типичных конфигурациях смотрите в главе Глава 18, Сетевое
окружение Windows [320]. Чтобы настроить Samba для использования
LDAP, отредактируйте конфигурационный файл
/etc/samba/smb.conf
,
закомментировав параметр по умолчанию passdb backend и добавив несколько параметров, связанных с LDAP:

Сетевая аутентификация
139
# passdb backend = tdbsam
# LDAP Settings passdb backend = ldapsam:ldap://hostname ldap suffix = dc=example,dc=com ldap user suffix = ou=People ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap ldap admin dn = cn=admin,dc=example,dc=com ldap ssl = start tls ldap passwd sync = yes add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"
Измените значения для вашей конфигурации.
Перезапустите samba, чтобы задействовать новые настройки:
sudo restart smbd
sudo restart nmbd
Теперь укажите Samba пароль пользователя rootDN (который создан при установке пакета slapd):
sudo smbpasswd -w password
Если у вас уже есть существующие пользователи LDAP, которых вы хотите включить в вашу конфигурацию Samba, они должны иметь необходимые атрибуты. Утилита smbpasswd подойдёт для этого наилучшим образом
(ваш компьютер должен иметь возможность видеть (нумеровать) этих пользователей через NSS; или же должны быть установлены и настроены пакеты libnss-ldapd или libnss-ldap):
sudo smbpasswd -a username
Вам будет предложено ввести пароль. Он будет считаться новым паролем для этого пользователя. Разумным решением будет сделать его таким же,
как прежде.
Для настройки пользователей, групп и учётных записей на компьютерах используйте стандартные утилиты, предоставляемые пакетом smbldap- tools. Вот несколько примеров:
• Чтобы добавить нового пользователя:
sudo smbldap-useradd -a -P username

Сетевая аутентификация
140
Опция -a добавляет атрибут Samba, а опция -P вызывает утилиту smbldap- passwd, после того как пользователь создан, позволяя создать новый пароль для этого пользователя.
• Чтобы удалить пользователя:
sudo smbldap-userdel username
В этой команде также можно использовать опцию -r для удаления домашней директории пользователя.
• Чтобы добавить группу:
sudo smbldap-groupadd -a groupname
Как и для smbldap-useradd, опция -a добавляет атрибуты Samba.
• Чтобы сделать существующего пользователя членом группы:
sudo smbldap-groupmod -m username groupname
Опция -m позволяет добавить сразу несколько пользователей,
перечислив их через запятую.
• Чтобы удалить пользователя из группы:
sudo smbldap-groupmod -x username groupname
• Добавить в Samba учетную запись компьютера:
sudo smbldap-useradd -t 0 -w username
Замените username на имя рабочей станции. Опция -t 0 создает учетную запись без задержки, в то время как опция -w определяет пользователя как учетную запись компьютера. Также обратите внимание, что параметр
add machine script в
/etc/samba/smb.conf изменён, чтобы использовался smbldap-useradd.
В пакете smbldap-tools есть пакеты, которые здесь не были рассмотрены.
Вот полный список:
smbldap-groupadd
37
smbldap-groupdel
38
smbldap-groupmod
39 37
http://manpages.ubuntu.com/manpages/en/man8/smbldap-groupadd.8.html
38
http://manpages.ubuntu.com/manpages/en/man8/smbldap-groupdel.8.html
39
http://manpages.ubuntu.com/manpages/en/man8/smbldap-groupmod.8.html

Сетевая аутентификация
141
smbldap-groupshow
40
smbldap-passwd
41
smbldap-populate
42
smbldap-useradd
43
smbldap-userdel
44
smbldap-userinfo
45
smbldap-userlist
46
smbldap-usermod
47
smbldap-usershow
48 2.4. Ресурсы
• Для получения дополнительной информации по установке и конфигурированию Samba прочтите главу Глава 18, Сетевое окружение
Windows [320] этого руководства.
• Существует несколько мест, где документированы LDAP и Samba в апстриме Samba HOWTO Collection
49
• Относительно предыдущей ссылки, смотрите отдельно passdb section
50
• Хотя он и устарел (2007 год), ресурс Linux Samba-OpenLDAP HOWTO
51
содержит ценную информацию.
• Основная страница Samba Ubuntu community documentation
52
содержит множество ссылок на статьи, которые могут оказаться полезными.
40
http://manpages.ubuntu.com/manpages/en/man8/smbldap-groupshow.8.html
41
http://manpages.ubuntu.com/manpages/en/man8/smbldap-passwd.8.html
42
http://manpages.ubuntu.com/manpages/en/man8/smbldap-populate.8.html
43
http://manpages.ubuntu.com/manpages/en/man8/smbldap-useradd.8.html
44
http://manpages.ubuntu.com/manpages/en/man8/smbldap-userdel.8.html
45
http://manpages.ubuntu.com/manpages/en/man8/smbldap-userinfo.8.html
46
http://manpages.ubuntu.com/manpages/en/man8/smbldap-userlist.8.html
47
http://manpages.ubuntu.com/manpages/en/man8/smbldap-usermod.8.html
48
http://manpages.ubuntu.com/manpages/en/man8/smbldap-usershow.8.html
49
http://samba.org/samba/docs/man/Samba-HOWTO-Collection/
50
http://samba.org/samba/docs/man/Samba-HOWTO-Collection/passdb.html
51
http://download.gna.org/smbldap-tools/docs/samba-ldap-howto/
52
https://help.ubuntu.com/community/Samba#samba-ldap

Сетевая аутентификация
142
3. Kerberos
Kerberos — это система сетевой аутентифиации, основанная на принципах доверия третьей стороне. Другие две стороны — это пользователь и сервис, на котором он хочет авторизоваться. Не все сервисы и приложения могут использовать Kerberos, но те, которые могут, приближают сетевое окружение на один шаг к технологии единого входа (Single Sign On — SSO).
В этом разделе рассматривается установка и настройка сервера Kerberos, а также некоторые примеры настройки клиентов.
3.1. Обзор
Этот раздел раскрывает установку и настройку сервера Kerberos, а также некоторые примеры клиентских настроек.
Учётная запись (Principal): любые пользователи, компьютеры или сервисы,
предоставляемые серверами, должны быть определены, как учётные записи Kerberos.
Требования (Instances): используются для сервисных и специальных административных учетных записей.
Области (Realms): уникальная область управления, обеспечиваемая установкой Kerberos. Представляйте её себе как домен или группу ваших компьютеров и пользователей, ей принадлежащих. По умолчанию
Ubuntu использует имя DNS домена в верхнем регистре (EXAMPLE.COM) в качестве имени области.
Центр распространения ключей (KDC): состоит из трёх частей: базы данных всех учетных записей, сервера аутентификации и сервера предоставления билетов. Для каждой области должен быть хотя бы один
KDC.
Билет для получения билета (TGT): изданный сервером аутентификации,
TGT зашифровывается на пароле пользователя, который известен только пользователю и KDC.
Сервер распространения билетов (TGS): выпускает сервисные билеты для клиентов по запросу.
Билеты (Tickets): подтверждение идентичности двух учётных записей.
Одна учётная запись — пользователь, а другая — сервис, запрашиваемый этим пользователем. Билеты устанавливают секретный ключ,
используемый для защищённого соединения во время авторизованной сессии.
Файлы ключей (Keytab Files): файлы, извлечённые из базы учетных записей KDC и содержащие ключ шифрования для сервиса или компьютера.

Сетевая аутентификация
143
Чтобы сложить все вместе: область содержит как минимум один KDC,
лучше больше для обеспечения безотказности, которые содержат базу данных учётных записей. Когда пользователь под учётной записью заходит на рабочую станцию, которая настроена на Kerberos аутентификацию, KDC выпускает билет для получения билетов (TGT).
Если пользователь предоставляет совпадающие параметры, он считается аутентифицированным и может запрашивать билеты для сервисов,
поддерживающих Kerberos, на сервере распространения билетов (TGS).
Сервисные билеты позволяют пользователю аутентифицироваться на сервисах без ввода имени и пароля.
3.2. Сервер Kerberos
3.2.1. Установка
Протокол Kerberos разработан в Масачусетском технологическом университете (MIT), поэтому полное название протокола MIT Kerberos.
(прим. переводчика). Мы создадим домен MIT Kerberos со следующими характеристиками (измените их под свои нужды):
Realm: EXAMPLE.COM
Primary KDC: kdc01.example.com (192.168.0.1)
Secondary KDC: kdc02.example.com (192.168.0.2)
Учетная запись пользователя: steve
Учетная запись администратора: steve/admin
Настоятельно рекомендуется, чтобы ваши авторизованные в сети пользователи имели uid в отдельном диапазоне от ваших локальных пользователей (скажем, начиная с 5000).
Перед установкой сервера Kerberos требуется правильно настроить DNS- сервер для вашего домена. Поскольку область Kerberos по соглашению совпадает с именем домена, этот раздел использует домен EXAMPLE.COM,
настроенный как Primary Master по документации Раздел 2.3, «Первичный
мастер» [161].
Кроме того, Kerberos — протокол, зависимый от времени. Поэтому если локальное время системы на клиентской машине и на сервере отличается более чем на 5 минут (по умолчанию), рабочая станция не будет аутентифицирована. Для решения проблемы все узлы сети должны синхронизировать своё время по одному серверу Network Time Protocol
(NTP). Детали настройки NTP смотрите в разделе Раздел 4, «Синхронизация
времени с NTP» [57].

Сетевая аутентификация
144
Первый шаг по созданию области Kerberos — это установка пакетов krb5- kdc и krb5-admin-server. Введите в терминале:
sudo apt-get install krb5-kdc krb5-admin-server
В конце установки у вас запросят сетевые имена серверов Kerberos и административного, которые могут быть одним и тем же или разными серверами для определённой области.
По умолчанию область создаётся из доменного имени KDC.
Далее создаём новую область с помощью утилиты kdb5_newrealm:
sudo krb5_newrealm
3.2.2. Конфигурация
Вопросы, задаваемые в процессе установки, используются для настройки файла
/etc/krb5.conf
. Если вам требуется скорректировать настройки
KDC, просто измените файл и перезапустите службу krb5-kdc. Если вам требуется перенастроить Kerberos с самого начала, возможно, для изменения имени области, вы можете это сделать, набрав следующее:
sudo dpkg-reconfigure krb5-kdc
1. Как только KDC запущен правильно, требуется административный пользователь учётная запись администратора. Рекомендуется использовать имя пользователя, отличное от вашего повседневного пользователя. Для использования утилиты kadmin.local наберите в терминале:
sudo kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:
addprinc steve/admin
WARNING: no policy specified for steve/admin@EXAMPLE.COM; defaulting to no policy
Enter password for principal "steve/admin@EXAMPLE.COM":
Re-enter password for principal "steve/admin@EXAMPLE.COM":
Principal "steve/admin@EXAMPLE.COM" created.
kadmin.local:
quit
В примере выше steveучётная запись, /adminтребование, а
@EXAMPLE.COM — определяет область. "Ежедневная" учётная запись,
она же пользовательская steve@EXAMPLE.COM; она будет иметь только обычные права пользователя.

Сетевая аутентификация
145
Замените EXAMPLE.COM и steve на ваши имена области и администратора.
2. Далее, новому пользователю-администратору требуется предоставить соответствующие права доступа ACL. Права настраиваются в файле
/
etc/krb5kdc/kadm5.acl
:
steve/admin@EXAMPLE.COM *
Эта запись предоставляет для steve/admin возможность выполнять любые операции над любыми учётными записями в этой области. Вы можете настроить учётные записи более ограниченными правами,
которые удобны, если вам требуется учётная запись младшего администратора, которую можно использовать на клиентах Kerberos.
Пожалуйста, посмотрите страницу руководства (man) по kadm5.acl.
3. Теперь перезапустите krb5-admin-server, чтобы применились новые ACL:
sudo /etc/init.d/krb5-admin-server restart
4. Новая пользовательская учётная запись может быть протестирована утилитой kinit:
kinit steve/admin
steve/admin@EXAMPLE.COM's Password:
После ввода пароля используйте утилиту klist, чтобы увидеть информацию о билете для получения билетов (TGT):
klist
Credentials cache: FILE:/tmp/krb5cc_1000
Principal: steve/admin@EXAMPLE.COM
Issued Expires Principal
Jul 13 17:53:34 Jul 14 03:53:34 krbtgt/EXAMPLE.COM@EXAMPLE.COM
где имя файла кэша krb5cc_1000
составлено из префикса krb5cc_
и идентификатора пользователя (UID), который в нашем случае
1000
. У вас может возникнуть необходимость добавить запись в
/etc/hosts для KDC,
чтобы клиент мог его найти. Например:
192.168.0.1 kdc01.example.com kdc01
Замените 192.168.0.1 на IP-адрес вашего KDC. Обычно такое требуется,
когда ваша область Kerberos охватывает различные сети, разделенные маршрутизаторами.

Сетевая аутентификация
146 5. Лучший способ позволить клиентам автоматически определить KDC для области — это использование SRV-записей DNS. Добавьте следующие записи в
/etc/named/db.example.com
:
_kerberos._udp.EXAMPLE.COM. IN SRV 1 0 88 kdc01.example.com.
_kerberos._tcp.EXAMPLE.COM. IN SRV 1 0 88 kdc01.example.com.
_kerberos._udp.EXAMPLE.COM. IN SRV 10 0 88 kdc02.example.com.
_kerberos._tcp.EXAMPLE.COM. IN SRV 10 0 88 kdc02.example.com.
_kerberos-adm._tcp.EXAMPLE.COM. IN SRV 1 0 749 kdc01.example.com.
_kpasswd._udp.EXAMPLE.COM. IN SRV 1 0 464 kdc01.example.com.
Замените EXAMPLE.COM, kdc01, иkdc02 на ваши имя домена,
первичный и вторичный KDC
Смотрите Глава 8, Служба доменных имён (DNS) [158] для детальных инструкций по настройке DNS.
Ваша новая область Kerberos теперь готова аутентифицировать клиентов.
3.3. Вторичный KDC
Когда у вас есть один центр распространения ключей (KDC) в сети,
хорошей практикой является создание вторичного KDC на случай,
если первичный будет недоступен. Также, если у вас клиенты
Kerberos расположены в различных сетях (возможно разделённых маршрутизаторами, использующими NAT), разумно будет поместить вторичные KDC в каждую такую сеть.
1. Сначала установим пакеты и на вопросы о Kerberos и административном серверах введем имя первичного KDC:
sudo apt-get install krb5-kdc krb5-admin-server
2. Как только пакеты установлены, создайте учетную запись вторичного
KDC. Из терминала набираем:
kadmin -q "addprinc -randkey host/kdc02.example.com"
Впоследствии, при выполнении любых команд kadmin, у вас будет запрашиваться пароль вашей учётной записи username/
admin@EXAMPLE.COM.
3. Извлекаем файл keytab:
kadmin -q "ktadd -norandkey -k keytab.kdc02 host/kdc02.example.com"
4. Теперь в текущем каталоге появился keytab.kdc02
, переместите его в
/
etc/krb5.keytab
:

Сетевая аутентификация
147
sudo mv keytab.kdc02 /etc/krb5.keytab
Если путь до файла keytab.kdc02
иной, замените соответственно.
Также вы можете вывести список учётных записей в файл keytab,
который может быть полезен при решении проблем, используя утилиту klist:
sudo klist -k /etc/krb5.keytab
Опция -k показывает, что это keytab файл.
5. Затем на каждом KDC должен быть файл kpropd.acl
, который содержит список всех KDC в области. В нашем примере на первичном и вторичном
KDC создайте
/etc/krb5kdc/kpropd.acl
:
host/kdc01.example.com@EXAMPLE.COM
host/kdc02.example.com@EXAMPLE.COM
6. Создаём пустую базу данных на вторичном KDC:
sudo kdb5_util -s create
7. Теперь запускаем службу kpropd, которая слушает соединения от утилиты kprop. kprop используется для передачи файлов выгрузки данных:
sudo kpropd -S
8. Из терминала на первичном KDC создаём файл выгрузки для базы данных учетных записей:
sudo kdb5_util dump /var/lib/krb5kdc/dump
9. Извлекаем keytab файл первичного KDC и копируем его в
/etc/
krb5.keytab
:
kadmin -q "ktadd -k keytab.kdc01 host/kdc01.example.com"
sudo mv keytab.kdc01 /etc/krb5.keytab
Убедитесь, что это host для kdc01.example.com, перед извлечением Keytab.
10. Используя утилиту kprop, загрузите базу данных на вторичный KDC:
sudo kprop -r EXAMPLE.COM -f /var/lib/krb5kdc/dump kdc02.example.com

Сетевая аутентификация
148
Должно вернуться сообщение SUCCEEDED, если распространение сработало. Если вернулось сообщение об ошибке, проверьте
/var/log/syslog на вторичном KDC для дополнительной информации.
Вы можете также создать задачу cron для периодического обновления базы данных на вторичных KDC. Например, следующий код будет выгружать базу данных каждый час (обратите внимание, что длинная строка разделена чтобы соответствовать формату документа):
# m h dom mon dow command
0 * * * * /usr/sbin/kdb5_util dump /var/lib/krb5kdc/dump &&
/usr/sbin/kprop -r EXAMPLE.COM -f /var/lib/krb5kdc/dump kdc02.example.com
11. Вернёмся на Secondary KDC, создадим stash (stash) файл для хранения
Kerberos master key (главного ключа Kerberos):
sudo kdb5_util stash
12. Под конец запустим сервис krb5-kdc на вторичном KDC:
sudo /etc/init.d/krb5-kdc start
Вторичный KDC теперь должен иметь возможность выдавать билеты для своей области. Вы можете это проверить, остановив службу krb5- kdcна первичном KDC и затем запросив билет с помощью kinitЕсли всё
пойдет хорошо, вы получите билет со вторичного KDC. В противном случае проверяйте
/var/log/syslog и
/var/log/auth.log на вторичном KDC.
3.4. Клиент Kerberos для Linux
Эта часть освещает настройку клиента Kerberos на системе Linux. Это позволит получить доступ к любому керберезированному сервису, как только пользователь удачно авторизуется в системе.
3.4.1. Установка
Чтобы аутентифицироваться в области Kerberos, требуются пакеты krb5- user и libpam-krb5, а также некоторые другие, которые не являются необходимыми, но делают жизнь проще. Для установки пакетов наберите следующую команду в терминале:
sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config
Пакет auth-client-config позволяет просто настроить PAM для аутентификации множества сервисов, а libpam-ccreds будет кэшировать

Сетевая аутентификация
149
параметры аутентификации, позволяя вам подключаться, когда центр распространения ключей (KDC) недоступен. Этот пакет также полезен для переносных компьютеров, которые могут авторизовываться с использованием Kerberos в корпоративной сети, но также должны быть доступны и вне сети.
3.4.2. Конфигурация
Для настройки клиента наберите в терминале:
sudo dpkg-reconfigure krb5-config
Вас попросят ввести имя области Kerberos. Также, если у вас нет DNS- сервера с настроенными записями Kerberos SRV, меню запросит у вас сетевое имя центра распространения ключей (KDC) и административного сервера области.
dpkg-reconfigure добавит записи в файл
/etc/krb5.conf для вашей области. У
вас будут записи, похожие на следующие:
[libdefaults]
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = } kdc = 192.168.0.1 admin_server = 192.168.0.1
}
Если вы установите uid каждого вашего авторизованного в сети пользователя начиная с 5000, как предложено в
Раздел 3.2.1, «Установка» [143], вы затем сможете указать pam аутентифицировать с помощью Kerberos только пользователей с uid
> 5000:
# Kerberos should only be applied to ldap/kerberos users, not local ones. for i in common-auth common-session common-account common-password; do sudo sed -i -r \ -e 's/pam_krb5.so minimum_uid=1000/pam_krb5.so minimum_uid=5000/' \ /etc/pam.d/$i done
Это поможет избежать запросов (несуществующих) паролей
Kerberos для локально аутентифицированных пользователей при смене у них пароля с помощью passwd.
Вы можете проверить настройки запросив билет с помощью утилиты kinit.
Например:
kinit steve@EXAMPLE.COM
Password for steve@EXAMPLE.COM:

Сетевая аутентификация
150
Когда билет будет предоставлен, детали можно увидеть с помощью klist:
klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: steve@EXAMPLE.COM
Valid starting Expires Service principal
07/24/08 05:18:56 07/24/08 15:18:56 krbtgt/EXAMPLE.COM@EXAMPLE.COM
renew until 07/25/08 05:18:57
Kerberos 4 ticket cache: /tmp/tkt1000
klist: You have no tickets cached
Затем используйте auth-client-config для настройки модуля libpam-krb5 для запроса билета в процессе входа:
sudo auth-client-config -a -p kerberos_example
Теперь вы будете получать билет в случае удачной аутентификации на входе.
3.5. Ресурсы
• Для дополнительной информации по версии MIT Kerberos смотрите сайт
MIT Kerberos
53
• Страница Ubuntu Wiki Kerberos
54
содержит дополнительные подробности.
Kerberos: The Definitive Guide
55
от O'Reilly — великолепное руководство по установке Kerberos.
• Посетите также IRC-каналы #ubuntu-server и #kerberos на Freenode
56
,
если у вас остались вопросы по Kerberos.
53
http://web.mit.edu/Kerberos/
54
https://help.ubuntu.com/community/Kerberos
55
http://oreilly.com/catalog/9780596004033/
56
http://freenode.net/

Сетевая аутентификация
151
4. Kerberos и LDAP
Большинство людей не используют Kerberos сам по себе; как только пользователь аутентифицировался (Kerberos), нам нужно вычислить что пользователь может делать (авторизация). И это становится задачей таких программ, как LDAP.
Репликация базы данных учётных записей (принципалов) Kerberos между двумя серверами может быть сложной и добавляет в вашу сеть дополнительную базу данных пользователей. К счастью, MIT
Kerberos можно сконфигурировать для использования каталога LDAP в качестве базы данных принципалов. В этом разделе рассматривается конфигурирование первичного и вторичного серверов Kerberos для использования OpenLDAP для базы данных принципалов.
Приведенные здесь примеры предполагают использование MIT
Kerberos и OpenLDAP.
4.1. Настройка OpenLDAP
В первую очередь, schema должен быть загружен на OpenLDAP сервер,
который имеет подключения к сети на Первичном и Вторичном KDC. Далее в этом разделе предполагается, что у вас также настроена репликация
LDAP, как минимум, между двумя серверами. Для получения информации о настройке OpenLDAP смотрите Раздел 1, «Сервер OpenLDAP» [107].
Необходимо также настроить OpenLDAP для TLS и SSL-соединений, чтобы трафик между KDC и LDAP сервером был в зашифрованном виде. Подробнее смотрите в Раздел 1.8, «TLS» [123] .
cn=admin,cn=config
— пользователь, которого мы создали с правами редактирования базы ldap. Много раз это был RootDN. Измените его значение для соответствия вашим настройкам.
• Для загрузки схемы в LDAP, на сервере LDAP установите пакет krb5-kdc- ldap. В терминале введите:
sudo apt-get install krb5-kdc-ldap
• Далее распакуйте файл kerberos.schema.gz
:
sudo gzip -d /usr/share/doc/krb5-kdc-ldap/kerberos.schema.gz
sudo cp /usr/share/doc/krb5-kdc-ldap/kerberos.schema /etc/ldap/schema/

Сетевая аутентификация
152
• Схема kerberos должна быть добавлена к дереву cn=config. Процедура добавления новой схемы к slapd детально описана в секции Раздел 1.4,
«Изменение базы данных настройки slapd» [113].
1. Сначала создадим файл настроек с именем schema_convert.conf или другим значащим именем, содержащим следующие строки:
include /etc/ldap/schema/core.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/java.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/kerberos.schema
2. Создадим временный каталог для хранения LDIF файлов:
mkdir /tmp/ldif_output
3. Теперь используем slapcat для конвертирования файлов схемы:
slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s \ "cn={12}kerberos,cn=schema,cn=config" > /tmp/cn=kerberos.ldif
Измените имена файла и каталога выше для соответствия вашим именам, если они отличаются.
4. Отредактируйте созданный файл
/tmp/cn\=kerberos.ldif
, изменив следующие атрибуты:
dn: cn=kerberos,cn=schema,cn=config cn: kerberos
И удалите следующие строки в конце файла:
structuralObjectClass: olcSchemaConfig entryUUID: 18ccd010-746b-102d-9fbe-3760cca765dc creatorsName: cn=config createTimestamp: 20090111203515Z
entryCSN: 20090111203515.326445Z#000000#000#000000
modifiersName: cn=config modifyTimestamp: 20090111203515Z

Сетевая аутентификация
153
Значения атрибутов могут отличаться, просто убедитесь, что атрибуты удалены.
5. Загрузите новую схему с помощью ldapadd:
ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn\=kerberos.ldif
6. Добавьте индекс для атрибута krb5principalname:
ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:
dn: olcDatabase={1}hdb,cn=config
add: olcDbIndex
olcDbIndex: krbPrincipalName eq,pres,sub
modifying entry "olcDatabase={1}hdb,cn=config"
7. В конце обновите списки контроля доступа (ACL):
ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:
dn: olcDatabase={1}hdb,cn=config
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,krbPrincipalKey by
dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none
-
add: olcAccess
olcAccess: to dn.base="" by * read
-
add: olcAccess
olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read
modifying entry "olcDatabase={1}hdb,cn=config"
Ну вот, теперь ваш каталог LDAP готов обслуживать базу данных учётных записей Kerberos.
4.2. Настройка первичного KDC
С настроенным OpenLDAP самое время настроить KDC.
• Сначала установите необходимые пакеты, набрав в теминале:
sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap
• Теперь редактируем
/etc/krb5.conf
, добавив следующие опции в соответствующие секции:
[libdefaults]

Сетевая аутентификация
154
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = {
kdc = kdc01.example.com kdc = kdc02.example.com admin_server = kdc01.example.com admin_server = kdc02.example.com default_domain = example.com database_module = openldap_ldapconf
}
[domain_realm]
.example.com = EXAMPLE.COM
[dbdefaults]
ldap_kerberos_container_dn = dc=example,dc=com
[dbmodules]
openldap_ldapconf = {
db_library = kldap ldap_kdc_dn = "cn=admin,dc=example,dc=com"
# this object needs to have read rights on
# the realm container, principal container and realm sub-trees ldap_kadmind_dn = "cn=admin,dc=example,dc=com"
# this object needs to have read and write rights on
# the realm container, principal container and realm sub-trees ldap_service_password_file = /etc/krb5kdc/service.keyfile ldap_servers = ldaps://ldap01.example.com ldaps://ldap02.example.com ldap_conns_per_server = 5
}
Замените example.com, dc=example,dc=com,
cn=admin,dc=example,dc=com, и ldap01.example.com на соответствующие домен, LDAP объект и LDAP сервер вашей сети.
• Далее используем утилиту kdb5_ldap_util для создания области:
sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com create -subtrees \ dc=example,dc=com -r EXAMPLE.COM -s -H ldap://ldap01.example.com
• Создаём тайник для пароля, используемого для подключения к LDAP- серверу. Этот пароль используется опциями ldap_kdc_dn и ldap_kadmin_dn
в
/etc/krb5.conf
:

Сетевая аутентификация
155
sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com stashsrvpw -f \ /etc/krb5kdc/service.keyfile cn=admin,dc=example,dc=com
• Копируем сертификат CA из сервера LDAP:
scp ldap01:/etc/ssl/certs/cacert.pem .
sudo cp cacert.pem /etc/ssl/certs
и редактируем
/etc/ldap/ldap.conf для использования этого сертификата:
TLS_CACERT /etc/ssl/certs/cacert.pem
Сертификат также нужно скопировать на вторичный KDC, чтобы позволить соединение с LDAP-серверами с использованием LDAPS.
Вы можете добавить учётные записи Kerberos в базу LDAP, и они будут скопированы на все LDAP-серверы, настроенные на репликацию. Для добавления учётной записи с использованием утилиты kadmin.local введите:
sudo kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local:
addprinc -x dn="uid=steve,ou=people,dc=example,dc=com" steve
WARNING: no policy specified for steve@EXAMPLE.COM; defaulting to no policy
Enter password for principal "steve@EXAMPLE.COM":
Re-enter password for principal "steve@EXAMPLE.COM":
Principal "steve@EXAMPLE.COM" created.
Теперь будут добавлены атрибуты krbPrincipalName, krbPrincipalKey,
krbLastPwdChange и krbExtraData к объекту пользователя
uid=steve,ou=people,dc=example,dc=com. Используйте утилитыkinit и klist для проверки, что пользователю действительно выдали билет.
Если объект пользователя уже создан, потребуется опция -x dn="..."
для добавления атрибутов Kerberos. Иначе будет создан новый
объект учетной записи в поддереве области.
4.3. Настройка вторичного KDC
Настройка вторичного KDC с использованием LDAP похожа на настройку обычной базы Kerberos.
1. Во-первых, установите необходимые пакеты. В терминале введите:
sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap
2. Далее редактируем
/etc/krb5.conf для использования LDAP:

Сетевая аутентификация
156
[libdefaults]
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = {
kdc = kdc01.example.com kdc = kdc02.example.com admin_server = kdc01.example.com admin_server = kdc02.example.com default_domain = example.com database_module = openldap_ldapconf
}
[domain_realm]
.example.com = EXAMPLE.COM
[dbdefaults]
ldap_kerberos_container_dn = dc=example,dc=com
[dbmodules]
openldap_ldapconf = {
db_library = kldap ldap_kdc_dn = "cn=admin,dc=example,dc=com"
# this object needs to have read rights on
# the realm container, principal container and realm sub-trees ldap_kadmind_dn = "cn=admin,dc=example,dc=com"
# this object needs to have read and write rights on
# the realm container, principal container and realm sub-trees ldap_service_password_file = /etc/krb5kdc/service.keyfile ldap_servers = ldaps://ldap01.example.com ldaps://ldap02.example.com ldap_conns_per_server = 5
}
3. Создаём тайник для пароля соединения с LDAP:
sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com stashsrvpw -f \ /etc/krb5kdc/service.keyfile cn=admin,dc=example,dc=com
4. Теперь на первичном KDC копируем
/etc/krb5kdc/.k5.EXAMPLE.COM
тайник с
главным ключом на вторичный KDC. Убедитесь, что копирование файла происходит через зашифрованное соединение, такое как scp или через физический носитель.

Сетевая аутентификация
157
sudo scp /etc/krb5kdc/.k5.EXAMPLE.COM steve@kdc02.example.com:

sudo mv .k5.EXAMPLE.COM /etc/krb5kdc/
Снова замените EXAMPLE.COM на вашу актуальную область.
5. Возвращаемся на Secondary KDC, чтобы только (пере)запустить ldap сервер:
sudo service slapd restart
6. И в конце запускаем сервис krb5-kdc:
sudo /etc/init.d/krb5-kdc start
7. Убедитесь, что два LDAP-сервера (и kerberos вдобавок)
синхронизированы.
Теперь у вас в сети избыточные KDC, и с избыточными LDAP серверами вы можете продолжать аутентифицировать пользователей, если один LDAP
сервер, один Kerberos сервер или один LDAP с одним Kerberos сервером станут недоступны.
4.4. Ресурсы
Kerberos Admin Guide
57
содержит некоторые дополнительные детали.
• Для дополнительной информации по kdb5_ldap_util смотрите Section 5.6
58
и kdb5_ldap_util man page
59
• Другой полезной ссылкой является krb5.conf man page
60
• Также смотрите Kerberos and LDAP
61
на Ubuntu wiki.
57
http://web.mit.edu/Kerberos/krb5-1.6/krb5-1.6.3/doc/krb5-admin.html#Configuring-Kerberos-with-OpenLDAP- back_002dend
58
http://web.mit.edu/Kerberos/krb5-1.6/krb5-1.6.3/doc/krb5-admin.html#Global-Operations-on-the-Kerberos-LDAP-
Database
59
http://manpages.ubuntu.com/manpages/precise/en/man8/kdb5_ldap_util.8.html
60
http://manpages.ubuntu.com/manpages/precise/en/man5/krb5.conf.5.html
61
https://help.ubuntu.com/community/Kerberos#kerberos-ldap
1   2   3   4   5   6   7   8   9   ...   16


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал