Домен/GSSAPI: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «Инструкция по обеспечению аутентификации в сервере 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://itlab.stanford.edu/blog/archives/2009/test-services/ldap-kerberos-5-sasl-and-passwords LDAP, Kerberos 5, SASL and Passwords]
* [http://pro-ldap.ru/tr/admin24/sasl.html Глава «Использование SASL» на сайте http://pro-ldap.ru]


[[Категория:Домен]]
{{Category navigation|title=Домен|category=Домен|sortkey={{SUBPAGENAME}}}}

Текущая версия от 12: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

Как видите, поле своей записи пользователь видит, а чужой — уже нет.

Ссылки