Я пытаюсь перевести "локальные имена входа" в конкретное c имя участника Kerberos. На сервере Kerberos участники для пользователей хранятся в формате: / @ .
Например, я хотел бы, чтобы имя для входа в систему testUser1 было переведено на основное имя: testUser1 / Admins@HOME.COM
Причина, по которой я хотел бы использовать этот формат, заключается в том, чтобы я мог применять Контроль доступа Kerberos для пользователей, входящих в определенные группы c, через файл kadm5.acl. Только пользователи в группе «Администраторы» должны быть авторизованы для создания принципалов Kerberos.
Система состоит из 3 отдельных серверов: KRB-Server (krb-server.home.com), S SH -Server (s sh -server.home.com) и LDAP- Сервер (ldap-server.home.com). Все серверы работают под управлением Ubuntu 16.04. KRB-сервер работает под управлением KRB5 1.16-2 из репозитория zodops / ubuntu-backports. S SH -Server использует SSSD для включения аутентификации / авторизации с использованием сервера аутентификации Kerberos и сервера идентификации / авторизации LDAP.
Я попытался выполнить локальное имя пользователя для основных сопоставлений Kerberos, используя правила, определенные в опция auth_to_local.
RULE:[2:$1/$2@$0](.*\/Admins@HOME\.COM)s/\/Admins@HOME\.COM//
Из того, что я понимаю в первом разделе правила:
[2:$1/$2@$0]
Будет сопоставлять принципалы kerberos с двумя компонентами и переводить его в формат / @
Следующий раздел (. * / Admins@HOME.COM) будет соответствовать результату первого раздела и перейдет к третьему и последнему разделу выражения замены, который удалит второй компонент и область от имени участника.
s/\/Admins@HOME\.COM//
Это должно преобразовать имя участника Kerberos "testUser1 / Admins@HOME.COM" в локальное имя входа "testUser1". Однако эта конфигурация, похоже, не вступает в силу.
Файлы конфигурации имеют следующий вид:
/ etc / krb5.conf на krb-server.home.com
[libdefaults]
default_realm = HOME.COM
[realms]
HOME.COM = {
kdc = krb-server.home.com
admin_server = krb-server.home.com
master_kdc = krb-server.home.com
default_domain = home.com
database_module = openldap_ldapconf
auth_to_local = RULE:[2:$1/$2@$0](.*\/Admins@HOME\.COM)s/\/Admins@HOME\.COM//
auth_to_local = DEFAULT
}
[domain_realm]
.home.com = HOME.COM
[dbdefaults]
ldap_kerberos_container_dn = cn=krb5,dc=home,dc=com
[dbmodules]
openldap_ldapconf = {
db_library = kldap
ldap_kdc_sasl_mech = EXTERNAL
ldap_kadmind_sasl_mech = EXTERNAL
ldap_servers = ldaps://ldap-server.home.com
ldap_conns_per_server = 5
}
[logging]
admin_server = FILE:/var/log/krb-admin-server.log
kdc = FILE:/var/log/kdc.log
default = FILE:/var/log/default-kdc.log
/ etc / krb5.conf на s sh -server.home.com
[libdefaults]
default_realm = HOME.COM
[realms]
HOME.COM = {
kdc = krb-server.home.com
admin_server = krb-server.home.com
master_kdc = krb-server.home.com
default_domain = home.com
auth_to_local = RULE:[2:$1/$2@$0](.*\/Admins@HOME\.COM)s/\/Admins@HOME\.COM//
auth_to_local = DEFAULT
}
[domain_realm]
.home.com = HOME.COM
При попытке аутентификации на S SH -Server через s sh testUser1@localhost или su - testUser1, в лог-файл Kerberos KD C выдается ошибка.
CLIENT_NOT_FOUND: testUser1@HOME.COM for krbtgt/HOME.COM@HOME.COM, Client not found in Kerberos database
Когда я пытаюсь пройти аутентификацию для участника с один компонент (testUser1@HOME.COM), аутентификация работает без нареканий. К сожалению, я не могу пройти проверку подлинности для двух имен участников компонента, как указано выше.
Верны ли мои предположения о параметре конфигурации auth_to_local? Если так, может кто-нибудь пролить свет на то, как заставить эту конфигурацию работать? Если нет, какие другие решения я могу использовать для этой проблемы?