У меня есть LDAP-сервер, который я хочу использовать для аутентификации пользователей на моем сервере Red Hat Enterprise Linux 5.8. У меня работает соединение с LDAP-сервером, и я могу войти на Linux-сервер с помощью «имени пользователя» пользователя LDAP.
Теперь я хочу, чтобы только пользователи из одной группы LDAP могли войти на мой сервер RHEL. Я попытался сделать это, настроив в /etc/ldap.conf
:
pam_groupdn cn=RW,ou=ApplRoles,ou=App,ou=Applications,dc=sbb,dc=CH
pam_member_attribute AppRoles
Когда я пытаюсь войти в систему после настройки, я получаю следующее сообщение:
«Вы должны быть AppRoles cn = RW, ou = ApplRoles, ou = App, ou = Applications, dc = sbb, dc = CH».
Но когда я просматриваю LDAP-сервер, я вижу, что пользователь является частью этой группы:
# ldapsearch -h ldapi.company.ch -D cn=binduser,ou=Administrators,dc=company,dc=CH -w bindpw -b dc=company,dc=ch -x "(cn=username)" AppRoles
companyAppRoles: cn=RW,ou=ApplRoles,ou=App,ou=Applications,dc=company,dc=CH
Запросы и ответ в Wireshark выглядят следующим образом (сбрасываются tcpdump на Linux-сервере):
Запрос (из дампа Wireshark):
LDAPMessage compareRequest(5) "cn=RW,ou=ApplRoles,ou=App,ou=Applications,dc=company,dc=CH"
messageID: 5
protocolOp: compareRequest (14)
compareRequest
entry: cn=RW,ou=ApplRoles,ou=App,ou=Applications,dc=company,dc=CH
ava
attributeDesc: AppRoles
assertionValue: cn=username,ou=OU,dc=company,dc=CH
Ответ (с дампа Wireshark):
LDAPMessage compareResponse(5) noSuchObject ([DSA]:No such object:cn=RW,ou=ApplRoles,ou=App,ou=Applications,dc=company,dc=CH)
messageID: 5
protocolOp: compareResponse (15)
compareResponse
resultCode: noSuchObject (32)
matchedDN: ou=Applications,dc=company,dc=CH
errorMessage: [DSA]:No such object:cn=RW,ou=ApplRoles,ou=App,ou=Applications,dc=company,dc=CH
Итак, администратор LDAP сказал, что я должен попытаться изменить "assertionValue" только на "cn = username".
Есть у кого-нибудь идея как изменить это значение? Или есть другие варианты ограничения доступа к моему серверу для пользователей группы LDAP?
Мне удалось решить проблему, установив pam_filter
в /etc/ldap.conf
:
# Filter to AND with uid=%s
pam_filter AppRoles=cn=RW,ou=ApplRoles,ou=App,ou=Applications,dc=company,dc=CH
Пароль будет передан на сервер LDAP только как новый запрос bindRequest, если пользовательский фильтр и pam_filter вернут атрибуты. Таким образом, пользователь должен быть в этой группе, чтобы иметь возможность проверять учетные данные.