Домен/GSSAPI: различия между версиями
(Новая страница: «Инструкция по обеспечению аутентификации в сервере LDAP через Kerberos (без паролей). == Установ...») |
Нет описания правки |
||
(не показано 8 промежуточных версий 1 участника) | |||
Строка 4: | Строка 4: | ||
Предполагается, что [[Centaurus: домен|создан домен test.altlinux]]. То есть запущены настроенные службы OpenLDAP и Kerberos и Kerberos хранит принципалов в базе LDAP. | Предполагается, что [[Centaurus: домен|создан домен test.altlinux]]. То есть запущены настроенные службы OpenLDAP и Kerberos и Kerberos хранит принципалов в базе LDAP. | ||
== Настройка на сервере == | |||
1. Установите пакет {{Pkg|libsasl2-plugin-gssapi}}: | |||
apt-get install libsasl2-plugin-gssapi | |||
update_chrooted all | |||
/etc/init.d/slapd restart | |||
Проверка поддержки GSSAPI в сервере LDAP: | |||
# ldapsearch -x -LLL -b "" -s base supportedSASLMechanisms | grep GSSAPI | |||
supportedSASLMechanisms: GSSAPI | |||
2. Для использования механизма GSSAPI совместно с slapd(8) сначала нужно создать сервисный ключ с принципалом (principal) для сервиса ldap в области (realm) для хоста, на котором запущена служба каталога. | |||
Создайте принципала и сгенерируйте keytab для сервера LDAP: | |||
. /usr/bin/alterator-kdc-princ-functions | |||
addprinc ldap/$(hostname) | |||
ktadd /etc/openldap/ldap.keytab ldap/$(hostname) | |||
Этот файл (если существует) автоматически используется в службе slapd. | |||
3. Для используемых баз пропишите отображение DN запроса аутентификации в аутентификационный DN пользователя: | |||
base="$(system-auth status | cut -f2 -d' ')" | |||
file="$(ldap-dn find "$base")" | |||
echo -e "\nauthz-regexp\n\tuid=([^,]*),cn=[^,]*,cn=auth\n\tuid=\$1,ou=People,$base" >> "$file" | |||
''Примечение:'' сделано только для системной базы, так как отображение на других базах может перебить системную. | |||
Например, в файле {{path|/etc/openldap/slapd-test.altlinux.conf}} появится запись | |||
<pre>authz-regexp | |||
uid=([^,]*),cn=[^,]*,cn=auth | |||
uid=$1,ou=People,dc=test,dc=altlinux</pre> | |||
4. Перезапустите службу LDAP (slapd): | |||
service slapd restart | |||
== Настройка на клиенте == | |||
1. Установите пакет {{Pkg|libsasl2-plugin-gssapi}}: | |||
apt-get install libsasl2-plugin-gssapi | |||
2. Получите тикет Kerberos и убедитесь, что тикет получен: | |||
<pre># kinit l1 | |||
Password for l1@TEST.ALTLINUX: | |||
# klist | |||
Ticket cache: FILE:/tmp/krb5cc_0 | |||
Default principal: l1@TEST.ALTLINUX | |||
Valid starting Expires Service principal | |||
01/10/13 19:41:11 01/11/13 19:41:11 krbtgt/TEST.ALTLINUX@TEST.ALTLINUX | |||
renew until 01/10/13 19:41:11</pre> | |||
3. Проверим доступ к LDAP без пароля: | |||
<pre># ldapwhoami -Y GSSAPI | |||
SASL/GSSAPI authentication started | |||
SASL username: l1@TEST.ALTLINUX | |||
SASL SSF: 56 | |||
SASL data security layer installed. | |||
dn:uid=l1,ou=people,dc=test,dc=altlinux</pre> | |||
'''Внимание!''' Обратите внимание, что для вызова любых программ работы с LDAP с клиента нужно указать параметр '''-Y GSSAPI''' | |||
== Доступ только к полям LDAP для текущего пользователя == | |||
В начале файла конфигурации базы, например, | |||
# ldap-dn find $(system-auth status | cut -f2 -d' ') | |||
/etc/openldap/slapd-test.altlinux.conf | |||
пропишите права доступа к полю: | |||
<pre>access to attrs=mail | |||
by self read | |||
by * none</pre> | |||
Проверка на клиенте: | |||
<pre># ldapsearch -LLL -H 'ldaps://ldap' -Y GSSAPI -b 'dc=test,dc=altlinux' '(uid=l1)' mail 2>/dev/null | |||
dn: uid=l1,ou=People,dc=test,dc=altlinux | |||
mail: l1@test.altlinux | |||
[root@host-15 ~]# ldapsearch -LLL -H 'ldaps://ldap' -Y GSSAPI -b 'dc=test,dc=altlinux' '(uid=cas)' mail 2>/dev/null | |||
dn: uid=cas,ou=People,dc=test,dc=altlinux</pre> | |||
Как видите, поле своей записи пользователь видит, а чужой — уже нет. | |||
== Ссылки == | == Ссылки == | ||
* [http:// | * [http://pro-ldap.ru/tr/admin24/sasl.html Глава «Использование SASL» на сайте http://pro-ldap.ru] | ||
{{Category navigation|title=Домен|category=Домен|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 15:44, 2 июля 2015
Инструкция по обеспечению аутентификации в сервере LDAP через Kerberos (без паролей).
Установка программного обеспечения
Предполагается, что создан домен test.altlinux. То есть запущены настроенные службы OpenLDAP и Kerberos и Kerberos хранит принципалов в базе LDAP.
Настройка на сервере
1. Установите пакет libsasl2-plugin-gssapi:
apt-get install libsasl2-plugin-gssapi update_chrooted all /etc/init.d/slapd restart
Проверка поддержки GSSAPI в сервере LDAP:
# ldapsearch -x -LLL -b "" -s base supportedSASLMechanisms | grep GSSAPI supportedSASLMechanisms: GSSAPI
2. Для использования механизма GSSAPI совместно с slapd(8) сначала нужно создать сервисный ключ с принципалом (principal) для сервиса ldap в области (realm) для хоста, на котором запущена служба каталога.
Создайте принципала и сгенерируйте keytab для сервера LDAP:
. /usr/bin/alterator-kdc-princ-functions addprinc ldap/$(hostname) ktadd /etc/openldap/ldap.keytab ldap/$(hostname)
Этот файл (если существует) автоматически используется в службе slapd.
3. Для используемых баз пропишите отображение DN запроса аутентификации в аутентификационный DN пользователя:
base="$(system-auth status | cut -f2 -d' ')" file="$(ldap-dn find "$base")" echo -e "\nauthz-regexp\n\tuid=([^,]*),cn=[^,]*,cn=auth\n\tuid=\$1,ou=People,$base" >> "$file"
Примечение: сделано только для системной базы, так как отображение на других базах может перебить системную.
Например, в файле /etc/openldap/slapd-test.altlinux.conf появится запись
authz-regexp uid=([^,]*),cn=[^,]*,cn=auth uid=$1,ou=People,dc=test,dc=altlinux
4. Перезапустите службу LDAP (slapd):
service slapd restart
Настройка на клиенте
1. Установите пакет libsasl2-plugin-gssapi:
apt-get install libsasl2-plugin-gssapi
2. Получите тикет Kerberos и убедитесь, что тикет получен:
# kinit l1 Password for l1@TEST.ALTLINUX: # klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: l1@TEST.ALTLINUX Valid starting Expires Service principal 01/10/13 19:41:11 01/11/13 19:41:11 krbtgt/TEST.ALTLINUX@TEST.ALTLINUX renew until 01/10/13 19:41:11
3. Проверим доступ к LDAP без пароля:
# ldapwhoami -Y GSSAPI SASL/GSSAPI authentication started SASL username: l1@TEST.ALTLINUX SASL SSF: 56 SASL data security layer installed. dn:uid=l1,ou=people,dc=test,dc=altlinux
Внимание! Обратите внимание, что для вызова любых программ работы с LDAP с клиента нужно указать параметр -Y GSSAPI
Доступ только к полям LDAP для текущего пользователя
В начале файла конфигурации базы, например,
# ldap-dn find $(system-auth status | cut -f2 -d' ') /etc/openldap/slapd-test.altlinux.conf
пропишите права доступа к полю:
access to attrs=mail by self read by * none
Проверка на клиенте:
# ldapsearch -LLL -H 'ldaps://ldap' -Y GSSAPI -b 'dc=test,dc=altlinux' '(uid=l1)' mail 2>/dev/null dn: uid=l1,ou=People,dc=test,dc=altlinux mail: l1@test.altlinux [root@host-15 ~]# ldapsearch -LLL -H 'ldaps://ldap' -Y GSSAPI -b 'dc=test,dc=altlinux' '(uid=cas)' mail 2>/dev/null dn: uid=cas,ou=People,dc=test,dc=altlinux
Как видите, поле своей записи пользователь видит, а чужой — уже нет.