Для аутентификации Kerberos вместе с авторизацией SASL / GSSAPI на клиентских устройствах мне нужна авторизация прокси на сервере OpenLDAP, работающем на Raspberry Pi с Debian / Raspbian Buster. Я попытался следовать описанию в Руководстве администратора OpenLDAP 2.4. Авторизация прокси SASL но не смог заставить его работать. Либо происходит сбой аутентификации, либо прокси-пользователь не найден и авторизация не выполняется. Аутентификация с исходным пользователем работает без проблем:
ldap-server ~$ kinit ingo
Password for ingo@HOME.HOEFT-ONLINE.DE:
ldap-server ~$ ldapwhoami
SASL/GSSAPI authentication started
SASL username: ingo@HOME.HOEFT-ONLINE.DE
SASL SSF: 256
SASL data security layer installed.
dn:uid=ingo,ou=people,ou=home,dc=hoeft-online,dc=de
Но с настройкой авторизации прокси меня путают правила источника и назначения и где размещать атрибуты. authzTo
и authzFrom
и где включить proxyAuth.
Может кто-нибудь привести короткий пример, как определить авторизацию прокси на сервере LDAP с аутентификацией SASL / GSSAPI?
Мне не удалось найти в сети пример об этом, и мне потребовалось несколько дней, чтобы уловить широко распространенные подробности. Вот как я совмещаю это, чтобы другие могли найти пример сейчас.
Для правильной авторизации прокси с помощью SASL / GSSAPI, для которой требуется проверка подлинности Kerberos, мы должны указать принципала Kerberos, который используется в качестве пользователя прокси. Затем для аутентификации SASL на сервере ldap нам понадобится обычное отображение пользователя из SASL auth dn в учетную запись ldap. Теперь мы можем настроить авторизацию прокси.
я создаю любой пользователь использовать его аутентификацию в качестве прокси для любого пользователя. Мне он нужен для аутентификации GSSAPI на клиентских устройствах.
~$ kadmin -p somebody/admin addprinc -policy user anyuser
Это обычное сопоставление отличительных имен (dn), как описано в Руководстве администратора OpenLDAP 2.4. Сопоставление удостоверений аутентификации.
~$ cat > /tmp/in.ldif <<EOF
dn: cn=config
changetype: modify
add: olcAuthzRegexp
olcAuthzRegexp:
{0}uid=([^,]*),cn=gssapi,cn=auth
uid=\$1,ou=people,ou=home,dc=hoeft-online,dc=de
-
add: olcAuthzRegexp
olcAuthzRegexp:
{1}uid=([^,]*),cn=home.hoeft-online.de,cn=gssapi,cn=auth
uid=\$1,ou=people,ou=home,dc=hoeft-online,dc=de
EOF
~$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/in.ldif
Проверьте сопоставление с помощью:
~$ kinit ingo
~$ ldapwhoami -Y GSSAPI -v
ldap_initialize( <DEFAULT> )
SASL/GSSAPI authentication started
SASL username: ingo@HOME.HOEFT-ONLINE.DE
SASL SSF: 256
SASL data security layer installed.
dn:uid=ingo,ou=people,ou=home,dc=hoeft-online,dc=de
Result: Success (0)
По умолчанию авторизация прокси отключена. Итак, сначала мы должны включить его на сервере ldap. Я только хочу использовать authzTo атрибуты. Возможные настройки см. man slapd-config
для olcAuthzPolicy
.
~$ cat > /tmp/in.ldif <<EOF
dn: cn=config
changetype: modify
add: olcAuthzPolicy
olcAuthzPolicy: to
EOF
~$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/in.ldif
# For this modify is a restart needed
~$ sudo systemctl restart slapd.service
Сейчас я создаю любой пользователь Учетная запись posix используется в качестве прокси. Для настройки authzTo
атрибут посмотрите на Сопоставление удостоверений аутентификации.
~$ cat > /tmp/in.ldif <<EOF
dn: cn=anyuser,ou=group,ou=home,dc=hoeft-online,dc=de
objectClass: top
objectClass: posixGroup
cn: anyuser
gidNumber: 1001
dn: uid=anyuser,ou=people,ou=home,dc=hoeft-online,dc=de
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
uid: anyuser
uidNumber: 1001
gidNumber: 1001
cn: any
sn: user
loginShell: /usr/sbin/nologin
homeDirectory: /nonexistent
authzTo: dn.regex:^uid=[^,]*,ou=people,ou=home,dc=hoeft-online,dc=de$
EOF
~$ sudo slapadd -l /tmp/in.ldif
Теперь вы можете проверить авторизацию прокси с помощью:
~$ kinit -p ingo
~$ ldapwhoami -Y GSSAPI -D "uid=anyuser,ou=people,ou=home,dc=hoeft-online,dc=de"
SASL/GSSAPI authentication started
SASL username: ingo@HOME.HOEFT-ONLINE.DE
SASL SSF: 256
SASL data security layer installed.
dn:uid=ingo,ou=people,ou=home,dc=hoeft-online,dc=de
Также обратите внимание на Правила авторизации прокси:
Исходные правила чрезвычайно эффективны. Если обычные пользователи имеют доступ для записи атрибута authzTo в свои собственные записи, они могут написать правила, которые позволят им авторизоваться как кто-либо другой. Таким образом, при использовании исходных правил атрибут authzTo должен быть защищен ACL, который позволяет только привилегированным пользователям устанавливать его значения.